<?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>210674</bug_id>
          
          <creation_ts>2020-04-17 14:33:44 -0700</creation_ts>
          <short_desc>Exempt app-bound domains from ITP&apos;s website data deletion and third-party cookie blocking between themselves</short_desc>
          <delta_ts>2020-05-06 11:44:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1642846</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-17 14:33:44 -0700</bug_when>
    <thetext>We should exempt app-bound domains from ITP&apos;s website data deletion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642848</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-17 14:34:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/61950767&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642855</commentid>
    <comment_count>2</comment_count>
      <attachid>396804</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-17 14:50:08 -0700</bug_when>
    <thetext>Created attachment 396804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642864</commentid>
    <comment_count>3</comment_count>
      <attachid>396805</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-17 15:14:44 -0700</bug_when>
    <thetext>Created attachment 396805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642865</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-17 15:15:15 -0700</bug_when>
    <thetext>Fixed the non-cocoa build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642868</commentid>
    <comment_count>5</comment_count>
      <attachid>396807</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-17 15:28:47 -0700</bug_when>
    <thetext>Created attachment 396807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642873</commentid>
    <comment_count>6</comment_count>
      <attachid>396810</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-17 15:35:11 -0700</bug_when>
    <thetext>Created attachment 396810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642895</commentid>
    <comment_count>7</comment_count>
      <attachid>396810</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 16:27:51 -0700</bug_when>
    <thetext>Comment on attachment 396810
Patch

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

LGTM

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:627
&gt; +            appBoundDomains = networkSessionParameters.resourceLoadStatisticsParameters.appBoundDomains;

can this use WTFMove()?

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:654
&gt; +            appBoundDomains = networkSessionParameters.resourceLoadStatisticsParameters.appBoundDomains;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642898</commentid>
    <comment_count>8</comment_count>
      <attachid>396810</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-17 16:41:40 -0700</bug_when>
    <thetext>Comment on attachment 396810
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:655
&gt; +}

Is there a chance this could be called before m_appBoundDomains has been set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647578</commentid>
    <comment_count>9</comment_count>
      <attachid>398098</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-30 15:11:07 -0700</bug_when>
    <thetext>Created attachment 398098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647581</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-30 15:12:51 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #7)
&gt; Comment on attachment 396810 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396810&amp;action=review
&gt; 
&gt; LGTM
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:627
&gt; &gt; +            appBoundDomains = networkSessionParameters.resourceLoadStatisticsParameters.appBoundDomains;
&gt; 
&gt; can this use WTFMove()?
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:654
&gt; &gt; +            appBoundDomains = networkSessionParameters.resourceLoadStatisticsParameters.appBoundDomains;
&gt; 
&gt; Ditto

I don&apos;t know. We don&apos;t do it for any other parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647582</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-30 15:14:23 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #8)
&gt; Comment on attachment 396810 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396810&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:655
&gt; &gt; +}
&gt; 
&gt; Is there a chance this could be called before m_appBoundDomains has been set?

Thanks! I&apos;ll add a test that m_appBoundDomains exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647583</commentid>
    <comment_count>12</comment_count>
      <attachid>398100</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-30 15:14:46 -0700</bug_when>
    <thetext>Created attachment 398100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647584</commentid>
    <comment_count>13</comment_count>
      <attachid>398101</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-30 15:18:46 -0700</bug_when>
    <thetext>Created attachment 398101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647585</commentid>
    <comment_count>14</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-30 15:19:10 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #11)
&gt; (In reply to katherine_cheney from comment #8)
&gt; &gt; Comment on attachment 396810 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=396810&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:655
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; Is there a chance this could be called before m_appBoundDomains has been set?
&gt; 
&gt; Thanks! I&apos;ll add a test that m_appBoundDomains exists.

It was not happy with me testing m_appBoundDomains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647595</commentid>
    <comment_count>15</comment_count>
      <attachid>398104</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-30 15:31:05 -0700</bug_when>
    <thetext>Created attachment 398104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647603</commentid>
    <comment_count>16</comment_count>
      <attachid>398104</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-30 15:43:24 -0700</bug_when>
    <thetext>Comment on attachment 398104
Patch

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

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:319
&gt; +{

You could also add domains to the WebKitTestRunner Info.plist if you wanted to test out more than 2 domains, and get closer to testing real-functionality. This would also simplify some of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647661</commentid>
    <comment_count>17</comment_count>
      <attachid>398104</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-30 17:01:57 -0700</bug_when>
    <thetext>Comment on attachment 398104
Patch

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

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:321
&gt; +    if (m_appBoundDomains.size() &gt;= 2)

Why this restriction at code level? What prevents from testing more?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:174
&gt; +    HashSet&lt;RegistrableDomain&gt; appBoundDomains() const { return m_appBoundDomains; }

should return a &quot;const HashSet&lt;RegistrableDomain&gt;&amp;&quot; to avoid copying

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:689
&gt; +        if (!m_statisticsStore)

Given that it is a single statement, I would write:

if (m_statisticsStore)
    m_statisticsStore-&gt;setAppBoundDomains(WTFMove(domains));

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:700
&gt; +void WebResourceLoadStatisticsStore::addAppBoundDomainForTesting(const WebCore::RegistrableDomain&amp; domain, CompletionHandler&lt;void(uint64_t)&gt;&amp;&amp; completionHandler)

Why cannot this use setAppBoundDomains()? Do we really need a whole other code path for testing? Doesn&apos;t it defeat the purpose since we are not testing the normal code path?

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:719
&gt; +        auto totalAppBoundDomains = m_statisticsStore-&gt;appBoundDomains().size();

See because appBoundDomains() is not returning a const ref, you&apos;re copying the whole set here, just to get its size.

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:408
&gt; +    appBoundDomainQueue().dispatch([this, isInAppBrowserPrivacyEnabled = parameters().networkSessionParameters.isInAppBrowserPrivacyEnabled, forceReinitialization] () mutable {

Why is capturing |this| safe here?

It is also super weird to capture this here. initializeAppBoundDomains() is really meant to be static (and if it isn&apos;t, it is a bug). appBoundDomains are global, not per WebsiteDataStore and initializeAppBoundDomains() will happen only once for the lifetime of the app (in general), not once per store. Thus, when you&apos;re capturing a datastore here, you&apos;re just doing something for the datastore that happened the trigger the initialization (the first data store). What about all the other data stores?

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:415
&gt; +        RunLoop::main().dispatch([this, isInAppBrowserPrivacyEnabled, forceReinitialization, domains = retainPtr(domains)] {

ditto.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1912
&gt; +    auto callbackAggregator = CallbackAggregator::create([this, domain = WebCore::RegistrableDomain { url }, completionHandler = WTFMove(completionHandler)]() mutable {

Why is it safe to capture |this| here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647662</commentid>
    <comment_count>18</comment_count>
      <attachid>398104</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-30 17:05:13 -0700</bug_when>
    <thetext>Comment on attachment 398104
Patch

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

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:350
&gt; +    bool m_appBoundITPRelaxationEnabled { false };

Boolean variable need a prefix as per WebKit coding style.

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:2338
&gt; +    WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()-&gt;page(), messageName.get(), messageBody.get(), &amp;returnData);

Why is this synchronous? This is going all the way to the UIProcess then down to the network process and then back..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647663</commentid>
    <comment_count>19</comment_count>
      <attachid>398104</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-30 17:06:40 -0700</bug_when>
    <thetext>Comment on attachment 398104
Patch

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

&gt; Source/WebKit/Shared/ResourceLoadStatisticsParameters.h:51
&gt; +    Vector&lt;WebCore::RegistrableDomain&gt; appBoundDomains { };

You have a HashSet in the UIProcess and you need a HashSet in the NetworkProcess it seems. Why are you IPC&apos;ing a Vector and then converting back and forth?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647666</commentid>
    <comment_count>20</comment_count>
      <attachid>398104</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-30 17:12:15 -0700</bug_when>
    <thetext>Comment on attachment 398104
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:297
&gt; +    HashSet&lt;RegistrableDomain&gt; m_appBoundDomains;

So now the app bound domains are stored in 2 places in the network process: on the network storage session and on the ITP store (which is owned by the session). Can the code be factored differently so we don&apos;t have to?
It seems unnecessarily wasteful, especially considering it is only used to decide if we should delete Website data, which would eventually happen on the main thread anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647982</commentid>
    <comment_count>21</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-01 12:37:53 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #16)
&gt; Comment on attachment 398104 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398104&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:319
&gt; &gt; +{
&gt; 
&gt; You could also add domains to the WebKitTestRunner Info.plist if you wanted
&gt; to test out more than 2 domains, and get closer to testing
&gt; real-functionality. This would also simplify some of the code.

Did not know about this. I&apos;ll consider it. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647995</commentid>
    <comment_count>22</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-01 12:51:49 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; Comment on attachment 398104 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398104&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:321
&gt; &gt; +    if (m_appBoundDomains.size() &gt;= 2)
&gt; 
&gt; Why this restriction at code level? What prevents from testing more?

Since the test infrastructure adds a C API to set app-bound domains, I want to defend it against misuse. However, I will consider locking it to localhost and 127.0.0.1 instead which is a better defense.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:174
&gt; &gt; +    HashSet&lt;RegistrableDomain&gt; appBoundDomains() const { return m_appBoundDomains; }
&gt; 
&gt; should return a &quot;const HashSet&lt;RegistrableDomain&gt;&amp;&quot; to avoid copying

Good catch!

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:689
&gt; &gt; +        if (!m_statisticsStore)
&gt; 
&gt; Given that it is a single statement, I would write:
&gt; 
&gt; if (m_statisticsStore)
&gt;     m_statisticsStore-&gt;setAppBoundDomains(WTFMove(domains));

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:700
&gt; &gt; +void WebResourceLoadStatisticsStore::addAppBoundDomainForTesting(const WebCore::RegistrableDomain&amp; domain, CompletionHandler&lt;void(uint64_t)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; Why cannot this use setAppBoundDomains()? Do we really need a whole other
&gt; code path for testing? Doesn&apos;t it defeat the purpose since we are not
&gt; testing the normal code path?

It was because I wanted to the ability to augment the set. Also my test case is mostly concerned with the ITP behavior when app-bound domains are set. But I&apos;ll try to switch to using the set functionality instead since that covers more.

I might go with Kate&apos;s suggestion and split my test case in two – one with both domains set as app-bound and one with just one of them set as app-bound.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:719
&gt; &gt; +        auto totalAppBoundDomains = m_statisticsStore-&gt;appBoundDomains().size();
&gt; 
&gt; See because appBoundDomains() is not returning a const ref, you&apos;re copying
&gt; the whole set here, just to get its size.

Yup, will fix.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:408
&gt; &gt; +    appBoundDomainQueue().dispatch([this, isInAppBrowserPrivacyEnabled = parameters().networkSessionParameters.isInAppBrowserPrivacyEnabled, forceReinitialization] () mutable {
&gt; 
&gt; Why is capturing |this| safe here?
&gt; 
&gt; It is also super weird to capture this here. initializeAppBoundDomains() is
&gt; really meant to be static (and if it isn&apos;t, it is a bug). appBoundDomains
&gt; are global, not per WebsiteDataStore and initializeAppBoundDomains() will
&gt; happen only once for the lifetime of the app (in general), not once per
&gt; store. Thus, when you&apos;re capturing a datastore here, you&apos;re just doing
&gt; something for the datastore that happened the trigger the initialization
&gt; (the first data store). What about all the other data stores?

Aha! Did not realize this was static. I&apos;ll try to restructure accordingly.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:415
&gt; &gt; +        RunLoop::main().dispatch([this, isInAppBrowserPrivacyEnabled, forceReinitialization, domains = retainPtr(domains)] {
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1912
&gt; &gt; +    auto callbackAggregator = CallbackAggregator::create([this, domain = WebCore::RegistrableDomain { url }, completionHandler = WTFMove(completionHandler)]() mutable {
&gt; 
&gt; Why is it safe to capture |this| here?

Should I have a weak this and check it instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647997</commentid>
    <comment_count>23</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-01 12:52:55 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #18)
&gt; Comment on attachment 398104 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398104&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:350
&gt; &gt; +    bool m_appBoundITPRelaxationEnabled { false };
&gt; 
&gt; Boolean variable need a prefix as per WebKit coding style.

Will fix.

&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:2338
&gt; &gt; +    WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()-&gt;page(), messageName.get(), messageBody.get(), &amp;returnData);
&gt; 
&gt; Why is this synchronous? This is going all the way to the UIProcess then
&gt; down to the network process and then back..

Other functions with return values worked this way. But I might not need it if I&apos;m going with the plist approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648002</commentid>
    <comment_count>24</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-01 12:57:19 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #19)
&gt; Comment on attachment 398104 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398104&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/ResourceLoadStatisticsParameters.h:51
&gt; &gt; +    Vector&lt;WebCore::RegistrableDomain&gt; appBoundDomains { };
&gt; 
&gt; You have a HashSet in the UIProcess and you need a HashSet in the
&gt; NetworkProcess it seems. Why are you IPC&apos;ing a Vector and then converting
&gt; back and forth?

The reason why I use a Vector was an earlier discussion with Alex where he recommended it for IPC. I can switch to a HashSet if that&apos;s better in your view.

(In reply to Chris Dumez from comment #20)
&gt; Comment on attachment 398104 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398104&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:297
&gt; &gt; +    HashSet&lt;RegistrableDomain&gt; m_appBoundDomains;
&gt; 
&gt; So now the app bound domains are stored in 2 places in the network process:
&gt; on the network storage session and on the ITP store (which is owned by the
&gt; session). Can the code be factored differently so we don&apos;t have to?
&gt; It seems unnecessarily wasteful, especially considering it is only used to
&gt; decide if we should delete Website data, which would eventually happen on
&gt; the main thread anyway.

It&apos;s a small set (max ten) and the two places are on two different threads. That&apos;s why there are two. I could maybe add a filter on the main thread but that&apos;ll be logic in two places deciding which domains to delete for which feels ripe for mistakes, misunderstandings, and bugs down the road.
Thanks for the review! I&apos;ll rework the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648046</commentid>
    <comment_count>25</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-01 14:08:01 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:408
&gt; &gt; +    appBoundDomainQueue().dispatch([this, isInAppBrowserPrivacyEnabled = parameters().networkSessionParameters.isInAppBrowserPrivacyEnabled, forceReinitialization] () mutable {
&gt; 
&gt; Why is capturing |this| safe here?
&gt; 
&gt; It is also super weird to capture this here. initializeAppBoundDomains() is
&gt; really meant to be static (and if it isn&apos;t, it is a bug). appBoundDomains
&gt; are global, not per WebsiteDataStore and initializeAppBoundDomains() will
&gt; happen only once for the lifetime of the app (in general), not once per
&gt; store. Thus, when you&apos;re capturing a datastore here, you&apos;re just doing
&gt; something for the datastore that happened the trigger the initialization
&gt; (the first data store). What about all the other data stores?

WebsiteDataStore::initializeAppBoundDomains() is not static.

It makes use of the non-static parameters().networkSessionParameters.isInAppBrowserPrivacyEnabled.

My added function WebsiteDataStore::setAppBoundDomainsForResourceLoadStatistics() makes use of non-static m_thirdPartyCookieBlockingMode, processes(), and processPools().

Given this, how would like me to propagate app-bound domains and their associated cookie policy to the web processes and the network process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648052</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-01 14:11:48 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #25)
&gt; (In reply to Chris Dumez from comment #17)
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:408
&gt; &gt; &gt; +    appBoundDomainQueue().dispatch([this, isInAppBrowserPrivacyEnabled = parameters().networkSessionParameters.isInAppBrowserPrivacyEnabled, forceReinitialization] () mutable {
&gt; &gt; 
&gt; &gt; Why is capturing |this| safe here?
&gt; &gt; 
&gt; &gt; It is also super weird to capture this here. initializeAppBoundDomains() is
&gt; &gt; really meant to be static (and if it isn&apos;t, it is a bug). appBoundDomains
&gt; &gt; are global, not per WebsiteDataStore and initializeAppBoundDomains() will
&gt; &gt; happen only once for the lifetime of the app (in general), not once per
&gt; &gt; store. Thus, when you&apos;re capturing a datastore here, you&apos;re just doing
&gt; &gt; something for the datastore that happened the trigger the initialization
&gt; &gt; (the first data store). What about all the other data stores?
&gt; 
&gt; WebsiteDataStore::initializeAppBoundDomains() is not static.
&gt; 
&gt; It makes use of the non-static
&gt; parameters().networkSessionParameters.isInAppBrowserPrivacyEnabled.

Well, that seems like a bug, doesn&apos;t it? The AppBoundDomains are currently static and shared by ALL data stores. However, initialization is based on the NetworkSessionParameters.isInAppBrowserPrivacyEnabled setting of the first data store that gets created..

&gt; 
&gt; My added function
&gt; WebsiteDataStore::setAppBoundDomainsForResourceLoadStatistics() makes use of
&gt; non-static m_thirdPartyCookieBlockingMode, processes(), and processPools().
&gt; 
&gt; Given this, how would like me to propagate app-bound domains and their
&gt; associated cookie policy to the web processes and the network process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648921</commentid>
    <comment_count>27</comment_count>
      <attachid>398465</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-04 20:30:52 -0700</bug_when>
    <thetext>Created attachment 398465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648923</commentid>
    <comment_count>28</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-04 20:34:36 -0700</bug_when>
    <thetext>I addressed all the concerns except:
1) I kept the capability to set app-bound domains through a TestRunner function.
2) The small sets of app-bound domains are still kept in two places in the network process – on the background thread to allow for filtering of domains to delete website data for and in the network storage session to allow for lookup in cookie blocking.

Point 2 optimizes for readability and low complexity over memory usage. If you feel that&apos;s not the right balance, I do the filtering for website data deletion out of context using the network storage session&apos;s HashSet on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648929</commentid>
    <comment_count>29</comment_count>
      <attachid>398468</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-04 20:51:01 -0700</bug_when>
    <thetext>Created attachment 398468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649332</commentid>
    <comment_count>30</comment_count>
      <attachid>398541</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-05 12:36:34 -0700</bug_when>
    <thetext>Created attachment 398541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649348</commentid>
    <comment_count>31</comment_count>
      <attachid>398541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-05 13:26:33 -0700</bug_when>
    <thetext>Comment on attachment 398541
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:702
&gt; +            m_statisticsStore-&gt;    setThirdPartyCookieBlockingMode(ThirdPartyCookieBlockingMode::AllExceptBetweenAppBoundDomains);

m_statisticsStore-&gt; setThirdPartyCookieBlockingMode

Spaces after arrow.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:704
&gt; +        postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {

Wouldn&apos;t this work?
postTaskReply(completionHandler);

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:636
&gt; +    WebKit::WebsiteDataStore::setAppBoundDomainsForTesting(WTFMove(domains), [context, completionHandler] () {

() is not needed and is usually omitted

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1141
&gt; +    sendWithAsyncReply(Messages::NetworkProcess::SetAppBoundDomainsForResourceLoadStatistics(sessionID, appBoundDomains), WTFMove(completionHandler));

Please capture a backgroundActivity here to make sure the network process is not suspended on iOS. ITP code iterates over all pools and sends IPC to processes that are suspended because they are not involved with the current test view.

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:491
&gt; +Optional&lt;HashSet&lt;WebCore::RegistrableDomain&gt;&gt; WebsiteDataStore::getAppBoundDomainsIfInitialized()

Our getters&apos; name never start with &apos;get&apos;

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:502
&gt; +        if (domain.string() != &quot;localhost&quot;_s &amp;&amp; domain.string() != &quot;127.0.0.1&quot;_s) {

Should this assert instead of returning early since this is only used for testing? Seems like someone using this testing method wrong would not necessarily notice they are doing things wrong.

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:507
&gt; +    appBoundDomains() = WTFMove(domains);

What prevents WebsiteDataStore::initializeAppBoundDomains() from overriding the domains you just set for testing after reading the plist on the background thread?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2232
&gt; +    WebCore::RegistrableDomain standaloneApplicationDomain { };

{ } is not needed.

Also, where is this ever initialized to anything else?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2239
&gt;      WebCore::RegistrableDomain resourceLoadStatisticsManualPrevalentResource { };

ditto.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:337
&gt; +    static Optional&lt;HashSet&lt;WebCore::RegistrableDomain&gt;&gt; getAppBoundDomainsIfInitialized();

no &apos;get&apos; prefix for WebKit getters pls.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:338
&gt; +    constexpr static const std::atomic&lt;bool&gt; isAppBoundITPRelaxationEnabled = false;

Who ever flips this to true? what&apos;s the point of code that never runs because it is guarded by isAppBoundITPRelaxationEnabled ?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:339
&gt; +    static void setAppBoundDomainsForITPIfInitialized(CompletionHandler&lt;void()&gt;&amp;&amp;);

Bad naming I think considering this does not take any domains in parameter.

&gt; Tools/WebKitTestRunner/TestController.cpp:3784
&gt; +    runUntil(context.done, noTimeout);

It does not look right to cause a hang here. I see no reason why it cannot use a completion handler. Use the callback to WKWebsiteDataStoreSetAppBoundDomainsForTesting() to call m_currentInvocation-&gt;didSetAppBoundDomains()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649370</commentid>
    <comment_count>32</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-05 14:04:07 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #31)
&gt; Comment on attachment 398541 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398541&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:702
&gt; &gt; +            m_statisticsStore-&gt;    setThirdPartyCookieBlockingMode(ThirdPartyCookieBlockingMode::AllExceptBetweenAppBoundDomains);
&gt; 
&gt; m_statisticsStore-&gt; setThirdPartyCookieBlockingMode
&gt; 
&gt; Spaces after arrow.

Oops! Don&apos;t know where those came from. Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:704
&gt; &gt; +        postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {
&gt; 
&gt; Wouldn&apos;t this work?
&gt; postTaskReply(completionHandler);

I seem to recall trying that and something failed. But that might have been unrelated. Will fix.

&gt; &gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:636
&gt; &gt; +    WebKit::WebsiteDataStore::setAppBoundDomainsForTesting(WTFMove(domains), [context, completionHandler] () {
&gt; 
&gt; () is not needed and is usually omitted

Aha, not even when we have a capture list and body? Will fix.

&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1141
&gt; &gt; +    sendWithAsyncReply(Messages::NetworkProcess::SetAppBoundDomainsForResourceLoadStatistics(sessionID, appBoundDomains), WTFMove(completionHandler));
&gt; 
&gt; Please capture a backgroundActivity here to make sure the network process is
&gt; not suspended on iOS. ITP code iterates over all pools and sends IPC to
&gt; processes that are suspended because they are not involved with the current
&gt; test view.

OK, will do.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:491
&gt; &gt; +Optional&lt;HashSet&lt;WebCore::RegistrableDomain&gt;&gt; WebsiteDataStore::getAppBoundDomainsIfInitialized()
&gt; 
&gt; Our getters&apos; name never start with &apos;get&apos;

I considered that but opted to match WebsiteDataStore::getAppBoundDomains() since this is a sibling function to that. I guess WebsiteDataStore::getAppBoundDomains() should change name then.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:502
&gt; &gt; +        if (domain.string() != &quot;localhost&quot;_s &amp;&amp; domain.string() != &quot;127.0.0.1&quot;_s) {
&gt; 
&gt; Should this assert instead of returning early since this is only used for
&gt; testing? Seems like someone using this testing method wrong would not
&gt; necessarily notice they are doing things wrong.

Yes, a release assert would be good! This is protection against misuse of the C API.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:507
&gt; &gt; +    appBoundDomains() = WTFMove(domains);
&gt; 
&gt; What prevents WebsiteDataStore::initializeAppBoundDomains() from overriding
&gt; the domains you just set for testing after reading the plist on the
&gt; background thread?

hasInitializedAppBoundDomains gates all functions that set app-bound domains and WebsiteDataStore::setAppBoundDomainsForTesting() sets it to true.

Are you thinking of a race where the background thread has already passed its if (hasInitializedAppBoundDomains &amp;&amp; forceReinitialization != ForceReinitialization::Yes) check?

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2232
&gt; &gt; +    WebCore::RegistrableDomain standaloneApplicationDomain { };
&gt; 
&gt; { } is not needed.

Will fix.

&gt; Also, where is this ever initialized to anything else?

In WebsiteDataStore::platformSetNetworkParameters() in WebsiteDataStoreCocoa.mm:
    parameters.networkSessionParameters.resourceLoadStatisticsParameters.standaloneApplicationDomain = WebCore::RegistrableDomain { m_configuration-&gt;standaloneApplicationURL() };

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2239
&gt; &gt;      WebCore::RegistrableDomain resourceLoadStatisticsManualPrevalentResource { };
&gt; 
&gt; ditto.

Will fix.
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:337
&gt; &gt; +    static Optional&lt;HashSet&lt;WebCore::RegistrableDomain&gt;&gt; getAppBoundDomainsIfInitialized();
&gt; 
&gt; no &apos;get&apos; prefix for WebKit getters pls.

Will fix. See previous comment on why it was named like this.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:338
&gt; &gt; +    constexpr static const std::atomic&lt;bool&gt; isAppBoundITPRelaxationEnabled = false;
&gt; 
&gt; Who ever flips this to true? what&apos;s the point of code that never runs
&gt; because it is guarded by isAppBoundITPRelaxationEnabled ?

This is me &quot;putting it behind a flag&quot; since I&apos;m not allowed to land it on by default. I didn&apos;t bloat our list of experimental features since this is for non-browser WebViews. If we decide we want to turn it on, I&apos;ll just remove this flag. As you can see, the flag is used in a way that still allows testing.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:339
&gt; &gt; +    static void setAppBoundDomainsForITPIfInitialized(CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; Bad naming I think considering this does not take any domains in parameter.

True. How about forwardAppBoundDomainsToITPIfInitialized()?
&gt; &gt; Tools/WebKitTestRunner/TestController.cpp:3784
&gt; &gt; +    runUntil(context.done, noTimeout);
&gt; 
&gt; It does not look right to cause a hang here. I see no reason why it cannot
&gt; use a completion handler. Use the callback to
&gt; WKWebsiteDataStoreSetAppBoundDomainsForTesting() to call
&gt; m_currentInvocation-&gt;didSetAppBoundDomains()

OK, will fix.

Thanks, Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649372</commentid>
    <comment_count>33</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-05 14:11:21 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #32)
&gt; (In reply to Chris Dumez from comment #31)
&gt; &gt; Comment on attachment 398541 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=398541&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:702
&gt; &gt; &gt; +            m_statisticsStore-&gt;    setThirdPartyCookieBlockingMode(ThirdPartyCookieBlockingMode::AllExceptBetweenAppBoundDomains);
&gt; &gt; 
&gt; &gt; m_statisticsStore-&gt; setThirdPartyCookieBlockingMode
&gt; &gt; 
&gt; &gt; Spaces after arrow.
&gt; 
&gt; Oops! Don&apos;t know where those came from. Will fix.
&gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:704
&gt; &gt; &gt; +        postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {
&gt; &gt; 
&gt; &gt; Wouldn&apos;t this work?
&gt; &gt; postTaskReply(completionHandler);
&gt; 
&gt; I seem to recall trying that and something failed. But that might have been
&gt; unrelated. Will fix.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:636
&gt; &gt; &gt; +    WebKit::WebsiteDataStore::setAppBoundDomainsForTesting(WTFMove(domains), [context, completionHandler] () {
&gt; &gt; 
&gt; &gt; () is not needed and is usually omitted
&gt; 
&gt; Aha, not even when we have a capture list and body? Will fix.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1141
&gt; &gt; &gt; +    sendWithAsyncReply(Messages::NetworkProcess::SetAppBoundDomainsForResourceLoadStatistics(sessionID, appBoundDomains), WTFMove(completionHandler));
&gt; &gt; 
&gt; &gt; Please capture a backgroundActivity here to make sure the network process is
&gt; &gt; not suspended on iOS. ITP code iterates over all pools and sends IPC to
&gt; &gt; processes that are suspended because they are not involved with the current
&gt; &gt; test view.
&gt; 
&gt; OK, will do.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:491
&gt; &gt; &gt; +Optional&lt;HashSet&lt;WebCore::RegistrableDomain&gt;&gt; WebsiteDataStore::getAppBoundDomainsIfInitialized()
&gt; &gt; 
&gt; &gt; Our getters&apos; name never start with &apos;get&apos;
&gt; 
&gt; I considered that but opted to match WebsiteDataStore::getAppBoundDomains()
&gt; since this is a sibling function to that. I guess
&gt; WebsiteDataStore::getAppBoundDomains() should change name then.

Yes, then both need fixing.

&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:502
&gt; &gt; &gt; +        if (domain.string() != &quot;localhost&quot;_s &amp;&amp; domain.string() != &quot;127.0.0.1&quot;_s) {
&gt; &gt; 
&gt; &gt; Should this assert instead of returning early since this is only used for
&gt; &gt; testing? Seems like someone using this testing method wrong would not
&gt; &gt; necessarily notice they are doing things wrong.
&gt; 
&gt; Yes, a release assert would be good! This is protection against misuse of
&gt; the C API.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:507
&gt; &gt; &gt; +    appBoundDomains() = WTFMove(domains);
&gt; &gt; 
&gt; &gt; What prevents WebsiteDataStore::initializeAppBoundDomains() from overriding
&gt; &gt; the domains you just set for testing after reading the plist on the
&gt; &gt; background thread?
&gt; 
&gt; hasInitializedAppBoundDomains gates all functions that set app-bound domains
&gt; and WebsiteDataStore::setAppBoundDomainsForTesting() sets it to true.
&gt; 
&gt; Are you thinking of a race where the background thread has already passed
&gt; its if (hasInitializedAppBoundDomains &amp;&amp; forceReinitialization !=
&gt; ForceReinitialization::Yes) check?

Correct. I definitely think there is a race here. I guess you could address that by checking hasInitializedAppBoundDomains again in initializeAppBoundDomains() after returning to the main thread.

&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2232
&gt; &gt; &gt; +    WebCore::RegistrableDomain standaloneApplicationDomain { };
&gt; &gt; 
&gt; &gt; { } is not needed.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; Also, where is this ever initialized to anything else?
&gt; 
&gt; In WebsiteDataStore::platformSetNetworkParameters() in
&gt; WebsiteDataStoreCocoa.mm:
&gt;    
&gt; parameters.networkSessionParameters.resourceLoadStatisticsParameters.
&gt; standaloneApplicationDomain = WebCore::RegistrableDomain {
&gt; m_configuration-&gt;standaloneApplicationURL() };
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2239
&gt; &gt; &gt;      WebCore::RegistrableDomain resourceLoadStatisticsManualPrevalentResource { };
&gt; &gt; 
&gt; &gt; ditto.
&gt; 
&gt; Will fix.
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:337
&gt; &gt; &gt; +    static Optional&lt;HashSet&lt;WebCore::RegistrableDomain&gt;&gt; getAppBoundDomainsIfInitialized();
&gt; &gt; 
&gt; &gt; no &apos;get&apos; prefix for WebKit getters pls.
&gt; 
&gt; Will fix. See previous comment on why it was named like this.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:338
&gt; &gt; &gt; +    constexpr static const std::atomic&lt;bool&gt; isAppBoundITPRelaxationEnabled = false;
&gt; &gt; 
&gt; &gt; Who ever flips this to true? what&apos;s the point of code that never runs
&gt; &gt; because it is guarded by isAppBoundITPRelaxationEnabled ?
&gt; 
&gt; This is me &quot;putting it behind a flag&quot; since I&apos;m not allowed to land it on by
&gt; default. I didn&apos;t bloat our list of experimental features since this is for
&gt; non-browser WebViews. If we decide we want to turn it on, I&apos;ll just remove
&gt; this flag. As you can see, the flag is used in a way that still allows
&gt; testing.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:339
&gt; &gt; &gt; +    static void setAppBoundDomainsForITPIfInitialized(CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; &gt; 
&gt; &gt; Bad naming I think considering this does not take any domains in parameter.
&gt; 
&gt; True. How about forwardAppBoundDomainsToITPIfInitialized()?

Better.

&gt; &gt; &gt; Tools/WebKitTestRunner/TestController.cpp:3784
&gt; &gt; &gt; +    runUntil(context.done, noTimeout);
&gt; &gt; 
&gt; &gt; It does not look right to cause a hang here. I see no reason why it cannot
&gt; &gt; use a completion handler. Use the callback to
&gt; &gt; WKWebsiteDataStoreSetAppBoundDomainsForTesting() to call
&gt; &gt; m_currentInvocation-&gt;didSetAppBoundDomains()
&gt; 
&gt; OK, will fix.
&gt; 
&gt; Thanks, Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649382</commentid>
    <comment_count>34</comment_count>
      <attachid>398541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-05 14:37:43 -0700</bug_when>
    <thetext>Comment on attachment 398541
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:704
&gt;&gt;&gt; +        postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {
&gt;&gt; 
&gt;&gt; Wouldn&apos;t this work?
&gt;&gt; postTaskReply(completionHandler);
&gt; 
&gt; I seem to recall trying that and something failed. But that might have been unrelated. Will fix.

I meant postTaskReply(WTFMove(completionHandler));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649449</commentid>
    <comment_count>35</comment_count>
      <attachid>398573</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-05 17:30:44 -0700</bug_when>
    <thetext>Created attachment 398573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649606</commentid>
    <comment_count>36</comment_count>
      <attachid>398573</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 08:01:56 -0700</bug_when>
    <thetext>Comment on attachment 398573
Patch

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

&gt; Source/WebKit/Shared/ResourceLoadStatisticsParameters.h:50
&gt;      WebCore::RegistrableDomain standaloneApplicationDomain { };

{ } unnecessary

&gt; Source/WebKit/Shared/ResourceLoadStatisticsParameters.h:51
&gt; +    HashSet&lt;WebCore::RegistrableDomain&gt; appBoundDomains { };

{ } unnecessary

&gt; Source/WebKit/Shared/ResourceLoadStatisticsParameters.h:52
&gt;      WebCore::RegistrableDomain manualPrevalentResource { };

{ } unnecessary

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:609
&gt; +    WebCore::RegistrableDomain standaloneApplicationDomain { };

{ } unnecessary

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:610
&gt; +    HashSet&lt;WebCore::RegistrableDomain&gt; appBoundDomains { };

{ } unnecessary

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:611
&gt;      WebCore::RegistrableDomain manualPrevalentResource { };

{ } unnecessary

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:505
&gt; +        RELEASE_ASSERT(domain.string() == &quot;localhost&quot;_s || domain.string() == &quot;127.0.0.1&quot;_s);

RegistrableDomain has an operator==() so you should be able to do:
RELEASE_ASSERT(domain == &quot;localhost&quot; || domain == &quot;127.0.0.1&quot;);

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2235
&gt; +    auto optionalAppBoundDomains = appBoundDomainsIfInitialized();

There is no point in calling appBoundDomainsIfInitialized() if !isAppBoundITPRelaxationEnabled so I would write it like so:
if (isAppBoundITPRelaxationEnabled)
    appBoundDomains = appBoundDomainsIfInitialized().valueOr(HashSet&lt;WebCore::RegistrableDomain&gt; { });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649688</commentid>
    <comment_count>37</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-06 10:23:42 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #36)
&gt; Comment on attachment 398573 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398573&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/ResourceLoadStatisticsParameters.h:50
&gt; &gt;      WebCore::RegistrableDomain standaloneApplicationDomain { };
&gt; 
&gt; { } unnecessary

Will fix.

&gt; &gt; Source/WebKit/Shared/ResourceLoadStatisticsParameters.h:51
&gt; &gt; +    HashSet&lt;WebCore::RegistrableDomain&gt; appBoundDomains { };
&gt; 
&gt; { } unnecessary

Will fix.

&gt; &gt; Source/WebKit/Shared/ResourceLoadStatisticsParameters.h:52
&gt; &gt;      WebCore::RegistrableDomain manualPrevalentResource { };
&gt; 
&gt; { } unnecessary

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:609
&gt; &gt; +    WebCore::RegistrableDomain standaloneApplicationDomain { };
&gt; 
&gt; { } unnecessary

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:610
&gt; &gt; +    HashSet&lt;WebCore::RegistrableDomain&gt; appBoundDomains { };
&gt; 
&gt; { } unnecessary

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:611
&gt; &gt;      WebCore::RegistrableDomain manualPrevalentResource { };
&gt; 
&gt; { } unnecessary

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:505
&gt; &gt; +        RELEASE_ASSERT(domain.string() == &quot;localhost&quot;_s || domain.string() == &quot;127.0.0.1&quot;_s);
&gt; 
&gt; RegistrableDomain has an operator==() so you should be able to do:
&gt; RELEASE_ASSERT(domain == &quot;localhost&quot; || domain == &quot;127.0.0.1&quot;);

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2235
&gt; &gt; +    auto optionalAppBoundDomains = appBoundDomainsIfInitialized();
&gt; 
&gt; There is no point in calling appBoundDomainsIfInitialized() if
&gt; !isAppBoundITPRelaxationEnabled so I would write it like so:
&gt; if (isAppBoundITPRelaxationEnabled)
&gt;     appBoundDomains =
&gt; appBoundDomainsIfInitialized().valueOr(HashSet&lt;WebCore::RegistrableDomain&gt; {
&gt; });

Actually, there is. This is why the test is able to do this while production code isn&apos;t. WebsiteDataStore::initializeAppBoundDomains() only calls WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialized() if isAppBoundITPRelaxationEnabled is true whereas WebsiteDataStore::setAppBoundDomainsForTesting() calls WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialized() unconditionally.

If WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialize() were to check isAppBoundITPRelaxationEnabled, the test wouldn&apos;t work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649691</commentid>
    <comment_count>38</comment_count>
      <attachid>398573</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 10:27:14 -0700</bug_when>
    <thetext>Comment on attachment 398573
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2235
&gt;&gt;&gt; +    auto optionalAppBoundDomains = appBoundDomainsIfInitialized();
&gt;&gt; 
&gt;&gt; There is no point in calling appBoundDomainsIfInitialized() if !isAppBoundITPRelaxationEnabled so I would write it like so:
&gt;&gt; if (isAppBoundITPRelaxationEnabled)
&gt;&gt;     appBoundDomains = appBoundDomainsIfInitialized().valueOr(HashSet&lt;WebCore::RegistrableDomain&gt; { });
&gt; 
&gt; Actually, there is. This is why the test is able to do this while production code isn&apos;t. WebsiteDataStore::initializeAppBoundDomains() only calls WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialized() if isAppBoundITPRelaxationEnabled is true whereas WebsiteDataStore::setAppBoundDomainsForTesting() calls WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialized() unconditionally.
&gt; 
&gt; If WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialize() were to check isAppBoundITPRelaxationEnabled, the test wouldn&apos;t work.

Could you clarify what is wrong with the code I provided as replacement? I read your comment twice and it is still not clear to me.

As far as I can tell, there is no behavior change with the change I provided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649700</commentid>
    <comment_count>39</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-06 10:50:52 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #38)
&gt; Comment on attachment 398573 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398573&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2235
&gt; &gt;&gt;&gt; +    auto optionalAppBoundDomains = appBoundDomainsIfInitialized();
&gt; &gt;&gt; 
&gt; &gt;&gt; There is no point in calling appBoundDomainsIfInitialized() if !isAppBoundITPRelaxationEnabled so I would write it like so:
&gt; &gt;&gt; if (isAppBoundITPRelaxationEnabled)
&gt; &gt;&gt;     appBoundDomains = appBoundDomainsIfInitialized().valueOr(HashSet&lt;WebCore::RegistrableDomain&gt; { });
&gt; &gt; 
&gt; &gt; Actually, there is. This is why the test is able to do this while production code isn&apos;t. WebsiteDataStore::initializeAppBoundDomains() only calls WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialized() if isAppBoundITPRelaxationEnabled is true whereas WebsiteDataStore::setAppBoundDomainsForTesting() calls WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialized() unconditionally.
&gt; &gt; 
&gt; &gt; If WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialize() were to check isAppBoundITPRelaxationEnabled, the test wouldn&apos;t work.
&gt; 
&gt; Could you clarify what is wrong with the code I provided as replacement? I
&gt; read your comment twice and it is still not clear to me.
&gt; 
&gt; As far as I can tell, there is no behavior change with the change I provided.

Sorry, I thought you suggested I add a check to WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialized() which also does appBoundDomains = appBoundDomainsIfInitialized(). That would have crippled the test. But I see you mean in the parameters set up. Will fix!

Thanks for the review, Chris! This fixed a lot of things with this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649707</commentid>
    <comment_count>40</comment_count>
      <attachid>398638</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-06 11:13:42 -0700</bug_when>
    <thetext>Created attachment 398638
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649726</commentid>
    <comment_count>41</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-06 11:44:30 -0700</bug_when>
    <thetext>Committed r261242: &lt;https://trac.webkit.org/changeset/261242&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398638.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396804</attachid>
            <date>2020-04-17 14:50:08 -0700</date>
            <delta_ts>2020-04-17 15:14:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200417145007.patch</filename>
            <type>text/plain</type>
            <size>27606</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwNjZmOGVhMDg3ZGNjNTVj
YzM1MWRiNGQyMzI5ODQ4Nzk3ZmU2ZWIuLjU0MTVlOGFmODI5ZTQ0OTViMjQ1MDcyYzUzZjNiNzU2
NTU3YjI5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDQtMTcgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBk
b21haW5zIGZyb20gSVRQJ3Mgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndhcmRzIGluZm9ybWF0aW9uIGFib3V0IGFwcC1ib3Vu
ZCBkb21haW5zIHRvIElUUAorICAgICAgICBTbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9t
IHdlYnNpdGUgZGF0YSBkZWxldGlvbi4KKworICAgICAgICBTaW5jZSBhcHAtYm91bmQgZG9tYWlu
cyBhcmUgbG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEKKyAgICAgICAgQmFja2dyb3Vu
ZCB0aHJlYWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbgorICAgICAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycyBpZiB0aGV5J3ZlIGFscmVhZHkgYmVlbiBsb2FkZWQuCisg
ICAgICAgIFRoZW4gZXZlcnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUgdXBkYXRlZCwgdGhl
eSBhcmUKKyAgICAgICAgZm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQgSVRQIHdp
bGwgaGF2ZSB0aGVtIGFzIHNvb24KKyAgICAgICAgYXMgcG9zc2libGUuCisKKyAgICAgICAgV2ls
bCBhZGQgdGVzdHMuIFVwbG9hZGluZyBmb3IgaW5pdGlhbCByZXZpZXcuIAorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0
cmljdFdlYnNpdGVEYXRhRm9yKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRhRGVsZXRp
b24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICogU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9t
YWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5k
RG9tYWlucyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldEFw
cEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAtMDQt
MTcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IERlbnkgaW9raXQgb3BlbiBhY2Nlc3Mgb2YgdW51c2VkIGNsYXNzIGluIHRoZSBXZWJDb250ZW50
IHNhbmRib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCmluZGV4IGYyYzRmZmQ3YjQ0ZmU2OGU0OWEyNzg5NGM1NjlkNDc1OTJmOGVh
MzQuLmQ1ZmJjYWY2YmI4ZmRmMzVjYTBlNjYzMDgzMWVjMzAzN2JmOGIxOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAt
MjQ2MSw3ICsyNDYxLDcgQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vi
c2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXMKICAgICBWZWN0b3I8RG9t
YWluRGF0YT4gZG9tYWlucyA9IHRoaXMtPmRvbWFpbnMoKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+
IGRvbWFpbklEc1RvQ2xlYXJHcmFuZGZhdGhlcmluZzsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3Rp
YyA6IGRvbWFpbnMpIHsKLSAgICAgICAgaWYgKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiA9
PSBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oKSkKKyAgICAgICAgaWYgKHNob3VsZEV4ZW1w
dEZyb21XZWJzaXRlRGF0YURlbGV0aW9uKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbikpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgb2xkZXN0VXNlckludGVyYWN0aW9uID0gc3Rk
OjptaW4ob2xkZXN0VXNlckludGVyYWN0aW9uLCBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUpOwogICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3Io
c3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA2M2U2M2Y5
OTRhZjUzNTkwNDVlNTM1MzgwYjNmZjViOGQyMjE3YzcxLi44YjJhNWJmYWNhOGVjMGIzZGMwYjZh
ZWE4ZWQ2MjhlOGI0M2VkNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtOTgwLDcgKzk4MCw3IEBAIFJlZ2lzdHJhYmxlRG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTCiAgICAgYXV0byBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBub3c7CiAgICAgUmVn
aXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgdG9EZWxldGVP
clJlc3RyaWN0Rm9yOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURv
bWFpbiA9PSBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oKSkKKyAgICAgICAgaWYgKHNob3Vs
ZEV4ZW1wdEZyb21XZWJzaXRlRGF0YURlbGV0aW9uKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFp
bikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgb2xkZXN0VXNlckludGVyYWN0aW9u
ID0gc3RkOjptaW4ob2xkZXN0VXNlckludGVyYWN0aW9uLCBzdGF0aXN0aWMubW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUpOwogICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURh
dGFGb3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBhYjU2YTgwNTA4M2M3
YjhhYjAxNGQyNmZlYWM3NzM0Zjc4NTJjMDhlLi4yZDYxM2M4ODgwMTI1NDc0NTc5NGM0YjE1MmFj
ZTJkOGQwY2Q4ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcApAQCAtNjQ5LDYgKzY0OSwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6ZGVidWdMb2dEb21haW5zSW5CYXRjaGVzKGNvbnN0IGNoYXIqIGFjdGlvbiwgYwogICAgICAg
ICBSRUxFQVNFX0xPR19JTkZPKElUUERlYnVnLCAiJSIgUFVCTElDX0xPR19TVFJJTkcgIiB0byAo
JXtwdWJsaWN9ZCBvZiAldSk6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIuIiwgYWN0aW9uLCBiYXRj
aE51bWJlciwgbnVtYmVyT2ZCYXRjaGVzLCBkb21haW5zVG9TdHJpbmcoYmF0Y2gpLnV0ZjgoKS5k
YXRhKCkpOwogfQogCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkRXhl
bXB0RnJvbVdlYnNpdGVEYXRhRGVsZXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFp
bikgY29uc3QKK3sKKyAgICByZXR1cm4gZG9tYWluID09IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluIHx8IG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbik7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAppbmRleCBlZjRjNjZmODdhODZiZWQ5ZTM2Nzk2ZTQ5MmJhNTk0NWFkNWEwMDRk
Li45MTdkYjA5YTEwMjU5OWM2YmI3ZGNhOTIwOTRkZGJjOTcwNGNjOWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xNjksNiArMTY5LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPT0gV2ViQ29yZTo6U2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6OlllczsgfTsKICAgICB2b2lkIHNldEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlIG1vZGUpIHsgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9
IG1vZGU7IH0KICAgICB2b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbikgeyBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IFdU
Rk1vdmUoZG9tYWluKTsgfQorICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+JiYgZG9tYWlucykgeyBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUo
ZG9tYWlucyk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Js
b2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKQEAgLTI0Nyw3
ICsyNDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9kZWJ1Z0xvZ2dpbmdFbmFibGVkOyB9OwogICAgIGJvb2wgZGVidWdNb2Rl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfQogICAgIFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTsgfQotICAgIFJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOyB9Cisg
ICAgYm9vbCBzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhO
dW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7IDUwIH07CiAgICAgCkBA
IC0yODksNiArMjkwLDcgQEAgcHJpdmF0ZToKICAgICBTaG91bGRJbmNsdWRlTG9jYWxob3N0IG1f
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdCB7IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyB9Owog
ICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1fZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
IG1fYXBwQm91bmREb21haW5zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDFlZjhhY2Ri
NTU1MGE4ZjZmYWRmZjZjYzE4ZjA0YWM3OGFkMTAxNDYuLjJhYTQ1ZTZjMTAyNjE2YWY1MThiODBi
M2I4MzM5MTg0OTViMWYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCkBAIC02NTUsNiArNjU1LDIwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3QgUmVn
aXN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoaXNFcGhlbWVyYWwo
KSB8fCBkb21haW5zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcG9zdFRhc2so
W3RoaXMsIGRvbWFpbnMgPSBXVEZNb3ZlKGRvbWFpbnMpXSgpIG11dGFibGUgeworICAgICAgICBp
ZiAoIW1fc3RhdGlzdGljc1N0b3JlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3N0
YXRpc3RpY3NTdG9yZS0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoZG9tYWlucykpOworICAg
IH0pOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkQ3JlYXRl
TmV0d29ya1Byb2Nlc3MoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMzAzMGE0ZDg2
MDJjODY1YzU4MzgyNmRkMmFiZDBjNjQ0OGM2ZWQyNi4uZjk2NzZiZjM3YTUxOTIzZWM5OGFmZGJh
OTAwNmFmNDNkMmFmMTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaApAQCAtMjc4LDYgKzI3OCw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAg
ICAgdm9pZCBzZXRTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChXZWJDb3JlOjpTYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCk7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2Vzcygp
OwogCiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4
IDEwZDVjYTA2MWI3Y2ZkOGVjMTY5NTk2NGNmOTZkZTRkZWIyNmE4OTEuLjQ1MmUzYWVmZWQyYjk1
NTQ2NjhlNjAyY2VmNDFkOGMyN2FiZDcxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMjc5LDYgKzEyNzksMTQgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZToKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mJiBhcHBCb3VuZERvbWFpbnMpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRB
cHBCb3VuZERvbWFpbnMoV1RGTW92ZShhcHBCb3VuZERvbWFpbnMpKTsKKyAgICB9Cit9CisKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhi
b29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRdKGF1dG8mIG5ldHdvcmtT
ZXNzaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggNTlmMGZjZWZkNDZjNDIzMGRhZGVkN2Q3MWUyM2ViY2FkMjFkOGQyZS4uNDgwMDA3
Mzc4NmM4NGRmN2E4Yjk0Zjk5NTEwMGRmY2RkZjlmZmFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjYzLDYgKzI2Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7
CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICAg
ICBib29sIGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERhdGFi
YXNlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0
aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIyM2VmMWQwMWEwNTgyMzg5Zjc2OTM0MjliZTAyOTc4
ZWMwNmUyMTkuLmYwNmIwMWEyODI3YTRlYjM3MmI4NzJlZDY5N2FkNDA1OTJkNGQzNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMTM4LDYgKzEzOCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAg
RGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykg
LT4gKCkgQXN5bmMKICAgICBIYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+IChib29sIGhhc0lzb2xh
dGVkU2Vzc2lvbikgQXN5bmMKKyAgICBTZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5zKQogICAgIFNldFNob3VsZERvd25ncmFkZVJl
ZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0U2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9j
a2luZ01vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06Ym9vbCBX
ZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkKSAtPiAoKSBB
c3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cAppbmRleCA3NTI0ZTQ4ZTE5NzY0NDJmYjVjNjczYzc5OGQ2NjQxYzVhM2FhZTYwLi4wNDBjMWY2
MjEzNjMxZDMzMGIyYzQ2YjU0NTJmYzJjNGZmYmM0ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTI5LDYgKzEyOSwxMiBAQCBO
ZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQpOworICAgIGlmIChtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MgJiYgIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuYXBwQm91bmREb21haW5zLmlzRW1wdHkoKSkgeworICAgICAgICBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiBzZXQ7CisgICAgICAgIHNldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21h
aW5zLnNpemUoKSk7CisgICAgICAgIHNldC5hZGQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuYmVnaW4oKSwgcGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuZW5kKCkpOworICAg
ICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3Zl
KHNldCkpOworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA5MjdhZWMzYTc0
YWQxZWZjYjU5NDhhMDQzZjgxZmNmMjlmOWJlYjllLi5lMmVmODVkYjE0Y2I2NmZjMjY4MDNiNzcw
OTk4NDczMGI1YmY5M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgIFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFs
bEJ1dENvb2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25l
QXBwbGljYXRpb25Eb21haW4geyB9OworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gYXBwQm91bmREb21haW5zIHsgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgICAgIGVuY29kZXIgPDwg
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgIGVuY29kZXIgPDwgc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAgICBlbmNvZGVyIDw8IGFwcEJvdW5kRG9t
YWluczsKICAgICAgICAgZW5jb2RlciA8PCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICB9
CiAKQEAgLTEyNyw2ICsxMjksMTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzIHsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgZGVj
b2RlciA+PiBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgIGlmICghYXBwQm91bmREb21haW5zKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgICAgICBPcHRpb25hbDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAg
IGRlY29kZXIgPj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGlmICghbWFudWFs
UHJldmFsZW50UmVzb3VyY2UpCkBAIC0xNDYsNiArMTUzLDcgQEAgc3RydWN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgICAgICAgICAgV1RGTW92ZSgqZmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmFwcEJvdW5k
RG9tYWlucyksCiAgICAgICAgICAgICBXVEZNb3ZlKCptYW51YWxQcmV2YWxlbnRSZXNvdXJjZSks
CiAgICAgICAgIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDA4NWU0NGM3NjNmYjQwM2Vi
ZWI0MTcxNTBkOGUyNmU0NTljZjkzMDIuLmM2NjcyYjQxYWE1MGIxMmVhMWE1NDdiNzU1NGQ1ZWI1
NDFjMDE0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEwMCw2ICsxMTAwLDE0IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6SGFzSXNvbGF0ZWRTZXNzaW9uKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFw
cEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgYXBwQm91bmREb21haW5zKQorewor
ICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9h
ZFN0YXRpc3RpY3Moc2Vzc2lvbklELCBhcHBCb3VuZERvbWFpbnMpLCAwKTsKK30KKwogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
Ym9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGI4NjU3
YTJmMGI5YzcwNGMyMzEwMDUzZjI1YjA2OTg2OTBkOGQ3MDYuLjIzNzYwNTkxZjJiOTI1NTMxNWQ0
ZDJhYWQ5ZmY3ZjJkN2UzN2QzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNzIsNiArMTcyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJ
UHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9y
PFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Np
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYpOwogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJv
b2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGNhNmEzZmNiODYyNjRiOWU4MmM0MzUzYTQ3YzZl
MjhkNzhjZjBlZWQuLjhhYTkzNzcwYTdiNzU5ODMyZWRlNGQyMGE2Njg3MGU3OTI0MjI0NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYwNCw4ICs2
MDQsOSBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDsKICAgICBXZWJDb3JlOjpTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZCA9IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObzsKICNlbmRp
ZgotICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbiB7IH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKKyAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4geyB9OworICAgIFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5zOwogICAgIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICAgICBXRUJf
UFJPQ0VTU19QT09MX0FERElUSU9OU18yCiAgICAgaWYgKHdpdGhXZWJzaXRlRGF0YVN0b3JlKSB7
CkBAIC02MjMsNiArNjI0LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICNlbmRpZgogICAg
ICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAgICAgICAgYXBwQm91
bmREb21haW5zID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWluczsKICAgICAgICAgICAgIG1hbnVhbFByZXZhbGVu
dFJlc291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKQEAgLTY0
OSw2ICs2NTEsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAgICAgICAg
ICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9
IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAgICBhcHBCb3VuZERvbWFp
bnMgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuYXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3Vy
Y2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjg4LDYgKzY5
MSw4IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3Jr
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgIHNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkLAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlLAorICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4sCisgICAgICAg
IGFwcEJvdW5kRG9tYWlucywKICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2UsCiAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDg3ZGQ4ODUxZDI4
NjI4NmE3YjI3YmRhYjQ1ZDA0NzZjZGVmY2NjNmYuLmVhZjc1YTgyMDAzYzYyMmQ4MjVkOGQ0ZDM5
ZmZjOTQ2MjcyYjIzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAg
LTQwNSwxNCArNDA1LDE0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJv
dW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgCiAgICAgc3Rh
dGljIGNvbnN0IGF1dG8gbWF4QXBwQm91bmREb21haW5Db3VudCA9IDEwOwogICAgIAotICAgIGFw
cEJvdW5kRG9tYWluUXVldWUoKS5kaXNwYXRjaChbaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZCA9IHBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaXNJbkFwcEJyb3dzZXJQ
cml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uXSAoKSBtdXRhYmxlIHsKKyAgICBh
cHBCb3VuZERvbWFpblF1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCA9IHBhcmFtZXRlcnMoKS5u
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCwgZm9y
Y2VSZWluaXRpYWxpemF0aW9uXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGhhc0luaXRpYWxp
emVkQXBwQm91bmREb21haW5zICYmIGZvcmNlUmVpbml0aWFsaXphdGlvbiAhPSBGb3JjZVJlaW5p
dGlhbGl6YXRpb246OlllcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAg
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIG9i
amVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OkAiV0tBcHBCb3VuZERvbWFpbnMiXTsKICAgICAgICAg
a2V5RXhpc3RzID0gZG9tYWlucyA/IHRydWUgOiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCwgZm9y
Y2VSZWluaXRpYWxpemF0aW9uLCBkb21haW5zID0gcmV0YWluUHRyKGRvbWFpbnMpXSB7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkLCBmb3JjZVJlaW5pdGlhbGl6
YXRpb24sIGRvbWFpbnMgPSByZXRhaW5QdHIoZG9tYWlucyldIHsKICAgICAgICAgICAgIGlmIChm
b3JjZVJlaW5pdGlhbGl6YXRpb24gPT0gRm9yY2VSZWluaXRpYWxpemF0aW9uOjpZZXMpCiAgICAg
ICAgICAgICAgICAgYXBwQm91bmREb21haW5zKCkuY2xlYXIoKTsKIApAQCAtNDMzLDYgKzQzMyw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3Jj
ZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICAgICAgV0VCU0lURV9EQVRB
X1NUT1JFX0FERElUSU9OUwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaGFzSW5pdGlhbGl6
ZWRBcHBCb3VuZERvbWFpbnMgPSB0cnVlOworICAgICAgICAgICAgc2V0QXBwQm91bmREb21haW5z
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAg
LTQ0NCw2ICs0NDUsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9t
YWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZQogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgLy8gSG9wcGluZyB0byB0aGUgYmFja2dyb3VuZCB0aHJlYWQgdGhlbiBi
YWNrIHRvIHRoZSBtYWluIHRocmVhZAorICAgIC8vIGVuc3VyZXMgdGhhdCBpbml0aWFsaXplQXBw
Qm91bmREb21haW5zKCkgaGFzIGZpbmlzaGVkLgogICAgIGFwcEJvdW5kRG9tYWluUXVldWUoKS5k
aXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMpOwpAQCAtNDg0LDYg
KzQ4NywxNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5kRG9tYWlucyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8VwogICAgIH0pOwogfQogCitPcHRpb25h
bDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6
Z2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAoIWhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5z
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBhcHBCb3VuZERvbWFp
bnMoKTsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZWluaXRpYWxpemVBcHBCb3VuZERv
bWFpbnMoKQogewogICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCmluZGV4IDUwZDk3OTMxZDRjMDVjNzA0NjUyMWJmYTc2MmY1MjBmZmYzYzEx
ODQuLjAxYWMwZmIxZWE1MTk5ZWZhYzMzZmFkZTM0NDAzNGVjNDgzOWU4ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCkBAIC0yMTkxLDYgKzIxOTEsMTEgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9j
YWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CisgICAgYXV0byBvcHRpb25hbEFw
cEJvdW5kRG9tYWlucyA9IGdldEFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKTsKKyAgICBp
ZiAob3B0aW9uYWxBcHBCb3VuZERvbWFpbnMpCisgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IGNv
cHlUb1ZlY3Rvcigqb3B0aW9uYWxBcHBCb3VuZERvbWFpbnMpOwogICAgIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSB7IH07CiAKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycyA9IHsKQEAgLTIyMTEsNiArMjIxNiw4IEBAIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAg
ICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8sCiAjZW5kaWYK
ICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCisgICAgICAgIFdURk1v
dmUoc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgV1RGTW92ZShhcHBCb3Vu
ZERvbWFpbnMpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQ
cmV2YWxlbnRSZXNvdXJjZSksCiAgICAgfTsKIApAQCAtMjM3OSw0ICsyMzg2LDE5IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCBlbmFi
bGVkLCBDb21wbGV0aW9uSGFuCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0
byBhcHBCb3VuZERvbWFpbnMgPSBnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCk7Cisg
ICAgQVNTRVJUKGFwcEJvdW5kRG9tYWlucyk7CisgICAgaWYgKCFhcHBCb3VuZERvbWFpbnMpCisg
ICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0QXBwQm91bmRE
b21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhtX3Nlc3Npb25JRCwgKmFwcEJvdW5kRG9t
YWlucyk7CisgICAgfQorI2VuZGlmCit9CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBlODQy
MzEzMjU2YmEzMWJkZDhhNzUwY2E1NWIzM2FiZGFiMmMwMDkyLi5kZTRjZDYxNGNhOTBiOGQxZTMx
NGViMzNmNDIxOGFkZWUwZjU1ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMjUsNiArMzI1LDExIEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIG1heWJlUmVnaXN0ZXJXaXRoU2Vzc2lvbklETWFwKCk7CiAK
KyAgICBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBw
Qm91bmREb21haW5zSWZJbml0aWFsaXplZCgpIGNvbnN0OworI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCk7CisjZW5kaWYKKwogICAgIGNvbnN0IFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOwogCiAgICAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBtX3Jlc29s
dmVkQ29uZmlndXJhdGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396805</attachid>
            <date>2020-04-17 15:14:44 -0700</date>
            <delta_ts>2020-04-17 15:28:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200417151443.patch</filename>
            <type>text/plain</type>
            <size>27635</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwNjZmOGVhMDg3ZGNjNTVj
YzM1MWRiNGQyMzI5ODQ4Nzk3ZmU2ZWIuLjU0MTVlOGFmODI5ZTQ0OTViMjQ1MDcyYzUzZjNiNzU2
NTU3YjI5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDQtMTcgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBk
b21haW5zIGZyb20gSVRQJ3Mgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndhcmRzIGluZm9ybWF0aW9uIGFib3V0IGFwcC1ib3Vu
ZCBkb21haW5zIHRvIElUUAorICAgICAgICBTbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9t
IHdlYnNpdGUgZGF0YSBkZWxldGlvbi4KKworICAgICAgICBTaW5jZSBhcHAtYm91bmQgZG9tYWlu
cyBhcmUgbG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEKKyAgICAgICAgQmFja2dyb3Vu
ZCB0aHJlYWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbgorICAgICAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycyBpZiB0aGV5J3ZlIGFscmVhZHkgYmVlbiBsb2FkZWQuCisg
ICAgICAgIFRoZW4gZXZlcnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUgdXBkYXRlZCwgdGhl
eSBhcmUKKyAgICAgICAgZm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQgSVRQIHdp
bGwgaGF2ZSB0aGVtIGFzIHNvb24KKyAgICAgICAgYXMgcG9zc2libGUuCisKKyAgICAgICAgV2ls
bCBhZGQgdGVzdHMuIFVwbG9hZGluZyBmb3IgaW5pdGlhbCByZXZpZXcuIAorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0
cmljdFdlYnNpdGVEYXRhRm9yKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRhRGVsZXRp
b24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICogU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9t
YWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5k
RG9tYWlucyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldEFw
cEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAtMDQt
MTcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IERlbnkgaW9raXQgb3BlbiBhY2Nlc3Mgb2YgdW51c2VkIGNsYXNzIGluIHRoZSBXZWJDb250ZW50
IHNhbmRib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCmluZGV4IGYyYzRmZmQ3YjQ0ZmU2OGU0OWEyNzg5NGM1NjlkNDc1OTJmOGVh
MzQuLmQ1ZmJjYWY2YmI4ZmRmMzVjYTBlNjYzMDgzMWVjMzAzN2JmOGIxOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAt
MjQ2MSw3ICsyNDYxLDcgQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vi
c2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXMKICAgICBWZWN0b3I8RG9t
YWluRGF0YT4gZG9tYWlucyA9IHRoaXMtPmRvbWFpbnMoKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+
IGRvbWFpbklEc1RvQ2xlYXJHcmFuZGZhdGhlcmluZzsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3Rp
YyA6IGRvbWFpbnMpIHsKLSAgICAgICAgaWYgKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiA9
PSBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oKSkKKyAgICAgICAgaWYgKHNob3VsZEV4ZW1w
dEZyb21XZWJzaXRlRGF0YURlbGV0aW9uKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbikpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgb2xkZXN0VXNlckludGVyYWN0aW9uID0gc3Rk
OjptaW4ob2xkZXN0VXNlckludGVyYWN0aW9uLCBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUpOwogICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3Io
c3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA2M2U2M2Y5
OTRhZjUzNTkwNDVlNTM1MzgwYjNmZjViOGQyMjE3YzcxLi44YjJhNWJmYWNhOGVjMGIzZGMwYjZh
ZWE4ZWQ2MjhlOGI0M2VkNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtOTgwLDcgKzk4MCw3IEBAIFJlZ2lzdHJhYmxlRG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTCiAgICAgYXV0byBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBub3c7CiAgICAgUmVn
aXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgdG9EZWxldGVP
clJlc3RyaWN0Rm9yOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURv
bWFpbiA9PSBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oKSkKKyAgICAgICAgaWYgKHNob3Vs
ZEV4ZW1wdEZyb21XZWJzaXRlRGF0YURlbGV0aW9uKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFp
bikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgb2xkZXN0VXNlckludGVyYWN0aW9u
ID0gc3RkOjptaW4ob2xkZXN0VXNlckludGVyYWN0aW9uLCBzdGF0aXN0aWMubW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUpOwogICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURh
dGFGb3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBhYjU2YTgwNTA4M2M3
YjhhYjAxNGQyNmZlYWM3NzM0Zjc4NTJjMDhlLi4yZDYxM2M4ODgwMTI1NDc0NTc5NGM0YjE1MmFj
ZTJkOGQwY2Q4ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcApAQCAtNjQ5LDYgKzY0OSwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6ZGVidWdMb2dEb21haW5zSW5CYXRjaGVzKGNvbnN0IGNoYXIqIGFjdGlvbiwgYwogICAgICAg
ICBSRUxFQVNFX0xPR19JTkZPKElUUERlYnVnLCAiJSIgUFVCTElDX0xPR19TVFJJTkcgIiB0byAo
JXtwdWJsaWN9ZCBvZiAldSk6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIuIiwgYWN0aW9uLCBiYXRj
aE51bWJlciwgbnVtYmVyT2ZCYXRjaGVzLCBkb21haW5zVG9TdHJpbmcoYmF0Y2gpLnV0ZjgoKS5k
YXRhKCkpOwogfQogCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkRXhl
bXB0RnJvbVdlYnNpdGVEYXRhRGVsZXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFp
bikgY29uc3QKK3sKKyAgICByZXR1cm4gZG9tYWluID09IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluIHx8IG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbik7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAppbmRleCBlZjRjNjZmODdhODZiZWQ5ZTM2Nzk2ZTQ5MmJhNTk0NWFkNWEwMDRk
Li45MTdkYjA5YTEwMjU5OWM2YmI3ZGNhOTIwOTRkZGJjOTcwNGNjOWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xNjksNiArMTY5LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPT0gV2ViQ29yZTo6U2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6OlllczsgfTsKICAgICB2b2lkIHNldEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlIG1vZGUpIHsgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9
IG1vZGU7IH0KICAgICB2b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbikgeyBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IFdU
Rk1vdmUoZG9tYWluKTsgfQorICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+JiYgZG9tYWlucykgeyBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUo
ZG9tYWlucyk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Js
b2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKQEAgLTI0Nyw3
ICsyNDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9kZWJ1Z0xvZ2dpbmdFbmFibGVkOyB9OwogICAgIGJvb2wgZGVidWdNb2Rl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfQogICAgIFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTsgfQotICAgIFJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOyB9Cisg
ICAgYm9vbCBzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhO
dW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7IDUwIH07CiAgICAgCkBA
IC0yODksNiArMjkwLDcgQEAgcHJpdmF0ZToKICAgICBTaG91bGRJbmNsdWRlTG9jYWxob3N0IG1f
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdCB7IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyB9Owog
ICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1fZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
IG1fYXBwQm91bmREb21haW5zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDFlZjhhY2Ri
NTU1MGE4ZjZmYWRmZjZjYzE4ZjA0YWM3OGFkMTAxNDYuLjJhYTQ1ZTZjMTAyNjE2YWY1MThiODBi
M2I4MzM5MTg0OTViMWYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCkBAIC02NTUsNiArNjU1LDIwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3QgUmVn
aXN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoaXNFcGhlbWVyYWwo
KSB8fCBkb21haW5zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcG9zdFRhc2so
W3RoaXMsIGRvbWFpbnMgPSBXVEZNb3ZlKGRvbWFpbnMpXSgpIG11dGFibGUgeworICAgICAgICBp
ZiAoIW1fc3RhdGlzdGljc1N0b3JlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3N0
YXRpc3RpY3NTdG9yZS0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoZG9tYWlucykpOworICAg
IH0pOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkQ3JlYXRl
TmV0d29ya1Byb2Nlc3MoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMzAzMGE0ZDg2
MDJjODY1YzU4MzgyNmRkMmFiZDBjNjQ0OGM2ZWQyNi4uZjk2NzZiZjM3YTUxOTIzZWM5OGFmZGJh
OTAwNmFmNDNkMmFmMTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaApAQCAtMjc4LDYgKzI3OCw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAg
ICAgdm9pZCBzZXRTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChXZWJDb3JlOjpTYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCk7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2Vzcygp
OwogCiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4
IDEwZDVjYTA2MWI3Y2ZkOGVjMTY5NTk2NGNmOTZkZTRkZWIyNmE4OTEuLjQ1MmUzYWVmZWQyYjk1
NTQ2NjhlNjAyY2VmNDFkOGMyN2FiZDcxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMjc5LDYgKzEyNzksMTQgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZToKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mJiBhcHBCb3VuZERvbWFpbnMpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRB
cHBCb3VuZERvbWFpbnMoV1RGTW92ZShhcHBCb3VuZERvbWFpbnMpKTsKKyAgICB9Cit9CisKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhi
b29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRdKGF1dG8mIG5ldHdvcmtT
ZXNzaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggNTlmMGZjZWZkNDZjNDIzMGRhZGVkN2Q3MWUyM2ViY2FkMjFkOGQyZS4uNDgwMDA3
Mzc4NmM4NGRmN2E4Yjk0Zjk5NTEwMGRmY2RkZjlmZmFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjYzLDYgKzI2Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7
CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBB
TDo6U2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICAg
ICBib29sIGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERhdGFi
YXNlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0
aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIyM2VmMWQwMWEwNTgyMzg5Zjc2OTM0MjliZTAyOTc4
ZWMwNmUyMTkuLmYwNmIwMWEyODI3YTRlYjM3MmI4NzJlZDY5N2FkNDA1OTJkNGQzNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMTM4LDYgKzEzOCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAg
RGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykg
LT4gKCkgQXN5bmMKICAgICBIYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+IChib29sIGhhc0lzb2xh
dGVkU2Vzc2lvbikgQXN5bmMKKyAgICBTZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5zKQogICAgIFNldFNob3VsZERvd25ncmFkZVJl
ZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0U2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9j
a2luZ01vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06Ym9vbCBX
ZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkKSAtPiAoKSBB
c3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cAppbmRleCA3NTI0ZTQ4ZTE5NzY0NDJmYjVjNjczYzc5OGQ2NjQxYzVhM2FhZTYwLi4wNDBjMWY2
MjEzNjMxZDMzMGIyYzQ2YjU0NTJmYzJjNGZmYmM0ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTI5LDYgKzEyOSwxMiBAQCBO
ZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQpOworICAgIGlmIChtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MgJiYgIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuYXBwQm91bmREb21haW5zLmlzRW1wdHkoKSkgeworICAgICAgICBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiBzZXQ7CisgICAgICAgIHNldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21h
aW5zLnNpemUoKSk7CisgICAgICAgIHNldC5hZGQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuYmVnaW4oKSwgcGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuZW5kKCkpOworICAg
ICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3Zl
KHNldCkpOworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA5MjdhZWMzYTc0
YWQxZWZjYjU5NDhhMDQzZjgxZmNmMjlmOWJlYjllLi5lMmVmODVkYjE0Y2I2NmZjMjY4MDNiNzcw
OTk4NDczMGI1YmY5M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgIFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFs
bEJ1dENvb2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25l
QXBwbGljYXRpb25Eb21haW4geyB9OworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gYXBwQm91bmREb21haW5zIHsgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgICAgIGVuY29kZXIgPDwg
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgIGVuY29kZXIgPDwgc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAgICBlbmNvZGVyIDw8IGFwcEJvdW5kRG9t
YWluczsKICAgICAgICAgZW5jb2RlciA8PCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICB9
CiAKQEAgLTEyNyw2ICsxMjksMTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzIHsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgZGVj
b2RlciA+PiBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgIGlmICghYXBwQm91bmREb21haW5zKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgICAgICBPcHRpb25hbDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAg
IGRlY29kZXIgPj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGlmICghbWFudWFs
UHJldmFsZW50UmVzb3VyY2UpCkBAIC0xNDYsNiArMTUzLDcgQEAgc3RydWN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgICAgICAgICAgV1RGTW92ZSgqZmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmFwcEJvdW5k
RG9tYWlucyksCiAgICAgICAgICAgICBXVEZNb3ZlKCptYW51YWxQcmV2YWxlbnRSZXNvdXJjZSks
CiAgICAgICAgIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDA4NWU0NGM3NjNmYjQwM2Vi
ZWI0MTcxNTBkOGUyNmU0NTljZjkzMDIuLmM2NjcyYjQxYWE1MGIxMmVhMWE1NDdiNzU1NGQ1ZWI1
NDFjMDE0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEwMCw2ICsxMTAwLDE0IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6SGFzSXNvbGF0ZWRTZXNzaW9uKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFw
cEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgYXBwQm91bmREb21haW5zKQorewor
ICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9h
ZFN0YXRpc3RpY3Moc2Vzc2lvbklELCBhcHBCb3VuZERvbWFpbnMpLCAwKTsKK30KKwogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
Ym9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGI4NjU3
YTJmMGI5YzcwNGMyMzEwMDUzZjI1YjA2OTg2OTBkOGQ3MDYuLjIzNzYwNTkxZjJiOTI1NTMxNWQ0
ZDJhYWQ5ZmY3ZjJkN2UzN2QzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNzIsNiArMTcyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJ
UHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9y
PFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Np
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYpOwogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJv
b2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGNhNmEzZmNiODYyNjRiOWU4MmM0MzUzYTQ3YzZl
MjhkNzhjZjBlZWQuLjhhYTkzNzcwYTdiNzU5ODMyZWRlNGQyMGE2Njg3MGU3OTI0MjI0NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYwNCw4ICs2
MDQsOSBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDsKICAgICBXZWJDb3JlOjpTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZCA9IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObzsKICNlbmRp
ZgotICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbiB7IH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKKyAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4geyB9OworICAgIFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5zOwogICAgIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICAgICBXRUJf
UFJPQ0VTU19QT09MX0FERElUSU9OU18yCiAgICAgaWYgKHdpdGhXZWJzaXRlRGF0YVN0b3JlKSB7
CkBAIC02MjMsNiArNjI0LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICNlbmRpZgogICAg
ICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAgICAgICAgYXBwQm91
bmREb21haW5zID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWluczsKICAgICAgICAgICAgIG1hbnVhbFByZXZhbGVu
dFJlc291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKQEAgLTY0
OSw2ICs2NTEsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAgICAgICAg
ICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9
IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAgICBhcHBCb3VuZERvbWFp
bnMgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuYXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3Vy
Y2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjg4LDYgKzY5
MSw4IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3Jr
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgIHNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkLAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlLAorICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4sCisgICAgICAg
IGFwcEJvdW5kRG9tYWlucywKICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2UsCiAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDg3ZGQ4ODUxZDI4
NjI4NmE3YjI3YmRhYjQ1ZDA0NzZjZGVmY2NjNmYuLmVhZjc1YTgyMDAzYzYyMmQ4MjVkOGQ0ZDM5
ZmZjOTQ2MjcyYjIzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAg
LTQwNSwxNCArNDA1LDE0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJv
dW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgCiAgICAgc3Rh
dGljIGNvbnN0IGF1dG8gbWF4QXBwQm91bmREb21haW5Db3VudCA9IDEwOwogICAgIAotICAgIGFw
cEJvdW5kRG9tYWluUXVldWUoKS5kaXNwYXRjaChbaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZCA9IHBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaXNJbkFwcEJyb3dzZXJQ
cml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uXSAoKSBtdXRhYmxlIHsKKyAgICBh
cHBCb3VuZERvbWFpblF1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCA9IHBhcmFtZXRlcnMoKS5u
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCwgZm9y
Y2VSZWluaXRpYWxpemF0aW9uXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGhhc0luaXRpYWxp
emVkQXBwQm91bmREb21haW5zICYmIGZvcmNlUmVpbml0aWFsaXphdGlvbiAhPSBGb3JjZVJlaW5p
dGlhbGl6YXRpb246OlllcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAg
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIG9i
amVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OkAiV0tBcHBCb3VuZERvbWFpbnMiXTsKICAgICAgICAg
a2V5RXhpc3RzID0gZG9tYWlucyA/IHRydWUgOiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCwgZm9y
Y2VSZWluaXRpYWxpemF0aW9uLCBkb21haW5zID0gcmV0YWluUHRyKGRvbWFpbnMpXSB7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkLCBmb3JjZVJlaW5pdGlhbGl6
YXRpb24sIGRvbWFpbnMgPSByZXRhaW5QdHIoZG9tYWlucyldIHsKICAgICAgICAgICAgIGlmIChm
b3JjZVJlaW5pdGlhbGl6YXRpb24gPT0gRm9yY2VSZWluaXRpYWxpemF0aW9uOjpZZXMpCiAgICAg
ICAgICAgICAgICAgYXBwQm91bmREb21haW5zKCkuY2xlYXIoKTsKIApAQCAtNDMzLDYgKzQzMyw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3Jj
ZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICAgICAgV0VCU0lURV9EQVRB
X1NUT1JFX0FERElUSU9OUwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaGFzSW5pdGlhbGl6
ZWRBcHBCb3VuZERvbWFpbnMgPSB0cnVlOworICAgICAgICAgICAgc2V0QXBwQm91bmREb21haW5z
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAg
LTQ0NCw2ICs0NDUsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9t
YWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZQogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgLy8gSG9wcGluZyB0byB0aGUgYmFja2dyb3VuZCB0aHJlYWQgdGhlbiBi
YWNrIHRvIHRoZSBtYWluIHRocmVhZAorICAgIC8vIGVuc3VyZXMgdGhhdCBpbml0aWFsaXplQXBw
Qm91bmREb21haW5zKCkgaGFzIGZpbmlzaGVkLgogICAgIGFwcEJvdW5kRG9tYWluUXVldWUoKS5k
aXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMpOwpAQCAtNDg0LDYg
KzQ4NywxNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5kRG9tYWlucyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8VwogICAgIH0pOwogfQogCitPcHRpb25h
bDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6
Z2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAoIWhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5z
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBhcHBCb3VuZERvbWFp
bnMoKTsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZWluaXRpYWxpemVBcHBCb3VuZERv
bWFpbnMoKQogewogICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCmluZGV4IDUwZDk3OTMxZDRjMDVjNzA0NjUyMWJmYTc2MmY1MjBmZmYzYzEx
ODQuLmI5OTg1ZTJlNTM3MGRkMDcyNWM2NTYyZDE3OTcyMWM2ZTYwMmYwOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCkBAIC0yMTkxLDYgKzIxOTEsMTMgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9j
YWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgYXV0byBvcHRpb25hbEFwcEJvdW5kRG9tYWlucyA9IGdldEFwcEJvdW5kRG9tYWluc0lm
SW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAob3B0aW9uYWxBcHBCb3VuZERvbWFpbnMpCisgICAgICAg
IGFwcEJvdW5kRG9tYWlucyA9IGNvcHlUb1ZlY3Rvcigqb3B0aW9uYWxBcHBCb3VuZERvbWFpbnMp
OworI2VuZGlmCiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKIAogICAgIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzID0gewpA
QCAtMjIxMSw2ICsyMjE4LDggQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURh
dGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkOjpObywKICNlbmRpZgogICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSwKKyAgICAgICAgV1RGTW92ZShzdGFuZGFsb25lQXBwbGljYXRpb25Eb21h
aW4pLAorICAgICAgICBXVEZNb3ZlKGFwcEJvdW5kRG9tYWlucyksCiAgICAgICAgIFdURk1vdmUo
cmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlKSwKICAgICB9Owog
CkBAIC0yMzc5LDQgKzIzODgsMTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZChib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW4KICAgICB9CiB9
CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQordm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkKK3sK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIGFwcEJvdW5kRG9tYWlucyA9IGdldEFwcEJv
dW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKTsKKyAgICBBU1NFUlQoYXBwQm91bmREb21haW5zKTsK
KyAgICBpZiAoIWFwcEJvdW5kRG9tYWlucykKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0
d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAg
IG5ldHdvcmtQcm9jZXNzLT5zZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKG1fc2Vzc2lvbklELCAqYXBwQm91bmREb21haW5zKTsKKyAgICB9CisjZW5kaWYKK30KKyNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGU4NDIzMTMyNTZiYTMxYmRkOGE3NTBjYTU1YjMzYWJk
YWIyYzAwOTIuLmRlNGNkNjE0Y2E5MGI4ZDFlMzE0ZWIzM2Y0MjE4YWRlZTBmNTVmMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKQEAgLTMyNSw2ICszMjUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWF5YmVS
ZWdpc3RlcldpdGhTZXNzaW9uSURNYXAoKTsKIAorICAgIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkg
Y29uc3Q7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICB2b2lkIHNl
dEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyNlbmRpZgorCiAg
ICAgY29uc3QgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396807</attachid>
            <date>2020-04-17 15:28:47 -0700</date>
            <delta_ts>2020-04-17 15:35:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200417152846.patch</filename>
            <type>text/plain</type>
            <size>28708</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwNjZmOGVhMDg3ZGNjNTVj
YzM1MWRiNGQyMzI5ODQ4Nzk3ZmU2ZWIuLjk2YWQzOWQ0YzQ0MTA4Y2EzOTczMGMzNjA0YzE5NGQ2
ZWQ3ZTNmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDQtMTcgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBk
b21haW5zIGZyb20gSVRQJ3Mgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndhcmRzIGluZm9ybWF0aW9uIGFib3V0IGFwcC1ib3Vu
ZCBkb21haW5zIHRvIElUUAorICAgICAgICBTbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9t
IHdlYnNpdGUgZGF0YSBkZWxldGlvbi4KKworICAgICAgICBTaW5jZSBhcHAtYm91bmQgZG9tYWlu
cyBhcmUgbG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEKKyAgICAgICAgQmFja2dyb3Vu
ZCB0aHJlYWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbgorICAgICAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycyBpZiB0aGV5J3ZlIGFscmVhZHkgYmVlbiBsb2FkZWQuCisg
ICAgICAgIFRoZW4gZXZlcnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUgdXBkYXRlZCwgdGhl
eSBhcmUKKyAgICAgICAgZm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQgSVRQIHdp
bGwgaGF2ZSB0aGVtIGFzIHNvb24KKyAgICAgICAgYXMgcG9zc2libGUuCisKKyAgICAgICAgV2ls
bCBhZGQgdGVzdHMgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0
ZURhdGFGb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbiBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5zIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21h
aW5zSWZJbml0aWFsaXplZCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBw
Qm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAyMC0wNC0xNyAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRGVueSBpb2tp
dCBvcGVuIGFjY2VzcyBvZiB1bnVzZWQgY2xhc3MgaW4gdGhlIFdlYkNvbnRlbnQgc2FuZGJveApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKaW5kZXggZjJjNGZmZDdiNDRmZTY4ZTQ5YTI3ODk0YzU2OWQ0NzU5MmY4ZWEzNC4uZDVmYmNh
ZjZiYjhmZGYzNWNhMGU2NjMwODMxZWMzMDM3YmY4YjE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNDYxLDcgKzI0
NjEsNyBAQCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhcwogICAgIFZlY3RvcjxEb21haW5EYXRhPiBk
b21haW5zID0gdGhpcy0+ZG9tYWlucygpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gZG9tYWluSURz
VG9DbGVhckdyYW5kZmF0aGVyaW5nOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogZG9tYWlu
cykgewotICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNp
dGVEYXRhRGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRl
c3RVc2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZSk7CiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMs
IHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDYzZTYzZjk5NGFmNTM1OTA0
NWU1MzUzODBiM2ZmNWI4ZDIyMTdjNzEuLjhiMmE1YmZhY2E4ZWMwYjNkYzBiNmFlYThlZDYyOGU4
YjQzZWQ2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCkBAIC05ODAsNyArOTgwLDcgQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxl
dGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVMK
ICAgICBhdXRvIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IG5vdzsKICAgICBSZWdpc3RyYWJsZURv
bWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZU9yUmVzdHJpY3RG
b3I7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52
YWx1ZXMoKSkgewotICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJv
bVdlYnNpdGVEYXRhRGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1p
bihvbGRlc3RVc2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZSk7CiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0
aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGFiNTZhODA1MDgzYzdiOGFiMDE0ZDI2
ZmVhYzc3MzRmNzg1MmMwOGUuLjJkNjEzYzg4ODAxMjU0NzQ1Nzk0YzRiMTUyYWNlMmQ4ZDBjZDhk
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC02
NDksNiArNjQ5LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xv
Z0RvbWFpbnNJbkJhdGNoZXMoY29uc3QgY2hhciogYWN0aW9uLCBjCiAgICAgICAgIFJFTEVBU0Vf
TE9HX0lORk8oSVRQRGVidWcsICIlIiBQVUJMSUNfTE9HX1NUUklORyAiIHRvICgle3B1YmxpY31k
IG9mICV1KTogJSIgUFVCTElDX0xPR19TVFJJTkcgIi4iLCBhY3Rpb24sIGJhdGNoTnVtYmVyLCBu
dW1iZXJPZkJhdGNoZXMsIGRvbWFpbnNUb1N0cmluZyhiYXRjaCkudXRmOCgpLmRhdGEoKSk7CiB9
CiAKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vi
c2l0ZURhdGFEZWxldGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAor
eworICAgIHJldHVybiBkb21haW4gPT0gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gfHwg
bV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMoZG9tYWluKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CmluZGV4IGVmNGM2NmY4N2E4NmJlZDllMzY3OTZlNDkyYmE1OTQ1YWQ1YTAwNGQuLjkxN2RiMDlh
MTAyNTk5YzZiYjdkY2E5MjA5NGRkYmM5NzA0Y2M5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTE2OSw2ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9z
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9PSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZDo6WWVzOyB9OwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUgbW9kZSkgeyBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbW9kZTsgfQog
ICAgIHZvaWQgc2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluKSB7IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gV1RGTW92ZShkb21h
aW4pOyB9CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4mJiBkb21haW5zKSB7IG1fYXBwQm91bmREb21haW5zID0gV1RGTW92ZShkb21haW5zKTsg
fQogCiAgICAgdmlydHVhbCBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVy
KGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwpAQCAtMjQ3LDcgKzI0OCw3IEBA
IHByb3RlY3RlZDoKICAgICBib29sIGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQ7IH07CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9CiAgICAgV2ViQ29yZTo6Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOyB9
Ci0gICAgUmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkgY29u
c3QgeyByZXR1cm4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47IH0KKyAgICBib29sIHNo
b3VsZEV4ZW1wdEZyb21XZWJzaXRlRGF0YURlbGV0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE51bWJlck9mUmVj
dXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VCYWNrIHsgNTAgfTsKICAgICAKQEAgLTI4OSw2ICsy
OTAsNyBAQCBwcml2YXRlOgogICAgIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNs
dWRlTG9jYWxob3N0IHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CiAgICAgV2ViQ29y
ZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
OjpBbGxCdXRDb29raWVzIH07CiAgICAgUmVnaXN0cmFibGVEb21haW4gbV9zdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW47CisgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3Vu
ZERvbWFpbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMWVmOGFjZGI1NTUwYThmNmZh
ZGZmNmNjMThmMDRhYzc4YWQxMDE0Ni4uMmFhNDVlNmMxMDI2MTZhZjUxOGI4MGIzYjgzMzkxODQ5
NWIxZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKQEAgLTY1NSw2ICs2NTUsMjAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3QKICAgICB9
KTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJvdW5k
RG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRvbWFp
bnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9t
YWlucyA9IFdURk1vdmUoZG9tYWlucyldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9zdGF0
aXN0aWNzU3RvcmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc3RhdGlzdGljc1N0
b3JlLT5zZXRBcHBCb3VuZERvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CisgICAgfSk7Cit9CisK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJv
Y2VzcygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAzMDMwYTRkODYwMmM4NjVjNTgz
ODI2ZGQyYWJkMGM2NDQ4YzZlZDI2Li5mOTY3NmJmMzdhNTE5MjNlYzk4YWZkYmE5MDA2YWY0M2Qy
YWYxMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CkBAIC0yNzgsNiArMjc4LDcgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIHNl
dFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRFbmFibGVkKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYmKTsKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICB2
b2lkIG5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMTBkNWNhMDYx
YjdjZmQ4ZWMxNjk1OTY0Y2Y5NmRlNGRlYjI2YTg5MS4uNDUyZTNhZWZlZDJiOTU1NDY2OGU2MDJj
ZWY0MWQ4YzI3YWJkNzFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEyNzksNiArMTI3OSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOgogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYmIGFwcEJvdW5kRG9tYWlucykKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9t
YWlucyhXVEZNb3ZlKGFwcEJvdW5kRG9tYWlucykpOworICAgIH0KK30KKwogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbZW5hYmxlZF0oYXV0byYgbmV0d29ya1Nlc3Npb24pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA1
OWYwZmNlZmQ0NmM0MjMwZGFkZWQ3ZDcxZTIzZWJjYWQyMWQ4ZDJlLi40ODAwMDczNzg2Yzg0ZGY3
YThiOTRmOTk1MTAwZGZjZGRmOWZmYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNjMsNiArMjYzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGhhc0lz
b2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAgICB2b2lk
IHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9u
SUQsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpOwogICAgIGJvb2wgaXNJ
VFBEYXRhYmFzZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSVRQRGF0YWJhc2VFbmFibGVk
OyB9CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggYjIzZWYxZDAxYTA1ODIzODlmNzY5MzQyOWJlMDI5NzhlYzA2ZTIxOS4u
ZjA2YjAxYTI4MjdhNGViMzcyYjg3MmVkNjk3YWQ0MDU5MmQ0ZDM1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0xMzgsNiArMTM4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBEZWxldGVDb29r
aWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKSAtPiAoKSBBc3lu
YwogICAgIEhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9u
KSBBc3luYworICAgIFNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBhcHBCb3VuZERvbWFpbnMpCiAgICAgU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JU
ZXN0aW5nKGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkg
LT4gKCkgQXN5bmMKICAgICBTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRG
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTpib29sIFdlYkNvcmU6OlNh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIC0+ICgpIEFzeW5jCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDc1
MjRlNDhlMTk3NjQ0MmZiNWM2NzNjNzk4ZDY2NDFjNWEzYWFlNjAuLjA0MGMxZjYyMTM2MzFkMzMw
YjJjNDZiNTQ1MmZjMmM0ZmZiYzRlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0xMjksNiArMTI5LDEyIEBAIE5ldHdvcmtTZXNz
aW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0
IE5ldHdvcmtTZXNzCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyAmJiAhcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5h
cHBCb3VuZERvbWFpbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+IHNldDsKKyAgICAgICAgc2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuc2l6ZSgp
KTsKKyAgICAgICAgc2V0LmFkZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLmFwcEJvdW5kRG9tYWlucy5iZWdpbigpLCBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucy5lbmQoKSk7CisgICAgICAgIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoc2V0KSk7Cisg
ICAgfQogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCmluZGV4IDkyN2FlYzNhNzRhZDFlZmNiNTk0
OGEwNDNmODFmY2YyOWY5YmViOWUuLmUyZWY4NWRiMTRjYjY2ZmMyNjgwM2I3NzA5OTg0NzMwYjVi
ZjkzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuaApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
eyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2ll
cyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBC
b3VuZERvbWFpbnMgeyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1hbnVhbFBy
ZXZhbGVudFJlc291cmNlIHsgfTsKICAgICAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CkBAIC02NSw2ICs2Niw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICAgICAgZW5jb2RlciA8PCBmaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgZW5jb2RlciA8PCBzdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW47CisgICAgICAgIGVuY29kZXIgPDwgYXBwQm91bmREb21haW5zOwogICAg
ICAgICBlbmNvZGVyIDw8IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgIH0KIApAQCAtMTI3
LDYgKzEyOSwxMSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewog
ICAgICAgICBpZiAoIXN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPj4gYXBwQm91bmREb21haW5zOworICAgICAgICBkZWNvZGVyID4+IGFw
cEJvdW5kRG9tYWluczsKKyAgICAgICAgaWYgKCFhcHBCb3VuZERvbWFpbnMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgZGVjb2RlciA+
PiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgaWYgKCFtYW51YWxQcmV2YWxlbnRS
ZXNvdXJjZSkKQEAgLTE0Niw2ICsxNTMsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgICAgICAgICBXVEZNb3ZlKCpmaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpzdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW4pLAorICAgICAgICAgICAgV1RGTW92ZSgqYXBwQm91bmREb21haW5zKSwK
ICAgICAgICAgICAgIFdURk1vdmUoKm1hbnVhbFByZXZhbGVudFJlc291cmNlKSwKICAgICAgICAg
fX07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMDg1ZTQ0Yzc2M2ZiNDAzZWJlYjQxNzE1MGQ4
ZTI2ZTQ1OWNmOTMwMi4uYzY2NzJiNDFhYTUwYjEyZWExYTU0N2I3NTU0ZDVlYjU0MWMwMTQ5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0xMTAwLDYgKzExMDAsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWcKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpI
YXNJc29sYXRlZFNlc3Npb24oc2Vzc2lvbklELCBkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21h
aW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMpCit7CisgICAgaWYgKCFj
YW5TZW5kTWVzc2FnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhzZXNzaW9uSUQsIGFwcEJvdW5kRG9tYWlucyksIDApOworfQorCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJs
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYjg2NTdhMmYwYjljNzA0
YzIzMTAwNTNmMjViMDY5ODY5MGQ4ZDcwNi4uMjM3NjA1OTFmMmI5MjU1MzE1ZDRkMmFhZDlmZjdm
MmQ3ZTM3ZDMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9y
UmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0
YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7CiAg
ICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggY2E2YTNmY2I4NjI2NGI5ZTgyYzQzNTNhNDdjNmUyOGQ3OGNmMGVl
ZC4uOGFhOTM3NzBhN2I3NTk4MzJlZGU0ZDIwYTY2ODcwZTc5MjQyMjQ2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjA0LDggKzYwNCw5IEBAIE5l
dHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhX
ZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0gV2ViQ29y
ZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOwogI2VuZGlmCi0gICAgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsK
ICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogICAgIFdFQl9QUk9DRVNTX1BP
T0xfQURESVRJT05TXzIKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsKQEAgLTYyMyw2
ICs2MjQsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAgICAgICAgICBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5z
dGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAgICBhcHBCb3VuZERvbWFpbnMg
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuYXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2Ug
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjQ5LDYgKzY1MSw3
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJv
Y2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlOwogICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBC
b3VuZERvbWFpbnM7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5tYW51
YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQogCkBAIC02ODgsNiArNjkxLDggQEAgTmV0
d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdl
YnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQsCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUs
CisgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwKKyAgICAgICAgYXBwQm91bmRE
b21haW5zLAogICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSwKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggODdkZDg4NTFkMjg2Mjg2YTdiMjdi
ZGFiNDVkMDQ3NmNkZWZjY2M2Zi4uZTgxZTljZGNjNTgwZDViM2NjYTUyNWE1NmU1OGRmMWQwYzky
NWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMzk2LDcgKzM5
Niw3IEBAIHN0YXRpYyBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgYXBwQm91
bmREb21haW5zKCkKICAgICByZXR1cm4gYXBwQm91bmREb21haW5zOwogfQogCi12b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0
aW9uIGZvcmNlUmVpbml0aWFsaXphdGlvbikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlh
bGl6ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluaXRpYWxp
emF0aW9uIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC00MDUsMTQgKzQwNSwxNCBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWlu
aXRpYWxpemF0aW9uIGZvcmNlUmVpbgogICAgIAogICAgIHN0YXRpYyBjb25zdCBhdXRvIG1heEFw
cEJvdW5kRG9tYWluQ291bnQgPSAxMDsKICAgICAKLSAgICBhcHBCb3VuZERvbWFpblF1ZXVlKCku
ZGlzcGF0Y2goW2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgPSBwYXJhbWV0ZXJzKCkubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQsIGZvcmNl
UmVpbml0aWFsaXphdGlvbl0gKCkgbXV0YWJsZSB7CisgICAgYXBwQm91bmREb21haW5RdWV1ZSgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlzSW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQgPSBwYXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLmlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQsIGZvcmNlUmVpbml0aWFsaXphdGlvbiwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyAmJiBmb3JjZVJl
aW5pdGlhbGl6YXRpb24gIT0gRm9yY2VSZWluaXRpYWxpemF0aW9uOjpZZXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleTpAIldL
QXBwQm91bmREb21haW5zIl07CiAgICAgICAgIGtleUV4aXN0cyA9IGRvbWFpbnMgPyB0cnVlIDog
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2lzSW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQsIGZvcmNlUmVpbml0aWFsaXphdGlvbiwgZG9tYWlucyA9
IHJldGFpblB0cihkb21haW5zKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaXNJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uLCBkb21haW5zID0gcmV0YWluUHRyKGRv
bWFpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7
CiAgICAgICAgICAgICBpZiAoZm9yY2VSZWluaXRpYWxpemF0aW9uID09IEZvcmNlUmVpbml0aWFs
aXphdGlvbjo6WWVzKQogICAgICAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucygpLmNsZWFyKCk7
CiAKQEAgLTQzMyw2ICs0MzMsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxpemVB
cHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVpbgogICAgICAgICAg
ICAgICAgIFdFQlNJVEVfREFUQV9TVE9SRV9BRERJVElPTlMKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zID0gdHJ1ZTsKKyAgICAgICAgICAg
IHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogICAgIH0p
OwogfQpAQCAtNDQ0LDYgKzQ0NSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBw
Qm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNlCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICAvLyBIb3BwaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVh
ZCB0aGVuIGJhY2sgdG8gdGhlIG1haW4gdGhyZWFkCisgICAgLy8gZW5zdXJlcyB0aGF0IGluaXRp
YWxpemVBcHBCb3VuZERvbWFpbnMoKSBoYXMgZmluaXNoZWQuCiAgICAgYXBwQm91bmREb21haW5R
dWV1ZSgpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIEFTU0VSVChoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyk7CkBA
IC00ODQsNiArNDg3LDE0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21h
aW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXCiAgICAgfSk7CiB9CiAK
K09wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBXZWJzaXRlRGF0
YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGlmICghaGFzSW5pdGlhbGl6ZWRBcHBCb3Vu
ZERvbWFpbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGFwcEJv
dW5kRG9tYWlucygpOworfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlaW5pdGlhbGl6ZUFw
cEJvdW5kRG9tYWlucygpCiB7CiAgICAgaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggNTBkOTc5MzFkNGMwNWM3MDQ2NTIxYmZhNzYyZjUy
MGZmZjNjMTE4NC4uMmUyZDM5ZWVkZjYwYWU1ZjZhZjJmNWI1MGVkYjJmODMzNDEzZGJmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKQEAgLTIxOTEsNiArMjE5MSwxMyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBib29sIHNob3VsZElu
Y2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxzZTsKICAgICBib29s
IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBhdXRv
IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CisgICAgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKKyAgICBWZWN0b3I8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWluczsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBhdXRvIG9wdGlvbmFsQXBwQm91bmREb21haW5zID0gZ2V0QXBwQm91bmRE
b21haW5zSWZJbml0aWFsaXplZCgpOworICAgIGlmIChvcHRpb25hbEFwcEJvdW5kRG9tYWlucykK
KyAgICAgICAgYXBwQm91bmREb21haW5zID0gY29weVRvVmVjdG9yKCpvcHRpb25hbEFwcEJvdW5k
RG9tYWlucyk7CisjZW5kaWYKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogCiAgICAgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMgPSB7CkBAIC0yMjExLDYgKzIyMTgsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBX
ZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgV2ViQ29yZTo6U2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vLAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlLAorICAgICAgICBXVEZNb3ZlKHN0YW5kYWxvbmVBcHBsaWNh
dGlvbkRvbWFpbiksCisgICAgICAgIFdURk1vdmUoYXBwQm91bmREb21haW5zKSwKICAgICAgICAg
V1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpLAog
ICAgIH07CiAKQEAgLTIzNzksNCArMjM4OCwxOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbgog
ICAgIH0KIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCit2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gYXBwQm91bmREb21haW5zID0gZ2V0QXBwQm91bmRE
b21haW5zSWZJbml0aWFsaXplZCgpOworICAgIEFTU0VSVChhcHBCb3VuZERvbWFpbnMpOworICAg
IGlmICghYXBwQm91bmREb21haW5zKQorICAgICAgICByZXR1cm47CisgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3Jr
UHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0
d29ya1Byb2Nlc3MtPnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
bV9zZXNzaW9uSUQsICphcHBCb3VuZERvbWFpbnMpOworICAgIH0KKyNlbmRpZgorfQorI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKaW5kZXggZTg0MjMxMzI1NmJhMzFiZGQ4YTc1MGNhNTViMzNhYmRhYjJj
MDA5Mi4uYmU3NjJmYTI5MDk1ZWQ3ZTUwZmIzMzEwMTMzYWMwYWNkNGYwY2I1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaApAQCAtMjkzLDcgKzI5Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBlbnVtIGNs
YXNzIEZvcmNlUmVpbml0aWFsaXphdGlvbiA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdm9pZCBp
bml0aWFsaXplQXBwQm91bmREb21haW5zKEZvcmNlUmVpbml0aWFsaXphdGlvbiA9IEZvcmNlUmVp
bml0aWFsaXphdGlvbjo6Tm8pOworICAgIHZvaWQgaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhG
b3JjZVJlaW5pdGlhbGl6YXRpb24gPSBGb3JjZVJlaW5pdGlhbGl6YXRpb246Ok5vLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0pOwogCiAgICAgdm9pZCBmZXRjaERhdGFBbmRB
cHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJz
aXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKIApAQCAtMzI1LDYgKzMyNSwxMSBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBtYXliZVJlZ2lzdGVyV2l0aFNlc3Npb25JRE1hcCgpOwogCisgICAgT3B0
aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGdldEFwcEJvdW5kRG9t
YWluc0lmSW5pdGlhbGl6ZWQoKSBjb25zdDsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2VuZGlmCisKICAgICBjb25zdCBQ
QUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396810</attachid>
            <date>2020-04-17 15:35:11 -0700</date>
            <delta_ts>2020-04-30 15:11:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200417153510.patch</filename>
            <type>text/plain</type>
            <size>27625</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwNjZmOGVhMDg3ZGNjNTVj
YzM1MWRiNGQyMzI5ODQ4Nzk3ZmU2ZWIuLjk2YWQzOWQ0YzQ0MTA4Y2EzOTczMGMzNjA0YzE5NGQ2
ZWQ3ZTNmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDQtMTcgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBk
b21haW5zIGZyb20gSVRQJ3Mgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndhcmRzIGluZm9ybWF0aW9uIGFib3V0IGFwcC1ib3Vu
ZCBkb21haW5zIHRvIElUUAorICAgICAgICBTbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9t
IHdlYnNpdGUgZGF0YSBkZWxldGlvbi4KKworICAgICAgICBTaW5jZSBhcHAtYm91bmQgZG9tYWlu
cyBhcmUgbG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEKKyAgICAgICAgQmFja2dyb3Vu
ZCB0aHJlYWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbgorICAgICAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycyBpZiB0aGV5J3ZlIGFscmVhZHkgYmVlbiBsb2FkZWQuCisg
ICAgICAgIFRoZW4gZXZlcnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUgdXBkYXRlZCwgdGhl
eSBhcmUKKyAgICAgICAgZm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQgSVRQIHdp
bGwgaGF2ZSB0aGVtIGFzIHNvb24KKyAgICAgICAgYXMgcG9zc2libGUuCisKKyAgICAgICAgV2ls
bCBhZGQgdGVzdHMgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0
ZURhdGFGb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbiBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5zIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21h
aW5zSWZJbml0aWFsaXplZCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBw
Qm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAyMC0wNC0xNyAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRGVueSBpb2tp
dCBvcGVuIGFjY2VzcyBvZiB1bnVzZWQgY2xhc3MgaW4gdGhlIFdlYkNvbnRlbnQgc2FuZGJveApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKaW5kZXggZjJjNGZmZDdiNDRmZTY4ZTQ5YTI3ODk0YzU2OWQ0NzU5MmY4ZWEzNC4uZDVmYmNh
ZjZiYjhmZGYzNWNhMGU2NjMwODMxZWMzMDM3YmY4YjE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNDYxLDcgKzI0
NjEsNyBAQCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhcwogICAgIFZlY3RvcjxEb21haW5EYXRhPiBk
b21haW5zID0gdGhpcy0+ZG9tYWlucygpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gZG9tYWluSURz
VG9DbGVhckdyYW5kZmF0aGVyaW5nOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogZG9tYWlu
cykgewotICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNp
dGVEYXRhRGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRl
c3RVc2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZSk7CiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMs
IHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDYzZTYzZjk5NGFmNTM1OTA0
NWU1MzUzODBiM2ZmNWI4ZDIyMTdjNzEuLjhiMmE1YmZhY2E4ZWMwYjNkYzBiNmFlYThlZDYyOGU4
YjQzZWQ2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCkBAIC05ODAsNyArOTgwLDcgQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxl
dGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVMK
ICAgICBhdXRvIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IG5vdzsKICAgICBSZWdpc3RyYWJsZURv
bWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZU9yUmVzdHJpY3RG
b3I7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52
YWx1ZXMoKSkgewotICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJv
bVdlYnNpdGVEYXRhRGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1p
bihvbGRlc3RVc2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZSk7CiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0
aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGFiNTZhODA1MDgzYzdiOGFiMDE0ZDI2
ZmVhYzc3MzRmNzg1MmMwOGUuLjJkNjEzYzg4ODAxMjU0NzQ1Nzk0YzRiMTUyYWNlMmQ4ZDBjZDhk
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC02
NDksNiArNjQ5LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xv
Z0RvbWFpbnNJbkJhdGNoZXMoY29uc3QgY2hhciogYWN0aW9uLCBjCiAgICAgICAgIFJFTEVBU0Vf
TE9HX0lORk8oSVRQRGVidWcsICIlIiBQVUJMSUNfTE9HX1NUUklORyAiIHRvICgle3B1YmxpY31k
IG9mICV1KTogJSIgUFVCTElDX0xPR19TVFJJTkcgIi4iLCBhY3Rpb24sIGJhdGNoTnVtYmVyLCBu
dW1iZXJPZkJhdGNoZXMsIGRvbWFpbnNUb1N0cmluZyhiYXRjaCkudXRmOCgpLmRhdGEoKSk7CiB9
CiAKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vi
c2l0ZURhdGFEZWxldGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAor
eworICAgIHJldHVybiBkb21haW4gPT0gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gfHwg
bV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMoZG9tYWluKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CmluZGV4IGVmNGM2NmY4N2E4NmJlZDllMzY3OTZlNDkyYmE1OTQ1YWQ1YTAwNGQuLjkxN2RiMDlh
MTAyNTk5YzZiYjdkY2E5MjA5NGRkYmM5NzA0Y2M5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTE2OSw2ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9z
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9PSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZDo6WWVzOyB9OwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUgbW9kZSkgeyBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbW9kZTsgfQog
ICAgIHZvaWQgc2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluKSB7IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gV1RGTW92ZShkb21h
aW4pOyB9CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4mJiBkb21haW5zKSB7IG1fYXBwQm91bmREb21haW5zID0gV1RGTW92ZShkb21haW5zKTsg
fQogCiAgICAgdmlydHVhbCBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVy
KGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwpAQCAtMjQ3LDcgKzI0OCw3IEBA
IHByb3RlY3RlZDoKICAgICBib29sIGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQ7IH07CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9CiAgICAgV2ViQ29yZTo6Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOyB9
Ci0gICAgUmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkgY29u
c3QgeyByZXR1cm4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47IH0KKyAgICBib29sIHNo
b3VsZEV4ZW1wdEZyb21XZWJzaXRlRGF0YURlbGV0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE51bWJlck9mUmVj
dXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VCYWNrIHsgNTAgfTsKICAgICAKQEAgLTI4OSw2ICsy
OTAsNyBAQCBwcml2YXRlOgogICAgIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNs
dWRlTG9jYWxob3N0IHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CiAgICAgV2ViQ29y
ZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
OjpBbGxCdXRDb29raWVzIH07CiAgICAgUmVnaXN0cmFibGVEb21haW4gbV9zdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW47CisgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3Vu
ZERvbWFpbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMWVmOGFjZGI1NTUwYThmNmZh
ZGZmNmNjMThmMDRhYzc4YWQxMDE0Ni4uMmFhNDVlNmMxMDI2MTZhZjUxOGI4MGIzYjgzMzkxODQ5
NWIxZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKQEAgLTY1NSw2ICs2NTUsMjAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3QKICAgICB9
KTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJvdW5k
RG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRvbWFp
bnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9t
YWlucyA9IFdURk1vdmUoZG9tYWlucyldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9zdGF0
aXN0aWNzU3RvcmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc3RhdGlzdGljc1N0
b3JlLT5zZXRBcHBCb3VuZERvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CisgICAgfSk7Cit9CisK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJv
Y2VzcygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAzMDMwYTRkODYwMmM4NjVjNTgz
ODI2ZGQyYWJkMGM2NDQ4YzZlZDI2Li5mOTY3NmJmMzdhNTE5MjNlYzk4YWZkYmE5MDA2YWY0M2Qy
YWYxMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CkBAIC0yNzgsNiArMjc4LDcgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIHNl
dFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRFbmFibGVkKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYmKTsKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICB2
b2lkIG5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMTBkNWNhMDYx
YjdjZmQ4ZWMxNjk1OTY0Y2Y5NmRlNGRlYjI2YTg5MS4uNDUyZTNhZWZlZDJiOTU1NDY2OGU2MDJj
ZWY0MWQ4YzI3YWJkNzFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEyNzksNiArMTI3OSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOgogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYmIGFwcEJvdW5kRG9tYWlucykKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9t
YWlucyhXVEZNb3ZlKGFwcEJvdW5kRG9tYWlucykpOworICAgIH0KK30KKwogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbZW5hYmxlZF0oYXV0byYgbmV0d29ya1Nlc3Npb24pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA1
OWYwZmNlZmQ0NmM0MjMwZGFkZWQ3ZDcxZTIzZWJjYWQyMWQ4ZDJlLi40ODAwMDczNzg2Yzg0ZGY3
YThiOTRmOTk1MTAwZGZjZGRmOWZmYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNjMsNiArMjYzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGhhc0lz
b2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAgICB2b2lk
IHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9u
SUQsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpOwogICAgIGJvb2wgaXNJ
VFBEYXRhYmFzZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSVRQRGF0YWJhc2VFbmFibGVk
OyB9CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggYjIzZWYxZDAxYTA1ODIzODlmNzY5MzQyOWJlMDI5NzhlYzA2ZTIxOS4u
ZjA2YjAxYTI4MjdhNGViMzcyYjg3MmVkNjk3YWQ0MDU5MmQ0ZDM1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0xMzgsNiArMTM4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBEZWxldGVDb29r
aWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKSAtPiAoKSBBc3lu
YwogICAgIEhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9u
KSBBc3luYworICAgIFNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBhcHBCb3VuZERvbWFpbnMpCiAgICAgU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JU
ZXN0aW5nKGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkg
LT4gKCkgQXN5bmMKICAgICBTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRG
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTpib29sIFdlYkNvcmU6OlNh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIC0+ICgpIEFzeW5jCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDc1
MjRlNDhlMTk3NjQ0MmZiNWM2NzNjNzk4ZDY2NDFjNWEzYWFlNjAuLjA0MGMxZjYyMTM2MzFkMzMw
YjJjNDZiNTQ1MmZjMmM0ZmZiYzRlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0xMjksNiArMTI5LDEyIEBAIE5ldHdvcmtTZXNz
aW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0
IE5ldHdvcmtTZXNzCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyAmJiAhcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5h
cHBCb3VuZERvbWFpbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+IHNldDsKKyAgICAgICAgc2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuc2l6ZSgp
KTsKKyAgICAgICAgc2V0LmFkZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLmFwcEJvdW5kRG9tYWlucy5iZWdpbigpLCBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucy5lbmQoKSk7CisgICAgICAgIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoc2V0KSk7Cisg
ICAgfQogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCmluZGV4IDkyN2FlYzNhNzRhZDFlZmNiNTk0
OGEwNDNmODFmY2YyOWY5YmViOWUuLmUyZWY4NWRiMTRjYjY2ZmMyNjgwM2I3NzA5OTg0NzMwYjVi
ZjkzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuaApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
eyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2ll
cyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBC
b3VuZERvbWFpbnMgeyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1hbnVhbFBy
ZXZhbGVudFJlc291cmNlIHsgfTsKICAgICAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CkBAIC02NSw2ICs2Niw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICAgICAgZW5jb2RlciA8PCBmaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgZW5jb2RlciA8PCBzdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW47CisgICAgICAgIGVuY29kZXIgPDwgYXBwQm91bmREb21haW5zOwogICAg
ICAgICBlbmNvZGVyIDw8IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgIH0KIApAQCAtMTI3
LDYgKzEyOSwxMSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewog
ICAgICAgICBpZiAoIXN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPj4gYXBwQm91bmREb21haW5zOworICAgICAgICBkZWNvZGVyID4+IGFw
cEJvdW5kRG9tYWluczsKKyAgICAgICAgaWYgKCFhcHBCb3VuZERvbWFpbnMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgZGVjb2RlciA+
PiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgaWYgKCFtYW51YWxQcmV2YWxlbnRS
ZXNvdXJjZSkKQEAgLTE0Niw2ICsxNTMsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgICAgICAgICBXVEZNb3ZlKCpmaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpzdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW4pLAorICAgICAgICAgICAgV1RGTW92ZSgqYXBwQm91bmREb21haW5zKSwK
ICAgICAgICAgICAgIFdURk1vdmUoKm1hbnVhbFByZXZhbGVudFJlc291cmNlKSwKICAgICAgICAg
fX07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMDg1ZTQ0Yzc2M2ZiNDAzZWJlYjQxNzE1MGQ4
ZTI2ZTQ1OWNmOTMwMi4uYzY2NzJiNDFhYTUwYjEyZWExYTU0N2I3NTU0ZDVlYjU0MWMwMTQ5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0xMTAwLDYgKzExMDAsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWcKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpI
YXNJc29sYXRlZFNlc3Npb24oc2Vzc2lvbklELCBkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21h
aW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMpCit7CisgICAgaWYgKCFj
YW5TZW5kTWVzc2FnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhzZXNzaW9uSUQsIGFwcEJvdW5kRG9tYWlucyksIDApOworfQorCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJs
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYjg2NTdhMmYwYjljNzA0
YzIzMTAwNTNmMjViMDY5ODY5MGQ4ZDcwNi4uMjM3NjA1OTFmMmI5MjU1MzE1ZDRkMmFhZDlmZjdm
MmQ3ZTM3ZDMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9y
UmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0
YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7CiAg
ICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggY2E2YTNmY2I4NjI2NGI5ZTgyYzQzNTNhNDdjNmUyOGQ3OGNmMGVl
ZC4uOGFhOTM3NzBhN2I3NTk4MzJlZGU0ZDIwYTY2ODcwZTc5MjQyMjQ2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjA0LDggKzYwNCw5IEBAIE5l
dHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhX
ZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0gV2ViQ29y
ZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOwogI2VuZGlmCi0gICAgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsK
ICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogICAgIFdFQl9QUk9DRVNTX1BP
T0xfQURESVRJT05TXzIKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsKQEAgLTYyMyw2
ICs2MjQsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAgICAgICAgICBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5z
dGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAgICBhcHBCb3VuZERvbWFpbnMg
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuYXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2Ug
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjQ5LDYgKzY1MSw3
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJv
Y2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlOwogICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBC
b3VuZERvbWFpbnM7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5tYW51
YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQogCkBAIC02ODgsNiArNjkxLDggQEAgTmV0
d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdl
YnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQsCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUs
CisgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwKKyAgICAgICAgYXBwQm91bmRE
b21haW5zLAogICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSwKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggODdkZDg4NTFkMjg2Mjg2YTdiMjdi
ZGFiNDVkMDQ3NmNkZWZjY2M2Zi4uZWFmNzVhODIwMDNjNjIyZDgyNWQ4ZDRkMzlmZmM5NDYyNzJi
MjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNDA1LDE0ICs0
MDUsMTQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5z
KEZvcmNlUmVpbml0aWFsaXphdGlvbiBmb3JjZVJlaW4KICAgICAKICAgICBzdGF0aWMgY29uc3Qg
YXV0byBtYXhBcHBCb3VuZERvbWFpbkNvdW50ID0gMTA7CiAgICAgCi0gICAgYXBwQm91bmREb21h
aW5RdWV1ZSgpLmRpc3BhdGNoKFtpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkID0gcGFyYW1l
dGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkLCBmb3JjZVJlaW5pdGlhbGl6YXRpb25dICgpIG11dGFibGUgeworICAgIGFwcEJvdW5kRG9t
YWluUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkID0gcGFyYW1ldGVycygpLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkLCBmb3JjZVJlaW5pdGlh
bGl6YXRpb25dICgpIG11dGFibGUgewogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZWRBcHBCb3Vu
ZERvbWFpbnMgJiYgZm9yY2VSZWluaXRpYWxpemF0aW9uICE9IEZvcmNlUmVpbml0aWFsaXphdGlv
bjo6WWVzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgTlNBcnJheTxO
U1N0cmluZyAqPiAqZG9tYWlucyA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gb2JqZWN0Rm9ySW5m
b0RpY3Rpb25hcnlLZXk6QCJXS0FwcEJvdW5kRG9tYWlucyJdOwogICAgICAgICBrZXlFeGlzdHMg
PSBkb21haW5zID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkLCBmb3JjZVJlaW5pdGlh
bGl6YXRpb24sIGRvbWFpbnMgPSByZXRhaW5QdHIoZG9tYWlucyldIHsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQsIGZvcmNlUmVpbml0aWFsaXphdGlvbiwgZG9t
YWlucyA9IHJldGFpblB0cihkb21haW5zKV0gewogICAgICAgICAgICAgaWYgKGZvcmNlUmVpbml0
aWFsaXphdGlvbiA9PSBGb3JjZVJlaW5pdGlhbGl6YXRpb246OlllcykKICAgICAgICAgICAgICAg
ICBhcHBCb3VuZERvbWFpbnMoKS5jbGVhcigpOwogCkBAIC00MzMsNiArNDMzLDcgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKEZvcmNlUmVpbml0aWFs
aXphdGlvbiBmb3JjZVJlaW4KICAgICAgICAgICAgICAgICBXRUJTSVRFX0RBVEFfU1RPUkVfQURE
SVRJT05TCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBoYXNJbml0aWFsaXplZEFwcEJvdW5k
RG9tYWlucyA9IHRydWU7CisgICAgICAgICAgICBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtNDQ0LDYgKzQ0
NSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5zKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICAvLyBIb3BwaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCB0aGVuIGJhY2sgdG8gdGhl
IG1haW4gdGhyZWFkCisgICAgLy8gZW5zdXJlcyB0aGF0IGluaXRpYWxpemVBcHBCb3VuZERvbWFp
bnMoKSBoYXMgZmluaXNoZWQuCiAgICAgYXBwQm91bmREb21haW5RdWV1ZSgpLmRpc3BhdGNoKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFT
U0VSVChoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyk7CkBAIC00ODQsNiArNDg3LDE0IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSGFzaFNldDxXCiAgICAgfSk7CiB9CiAKK09wdGlvbmFsPEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3Vu
ZERvbWFpbnNJZkluaXRpYWxpemVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGlmICghaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGFwcEJvdW5kRG9tYWlucygpOworfQor
CiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucygpCiB7
CiAgICAgaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKaW5kZXggNTBkOTc5MzFkNGMwNWM3MDQ2NTIxYmZhNzYyZjUyMGZmZjNjMTE4NC4uYjk5ODVl
MmU1MzcwZGQwNzI1YzY1NjJkMTc5NzIxYzZlNjAyZjA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAg
LTIxOTEsNiArMjE5MSwxMyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0
YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGU6OkFsbEJ1dENvb2tpZXM7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRh
bG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IGFwcEJvdW5kRG9tYWluczsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRv
IG9wdGlvbmFsQXBwQm91bmREb21haW5zID0gZ2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXpl
ZCgpOworICAgIGlmIChvcHRpb25hbEFwcEJvdW5kRG9tYWlucykKKyAgICAgICAgYXBwQm91bmRE
b21haW5zID0gY29weVRvVmVjdG9yKCpvcHRpb25hbEFwcEJvdW5kRG9tYWlucyk7CisjZW5kaWYK
ICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
dWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgPSB7CkBAIC0yMjExLDYg
KzIyMTgsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpw
YXJhbWV0ZXJzKCkKICAgICAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQ6Ok5vLAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlLAorICAgICAgICBXVEZNb3ZlKHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiksCisgICAg
ICAgIFdURk1vdmUoYXBwQm91bmREb21haW5zKSwKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpLAogICAgIH07CiAKQEAgLTIzNzks
NCArMjM4OCwxOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbgogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoKQoreworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGF1dG8gYXBwQm91bmREb21haW5zID0gZ2V0QXBwQm91bmREb21haW5z
SWZJbml0aWFsaXplZCgpOworICAgIEFTU0VSVChhcHBCb3VuZERvbWFpbnMpOworICAgIGlmICgh
YXBwQm91bmREb21haW5zKQorICAgICAgICByZXR1cm47CisgICAgZm9yIChhdXRvJiBwcm9jZXNz
UG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2Vz
cyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1By
b2Nlc3MtPnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MobV9zZXNz
aW9uSUQsICphcHBCb3VuZERvbWFpbnMpOworICAgIH0KKyNlbmRpZgorfQorI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKaW5kZXggZTg0MjMxMzI1NmJhMzFiZGQ4YTc1MGNhNTViMzNhYmRhYjJjMDA5Mi4u
ZGU0Y2Q2MTRjYTkwYjhkMWUzMTRlYjMzZjQyMThhZGVlMGY1NWYyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApA
QCAtMzI1LDYgKzMyNSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYXliZVJlZ2lzdGVyV2l0
aFNlc3Npb25JRE1hcCgpOwogCisgICAgT3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4+IGdldEFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKSBjb25zdDsKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIHZvaWQgc2V0QXBwQm91bmRE
b21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworI2VuZGlmCisKICAgICBjb25zdCBQ
QUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398098</attachid>
            <date>2020-04-30 15:11:07 -0700</date>
            <delta_ts>2020-04-30 15:14:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200430151106.patch</filename>
            <type>text/plain</type>
            <size>90170</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ1MjBmMGE2MGNiMjVm
MmM4NjRmN2M0ZmQxNzQ1NTBkOTc0NTdhOC4uNjQ5NjIzOGIwNzAyZDA5NGZmNWRiNzI0ZGRlODZk
OGE3NTM0YmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA0LTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91
bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFy
dHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIHRvIGFsbG93IGl0IHRvIGV4ZW1wdAorICAgICAgICBhcHAtYm91bmQgZG9tYWlucyBm
cm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KKworICAgICAgICBDYWxscyB0byBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5kRG9tYWlucygpIGFuZAorICAgICAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZygpIGF1dG9tYXRp
Y2FsbHkgc2V0cyB0aGUKKyAgICAgICAgY29va2llIGJsb2NraW5nIHBvbGljeSB0bworICAgICAg
ICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmRE
b21haW5zLgorCisgICAgICAgIENhbGxzIHRvIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRB
cHBCb3VuZERvbWFpbnMoKSBhdXRvbWF0aWNhbGx5IHNldHMgdGhlCisgICAgICAgIGNvb2tpZSBi
bG9ja2luZyBwb2xpY3kgdG8gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIHdoaWNo
IGlzIHRoZQorICAgICAgICBkZWZhdWx0LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVt
cHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2Fw
cC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFz
ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEt
ZGVsZXRpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
aG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERvbWFpbnMpOgorCiAyMDIwLTA0LTMwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuV2ViQ29udGVu
dCBwcm9jZXNzIGNyYXNoZXMgd2hlbiB3ZWIgZGV2ZWxvcGVyIHRvb2xzIGFyZSBvcGVuZWQgaW4g
U2FmYXJpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDk1YzNkYjE3OWZmNzYxNzdiYmY4NWZkMzgzZThhN2YyNGY0Yjc0
MGYuLjFlODFjYjc5NjA5NjE5MmE2ZDNmNzZiOTQyMThkNzI3OWU0ODYyMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzggQEAKKzIwMjAtMDQtMzAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5zIGZyb20gSVRQJ3Mgd2Vi
c2l0ZSBkYXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcgYmV0d2Vl
biB0aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndh
cmRzIGluZm9ybWF0aW9uIGFib3V0IGFwcC1ib3VuZCBkb21haW5zIHRvIElUUCBhbmQgd2ViCisg
ICAgICAgIHByb2Nlc3NlcyBzbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9tIHdlYnNpdGUg
ZGF0YSBkZWxldGlvbiBhbmQKKyAgICAgICAgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJl
dHdlZW4gdGhlbXNlbHZlcy4KKworICAgICAgICBTaW5jZSBhcHAtYm91bmQgZG9tYWlucyBhcmUg
bG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEgYmFja2dyb3VuZAorICAgICAgICB0aHJl
YWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycyBpZgorICAgICAgICB0aGV5J3ZlIGFscmVhZHkgYmVlbiBsb2FkZWQuIFRoZW4gZXZl
cnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUKKyAgICAgICAgdXBkYXRlZCwgdGhleSBhcmUg
Zm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQgSVRQIHdpbGwgaGF2ZSB0aGVtCisg
ICAgICAgIGFzIHNvb24gYXMgcG9zc2libGUuCisKKyAgICAgICAgU2V0dGluZyBhcHAtYm91bmQg
ZG9tYWlucyBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBhdXRvbWF0aWNhbGx5IHN3aXRjaGVzCisg
ICAgICAgIElUUCdzIGNvb2tpZSBibG9ja2luZyBwb2xpY3kgdG8gdGhlIG5ldworICAgICAgICBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBw
Qm91bmREb21haW5zLgorCisgICAgICAgIEEgbmV3IGZ1bmN0aW9uIGlzIGFkZGVkOiBXZWJzaXRl
RGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkKKyAgICAgICAgVGhp
cyBmdW5jdGlvbiBhbGxvd3MgZmV0Y2hpbmcgb2YgYXBwLWJvdW5kIGRvbWFpbnMgd2l0aG91dCB0
cmlnZ2VyaW5nCisgICAgICAgIHRoZSBsYXp5IGxvYWRpbmcuIFRoaXMgaXMganVzdCB0byBhbGxv
dyBzcGVjdWxhdGl2ZSBjb25maWd1cmF0aW9uIG9mIElUUAorICAgICAgICByaWdodCB3aGVuIGl0
J3MgY3JlYXRlZCDigJQgaWYgYW55IGFwcC1ib3VuZCBkb21haW5zIGFyZSBhbHJlYWR5IGNvbmZp
Z3VyZWQsCisgICAgICAgIGZvcndhcmQgdGhlbSB0byBJVFAgdmlhIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLgorCisgICAgICAgIFRoZSBDIEFQSSBjaGFuZ2VzIGFyZSBmb3IgdGVz
dCBwdXJwb3Nlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJv
dW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNob3VsZEV4ZW1w
dEZyb21XZWJzaXRlRGF0YURlbGV0aW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFwcEJvdW5kRG9tYWlucyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91bmRE
b21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjphZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NBZGRBcHBCb3Vu
ZERvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBw
Qm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5kRG9tYWluc0lmSW5p
dGlhbGl6ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWRkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
OgorCiAyMDIwLTA0LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBjaGFuZ2UgYSBXS1dlYlZpZXcncyBDT1JTIGRpc2Fi
bGluZyBwYXR0ZXJuIGFmdGVyIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXgg
YzU4NjY5ZjFjZjJjOWIxYzRiNmU2ZThjNjQ1OWRjYmE5MWFmNThmMy4uYzQ2YWUzODRlZjU3ODc0
ZjMzMGU0ZDQxNmRiNDkyNmIzZWQ4ZjI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMTM0LDYg
KzEzNCw4IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywKICAgICBzd2l0Y2ggKG1fdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSkgewogICAgIGNhc2UgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTo6QWxsOgogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnM6CisgICAgICAg
IHJldHVybiAhc2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pOwogICAgIGNhc2UgVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb246CiAg
ICAgICAgIGlmICghaGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGZpcnN0UGFydHlE
b21haW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDUsNiArMTQ3LDEyIEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29uc3QKK3sKKyAgICBBU1NFUlQo
dG9wRnJhbWVEb21haW4gIT0gcmVzb3VyY2VEb21haW4pOworICAgIHJldHVybiB0b3BGcmFtZURv
bWFpbiA9PSByZXNvdXJjZURvbWFpbiB8fCAobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnModG9w
RnJhbWVEb21haW4pICYmIG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKHJlc291cmNlRG9tYWlu
KSk7Cit9CisKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdl
Q2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2NrQ29va2llcyhy
ZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCkBAIC0yOTIsNiArMzAwLDI3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKFRoaXJkUGFydHlDb29raWVCbG9jCiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gYmxvY2tpbmdNb2RlOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKK3sK
KyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7CisgICAgc2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxF
eGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlc2V0QXBwQm91bmREb21haW5zKCkKK3sKKyAgICBtX2FwcEJvdW5kRG9tYWlucy5j
bGVhcigpOworICAgIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTo6QWxsKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluKQoreworICAgIC8vIE9ubHkgc3VwcG9ydCB0d28gYXBwLWJvdW5kIGRvbWFpbnMgZm9yIHRl
c3RpbmcuCisgICAgaWYgKG1fYXBwQm91bmREb21haW5zLnNpemUoKSA+PSAyKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9hcHBCb3VuZERvbWFpbnMuYWRkKGRvbWFpbik7CisgICAgc2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxF
eGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25z
dAogewogICAgIGlmICghbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyB8fCAhcGFnZUlEIHx8
IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291cmNlLmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IDEzOTFkZWQ0ZDg4ZWRiMjc2MDJmNjljMDZkMmZhMTM4
MGRiODI3ZDQuLjI5NTljODNjNjEyZTg2NWQwZGVhYTMzZjlhNDE4NDFhNTYzMjAxMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaApAQCAtNzcsNyArNzcsNyBAQCBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogZW51bSBj
bGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVz
IDogYm9vbDsKLWVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4
X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5n
VG9QZXJEb21haW5Qb2xpY3kgfTsKK2VudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIEFs
bE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Q
b2xpY3kgfTsKIGVudW0gY2xhc3MgU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgOiBi
b29sIHsgWWVzLCBObyB9OwogZW51bSBjbGFzcyBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBBbGxCdXRDb29raWVzTGl2ZU9u
VGVzdGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3RpbmdUaW1lb3V0IH07CiBlbnVt
IGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC05NSw2ICs5NSw5IEBA
IHB1YmxpYzoKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKKyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGVybWl0UHJvY2Vz
c1RvVXNlQ29va2llQVBJKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHBy
b2Nlc3NNYXlVc2VDb29raWVBUEkoKTsKIApAQCAtMTk2LDYgKzE5OSw5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5z
ZmVyRnJvbVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFp
biwgUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMo
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXNldEFwcEJvdW5kRG9tYWlucygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXBwQm91
bmREb21haW5Gb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTI0MSw3ICsyNDcsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCA9IGZhbHNlOwotICAgIE9wdGlvbmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVD
YXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPikgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNh
cChjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7
CisgICAgYm9vbCBzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9j
a2luZyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJikgY29u
c3Q7CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKICAgICBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb25Bc0ZpcnN0UGFydHk7CkBAIC0yNTMsNiArMjYwLDcgQEAgcHJpdmF0ZToKICAgICBIYXNo
TWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0
ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25h
dmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogICAgIFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CisgICAgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtMjc3LDYgKzI4NSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUs
CiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCwKKyAg
ICAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0
d2VlbkFwcEJvdW5kRG9tYWlucywKICAgICAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sCiAgICAgICAgIFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6Ok9ubHlBY2NvcmRpbmdUb1BlckRv
bWFpblBvbGljeQogICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA0NjI4MDI4NTc5YTRmNDE0NjA4N2I1NjA1YTI3
ZGE2YjViMjdmMmVmLi40OGQyM2YxZDYxMTI3ZmE0NTQ0M2YzMzg4ZmI0NzQzYzE1Mjc1ODkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKQEAgLTI2MTQsNyArMjYxNCw3IEBAIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzCiAgICAg
VmVjdG9yPERvbWFpbkRhdGE+IGRvbWFpbnMgPSB0aGlzLT5kb21haW5zKCk7CiAgICAgVmVjdG9y
PHVuc2lnbmVkPiBkb21haW5JRHNUb0NsZWFyR3JhbmRmYXRoZXJpbmc7CiAgICAgZm9yIChhdXRv
JiBzdGF0aXN0aWMgOiBkb21haW5zKSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWMucmVnaXN0cmFi
bGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAgIGlmIChz
aG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihzdGF0aXN0aWMucmVnaXN0cmFibGVE
b21haW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG9sZGVzdFVzZXJJbnRlcmFj
dGlvbiA9IHN0ZDo6bWluKG9sZGVzdFVzZXJJbnRlcmFjdGlvbiwgc3RhdGlzdGljLm1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFsbFdlYnNp
dGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5k
ZXggNjUwNjc5NzE5NjIyYWYxMmZhZDVjMTYyZjJjZGRjYWFhYjkwZTQ3Ni4uYWY1MDA0MWQyMzdi
NDBjNzZkNWI0ZDFjNzYwODg5NTNhM2FmOGY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTk4MCw3ICs5ODAsNyBAQCBSZWdp
c3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5UwogICAgIGF1dG8gb2xkZXN0VXNlckludGVyYWN0aW9uID0gbm93
OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
IHRvRGVsZXRlT3JSZXN0cmljdEZvcjsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWMucmVn
aXN0cmFibGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAg
IGlmIChzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihzdGF0aXN0aWMucmVnaXN0
cmFibGVEb21haW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG9sZGVzdFVzZXJJ
bnRlcmFjdGlvbiA9IHN0ZDo6bWluKG9sZGVzdFVzZXJJbnRlcmFjdGlvbiwgc3RhdGlzdGljLm1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFs
bFdlYnNpdGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggYWI1
NmE4MDUwODNjN2I4YWIwMTRkMjZmZWFjNzczNGY3ODUyYzA4ZS4uMTUxN2EzNTRiNDJlYzNhZTBl
Mzg0ZmYyYTQ0OWUyMTlmODVmYWFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTMxNCw2ICszMTQsMjEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lz
dHIKICAgICBtX2RlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBkb21haW47CiB9CiAKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQoreworICAgIG1fYXBwQm91bmREb21haW5z
ID0gV1RGTW92ZShkb21haW5zKTsKKyAgICBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
KFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERv
bWFpbnMpOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWRkQXBwQm91
bmREb21haW5Gb3JUZXN0aW5nKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKQoreworICAgIC8v
IE9ubHkgc3VwcG9ydCB0d28gYXBwLWJvdW5kIGRvbWFpbnMgZm9yIHRlc3RpbmcuCisgICAgaWYg
KG1fYXBwQm91bmREb21haW5zLnNpemUoKSA+PSAyKQorICAgICAgICByZXR1cm47CisgICAgbV9h
cHBCb3VuZERvbWFpbnMuYWRkKFdURk1vdmUoZG9tYWluKSk7CisgICAgc2V0VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRC
ZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWZOZWNlc3NhcnkoKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTY1LDYgKzU4MCw4IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9wYXJhbWV0
ZXJzID0geyB9OworICAgIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0geyB9OworICAg
IG1fYXBwQm91bmREb21haW5zLmNsZWFyKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKQEAgLTY0OSw2
ICs2NjYsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRlYnVnTG9nRG9t
YWluc0luQmF0Y2hlcyhjb25zdCBjaGFyKiBhY3Rpb24sIGMKICAgICAgICAgUkVMRUFTRV9MT0df
SU5GTyhJVFBEZWJ1ZywgIiUiIFBVQkxJQ19MT0dfU1RSSU5HICIgdG8gKCV7cHVibGljfWQgb2Yg
JXUpOiAlIiBQVUJMSUNfTE9HX1NUUklORyAiLiIsIGFjdGlvbiwgYmF0Y2hOdW1iZXIsIG51bWJl
ck9mQmF0Y2hlcywgZG9tYWluc1RvU3RyaW5nKGJhdGNoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAor
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNob3VsZEV4ZW1wdEZyb21XZWJzaXRl
RGF0YURlbGV0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGRvbWFpbiA9PSBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB8fCBtX2Fw
cEJvdW5kRG9tYWlucy5jb250YWlucyhkb21haW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5k
ZXggNDQ4MzMzYzQ5ZjYzYjJmMTkyMGI4NmUzMzIwNTg3ZmNlMzViNjkzYi4uNmU4ZTA1YzJjZTBi
YjZhYTM2NjUwMDM4MTYyNTg0ZGI4YzU3ODAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaApAQCAtMTY5LDYgKzE2OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlz
U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID09IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkOjpZZXM7IH07CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBt
b2RlKSB7IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBtb2RlOyB9CiAgICAg
dm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oUmVnaXN0cmFibGVEb21haW4mJiBk
b21haW4pIHsgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBXVEZNb3ZlKGRvbWFpbik7
IH0KKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiYmKTsKKyAgICB2b2lkIGFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhSZWdpc3RyYWJsZURv
bWFpbiYmKTsKKyAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMo
KSBjb25zdCB7IHJldHVybiBtX2FwcEJvdW5kRG9tYWluczsgfQogCiAgICAgdmlydHVhbCBib29s
IGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWlu
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1l
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgPSAwOwpAQCAtMjQ5LDcgKzI1Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29s
IGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTG9nZ2luZ0VuYWJs
ZWQ7IH07CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z01vZGVFbmFibGVkOyB9CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOyB9Ci0gICAgUmVnaXN0cmFibGVEb21h
aW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9zdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW47IH0KKyAgICBib29sIHNob3VsZEV4ZW1wdEZyb21XZWJzaXRl
RGF0YURlbGV0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE51bWJlck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0
VHJhY2VCYWNrIHsgNTAgfTsKICAgICAKQEAgLTI5MSw2ICsyOTQsNyBAQCBwcml2YXRlOgogICAg
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0IHsgU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAg
ICAgUmVnaXN0cmFibGVEb21haW4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAg
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggNjhmNTVjNGM1Y2RkZTc1YzZiNDJhYjIyYWY4NzMxOWVkNjg2NDZi
Mi4uNmQ3ODBkNWM1ZTNiNjQxNDVmNGY0NWFlMDZmMWMzNWI0YjY5YjhiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTY3OCw2ICs2Nzgs
NTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN0YW5kYWxvbmVB
cHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3QKICAgICB9KTsKIH0KIAordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRvbWFpbnMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29w
eShkb21haW5zKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldEFwcEJv
dW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9KTsKKworICAgIGlmIChtX25ldHdv
cmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29y
a1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICAgICAgc3RvcmFnZVNl
c3Npb24tPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZGRBcHBCb3VuZERvbWFpbkZv
clRlc3RpbmcoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRv
bWFpbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0g
bV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgICAgICBz
dG9yYWdlU2Vzc2lvbi0+YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKGRvbWFpbik7CisgICAg
fQorCisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGNyb3NzVGhyZWFkQ29weShkb21haW4p
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5n
KFdURk1vdmUoZG9tYWluKSk7CisgICAgICAgIGF1dG8gdG90YWxBcHBCb3VuZERvbWFpbnMgPSBt
X3N0YXRpc3RpY3NTdG9yZS0+YXBwQm91bmREb21haW5zKCkuc2l6ZSgpOworICAgICAgICBwb3N0
VGFza1JlcGx5KFt0b3RhbEFwcEJvdW5kRG9tYWlucywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHRvdGFsQXBwQm91bmREb21haW5zKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3Jr
UHJvY2VzcygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTEyODAsNiAr
MTMyNSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJh
bWV0ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCisgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisg
ICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+cmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKKyAgICB9
CisKICAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3Jl
KQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVs
dFZhbHVlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CmluZGV4IDEzNTliM2I3ZTc1ZTA5NDUxNDdjOTcyNGE3ZjgwNGZhNTUyYzY3NmUuLjQ4ZmJjYmJk
NmM3NDEzYTQ3YjhkNjljZjY4Y2YxMDU2ZTg0Y2RlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI3OSw2ICsyNzksOCBAQCBzdHJ1Y3QgVGhp
cmRQYXJ0eURhdGEgewogICAgIHZvaWQgc2V0U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQoV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpOwogICAgIHZvaWQg
c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0QXBwQm91bmRE
b21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOworICAgIHZvaWQgYWRkQXBwQm91
bmREb21haW5Gb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKIAogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1By
b2Nlc3NlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCAyNGVhNWFkZDU3YmUyZmZiZTE4N2UzNWUwNDI5NGQ4MWMxYzQyZWUzLi5h
ZmVkZDg5YWY0YzllMDFhMTc1NzdmNWQxMzI1M2QwOTEwZGYyZjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTMwNyw2ICsxMzA3
LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVz
dWx0KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QXBwQm91bmREb21haW5zRm9yUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgYXBwQm91bmREb21haW5zKQoreworICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoYXBwQm91bmREb21haW5zKSk7Cisg
ICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJl
ckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtlbmFibGVkXShh
dXRvJiBuZXR3b3JrU2Vzc2lvbikgewpAQCAtMTM1NSw2ICsxMzYzLDE4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfQogfQorCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKGRvbWFp
biwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKDApOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IDU3OGQ4NjVmZDg1MWE5ZDhmZTMwOWE2NWNkYTMxOTBkNjVjYjFkYzYuLjgwMWZmNzhiZTliMzFm
MzI2YTY2ZmIyYzk0OTVlMGYyODMwMDZkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI2MSwxMiArMjYxLDE0IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBo
YXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CisgICAg
dm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vz
c2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICAgICBib29s
IGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERhdGFiYXNlRW5h
YmxlZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJv
b2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkQXBwQm91bmREb21haW5Gb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICNlbmRpZgogCiAgICAgdXNpbmcg
Q2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDViODEwMmJjYTM5YmU1OTVjNGZkZWNhNDc1ODA5
NDJhMGZkYjQ4Y2MuLmJjMWFiZThkNjE0OGRkNTZmZjU3NThmYzNiZTg1MWQ0NmRmYTMxYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMTQwLDExICsxNDAsMTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0Rl
Y29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMK
ICAgICBEZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29r
aWVzKSAtPiAoKSBBc3luYwogICAgIEhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKGJvb2wgaGFz
SXNvbGF0ZWRTZXNzaW9uKSBBc3luYworICAgIFNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMpCiAgICAgU2V0U2hvdWxkRG93bmdy
YWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICAgICBTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTpi
b29sIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIC0+
ICgpIEFzeW5jCiAgICAgU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9T
YW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIEFkZEFw
cEJvdW5kRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGFwcEJvdW5kRG9tYWluKSAtPiAodWludDY0X3QgdG90YWxBcHBC
b3VuZERvbWFpbnMpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRC
eUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRl
eCA0NmZmYmQ0MzIxNTJiZjllNDhhYzUxMTVjZmY4YWZhNjM3MTYzMDYwLi4zOGYwOGVjYjkzY2Jm
OWNjODkwMmQ4NzdjN2EyZDdjZWQ3OGMwMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTI5LDYgKzEyOSwxMiBAQCBOZXR3b3Jr
U2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2VzcwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQpOworICAgIGlmIChtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MgJiYgIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuYXBwQm91bmREb21haW5zLmlzRW1wdHkoKSkgeworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiBzZXQ7CisgICAgICAgIHNldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zLnNp
emUoKSk7CisgICAgICAgIHNldC5hZGQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuYmVnaW4oKSwgcGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuZW5kKCkpOworICAgICAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKHNldCkp
OworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA5MjdhZWMzYTc0YWQxZWZj
YjU5NDhhMDQzZjgxZmNmMjlmOWJlYjllLi5lMmVmODVkYjE0Y2I2NmZjMjY4MDNiNzcwOTk4NDcz
MGI1YmY5M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENv
b2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW4geyB9OworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
YXBwQm91bmREb21haW5zIHsgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgICAgIGVuY29kZXIgPDwgZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAgICBlbmNvZGVyIDw8IGFwcEJvdW5kRG9tYWluczsK
ICAgICAgICAgZW5jb2RlciA8PCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICB9CiAKQEAg
LTEyNyw2ICsxMjksMTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
IHsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgZGVjb2RlciA+
PiBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgIGlmICghYXBwQm91bmREb21haW5zKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGRlY29k
ZXIgPj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGlmICghbWFudWFsUHJldmFs
ZW50UmVzb3VyY2UpCkBAIC0xNDYsNiArMTUzLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgICAgICAgICAgV1RGTW92ZSgqZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmFwcEJvdW5kRG9tYWlu
cyksCiAgICAgICAgICAgICBXVEZNb3ZlKCptYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAgICAg
ICAgIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGYwZjVhMTQxYWI3ZmVlY2QyYmU2ODJi
Yjg4ODVmZTYyODY1MjcyOWIuLmY1YzdmZTBmZjk0YTJkZTkzMjU4ZGQ4N2VhYmNjMTc1NWM0ODBk
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNjE3LDYgKzYxNywxOSBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Zv
clRlc3RpbgogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0Fk
ZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0TmFtZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0FkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+YWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Fw
cEJvdW5kRG9tYWluRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3ROYW1l
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdICh1aW50NjRfdCB0b3Rh
bEFwcEJvdW5kRG9tYWlucykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b3RhbEFwcEJv
dW5kRG9tYWlucywgY29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShk
YXRhU3RvcmVSZWYpOworICAgIFVOVVNFRF9QQVJBTShob3N0TmFtZSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoMCwgY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IGY5YTM4MjM3
ZmYzODc5ZjcwYzIyOTE4NGI1ZTZlMjdmNjk0ZDRjNDAuLmYwOGQ1ZjZmNDgxYWUwMDkwMTMyNzI4
OGMzZjViOTJjYzdjNjJkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMjksNiArMTI5LDggQEAgdHlwZWRl
ZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHlXZWJzaXRlRGF0YVIKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRl
c3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxl
dGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9u
KSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVz
dGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0
TmFtZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NB
ZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmdGdW5jdGlvbikodWludDY0X3QgdG90YWxBcHBCb3Vu
ZERvbWFpbnMsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzQWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQWRkQXBwQm91bmREb21haW5Gb3JU
ZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCAxNGE0YjljNTRiYjY3YjExOTVkZmU5NGE3OGQ2YzZiNTRmY2JiY2EwLi5iZDgx
MzExZTUyN2JmZTQzZDJiN2E1YWZmZWY1YTRmOTdkY2UyODRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTExMjEsNiArMTEyMSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0lzb2xhdGVk
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZwogICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc0lzb2xhdGVkU2Vzc2lvbihz
ZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mIGFwcEJvdW5kRG9tYWlucykKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpTZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwg
YXBwQm91bmREb21haW5zKSwgMCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0
U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2Vu
ZE1lc3NhZ2UoKSkgewpAQCAtMTE2MCw2ICsxMTY4LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlCiAKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbmcoc2Vzc2lvbklELCBkb21haW4pLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZEFw
cEJvdW5kRG9tYWluRm9yVGVzdGluZyhzZXNzaW9uSUQsIFdURk1vdmUoZG9tYWluKSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2ls
bFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDA4ZGM5ZmQ5ODQ3
NDJjZDFlZGM5NWY5NmU1M2Q5ODMyYmRlZDhiYTYuLjdmOTIwYmQ1ZGI3YTI2NGJkZjgwMWE4ZTg2
ZTg2YzUzNzE4MGIwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNzQsNiArMTc0LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYpOworICAgIHZvaWQgYWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklELCBSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
KT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9v
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMjI0YTVhMjBhZDExY2E1OWMzYjMwNDMzNzYzZDI0
MDEzM2RlYTc1Zi4uMTA3MjNiOGUxMDA4YjY0MjFmMGI4YjcyZjJkM2ZiYTNlYjRlMjMzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjA1LDggKzYw
NSw5IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3Jr
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIFdlYkNvcmU6OlNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVk
ID0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOwogI2VuZGlm
Ci0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9t
YWluIHsgfTsKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CiAgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogICAgIFdFQl9Q
Uk9DRVNTX1BPT0xfQURESVRJT05TXzIKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsK
QEAgLTYyNCw2ICs2MjUsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAg
ICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbiA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAgICBhcHBCb3Vu
ZERvbWFpbnMgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50
UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjUw
LDYgKzY1Miw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVO
ZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjZW5kaWYKICAgICAgICAgICAg
IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlOwogICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlu
cyA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5hcHBCb3VuZERvbWFpbnM7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5tYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQogCkBAIC02ODksNiArNjky
LDggQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQsCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUsCisgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwKKyAgICAgICAg
YXBwQm91bmREb21haW5zLAogICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSwKICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZjM0MjNhOTJhYmFk
OWJmYWEwZjhlZWQ5MjEyYmUwYTJhN2M1ZDQwNC4uMjM1ZjljNmFkNzQyYzY1MThiNjAxMzYyNTJm
YzM3NGNjNmZlODA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAt
NDA1LDE0ICs0MDUsMTQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91
bmREb21haW5zKEZvcmNlUmVpbml0aWFsaXphdGlvbiBmb3JjZVJlaW4KICAgICAKICAgICBzdGF0
aWMgY29uc3QgYXV0byBtYXhBcHBCb3VuZERvbWFpbkNvdW50ID0gMTA7CiAgICAgCi0gICAgYXBw
Qm91bmREb21haW5RdWV1ZSgpLmRpc3BhdGNoKFtpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
ID0gcGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkLCBmb3JjZVJlaW5pdGlhbGl6YXRpb25dICgpIG11dGFibGUgeworICAgIGFw
cEJvdW5kRG9tYWluUXVldWUoKS5kaXNwYXRjaChbdGhpcywgaXNJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCA9IHBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaXNJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zICYmIGZvcmNlUmVpbml0
aWFsaXphdGlvbiAhPSBGb3JjZVJlaW5pdGlhbGl6YXRpb246OlllcykKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIG9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OkAiV0tBcHBC
b3VuZERvbWFpbnMiXTsKICAgICAgICAga2V5RXhpc3RzID0gZG9tYWlucyA/IHRydWUgOiBmYWxz
ZTsKICAgICAgICAgCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbaXNJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uLCBkb21haW5zID0gcmV0
YWluUHRyKGRvbWFpbnMpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhp
cywgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uLCBk
b21haW5zID0gcmV0YWluUHRyKGRvbWFpbnMpXSB7CiAgICAgICAgICAgICBpZiAoZm9yY2VSZWlu
aXRpYWxpemF0aW9uID09IEZvcmNlUmVpbml0aWFsaXphdGlvbjo6WWVzKQogICAgICAgICAgICAg
ICAgIGFwcEJvdW5kRG9tYWlucygpLmNsZWFyKCk7CiAKQEAgLTQzMyw2ICs0MzMsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRp
YWxpemF0aW9uIGZvcmNlUmVpbgogICAgICAgICAgICAgICAgIFdFQlNJVEVfREFUQV9TVE9SRV9B
RERJVElPTlMKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGhhc0luaXRpYWxpemVkQXBwQm91
bmREb21haW5zID0gdHJ1ZTsKKyAgICAgICAgICAgIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC00NDQsNiAr
NDQ1LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2UKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIC8vIEhvcHBpbmcgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkIHRoZW4gYmFjayB0byB0
aGUgbWFpbiB0aHJlYWQKKyAgICAvLyBlbnN1cmVzIHRoYXQgaW5pdGlhbGl6ZUFwcEJvdW5kRG9t
YWlucygpIGhhcyBmaW5pc2hlZC4KICAgICBhcHBCb3VuZERvbWFpblF1ZXVlKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAg
QVNTRVJUKGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zKTsKQEAgLTQ4NCw2ICs0ODcsMTQg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFcKICAgICB9KTsKIH0KIAorT3B0aW9uYWw8SGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IFdlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJv
dW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKSBjb25zdAoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgaWYgKCFoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucykKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYXBwQm91bmREb21haW5zKCk7Cit9
CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKCkK
IHsKICAgICBoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAppbmRleCBiNDQ5NzAyZDA0ODc4YWUxMzJiNGQzNjJjMmMzNzE2NzBjODNkYzI0Li5mOTI4
MjIwNjEyNWM5YjVjNDMzMGY4N2VmOTY4YmViZWNlOTM1YWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApA
QCAtMTkwNiw2ICsxOTA2LDI1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluCiAgICAgICAgICAg
ICBuZXR3b3JrUHJvY2Vzcy0+c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKG1f
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiB9
CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FwcEJv
dW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywgZG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbmV0
d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzLT5hZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcobV9zZXNz
aW9uSUQsIFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigwKTsKKyAgICB9KTsKKworICAgIGlmIChtX3RoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUgIT0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6
QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucykgeworICAgICAgICBtX3RoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zOworICAgICAgICBmb3IgKGF1dG8mIHdl
YlByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHdlYlByb2Nlc3Muc2V0U2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywgW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQor
fQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0yMjE5LDYgKzIyMzgsMTMgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vi
c2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgYXV0byBvcHRpb25hbEFwcEJvdW5kRG9tYWlucyA9IGdldEFwcEJvdW5kRG9tYWluc0lmSW5p
dGlhbGl6ZWQoKTsKKyAgICBpZiAob3B0aW9uYWxBcHBCb3VuZERvbWFpbnMgJiYgbV9hcHBCb3Vu
ZElUUFJlbGF4YXRpb25FbmFibGVkKQorICAgICAgICBhcHBCb3VuZERvbWFpbnMgPSBjb3B5VG9W
ZWN0b3IoKm9wdGlvbmFsQXBwQm91bmREb21haW5zKTsKKyNlbmRpZgogICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSB7IH07CiAKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyA9IHsKQEAgLTIyMzksNiArMjI2NSw4IEBAIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAg
ICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8sCiAjZW5k
aWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCisgICAgICAgIFdU
Rk1vdmUoc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgV1RGTW92ZShhcHBC
b3VuZERvbWFpbnMpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAgICAgfTsKIApAQCAtMjQwNyw0ICsyNDM1LDI5IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6Y2xlYXJBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5z
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKCFtX2FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gYXBwQm91bmREb21haW5zID0gZ2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXpl
ZCgpOworICAgIEFTU0VSVChhcHBCb3VuZERvbWFpbnMpOworICAgIGlmICghYXBwQm91bmREb21h
aW5zKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV90aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlICE9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2Vw
dEJldHdlZW5BcHBCb3VuZERvbWFpbnMpIHsKKyAgICAgICAgbV90aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhj
ZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNz
IDogcHJvY2Vzc2VzKCkpCisgICAgICAgICAgICB3ZWJQcm9jZXNzLnNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIFtdIHsgfSk7CisgICAgfQor
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291
cmNlTG9hZFN0YXRpc3RpY3MobV9zZXNzaW9uSUQsICphcHBCb3VuZERvbWFpbnMpOworICAgIH0K
KyNlbmRpZgorfQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNjFlM2I2OTZiYTBjYzUzZGQw
N2Y4YmRkMjI4ZmRiNjcyY2QxNDBlYy4uZTRkNGI3NTAxZTkxMWYzMTg5MjlkYjQ1ODM4ODM2YWEw
YTU5NzliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjAxLDYgKzIwMSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZUZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29r
aWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSgpIGNvbnN0OworICAgIHZvaWQgYWRkUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0FwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgYm9vbCBpc0l0cFN0YXRlRXhwbGljaXRseVNldCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7IH0KICAgICB2b2lkIHVzZUV4
cGxpY2l0SVRQU3RhdGUoKSB7IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQgPSB0cnVlOyB9CiAj
ZW5kaWYKQEAgLTMyNyw2ICszMjgsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWF5YmVSZWdp
c3RlcldpdGhTZXNzaW9uSURNYXAoKTsKIAorICAgIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkgY29u
c3Q7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICB2b2lkIHNldEFw
cEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyNlbmRpZgorCiAgICAg
Y29uc3QgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uOwpAQCAtMzM5LDYgKzM0
NSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7
IGZhbHNlIH07CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX3N0YXRp
c3RpY3NUZXN0aW5nQ2FsbGJhY2s7CisgICAgbXV0YWJsZSBPcHRpb25hbDxXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7
IC8vIExhemlseSBjb21wdXRlZC4KKyAgICAvLyBSZW1vdmUgaWYgd2UgZGVjaWRlIHRvIGVuYWJs
ZSB0aGlzIGZlYXR1cmUuCisgICAgYm9vbCBtX2FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQg
eyBmYWxzZSB9OwogI2VuZGlmCiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwpAQCAtMzc3
LDkgKzM4Niw2IEBAIHByaXZhdGU6CiAjaWYgSEFWRShBUFBfU1NPKQogICAgIFVuaXF1ZVJlZjxT
T0F1dGhvcml6YXRpb25Db29yZGluYXRvcj4gbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvcjsK
ICNlbmRpZgotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgbXV0YWJs
ZSBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiBtX3RoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGU7IC8vIExhemlseSBjb21wdXRlZC4KLSNlbmRpZgogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGZhNTRiZjQzODllZDBlMDNiY2Q3YzEyOThhNDM5ZWFlOGVmNjFkM2MuLmZiOWFmNmVlZmJlM2Zk
Y2JkYmU4ZjZhNDRmMzkwMGU0NTBiNmQ3YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wNC0zMCAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeGVtcHQgYXBwLWJvdW5k
IGRvbWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gYW5kIHRoaXJkLXBhcnR5
IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3NAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBUZXN0UnVubmVyIGZ1bmN0aW9uCisgICAgICAg
IGFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbigpIHdoaWNoIHJldHVybnMgdGhlIHRvdGFsIG51
bWJlcgorICAgICAgICBvZiBhcHAtYm91bmQgZG9tYWlucyBjb25maWd1cmVkIHNvIHRoYXQgaXQg
Y2FuIGJlIGNoZWNrZWQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OmFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnJlc291cmNlU3RhdGlzdGljc1Vu
c2lnbmVkUmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6YWRk
U3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAyMC0wNC0zMCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gY2hh
bmdlIGEgV0tXZWJWaWV3J3MgQ09SUyBkaXNhYmxpbmcgcGF0dGVybiBhZnRlciBpbml0aWFsaXph
dGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggNWNiZTk1MTYyZWQ3Y2Q3NDcyNzQz
NjAwZmNkM2MyZTRhOWFlODM5NS4uNDc5M2U0OTYyYmQxNmRlMmQ2ZjY4ZGRiYjdjMWRjMzZjNjg4
YTk0MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDgsNiArMzQ4LDcgQEAgaW50
ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBvcHRpb25hbCBi
b29sZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbGVhbiB2YWx1ZSwg
b2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0
Q29va2llcyhET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjYWxsYmFjayk7CisgICAgdW5zaWdu
ZWQgbG9uZyBhZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4oRE9NU3RyaW5nIGhvc3ROYW1lKTsK
ICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKG9iamVjdCBjYWxsYmFjayk7CiAKICAg
ICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1M2QxMWFkNzMz
ZTkxZDhjMTE4NDRhMTAyZjI3NjM1ZDJjZjIwMGEyLi41N2Y3M2UxZmFjZTY4NWIwZTQwM2VlNzE1
YWY1NDgzNmY4OTVjYWUxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIzMzAsNiArMjMzMCwxNiBAQCB2b2lkIFRl
c3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxs
YmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0VG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNDYWxsYmFja0lEKTsKIH0KIAordW5zaWduZWQgVGVzdFJ1bm5lcjo6
YWRkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKEpTU3RyaW5nUmVmIGhvc3ROYW1lKQoreworICAg
IGF1dG8gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJBZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4iKSk7CisgICAgYXV0byBtZXNzYWdlQm9keSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpKTsKKyAgICBXS1R5
cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+
cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksICZyZXR1cm5EYXRh
KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmV0dXJuRGF0YSkgPT0gV0tVSW50NjRHZXRUeXBl
SUQoKSk7CisgICAgcmV0dXJuIFdLVUludDY0R2V0VmFsdWUoYWRvcHRXSyhzdGF0aWNfY2FzdDxX
S1VJbnQ2NFJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpz
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRSZXNldFRv
Q29uc2lzdGVudFN0YXRlQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBm
NWI2MzZlMDE4OWNhNzI0OWY0NjM2NWQ0ZGI2NmZhY2NjNGZhYWIwLi5iZDk2MzQ1MDkwMGY0YmU4
NWY5NzAxZTVhMjQ5MjI0YmQ0ZDFlNzVhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDUyLDYgKzQ1Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJp
Y3RDb29raWVzKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFj
aygpOworICAgIHVuc2lnbmVkIGFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbihKU1N0cmluZ1Jl
ZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShK
U1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlk
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBsb2FkZWRUaGlyZFBh
cnR5RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYzRkNTdlMTg4YjcwNzhkNDkxMDFiZWM5Mzg4YzAwMTIz
NWIwY2Q4NS4uMzMyNDc5YTQzODQ2NWM2ZDg4Njg5ODg1ODg3YTUyYzVhOGY3ZjQwMiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTMzOTEsNiArMzM5MSw3
IEBAIHN0cnVjdCBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgewogICAgIGJvb2wg
ZG9uZSB7IGZhbHNlIH07CiAgICAgYm9vbCByZXN1bHQgeyBmYWxzZSB9OwogICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVwcmVzZW50YXRpb247Cisg
ICAgdWludDY0X3QgdW5zaWduZWRSZXN1bHQ7CiB9OwogICAgIAogc3RhdGljIHZvaWQgcmVzb3Vy
Y2VTdGF0aXN0aWNzU3RyaW5nUmVzdWx0Q2FsbGJhY2soV0tTdHJpbmdSZWYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1JlcHJlc2VudGF0aW9uLCB2b2lkKiB1c2VyRGF0YSkKQEAgLTM0MTYsNiArMzQx
NywxNCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZVN0YXRpc3RpY3NCb29sZWFuUmVzdWx0Q2FsbGJh
Y2soYm9vbCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQogICAgIGNvbnRleHQtPnRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKIH0KIAorc3RhdGljIHZvaWQgcmVzb3VyY2VTdGF0aXN0aWNzVW5z
aWduZWRSZXN1bHRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQorewor
ICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFj
a0NvbnRleHQqPih1c2VyRGF0YSk7CisgICAgY29udGV4dC0+dW5zaWduZWRSZXN1bHQgPSByZXN1
bHQ7CisgICAgY29udGV4dC0+ZG9uZSA9IHRydWU7CisgICAgY29udGV4dC0+dGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhclN0YXRpc3Rp
Y3NEYXRhRm9yRG9tYWluKFdLU3RyaW5nUmVmIGRvbWFpbikKIHsKICAgICBSZXNvdXJjZVN0YXRp
c3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CkBAIC0zNzc3LDYgKzM3ODYsMTQg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29r
aWVzKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNl
dFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKCk7CiB9CiAKK3Vuc2lnbmVkIFRlc3RDb250cm9sbGVy
OjphZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7Cisg
ICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAg
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NBZGRBcHBCb3VuZERvbWFpbkZvclRlc3Rpbmco
d2Vic2l0ZURhdGFTdG9yZSgpLCBob3N0TmFtZSwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGlj
c1Vuc2lnbmVkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9U
aW1lb3V0KTsKKyAgICByZXR1cm4gY29udGV4dC51bnNpZ25lZFJlc3VsdDsKK30KKwogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewogICAg
IFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAzMzdlZjZlM2I0MzBiZTFkNzc3
MjJlYWI3ZmVhOGNiMjFhZWVkMWMxLi42N2M0NGFkNmIyOTIyOTgwMWJmZWRlYzVhNTlmYmFjOGQ4
OTU2ZTVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNjYs
NiArMjY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvU2FtZVNpdGVT
dHJpY3RDb29raWVzKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKKyAgICB1bnNpZ25lZCBhZGRTdGF0
aXN0aWNzQXBwQm91bmREb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwogICAgIHZvaWQgc3Rh
dGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKaW5kZXggN2VhN2QyMDBhYTQ3MGMxMTAyYTgzMDkwYzc4ZTQyZGZiMDk1NDQxZi4uMTYwMDU4
MGUyOWUxNDViZjM1NTM2ZmI0NWQzNjE0OWQ1ZDE0NjI3NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NDAsNiArMTY0MCwxMyBAQCBXS1JldGFpblB0
cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkU3RhdGlzdGljc0Fw
cEJvdW5kRG9tYWluIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5
KSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWUg
PSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LmFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbihob3N0TmFtZSkpKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIkNsZWFyRE9NQ2FjaGUiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOwogICAgICAgICBXS1N0cmlu
Z1JlZiBvcmlnaW4gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGJhYzExNjU0OTQxMGJjZWI4YjUyMDU2ZjVhYzBkMDc0NTYzMDNlMjUuLmY4MTc0MTBkZTNl
ZTQ2ZmRlNThkMzIxNTg0Y2JhMWQzOWZiNDAxMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
MC0wNC0zMCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBF
eGVtcHQgYXBwLWJvdW5kIGRvbWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24g
YW5kIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tp
bmctYmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRv
bWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVs
ZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1l
eGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMv
YXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTMwICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuV2ViQ29udGVudCBwcm9jZXNzIGNy
YXNoZXMgd2hlbiB3ZWIgZGV2ZWxvcGVyIHRvb2xzIGFyZSBvcGVuZWQgaW4gU2FmYXJpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4
ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjllY2ZlZGNjZmYzNjBiOGFlM2E3MzVhNzM2NDgzYjBjZDU2ZTY3MGIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUt
YmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBA
CitUZXN0cyB0aGF0IGFwcC1ib3VuZCBkb21haW5zIGFyZSBleGVtcHQgZnJvbSB0aGlyZC1wYXJ0
eSBjb29raWUgYmxvY2tpbmcgYmV0d2VlbiB0aGVtc2VsdmVzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisgIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUxLS0+JworLS0tLS0tLS0K
K1Nob3VsZCBub3QgcmVjZWl2ZSBjb29raWUuCitEaWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVk
ICdmaXJzdFBhcnR5Q29va2llJy4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ3BhcnRp
dGlvbmVkQ29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZToKKworLS0tLS0tLS0K
K0ZyYW1lOiAnPCEtLWZyYW1lMi0tPicKKy0tLS0tLS0tCitTaG91bGQgcmVjZWl2ZSBjb29raWUu
CitSZWNlaXZlZCBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5vdCByZWNl
aXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUgZG9jdW1l
bnQuY29va2llOiBmaXJzdFBhcnR5Q29va2llPXZhbHVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91
bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwNTMzZmVjMTg0ZjRlMTk2NTdm
NjFlOTViN2Q0Y2VjYWY5NjljOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21h
aW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbApA
QCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFk
PgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAg
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYXBwLWJvdW5kIGRvbWFpbnMgYXJlIGV4ZW1wdCBmcm9t
IHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMuIik7CisgICAg
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBmaXJzdFBhcnR5T3JpZ2luID0gImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHRoaXJkUGFydHlSZXNvdXJjZVVybCA9IHRo
aXJkUGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsKKyAg
ICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2llIjsKKyAgICBj
b25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gIi9zZXQtY29va2llLnBocD9uYW1l
PSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHBh
cnRpdGlvbmVkQ29va2llTmFtZSA9ICJwYXJ0aXRpb25lZENvb2tpZSI7CisgICAgY29uc3Qgc3Vi
UGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUgPSAiL3NldC1jb29raWUucGhwP25hbWU9IiArIHBh
cnRpdGlvbmVkQ29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHJldHVyblVy
bCA9IGZpcnN0UGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vl
bi1lYWNoLW90aGVyLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENvb2tpZXMgPSAiL2dl
dC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAiJm5hbWUyPSIg
KyBwYXJ0aXRpb25lZENvb2tpZU5hbWU7CisgICAgY29uc3QgcmVkaXJlY3RDaGFpblVybCA9IHRo
aXJkUGFydHlSZXNvdXJjZVVybCArICIvcmVkaXJlY3QucGhwP3JlZGlyZWN0VG89IiArIHRoaXJk
UGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXM7CisKKyAgICBmdW5jdGlvbiBv
cGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQuc3JjID0g
dXJsOworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxlbWVudC5v
bmxvYWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAgICAgICBj
YXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1wYXJ0eSBjb29raWUg
Zm9yIGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0g
dGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSArICIj
IiArIHJldHVyblVybCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBj
b29raWUgZG9lc24ndCBnZXQgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBzaW5j
ZSB0aGV5IGFyZSBib3RoIGNvbmZpZ3VyZWQgYXMgYXBwLWJvdW5kIGRvbWFpbnMuCisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7CisgICAgICAgICAgICAg
ICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVz
ICsgIiZtZXNzYWdlPVNob3VsZCBub3QgcmVjZWl2ZSBjb29raWUuIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICgyICE9PSB0ZXN0UnVubmVyLmFkZFN0YXRpc3RpY3NBcHBC
b3VuZERvbWFpbihmaXJzdFBhcnR5T3JpZ2luKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkRpZG4ndCBnZXQgYSB0b3RhbCBvZiB0d28gYXBwLWJvdW5kIGRvbWFpbnMgYWZ0
ZXIgYWRkaW5nIHRoZSBzZWNvbmQuIik7CisgICAgICAgICAgICAgICAgICAgIHJ1blRlc3QoKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgY29va2ll
IGdldHMgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBzaW5jZSB0aGV5IGFyZSBu
b3cgYm90aCBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBkb21haW5zLgorICAgICAgICAgICAgICAg
IGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDQiOworICAgICAgICAgICAgICAgIG9wZW5J
ZnJhbWUodGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVz
c2FnZT1TaG91bGQgcmVjZWl2ZSBjb29raWUuIiwgcnVuVGVzdCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDQiOgorICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoZmFsc2UsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBm
aW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09
ICIiKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgaWYgKDEgIT09IHRlc3RSdW5uZXIuYWRkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWlu
KHRoaXJkUGFydHlPcmlnaW4pKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRpZG4ndCBn
ZXQgYSB0b3RhbCBvZiBvbmUgYXBwLWJvdW5kIGRvbWFpbiBhZnRlciBhZGRpbmcgdGhlIGZpcnN0
LiIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAgICAgICAg
cnVuVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBydW5UZXN0KCk7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAt
Ym91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGU0NWQ3ZjE5
OWEzYzY5YWJjMWVhMTVmMTc5MzI5OWZiNzdkNjVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBw
LWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBk
b2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9u
IGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKworQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQt
c2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhp
c3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
CitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3Jl
IGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgZGVsZXRpb246IEh0dHBP
bmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4
aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
CitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitBZnRlciBk
ZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0
RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRp
b24tZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmViYWYyNzZlZmZkMWFiNTNhNjNiNjYyMzU0
YjVkODE2ZGY3YTRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhl
bXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSwy
NTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0i
L2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj5DaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBh
IHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3Vu
ZC48L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0Pgor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisKKyAgICBjb25z
dCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2Vy
dmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGll
bnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24g
c29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAg
ICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDog
YiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRw
dXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi
KTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVz
c2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVu
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50
ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAg
ICAgICAgIGFkZE91dHB1dCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSAr
ICIgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IE5vIGNvb2tpZXMgZm91bmQuIik7CisgICAg
ICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNv
b2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6Cisg
ICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0
ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiAiICsgKGlzQWZ0
ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhpc3RzLiIpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHNlcnZlclNpZGVD
b29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdl
cy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlv
bjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgor
ICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0Fm
dGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogQ2xpZW50LXNp
ZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9
IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKKyAgICAg
ICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2Vz
KSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgICAgICB9
CisgICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAgICBmdW5j
dGlvbiBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWRE
Qi4iKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVx
dWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbGV0
IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICAg
ICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKworICAgIGxl
dCBpbnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7CisgICAgbGV0
IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsK
KyAgICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNh
bGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENvdW50ZXJJ
REIgPSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlm
ICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBp
cyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBt
YXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lE
QkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxl
dGlvbjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBz
ZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNh
bGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lE
QkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUg
ZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVy
dmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNl
bWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsr
aW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBjaGVja3MgZXhoYXVzdGVkLiIp
OworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVk
REIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRl
cnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlOworICAgIGxl
dCBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUlu
dGVydmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsKKyAgICBjb25z
dCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hlY2tMb2NhbFN0
b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBpbnRlcnZh
bENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxi
YWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAg
ICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50
ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxT
dG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9
PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9y
YWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQg
dmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRy
eSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIp
ICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0
b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRl
cnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJM
b2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFn
ZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2Vz
IG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0
b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlv
bjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8g
ImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRl
V2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUgY29va2llcy4KKyAg
ICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tp
ZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAi
c2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2Vz
L3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNv
b2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0p
OworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7
CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKworICAgICAgICAvLyBXcml0ZSBMb2Nh
bFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwg
bG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxz
ZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAg
ICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
Y2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9j
ZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJz
aXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0
aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVl
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRh
UmVjb3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250
aW51ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAgICAgICBjaGVja0xvY2Fs
U3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBjaGVja0lEQkRh
dGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzKCk7CisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFs
c2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9yaWdp
blVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIGlmICgxICE9PSB0ZXN0UnVubmVyLmFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFp
bihvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRpZG4ndCBn
ZXQgYSB0b3RhbCBvZiBvbmUgYXBwLWJvdW5kIGRvbWFpbiBhZnRlciBhZGRpbmcgdGhlIGZpcnN0
LiIpOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3Qs
IHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIg
ZGlkbid0IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhl
bXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OGU0NWQ3ZjE5OWEzYzY5YWJjMWVhMTVmMTc5MzI5OWZiNzdkNjVmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERv
bWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBk
b2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9u
IGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKworQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQt
c2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhp
c3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
CitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3Jl
IGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgZGVsZXRpb246IEh0dHBP
bmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4
aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
CitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitBZnRlciBk
ZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9h
cHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZDQyZTUxMWY1NjgzYTM2N2UwNmU4ZjE4NTAwNTc5MzU4ZDM4YTkxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRl
c3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVjayB0aGF0IHdlYnNpdGUgZGF0
YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0
aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC48L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91
dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgY29uc3QgaHR0cE9ubHlD
b29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29r
aWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tp
ZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdB
cnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBi
LnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEg
OiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAg
ICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAg
IG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRP
dXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAg
ICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
aGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRD
b29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICBhZGRP
dXRwdXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHNjcmlwdC1h
Y2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICBmb3IgKGxl
dCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkg
eworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAgICAgICAgICAg
ICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24g
PyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiArIChpc0FmdGVyRGVsZXRpb24g
PyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToK
KyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNB
ZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IFJlZ3VsYXIg
c2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAg
ICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9u
ID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBl
eGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRl
c3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAgICAgIGZvciAobGV0
IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAg
ICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVuY3Rpb24gY3JlYXRl
SURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERC
Lm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIuIik7CisgICAg
ICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgICAgICAgICBvYmpT
dG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisKKyAgICBsZXQgaW50ZXJ2YWxD
b3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOworICAgIGxldCBjaGVja0lEQklu
dGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgZnVuY3Rp
b24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgewor
ICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVySURCID0gMDsKKyAg
ICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJE
ZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisg
ICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisK
KyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxz
KSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBl
bnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURC
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFs
KGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRl
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJ
REIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9y
ZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVu
dGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0
SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJD
aGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291
bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGV4aGF1c3RlZC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sg
YWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQor
CisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2Nh
bFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOwor
ICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9y
YWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3Rz
KGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9j
YWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxi
YWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hl
Y2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgewor
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJ
dGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJl
Zm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3Rv
cmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5V
bmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9j
YWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1
ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3Qu
Iik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
ID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiAr
ICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hh
c0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAg
ICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7
CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3Rv
cmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJk
b2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRh
QW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0
IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tp
ZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2lu
IiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVz
LmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsg
Ij0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAg
ZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAg
IGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisg
ICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFn
ZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9u
KCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVh
dGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0
YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRk
TGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVE
YXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRD
b250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5E
YXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAg
IHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7Cisg
ICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlz
dHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlz
dHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShmYWxzZSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3Qg
ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBp
ZiAoMSAhPT0gdGVzdFJ1bm5lci5hZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4ob3JpZ2luVW5k
ZXJUZXN0KSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEaWRuJ3QgZ2V0IGEgdG90YWwg
b2Ygb25lIGFwcC1ib3VuZCBkb21haW4gYWZ0ZXIgYWRkaW5nIHRoZSBmaXJzdC4iKTsKKworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZG4ndCBnZXQg
Y2xhc3NpZmllZCBhcyBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vi
c2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398100</attachid>
            <date>2020-04-30 15:14:46 -0700</date>
            <delta_ts>2020-04-30 15:18:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200430151445.patch</filename>
            <type>text/plain</type>
            <size>90193</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ1MjBmMGE2MGNiMjVm
MmM4NjRmN2M0ZmQxNzQ1NTBkOTc0NTdhOC4uNjQ5NjIzOGIwNzAyZDA5NGZmNWRiNzI0ZGRlODZk
OGE3NTM0YmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA0LTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91
bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFy
dHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIHRvIGFsbG93IGl0IHRvIGV4ZW1wdAorICAgICAgICBhcHAtYm91bmQgZG9tYWlucyBm
cm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KKworICAgICAgICBDYWxscyB0byBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5kRG9tYWlucygpIGFuZAorICAgICAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZygpIGF1dG9tYXRp
Y2FsbHkgc2V0cyB0aGUKKyAgICAgICAgY29va2llIGJsb2NraW5nIHBvbGljeSB0bworICAgICAg
ICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmRE
b21haW5zLgorCisgICAgICAgIENhbGxzIHRvIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRB
cHBCb3VuZERvbWFpbnMoKSBhdXRvbWF0aWNhbGx5IHNldHMgdGhlCisgICAgICAgIGNvb2tpZSBi
bG9ja2luZyBwb2xpY3kgdG8gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIHdoaWNo
IGlzIHRoZQorICAgICAgICBkZWZhdWx0LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVt
cHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2Fw
cC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFz
ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEt
ZGVsZXRpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
aG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERvbWFpbnMpOgorCiAyMDIwLTA0LTMwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuV2ViQ29udGVu
dCBwcm9jZXNzIGNyYXNoZXMgd2hlbiB3ZWIgZGV2ZWxvcGVyIHRvb2xzIGFyZSBvcGVuZWQgaW4g
U2FmYXJpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDk1YzNkYjE3OWZmNzYxNzdiYmY4NWZkMzgzZThhN2YyNGY0Yjc0
MGYuLjFlODFjYjc5NjA5NjE5MmE2ZDNmNzZiOTQyMThkNzI3OWU0ODYyMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzggQEAKKzIwMjAtMDQtMzAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5zIGZyb20gSVRQJ3Mgd2Vi
c2l0ZSBkYXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcgYmV0d2Vl
biB0aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndh
cmRzIGluZm9ybWF0aW9uIGFib3V0IGFwcC1ib3VuZCBkb21haW5zIHRvIElUUCBhbmQgd2ViCisg
ICAgICAgIHByb2Nlc3NlcyBzbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9tIHdlYnNpdGUg
ZGF0YSBkZWxldGlvbiBhbmQKKyAgICAgICAgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJl
dHdlZW4gdGhlbXNlbHZlcy4KKworICAgICAgICBTaW5jZSBhcHAtYm91bmQgZG9tYWlucyBhcmUg
bG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEgYmFja2dyb3VuZAorICAgICAgICB0aHJl
YWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycyBpZgorICAgICAgICB0aGV5J3ZlIGFscmVhZHkgYmVlbiBsb2FkZWQuIFRoZW4gZXZl
cnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUKKyAgICAgICAgdXBkYXRlZCwgdGhleSBhcmUg
Zm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQgSVRQIHdpbGwgaGF2ZSB0aGVtCisg
ICAgICAgIGFzIHNvb24gYXMgcG9zc2libGUuCisKKyAgICAgICAgU2V0dGluZyBhcHAtYm91bmQg
ZG9tYWlucyBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBhdXRvbWF0aWNhbGx5IHN3aXRjaGVzCisg
ICAgICAgIElUUCdzIGNvb2tpZSBibG9ja2luZyBwb2xpY3kgdG8gdGhlIG5ldworICAgICAgICBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBw
Qm91bmREb21haW5zLgorCisgICAgICAgIEEgbmV3IGZ1bmN0aW9uIGlzIGFkZGVkOiBXZWJzaXRl
RGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkKKyAgICAgICAgVGhp
cyBmdW5jdGlvbiBhbGxvd3MgZmV0Y2hpbmcgb2YgYXBwLWJvdW5kIGRvbWFpbnMgd2l0aG91dCB0
cmlnZ2VyaW5nCisgICAgICAgIHRoZSBsYXp5IGxvYWRpbmcuIFRoaXMgaXMganVzdCB0byBhbGxv
dyBzcGVjdWxhdGl2ZSBjb25maWd1cmF0aW9uIG9mIElUUAorICAgICAgICByaWdodCB3aGVuIGl0
J3MgY3JlYXRlZCDigJQgaWYgYW55IGFwcC1ib3VuZCBkb21haW5zIGFyZSBhbHJlYWR5IGNvbmZp
Z3VyZWQsCisgICAgICAgIGZvcndhcmQgdGhlbSB0byBJVFAgdmlhIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLgorCisgICAgICAgIFRoZSBDIEFQSSBjaGFuZ2VzIGFyZSBmb3IgdGVz
dCBwdXJwb3Nlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJv
dW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNob3VsZEV4ZW1w
dEZyb21XZWJzaXRlRGF0YURlbGV0aW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFwcEJvdW5kRG9tYWlucyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91bmRE
b21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjphZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NBZGRBcHBCb3Vu
ZERvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBw
Qm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5kRG9tYWluc0lmSW5p
dGlhbGl6ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWRkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
OgorCiAyMDIwLTA0LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBjaGFuZ2UgYSBXS1dlYlZpZXcncyBDT1JTIGRpc2Fi
bGluZyBwYXR0ZXJuIGFmdGVyIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXgg
YzU4NjY5ZjFjZjJjOWIxYzRiNmU2ZThjNjQ1OWRjYmE5MWFmNThmMy4uYzQ2YWUzODRlZjU3ODc0
ZjMzMGU0ZDQxNmRiNDkyNmIzZWQ4ZjI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMTM0LDYg
KzEzNCw4IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywKICAgICBzd2l0Y2ggKG1fdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSkgewogICAgIGNhc2UgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTo6QWxsOgogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnM6CisgICAgICAg
IHJldHVybiAhc2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pOwogICAgIGNhc2UgVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb246CiAg
ICAgICAgIGlmICghaGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGZpcnN0UGFydHlE
b21haW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDUsNiArMTQ3LDEyIEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29uc3QKK3sKKyAgICBBU1NFUlQo
dG9wRnJhbWVEb21haW4gIT0gcmVzb3VyY2VEb21haW4pOworICAgIHJldHVybiB0b3BGcmFtZURv
bWFpbiA9PSByZXNvdXJjZURvbWFpbiB8fCAobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnModG9w
RnJhbWVEb21haW4pICYmIG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKHJlc291cmNlRG9tYWlu
KSk7Cit9CisKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdl
Q2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2NrQ29va2llcyhy
ZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCkBAIC0yOTIsNiArMzAwLDI3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKFRoaXJkUGFydHlDb29raWVCbG9jCiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gYmxvY2tpbmdNb2RlOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKK3sK
KyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7CisgICAgc2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxF
eGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlc2V0QXBwQm91bmREb21haW5zKCkKK3sKKyAgICBtX2FwcEJvdW5kRG9tYWlucy5j
bGVhcigpOworICAgIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTo6QWxsKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluKQoreworICAgIC8vIE9ubHkgc3VwcG9ydCB0d28gYXBwLWJvdW5kIGRvbWFpbnMgZm9yIHRl
c3RpbmcuCisgICAgaWYgKG1fYXBwQm91bmREb21haW5zLnNpemUoKSA+PSAyKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9hcHBCb3VuZERvbWFpbnMuYWRkKGRvbWFpbik7CisgICAgc2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxF
eGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25z
dAogewogICAgIGlmICghbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyB8fCAhcGFnZUlEIHx8
IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291cmNlLmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IDEzOTFkZWQ0ZDg4ZWRiMjc2MDJmNjljMDZkMmZhMTM4
MGRiODI3ZDQuLjI5NTljODNjNjEyZTg2NWQwZGVhYTMzZjlhNDE4NDFhNTYzMjAxMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaApAQCAtNzcsNyArNzcsNyBAQCBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogZW51bSBj
bGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVz
IDogYm9vbDsKLWVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4
X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5n
VG9QZXJEb21haW5Qb2xpY3kgfTsKK2VudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIEFs
bE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Q
b2xpY3kgfTsKIGVudW0gY2xhc3MgU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgOiBi
b29sIHsgWWVzLCBObyB9OwogZW51bSBjbGFzcyBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBBbGxCdXRDb29raWVzTGl2ZU9u
VGVzdGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3RpbmdUaW1lb3V0IH07CiBlbnVt
IGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC05NSw2ICs5NSw5IEBA
IHB1YmxpYzoKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKKyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGVybWl0UHJvY2Vz
c1RvVXNlQ29va2llQVBJKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHBy
b2Nlc3NNYXlVc2VDb29raWVBUEkoKTsKIApAQCAtMTk2LDYgKzE5OSw5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5z
ZmVyRnJvbVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFp
biwgUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMo
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXNldEFwcEJvdW5kRG9tYWlucygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXBwQm91
bmREb21haW5Gb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTI0MSw3ICsyNDcsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCA9IGZhbHNlOwotICAgIE9wdGlvbmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVD
YXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPikgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNh
cChjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7
CisgICAgYm9vbCBzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9j
a2luZyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJikgY29u
c3Q7CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKICAgICBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb25Bc0ZpcnN0UGFydHk7CkBAIC0yNTMsNiArMjYwLDcgQEAgcHJpdmF0ZToKICAgICBIYXNo
TWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0
ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25h
dmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogICAgIFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CisgICAgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtMjc3LDYgKzI4NSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUs
CiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCwKKyAg
ICAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0
d2VlbkFwcEJvdW5kRG9tYWlucywKICAgICAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sCiAgICAgICAgIFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6Ok9ubHlBY2NvcmRpbmdUb1BlckRv
bWFpblBvbGljeQogICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA0NjI4MDI4NTc5YTRmNDE0NjA4N2I1NjA1YTI3
ZGE2YjViMjdmMmVmLi40OGQyM2YxZDYxMTI3ZmE0NTQ0M2YzMzg4ZmI0NzQzYzE1Mjc1ODkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKQEAgLTI2MTQsNyArMjYxNCw3IEBAIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzCiAgICAg
VmVjdG9yPERvbWFpbkRhdGE+IGRvbWFpbnMgPSB0aGlzLT5kb21haW5zKCk7CiAgICAgVmVjdG9y
PHVuc2lnbmVkPiBkb21haW5JRHNUb0NsZWFyR3JhbmRmYXRoZXJpbmc7CiAgICAgZm9yIChhdXRv
JiBzdGF0aXN0aWMgOiBkb21haW5zKSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWMucmVnaXN0cmFi
bGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAgIGlmIChz
aG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihzdGF0aXN0aWMucmVnaXN0cmFibGVE
b21haW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG9sZGVzdFVzZXJJbnRlcmFj
dGlvbiA9IHN0ZDo6bWluKG9sZGVzdFVzZXJJbnRlcmFjdGlvbiwgc3RhdGlzdGljLm1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFsbFdlYnNp
dGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5k
ZXggNjUwNjc5NzE5NjIyYWYxMmZhZDVjMTYyZjJjZGRjYWFhYjkwZTQ3Ni4uYWY1MDA0MWQyMzdi
NDBjNzZkNWI0ZDFjNzYwODg5NTNhM2FmOGY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTk4MCw3ICs5ODAsNyBAQCBSZWdp
c3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5UwogICAgIGF1dG8gb2xkZXN0VXNlckludGVyYWN0aW9uID0gbm93
OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
IHRvRGVsZXRlT3JSZXN0cmljdEZvcjsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWMucmVn
aXN0cmFibGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAg
IGlmIChzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihzdGF0aXN0aWMucmVnaXN0
cmFibGVEb21haW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG9sZGVzdFVzZXJJ
bnRlcmFjdGlvbiA9IHN0ZDo6bWluKG9sZGVzdFVzZXJJbnRlcmFjdGlvbiwgc3RhdGlzdGljLm1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFs
bFdlYnNpdGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggYWI1
NmE4MDUwODNjN2I4YWIwMTRkMjZmZWFjNzczNGY3ODUyYzA4ZS4uYjU5OTI2MDY4ZWU0NTczMWRl
ZmI2ZmQ5ZjYyYzQ4YmFmNGE3NTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTMxNCw2ICszMTQsMjEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lz
dHIKICAgICBtX2RlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBkb21haW47CiB9CiAKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQoreworICAgIG1fYXBwQm91bmREb21haW5z
ID0gV1RGTW92ZShkb21haW5zKTsKKyAgICBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
KFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERv
bWFpbnMpOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWRkQXBwQm91
bmREb21haW5Gb3JUZXN0aW5nKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKQoreworICAgIC8v
IE9ubHkgc3VwcG9ydCB0d28gYXBwLWJvdW5kIGRvbWFpbnMgZm9yIHRlc3RpbmcuCisgICAgaWYg
KG1fYXBwQm91bmREb21haW5zLnNpemUoKSA+PSAyKQorICAgICAgICByZXR1cm47CisgICAgbV9h
cHBCb3VuZERvbWFpbnMuYWRkKFdURk1vdmUoZG9tYWluKSk7CisgICAgc2V0VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRC
ZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWZOZWNlc3NhcnkoKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTY1LDYgKzU4MCw4IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9wYXJhbWV0
ZXJzID0geyB9OworICAgIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0geyB9OworICAg
IG1fYXBwQm91bmREb21haW5zLmNsZWFyKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKQEAgLTY0OSw2
ICs2NjYsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRlYnVnTG9nRG9t
YWluc0luQmF0Y2hlcyhjb25zdCBjaGFyKiBhY3Rpb24sIGMKICAgICAgICAgUkVMRUFTRV9MT0df
SU5GTyhJVFBEZWJ1ZywgIiUiIFBVQkxJQ19MT0dfU1RSSU5HICIgdG8gKCV7cHVibGljfWQgb2Yg
JXUpOiAlIiBQVUJMSUNfTE9HX1NUUklORyAiLiIsIGFjdGlvbiwgYmF0Y2hOdW1iZXIsIG51bWJl
ck9mQmF0Y2hlcywgZG9tYWluc1RvU3RyaW5nKGJhdGNoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAor
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNob3VsZEV4ZW1wdEZyb21XZWJzaXRl
RGF0YURlbGV0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGRvbWFpbiA9PSBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB8fCAobV9h
cHBCb3VuZERvbWFpbnMgJiYgbV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMoZG9tYWluKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA0NDgzMzNjNDlmNjNiMmYxOTIwYjg2ZTMzMjA1ODdm
Y2UzNWI2OTNiLi42ZThlMDVjMmNlMGJiNmFhMzY2NTAwMzgxNjI1ODRkYjhjNTc4MDNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xNjksNiArMTY5LDkg
QEAgcHVibGljOgogICAgIGJvb2wgaXNTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPT0gV2Vi
Q29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6OlllczsgfTsKICAgICB2b2lk
IHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIHsgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZSA9IG1vZGU7IH0KICAgICB2b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
bihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikgeyBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbiA9IFdURk1vdmUoZG9tYWluKTsgfQorICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOworICAgIHZvaWQgYWRkQXBwQm91bmREb21haW5G
b3JUZXN0aW5nKFJlZ2lzdHJhYmxlRG9tYWluJiYpOworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+IGFwcEJvdW5kRG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fYXBwQm91bmREb21haW5z
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgYXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5k
ZXIoY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CkBAIC0yNDksNyArMjUyLDcg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZGVidWdMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVidWdMb2dnaW5nRW5hYmxlZDsgfTsKICAgICBib29sIGRlYnVnTW9kZUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH0KICAgICBXZWJDb3JlOjpGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7
IH0KLSAgICBSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oKSBj
b25zdCB7IHJldHVybiBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsgfQorICAgIGJvb2wg
c2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRhRGVsZXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4TnVtYmVyT2ZS
ZWN1cnNpdmVDYWxsc0luUmVkaXJlY3RUcmFjZUJhY2sgeyA1MCB9OwogICAgIApAQCAtMjkxLDYg
KzI5NCw3IEBAIHByaXZhdGU6CiAgICAgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZElu
Y2x1ZGVMb2NhbGhvc3QgeyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgfTsKICAgICBXZWJD
b3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtX2ZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGU6OkFsbEJ1dENvb2tpZXMgfTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBtX3N0YW5kYWxvbmVB
cHBsaWNhdGlvbkRvbWFpbjsKKyAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX2FwcEJv
dW5kRG9tYWluczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA2OGY1NWM0YzVjZGRlNzVj
NmI0MmFiMjJhZjg3MzE5ZWQ2ODY0NmIyLi42ZDc4MGQ1YzVlM2I2NDE0NWY0ZjQ1YWUwNmYxYzM1
YjRiNjliOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcApAQCAtNjc4LDYgKzY3OCw1MSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKGNvbnN0IFJlZ2lzdAogICAg
IH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91
bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKGlzRXBoZW1lcmFsKCkgfHwgZG9t
YWlucy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBk
b21haW5zID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnMpXSgpIG11dGFibGUgeworICAgICAgICBp
ZiAoIW1fc3RhdGlzdGljc1N0b3JlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3N0
YXRpc3RpY3NTdG9yZS0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoZG9tYWlucykpOworICAg
IH0pOworCisgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkp
CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUo
ZG9tYWlucykpOworICAgIH0KK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
aWYgKGlzRXBoZW1lcmFsKCkgfHwgZG9tYWluLmlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgeworICAgICAgICBpZiAo
YXV0byogc3RvcmFnZVNlc3Npb24gPSBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNl
c3Npb24oKSkKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5hZGRBcHBCb3VuZERvbWFpbkZv
clRlc3RpbmcoZG9tYWluKTsKKyAgICB9CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0g
Y3Jvc3NUaHJlYWRDb3B5KGRvbWFpbiksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3Rv
cmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5hZGRB
cHBCb3VuZERvbWFpbkZvclRlc3RpbmcoV1RGTW92ZShkb21haW4pKTsKKyAgICAgICAgYXV0byB0
b3RhbEFwcEJvdW5kRG9tYWlucyA9IG1fc3RhdGlzdGljc1N0b3JlLT5hcHBCb3VuZERvbWFpbnMo
KS5zaXplKCk7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoW3RvdGFsQXBwQm91bmREb21haW5zLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodG90YWxBcHBCb3VuZERvbWFpbnMpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtMTI4MCw2ICsxMzI1LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhh
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgewor
ICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX25ldHdvcmtTZXNzaW9uLT5uZXR3
b3JrU3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZXNldEFw
cEJvdW5kRG9tYWlucygpOworICAgIH0KKwogICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMTM1OWIzYjdlNzVlMDk0NTE0N2M5NzI0YTdm
ODA0ZmE1NTJjNjc2ZS4uNDhmYmNiYmQ2Yzc0MTNhNDdiOGQ2OWNmNjhjZjEwNTZlODRjZGVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMjc5
LDYgKzI3OSw4IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCBzZXRTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZCk7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
Jik7CisgICAgdm9pZCBhZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7
CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogCiAgICAgdm9pZCBub3RpZnlS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDI0ZWE1YWRkNTdiZTJmZmJlMTg3
ZTM1ZTA0Mjk0ZDgxYzFjNDJlZTMuLmFmZWRkODlhZjRjOWUwMWExNzU3N2Y1ZDEzMjUzZDA5MTBk
ZjJmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC0xMzA3LDYgKzEzMDcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzSXNv
bGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZToKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBhcHBCb3Vu
ZERvbWFpbnMpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRBcHBCb3VuZERvbWFpbnMoV1RGTW92
ZShhcHBCb3VuZERvbWFpbnMpKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBmb3JFYWNoTmV0
d29ya1Nlc3Npb24oW2VuYWJsZWRdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CkBAIC0xMzU1LDYg
KzEzNjMsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tp
ZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICB9CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZEFwcEJvdW5kRG9t
YWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKSB7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hZGRBcHBCb3Vu
ZERvbWFpbkZvclRlc3RpbmcoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVj
dFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNTc4ZDg2NWZkODUxYTlkOGZlMzA5YTY1Y2RhMzE5MGQ2
NWNiMWRjNi4uODAxZmY3OGJlOWIzMWYzMjZhNjZmYjJjOTQ5NWUwZjI4MzAwNmQxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjYxLDEy
ICsyNjEsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExp
bmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBjb25zdDsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+JiYpOwogICAgIGJvb2wgaXNJVFBEYXRhYmFzZUVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSVRQRGF0YWJhc2VFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3Jh
ZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9TYW1lU2l0ZVN0
cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBh
ZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYp
OwogI2VuZGlmCiAKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNWI4MTAy
YmNhMzliZTU5NWM0ZmRlY2E0NzU4MDk0MmEwZmRiNDhjYy4uYmMxYWJlOGQ2MTQ4ZGQ1NmZmNTc1
OGZjM2JlODUxZDQ2ZGZhMzFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNDAsMTEgKzE0MCwxMyBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBi
b29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCiAgICAgSGFzSXNvbGF0ZWRT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluKSAtPiAoYm9vbCBoYXNJc29sYXRlZFNlc3Npb24pIEFzeW5jCisgICAgU2V0QXBw
Qm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWlu
cykKICAgICBTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVk
KSAtPiAoKSBBc3luYwogICAgIFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKSAtPiAoKSBBc3luYwogICAgIFNl
dFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEVuYWJsZWQgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSkg
LT4gKCkgQXN5bmMKICAgICBTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4p
IC0+ICgpIEFzeW5jCisgICAgQWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gYXBwQm91bmREb21haW4p
IC0+ICh1aW50NjRfdCB0b3RhbEFwcEJvdW5kRG9tYWlucykgQXN5bmMKICNlbmRpZgogCiAgICAg
U2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGJvb2wgY29udHJvbGxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDQ2ZmZiZDQzMjE1MmJmOWU0OGFjNTExNWNmZjhhZmE2
MzcxNjMwNjAuLjM4ZjA4ZWNiOTNjYmY5Y2M4OTAyZDg3N2M3YTJkN2NlZDc4YzAzOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0x
MjksNiArMTI5LDEyIEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7
CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyAmJiAhcGFyYW1ldGVycy5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IHNldDsKKyAgICAgICAgc2V0LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5hcHBCb3VuZERvbWFpbnMuc2l6ZSgpKTsKKyAgICAgICAgc2V0LmFkZChwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucy5iZWdpbigp
LCBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9t
YWlucy5lbmQoKSk7CisgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91
bmREb21haW5zKFdURk1vdmUoc2V0KSk7CisgICAgfQogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5o
CmluZGV4IDkyN2FlYzNhNzRhZDFlZmNiNTk0OGEwNDNmODFmY2YyOWY5YmViOWUuLmUyZWY4NWRi
MTRjYjY2ZmMyNjgwM2I3NzA5OTg0NzMwYjViZjkzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaApAQCAtNDgs
NiArNDgsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2Vu
ZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMgeyB9OwogICAgIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICAgICAKICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC02NSw2ICs2Niw3
IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjZW5kaWYKICAg
ICAgICAgZW5jb2RlciA8PCBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAg
ICAgZW5jb2RlciA8PCBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgIGVuY29k
ZXIgPDwgYXBwQm91bmREb21haW5zOwogICAgICAgICBlbmNvZGVyIDw8IG1hbnVhbFByZXZhbGVu
dFJlc291cmNlOwogICAgIH0KIApAQCAtMTI3LDYgKzEyOSwxMSBAQCBzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICBpZiAoIXN0YW5kYWxvbmVBcHBsaWNh
dGlvbkRvbWFpbikKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICAgICAg
T3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gYXBwQm91bmREb21h
aW5zOworICAgICAgICBkZWNvZGVyID4+IGFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgaWYgKCFh
cHBCb3VuZERvbWFpbnMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAg
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtYW51YWxQcmV2YWxlbnRS
ZXNvdXJjZTsKICAgICAgICAgZGVjb2RlciA+PiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAg
ICAgICAgaWYgKCFtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKQEAgLTE0Niw2ICsxNTMsNyBAQCBz
dHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgICAg
ICAgICBXVEZNb3ZlKCpmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSksCiAgICAgICAg
ICAgICBXVEZNb3ZlKCpzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pLAorICAgICAgICAgICAg
V1RGTW92ZSgqYXBwQm91bmREb21haW5zKSwKICAgICAgICAgICAgIFdURk1vdmUoKm1hbnVhbFBy
ZXZhbGVudFJlc291cmNlKSwKICAgICAgICAgfX07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXgg
ZjBmNWExNDFhYjdmZWVjZDJiZTY4MmJiODg4NWZlNjI4NjUyNzI5Yi4uZjVjN2ZlMGZmOTRhMmRl
OTMyNThkZDg3ZWFiY2MxNzU1YzQ4MGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC02MTcsNiArNjE3
LDE5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rv
U2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluCiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzQWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQWRkQXBwQm91bmREb21haW5Gb3JU
ZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5hZGRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdE5hbWUpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0gKHVpbnQ2NF90IHRvdGFsQXBwQm91bmREb21haW5zKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHRvdGFsQXBwQm91bmREb21haW5zLCBjb250ZXh0KTsKKyAgICB9KTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGRhdGFTdG9yZVJlZik7CisgICAgVU5VU0VEX1BBUkFNKGhv
c3ROYW1lKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigwLCBjb250ZXh0KTsKKyNlbmRpZgorfQor
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRl
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmgKaW5kZXggZjlhMzgyMzdmZjM4NzlmNzBjMjI5MTg0YjVlNmUyN2Y2OTRkNGM0MC4u
ZjA4ZDVmNmY0ODFhZTAwOTAxMzI3Mjg4YzNmNWI5MmNjN2M2MmRhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAg
LTEyOSw2ICsxMjksOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUgogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZv
clRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dl
YnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENv
b2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JU
ZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0FkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9u
KSh1aW50NjRfdCB0b3RhbEFwcEJvdW5kRG9tYWlucywgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsK
K1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NBZGRBcHBCb3VuZERv
bWFpbkZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdE5hbWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NBZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7
CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDE0YTRiOWM1NGJiNjdiMTE5NWRmZTk0
YTc4ZDZjNmI1NGZjYmJjYTAuLmJkODEzMTFlNTI3YmZlNDNkMmI3YTVhZmZlZjVhNGY5N2RjZTI4
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEyMSw2ICsxMTIxLDE0IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6SGFzSXNvbGF0ZWRTZXNzaW9uKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFwcEJvdW5k
RG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgYXBwQm91bmREb21haW5zKQorewor
ICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9h
ZFN0YXRpc3RpY3Moc2Vzc2lvbklELCBhcHBCb3VuZERvbWFpbnMpLCAwKTsKK30KKwogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
Ym9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CkBAIC0xMTYwLDYgKzExNjgsMTYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Zv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2UKIAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGlu
ZyhzZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjphZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
aWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6QWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKHNlc3Npb25JRCwg
V1RGTW92ZShkb21haW4pKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQogI2VuZGlm
IC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKaW5kZXggMDhkYzlmZDk4NDc0MmNkMWVkYzk1Zjk2ZTUzZDk4MzJiZGVkOGJhNi4uN2Y5
MjBiZDVkYjdhMjY0YmRmODAxYThlODZlODZjNTM3MTgwYjA0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE3
NCw2ICsxNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGluY2x1ZGVIdHRw
T25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxl
dGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lv
bklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+LCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lk
IGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldEFwcEJv
dW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7CisgICAgdm9pZCBhZGRBcHBCb3VuZERvbWFp
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZERvd25ncmFk
ZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAyMjRhNWEy
MGFkMTFjYTU5YzNiMzA0MzM3NjNkMjQwMTMzZGVhNzVmLi4xMDcyM2I4ZTEwMDhiNjQyMWYwYjhi
NzJmMmQzZmJhM2ViNGUyMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCkBAIC02MDUsOCArNjA1LDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAg
ICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7
CiAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgc2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZDo6Tm87CiAjZW5kaWYKLSAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4geyB9OwogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0g
V2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7
CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9t
YWluIHsgfTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5k
RG9tYWluczsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtYW51YWxQcmV2YWxlbnRS
ZXNvdXJjZSB7IH07CiAgICAgV0VCX1BST0NFU1NfUE9PTF9BRERJVElPTlNfMgogICAgIGlmICh3
aXRoV2Vic2l0ZURhdGFTdG9yZSkgewpAQCAtNjI0LDYgKzYyNSw3IEBAIE5ldHdvcmtQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0
b3JlKiB3aXRoCiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAgICAgICAgICAg
c3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
bjsKKyAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnM7CiAgICAg
ICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5tYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZTsKICAgICAgICAgfQogCkBAIC02NTAsNiArNjUyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdp
dGgKICNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBzdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAg
ICAgICAgICAgYXBwQm91bmREb21haW5zID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWluczsKICAgICAgICAgICAg
IG1hbnVhbFByZXZhbGVudFJlc291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAg
ICAgICB9CiAKQEAgLTY4OSw2ICs2OTIsOCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAg
ICAgICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwKICNlbmRpZgogICAgICAgICBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwKKyAgICAgICAgc3RhbmRhbG9uZUFwcGxp
Y2F0aW9uRG9tYWluLAorICAgICAgICBhcHBCb3VuZERvbWFpbnMsCiAgICAgICAgIG1hbnVhbFBy
ZXZhbGVudFJlc291cmNlLAogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQppbmRleCBmMzQyM2E5MmFiYWQ5YmZhYTBmOGVlZDkyMTJiZTBhMmE3YzVkNDA0Li4yMzVm
OWM2YWQ3NDJjNjUxOGI2MDEzNjI1MmZjMzc0Y2M2ZmU4MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCkBAIC00MDUsMTQgKzQwNSwxNCBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZv
cmNlUmVpbgogICAgIAogICAgIHN0YXRpYyBjb25zdCBhdXRvIG1heEFwcEJvdW5kRG9tYWluQ291
bnQgPSAxMDsKICAgICAKLSAgICBhcHBCb3VuZERvbWFpblF1ZXVlKCkuZGlzcGF0Y2goW2lzSW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgPSBwYXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQsIGZvcmNlUmVpbml0aWFsaXphdGlv
bl0gKCkgbXV0YWJsZSB7CisgICAgYXBwQm91bmREb21haW5RdWV1ZSgpLmRpc3BhdGNoKFt0aGlz
LCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkID0gcGFyYW1ldGVycygpLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkLCBmb3JjZVJlaW5pdGlh
bGl6YXRpb25dICgpIG11dGFibGUgewogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZWRBcHBCb3Vu
ZERvbWFpbnMgJiYgZm9yY2VSZWluaXRpYWxpemF0aW9uICE9IEZvcmNlUmVpbml0aWFsaXphdGlv
bjo6WWVzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgTlNBcnJheTxO
U1N0cmluZyAqPiAqZG9tYWlucyA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gb2JqZWN0Rm9ySW5m
b0RpY3Rpb25hcnlLZXk6QCJXS0FwcEJvdW5kRG9tYWlucyJdOwogICAgICAgICBrZXlFeGlzdHMg
PSBkb21haW5zID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkLCBmb3JjZVJlaW5pdGlh
bGl6YXRpb24sIGRvbWFpbnMgPSByZXRhaW5QdHIoZG9tYWlucyldIHsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkLCBm
b3JjZVJlaW5pdGlhbGl6YXRpb24sIGRvbWFpbnMgPSByZXRhaW5QdHIoZG9tYWlucyldIHsKICAg
ICAgICAgICAgIGlmIChmb3JjZVJlaW5pdGlhbGl6YXRpb24gPT0gRm9yY2VSZWluaXRpYWxpemF0
aW9uOjpZZXMpCiAgICAgICAgICAgICAgICAgYXBwQm91bmREb21haW5zKCkuY2xlYXIoKTsKIApA
QCAtNDMzLDYgKzQzMyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJv
dW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICAg
ICAgV0VCU0lURV9EQVRBX1NUT1JFX0FERElUSU9OUwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMgPSB0cnVlOworICAgICAgICAgICAgc2V0
QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KQEAgLTQ0NCw2ICs0NDUsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmVu
c3VyZUFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gSG9wcGluZyB0byB0aGUgYmFja2dyb3Vu
ZCB0aHJlYWQgdGhlbiBiYWNrIHRvIHRoZSBtYWluIHRocmVhZAorICAgIC8vIGVuc3VyZXMgdGhh
dCBpbml0aWFsaXplQXBwQm91bmREb21haW5zKCkgaGFzIGZpbmlzaGVkLgogICAgIGFwcEJvdW5k
RG9tYWluUXVldWUoKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFp
bnMpOwpAQCAtNDg0LDYgKzQ4NywxNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJv
dW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8VwogICAgIH0p
OwogfQogCitPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gV2Vi
c2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAoIWhhc0luaXRpYWxpemVk
QXBwQm91bmREb21haW5zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBhcHBCb3VuZERvbWFpbnMoKTsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZWluaXRp
YWxpemVBcHBCb3VuZERvbWFpbnMoKQogewogICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21h
aW5zID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGI0NDk3MDJkMDQ4NzhhZTEzMmI0ZDM2
MmMyYzM3MTY3MGM4M2RjMjQuLmY5MjgyMjA2MTI1YzliNWM0MzMwZjg3ZWY5NjhiZWJlY2U5MzVh
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xOTA2LDYgKzE5MDYsMjUgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tp
ZXNGb3JUZXN0aW4KICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRUb1NhbWVTaXRlU3Ry
aWN0Q29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHsgdXJsIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOwogICAgIH0KIH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjphZGRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJs
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFt0aGlzLCBkb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKSB7CisgICAgICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmFkZEFwcEJvdW5k
RG9tYWluRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV1RGTW92ZShkb21haW4pLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOworICAgIH0pOworCisg
ICAgaWYgKG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSAhPSBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKSB7
CisgICAgICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnM7
CisgICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAgICAgICAg
ICAgd2ViUHJvY2Vzcy5zZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBw
Qm91bmREb21haW5zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0geyB9KTsKKyAgICB9Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZv
clByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIyMTksNiArMjIzOCwxMyBAQCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBi
b29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxz
ZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxz
ZTsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CisgICAgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsK
KyAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWluczsK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIG9wdGlvbmFsQXBwQm91bmREb21haW5zID0g
Z2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpOworICAgIGlmIChvcHRpb25hbEFwcEJv
dW5kRG9tYWlucyAmJiBtX2FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCisgICAgICAgIGFw
cEJvdW5kRG9tYWlucyA9IGNvcHlUb1ZlY3Rvcigqb3B0aW9uYWxBcHBCb3VuZERvbWFpbnMpOwor
I2VuZGlmCiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKIAogICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzID0gewpAQCAt
MjIzOSw2ICsyMjY1LDggQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkOjpObywKICNlbmRpZgogICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSwKKyAgICAgICAgV1RGTW92ZShzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4p
LAorICAgICAgICBXVEZNb3ZlKGFwcEJvdW5kRG9tYWlucyksCiAgICAgICAgIFdURk1vdmUocmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlKSwKICAgICB9OwogCkBA
IC0yNDA3LDQgKzI0MzUsMjkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjbGVhckFwcEJvdW5k
U2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGkKICAgICB9CiB9CiAK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQordm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkKK3sKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoIW1fYXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBhcHBCb3VuZERvbWFpbnMgPSBnZXRBcHBC
b3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCk7CisgICAgQVNTRVJUKGFwcEJvdW5kRG9tYWlucyk7
CisgICAgaWYgKCFhcHBCb3VuZERvbWFpbnMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICht
X3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgIT0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucykgeworICAgICAg
ICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zOworICAgICAg
ICBmb3IgKGF1dG8mIHdlYlByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHdlYlBy
b2Nlc3Muc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9t
YWlucywgW10geyB9KTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0
QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhtX3Nlc3Npb25JRCwgKmFw
cEJvdW5kRG9tYWlucyk7CisgICAgfQorI2VuZGlmCit9CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApp
bmRleCA2MWUzYjY5NmJhMGNjNTNkZDA3ZjhiZGQyMjhmZGI2NzJjZDE0MGVjLi5lNGQ0Yjc1MDFl
OTExZjMxODkyOWRiNDU4Mzg4MzZhYTBhNTk3OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0yMDEsNiAr
MjAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgY29uc3Q7CisgICAgdm9pZCBh
ZGRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVS
TCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICAgICBib29sIGlzSXRw
U3RhdGVFeHBsaWNpdGx5U2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc0l0cFN0YXRlRXhwbGljaXRs
eVNldDsgfQogICAgIHZvaWQgdXNlRXhwbGljaXRJVFBTdGF0ZSgpIHsgbV9pc0l0cFN0YXRlRXhw
bGljaXRseVNldCA9IHRydWU7IH0KICNlbmRpZgpAQCAtMzI3LDYgKzMyOCwxMSBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBtYXliZVJlZ2lzdGVyV2l0aFNlc3Npb25JRE1hcCgpOwogCisgICAgT3B0
aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGdldEFwcEJvdW5kRG9t
YWluc0lmSW5pdGlhbGl6ZWQoKSBjb25zdDsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpOworI2VuZGlmCisKICAgICBjb25zdCBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
IAogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb247CkBAIC0zMzksNiArMzQ1LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkIHsgZmFsc2UgfTsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJik+IG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazsKKyAgICBtdXRhYmxl
IE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IG1fdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsgLy8gTGF6aWx5IGNvbXB1dGVkLgorICAgIC8vIFJlbW92
ZSBpZiB3ZSBkZWNpZGUgdG8gZW5hYmxlIHRoaXMgZmVhdHVyZS4KKyAgICBib29sIG1fYXBwQm91
bmRJVFBSZWxheGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKIAogICAgIFJlZjxXb3Jr
UXVldWU+IG1fcXVldWU7CkBAIC0zNzcsOSArMzg2LDYgQEAgcHJpdmF0ZToKICNpZiBIQVZFKEFQ
UF9TU08pCiAgICAgVW5pcXVlUmVmPFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yPiBtX3NvQXV0
aG9yaXphdGlvbkNvb3JkaW5hdG9yOwogI2VuZGlmCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU+IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsgLy8gTGF6aWx5
IGNvbXB1dGVkLgotI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmE1NGJmNDM4OWVkMGUwM2JjZDdjMTI5OGE0MzllYWU4
ZWY2MWQzYy4uZmI5YWY2ZWVmYmUzZmRjYmRiZThmNmE0NGYzOTAwZTQ1MGI2ZDdhMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDIwLTA0LTMwICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIEV4ZW1wdCBhcHAtYm91bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBk
ZWxldGlvbiBhbmQgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IFRlc3RS
dW5uZXIgZnVuY3Rpb24KKyAgICAgICAgYWRkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKCkgd2hp
Y2ggcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyCisgICAgICAgIG9mIGFwcC1ib3VuZCBkb21haW5z
IGNvbmZpZ3VyZWQgc28gdGhhdCBpdCBjYW4gYmUgY2hlY2tlZC4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6YWRkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6cmVzb3VyY2VTdGF0aXN0aWNzVW5zaWduZWRSZXN1bHRDYWxsYmFjayk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjphZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAy
MDIwLTA0LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQWRkIFNQSSB0byBjaGFuZ2UgYSBXS1dlYlZpZXcncyBDT1JTIGRpc2FibGluZyBw
YXR0ZXJuIGFmdGVyIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRl
eCA1Y2JlOTUxNjJlZDdjZDc0NzI3NDM2MDBmY2QzYzJlNGE5YWU4Mzk1Li40NzkzZTQ5NjJiZDE2
ZGUyZDZmNjhkZGJiN2MxZGMzNmM2ODhhOTQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
QEAgLTM0OCw2ICszNDgsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmpl
Y3QgY2FsbGJhY2ssIG9wdGlvbmFsIGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVy
YWN0aW9uKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZShib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlz
dGljc1NldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKERPTVN0cmluZyBob3N0TmFtZSwgb2JqZWN0
IGNhbGxiYWNrKTsKKyAgICB1bnNpZ25lZCBsb25nIGFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFp
bihET01TdHJpbmcgaG9zdE5hbWUpOwogICAgIHZvaWQgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMo
b2JqZWN0IGNhbGxiYWNrKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDUzZDExYWQ3MzNlOTFkOGMxMTg0NGExMDJmMjc2MzVkMmNmMjAwYTIuLjU3
ZjczZTFmYWNlNjg1YjBlNDAzZWU3MTVhZjU0ODM2Zjg5NWNhZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjMz
MCw2ICsyMzMwLDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRUb1Nh
bWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNr
KFN0YXRpc3RpY3NEaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrSUQpOwogfQog
Cit1bnNpZ25lZCBUZXN0UnVubmVyOjphZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4oSlNTdHJp
bmdSZWYgaG9zdE5hbWUpCit7CisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbiIpKTsK
KyAgICBhdXRvIG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmlu
Zyhob3N0TmFtZSkpOworICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0cjsKKyAgICBX
S0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdl
Qm9keS5nZXQoKSwgJnJldHVybkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5E
YXRhKSA9PSBXS1VJbnQ2NEdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gV0tVSW50NjRHZXRWYWx1
ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOwor
fQorCiB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpT
VmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJh
Y2soU3RhdGlzdGljc0RpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFja0lELCBjb21wbGV0
aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCmluZGV4IGY1YjYzNmUwMTg5Y2E3MjQ5ZjQ2MzY1ZDRkYjY2ZmFjY2M0
ZmFhYjAuLmJkOTYzNDUwOTAwZjRiZTg1Zjk3MDFlNWEyNDkyMjRiZDRkMWU3NWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBA
IC00NTIsNiArNDUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpT
VmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRUb1NhbWVT
aXRlU3RyaWN0Q29va2llc0NhbGxiYWNrKCk7CisgICAgdW5zaWduZWQgYWRkU3RhdGlzdGljc0Fw
cEJvdW5kRG9tYWluKEpTU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAg
IHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2soKTsK
ICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBjNGQ1N2UxODhi
NzA3OGQ0OTEwMWJlYzkzODhjMDAxMjM1YjBjZDg1Li4zMzI0NzlhNDM4NDY1YzZkODg2ODk4ODU4
ODdhNTJjNWE4ZjdmNDAyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcApAQCAtMzM5MSw2ICszMzkxLDcgQEAgc3RydWN0IFJlc291cmNlU3RhdGlzdGljc0NhbGxi
YWNrQ29udGV4dCB7CiAgICAgYm9vbCBkb25lIHsgZmFsc2UgfTsKICAgICBib29sIHJlc3VsdCB7
IGZhbHNlIH07CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHJlc291cmNlTG9hZFN0YXRp
c3RpY3NSZXByZXNlbnRhdGlvbjsKKyAgICB1aW50NjRfdCB1bnNpZ25lZFJlc3VsdDsKIH07CiAg
ICAgCiBzdGF0aWMgdm9pZCByZXNvdXJjZVN0YXRpc3RpY3NTdHJpbmdSZXN1bHRDYWxsYmFjayhX
S1N0cmluZ1JlZiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVwcmVzZW50YXRpb24sIHZvaWQqIHVz
ZXJEYXRhKQpAQCAtMzQxNiw2ICszNDE3LDE0IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlU3RhdGlz
dGljc0Jvb2xlYW5SZXN1bHRDYWxsYmFjayhib29sIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCiAg
ICAgY29udGV4dC0+dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogfQogCitzdGF0aWMgdm9p
ZCByZXNvdXJjZVN0YXRpc3RpY3NVbnNpZ25lZFJlc3VsdENhbGxiYWNrKHVpbnQ2NF90IHJlc3Vs
dCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PFJl
c291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKKyAgICBjb250ZXh0
LT51bnNpZ25lZFJlc3VsdCA9IHJlc3VsdDsKKyAgICBjb250ZXh0LT5kb25lID0gdHJ1ZTsKKyAg
ICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmNsZWFyU3RhdGlzdGljc0RhdGFGb3JEb21haW4oV0tTdHJpbmdSZWYgZG9tYWlu
KQogewogICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlz
KTsKQEAgLTM3NzcsNiArMzc4NiwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0
aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCiAgICAgbV9j
dXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoKTsKIH0KIAor
dW5zaWduZWQgVGVzdENvbnRyb2xsZXI6OmFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbihXS1N0
cmluZ1JlZiBob3N0TmFtZSkKK3sKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRl
eHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0FkZEFw
cEJvdW5kRG9tYWluRm9yVGVzdGluZyh3ZWJzaXRlRGF0YVN0b3JlKCksIGhvc3ROYW1lLCAmY29u
dGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVW5zaWduZWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVu
VW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworICAgIHJldHVybiBjb250ZXh0LnVuc2ln
bmVkUmVzdWx0OworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZSgpCiB7CiAgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0
IGNvbnRleHQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmlu
ZGV4IDMzN2VmNmUzYjQzMGJlMWQ3NzcyMmVhYjdmZWE4Y2IyMWFlZWQxYzEuLjY3YzQ0YWQ2YjI5
MjI5ODAxYmZlZGVjNWE1OWZiYWM4ZDg5NTZlNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKQEAgLTI2Niw2ICsyNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVlLCBib29sIG9u
bHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoV0tTdHJpbmdSZWYgaG9zdE5hbWUp
OworICAgIHVuc2lnbmVkIGFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbihXS1N0cmluZ1JlZiBo
b3N0TmFtZSk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwog
CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA3ZWE3ZDIwMGFhNDcwYzExMDJhODMwOTBj
NzhlNDJkZmIwOTU0NDFmLi4xNjAwNTgwZTI5ZTE0NWJmMzU1MzZmYjQ1ZDM2MTQ5ZDVkMTQ2Mjc2
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTY0MCw2
ICsxNjQwLDEzIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJBZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4iKSkgeworICAgICAgICBBU1NFUlQo
V0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworICAgICAg
ICBXS1N0cmluZ1JlZiBob3N0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihtZXNzYWdl
Qm9keSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuYWRkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKGhvc3RO
YW1lKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2xlYXJET01DYWNoZSIpKSB7CiAg
ICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tTdHJpbmdHZXRUeXBl
SUQoKSk7CiAgICAgICAgIFdLU3RyaW5nUmVmIG9yaWdpbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5n
UmVmPihtZXNzYWdlQm9keSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmFjMTE2NTQ5NDEwYmNlYjhiNTIwNTZmNWFjMGQw
NzQ1NjMwM2UyNS4uZjgxNzQxMGRlM2VlNDZmZGU1OGQzMjE1ODRjYmExZDM5ZmI0MDExNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA0LTMwICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJA
YXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91bmQgZG9tYWlucyBmcm9tIElUUCdz
IHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJl
dHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTk1MDc2Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4
ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1w
dC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21h
aW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1k
YXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlu
cy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24uaHRtbDogQWRkZWQuCisKIDIwMjAt
MDQtMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktp
dC5XZWJDb250ZW50IHByb2Nlc3MgY3Jhc2hlcyB3aGVuIHdlYiBkZXZlbG9wZXIgdG9vbHMgYXJl
IG9wZW5lZCBpbiBTYWZhcmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1w
dC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFp
bnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4t
ZWFjaC1vdGhlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVjZmVkY2NmZjM2MGI4YWUzYTcz
NWE3MzY0ODNiMGNkNTZlNjcwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21h
aW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3RzIHRoYXQgYXBwLWJvdW5kIGRvbWFpbnMgYXJl
IGV4ZW1wdCBmcm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2
ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZTEtLT4nCistLS0tLS0tLQorU2hvdWxkIG5vdCByZWNlaXZlIGNvb2tpZS4KK0RpZCBu
b3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5vdCByZWNl
aXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUgZG9jdW1l
bnQuY29va2llOgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUyLS0+JworLS0tLS0tLS0K
K1Nob3VsZCByZWNlaXZlIGNvb2tpZS4KK1JlY2VpdmVkIGNvb2tpZSBuYW1lZCAnZmlyc3RQYXJ0
eUNvb2tpZScuCitEaWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVkICdwYXJ0aXRpb25lZENvb2tp
ZScuCitDbGllbnQtc2lkZSBkb2N1bWVudC5jb29raWU6IGZpcnN0UGFydHlDb29raWU9dmFsdWUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9j
a2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1w
dC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jODA1MzNmZWMxODRmNGUxOTY1N2Y2MWU5NWI3ZDRjZWNhZjk2OWM5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1w
dERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJl
dHdlZW4tZWFjaC1vdGhlci5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhcHAtYm91bmQg
ZG9tYWlucyBhcmUgZXhlbXB0IGZyb20gdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJldHdl
ZW4gdGhlbXNlbHZlcy4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0
IGZpcnN0UGFydHlPcmlnaW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCB0
aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CisgICAgY29uc3QgdGhp
cmRQYXJ0eVJlc291cmNlVXJsID0gdGhpcmRQYXJ0eU9yaWdpbiArICIvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZXNvdXJjZXMiOworICAgIGNvbnN0IGZpcnN0UGFydHlDb29raWVOYW1lID0gImZp
cnN0UGFydHlDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUg
PSAiL3NldC1jb29raWUucGhwP25hbWU9IiArIGZpcnN0UGFydHlDb29raWVOYW1lICsgIiZ2YWx1
ZT12YWx1ZSI7CisgICAgY29uc3QgcGFydGl0aW9uZWRDb29raWVOYW1lID0gInBhcnRpdGlvbmVk
Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRQYXJ0aXRpb25lZENvb2tpZSA9ICIvc2V0
LWNvb2tpZS5waHA/bmFtZT0iICsgcGFydGl0aW9uZWRDb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1
ZSI7CisgICAgY29uc3QgcmV0dXJuVXJsID0gZmlyc3RQYXJ0eU9yaWdpbiArICIvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9t
LWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbCI7CisgICAgY29uc3Qgc3Vi
UGF0aFRvR2V0Q29va2llcyA9ICIvZ2V0LWNvb2tpZXMucGhwP25hbWUxPSIgKyBmaXJzdFBhcnR5
Q29va2llTmFtZSArICImbmFtZTI9IiArIHBhcnRpdGlvbmVkQ29va2llTmFtZTsKKyAgICBjb25z
dCByZWRpcmVjdENoYWluVXJsID0gdGhpcmRQYXJ0eVJlc291cmNlVXJsICsgIi9yZWRpcmVjdC5w
aHA/cmVkaXJlY3RUbz0iICsgdGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvR2V0Q29v
a2llczsKKworICAgIGZ1bmN0aW9uIG9wZW5JZnJhbWUodXJsLCBvbkxvYWRIYW5kbGVyKSB7Cisg
ICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsK
KyAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7CisgICAgICAgIGlmIChvbkxvYWRIYW5kbGVyKSB7
CisgICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IG9uTG9hZEhhbmRsZXI7CisgICAgICAgIH0K
KyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2gpIHsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMSI6CisgICAgICAgICAgICAgICAgLy8g
U2V0IGZpcnN0LXBhcnR5IGNvb2tpZSBmb3IgbG9jYWxob3N0LgorICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmxvY2F0aW9uLmhyZWYgPSB0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQYXRoVG9T
ZXRGaXJzdFBhcnR5Q29va2llICsgIiMiICsgcmV0dXJuVXJsICsgIiNzdGVwMiI7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDIiOgorICAgICAgICAgICAg
ICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBkb2Vzbid0IGdldCBzZW50IGZvciBsb2NhbGhv
c3QgdW5kZXIgMTI3LjAuMC4xIHNpbmNlIHRoZXkgYXJlIGJvdGggY29uZmlndXJlZCBhcyBhcHAt
Ym91bmQgZG9tYWlucy4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0g
InN0ZXAzIjsKKyAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlSZXNvdXJjZVVy
bCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hvdWxkIG5vdCByZWNlaXZlIGNv
b2tpZS4iLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKDIgIT09IHRlc3RS
dW5uZXIuYWRkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKGZpcnN0UGFydHlPcmlnaW4pKQorICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRGlkbid0IGdldCBhIHRvdGFsIG9mIHR3
byBhcHAtYm91bmQgZG9tYWlucyBhZnRlciBhZGRpbmcgdGhlIHNlY29uZC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAzIjoKKyAgICAgICAgICAgICAgICAv
LyBDaGVjayB0aGF0IHRoZSBjb29raWUgZ2V0cyBzZW50IGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3
LjAuMC4xIHNpbmNlIHRoZXkgYXJlIG5vdyBib3RoIGNvbmZpZ3VyZWQgYXMgYXBwLWJvdW5kIGRv
bWFpbnMuCisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwNCI7
CisgICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQ
YXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNob3VsZCByZWNlaXZlIGNvb2tpZS4iLCBydW5U
ZXN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llcyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZG9j
dW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0
cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpZiAoMSAhPT0gdGVzdFJ1bm5lci5hZGRT
dGF0aXN0aWNzQXBwQm91bmREb21haW4odGhpcmRQYXJ0eU9yaWdpbikpCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiRGlkbid0IGdldCBhIHRvdGFsIG9mIG9uZSBhcHAtYm91bmQgZG9tYWlu
IGFmdGVyIGFkZGluZyB0aGUgZmlyc3QuIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9
ICJzdGVwMSI7CisgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIH0pOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUt
ZGF0YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlu
cy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg4ZTQ1ZDdmMTk5YTNjNjlhYmMxZWExNWYxNzkzMjk5ZmI3N2Q2NWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRl
LWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0No
ZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9k
IG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYXBwLWJvdW5kLgorCitC
ZWZvcmUgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRp
b246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2Vy
dmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVu
dHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0Lgor
CitBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9u
OiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2Vy
dmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50
cnkgZG9lcyBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1m
cm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmZWJh
ZjI3NmVmZmQxYWI1M2E2M2I2NjIzNTRiNWQ4MTZkZjdhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlu
cy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0
YWJhc2UuaHRtbApAQCAtMCwwICsxLDI1NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywg
MCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMg
bm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYg
dGhlIHdlYnNpdGUgaXMgYXBwLWJvdW5kLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48
L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRh
YmFzZSh0cnVlKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHkt
Y29va2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1j
b29raWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNv
b2tpZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAgICBh
ID0gYS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAg
ICAgIHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxl
bWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAg
ICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
ZWxlbWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQo
ZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxl
dGlvbikgeworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAg
ICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBpZiAo
IWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgYWRkT3V0cHV0KChpc0FmdGVyRGVsZXRpb24g
PyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8g
Y29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsK
KyAgICAgICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNl
IGh0dHBPbmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFz
c2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSAr
ICIgZGVsZXRpb246ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5
IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVu
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIg
OiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlz
dHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Y2xpZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBh
c3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikg
KyAiIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChz
b3J0U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBz
b3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFz
c2VkTWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVz
dERhdGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykg
eworICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJD
b3VsZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOwor
ICAgICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAg
ICAgICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0lu
Y3JlbWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAg
ICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1heElu
dGVydmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQgY2hl
Y2tJREJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBzZW1h
cGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhp
c3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7Cisg
ICAgICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJhY2sg
PSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAg
IC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRl
cnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNl
bWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsr
aW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWRE
Qi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVy
dmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAg
ICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisK
KyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxz
KSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVu
dHJ5IGNoZWNrcyBleGhhdXN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlE
QkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hU
ZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAg
ICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJ
RCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJ
REIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9y
ZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnRlcnZhbENvdW50
ZXJMb2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7CisgICAg
bGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VO
YW1lID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVlIjsKKyAg
ICBmdW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxi
YWNrKSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7CisgICAgICAg
IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0Fm
dGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExvY2Fs
U3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldElu
dGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRl
ckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAg
ICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3Rv
cmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJk
b2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2Fs
U3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxl
dGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVl
ID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAg
ICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVu
dGlsIHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9y
YWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFs
SUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRl
bShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRl
ciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFn
ZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAg
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5k
ZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxT
dG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2Fs
U3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9
PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9CisgICAgfQorCisg
ICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAg
ICAvLyBXcml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3Vy
Y2VzL3NldC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tp
ZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZl
dGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNl
dC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVu
dGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVu
dFNpZGVDb29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOwor
CisgICAgICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0
SXRlbShsb2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNr
TG9jYWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8g
V3JpdGUgSW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVj
a1dlYnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQ
cm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Y2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1
ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAg
ICByZXNldENvb2tpZXMoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiOworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
dHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYgKDEgIT09IHRlc3RSdW5uZXIuYWRk
U3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiRGlkbid0IGdldCBhIHRvdGFsIG9mIG9uZSBhcHAtYm91bmQgZG9tYWlu
IGFmdGVyIGFkZGluZyB0aGUgZmlyc3QuIik7CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKG9yaWdpblVuZGVyVGVzdCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmln
aW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAi
ICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBkaWRuJ3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50
LiIpOworICAgICAgICAgICAgICAgICAgICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1k
b21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlu
cy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4ZTQ1ZDdmMTk5YTNjNjlhYmMxZWExNWYxNzkzMjk5ZmI3
N2Q2NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJv
bS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0No
ZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9k
IG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYXBwLWJvdW5kLgorCitC
ZWZvcmUgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRp
b246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2Vy
dmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVu
dHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0Lgor
CitBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9u
OiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2Vy
dmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50
cnkgZG9lcyBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNp
dGUtZGF0YS1kZWxldGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNDJlNTExZjU2ODNhMzY3ZTA2ZThm
MTg1MDA1NzkzNThkMzhhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlu
cy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24uaHRtbApAQCAtMCwwICsxLDI1NiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29v
a2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PkNoZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVy
aW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYXBwLWJvdW5kLjwv
ZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisKKyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7Cisg
ICAgY29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAg
ICBjb25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisg
ICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dl
ckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4g
YSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGlu
ZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5u
ZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAg
ICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBj
b29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxl
bmd0aCkKKyAgICAgICAgICAgIGFkZE91dHB1dCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6
ICJCZWZvcmUiKSArICIgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IE5vIGNvb2tpZXMgZm91
bmQuIik7CisgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNv
b2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2Vz
LnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9u
OiAiICsgKGlzQWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhp
c3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IHNlcnZlclNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIp
ICsgIiBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVD
b29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdl
cy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlv
bjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0Fy
cmF5KTsKKyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBh
c3NlZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2Up
OworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7
CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAg
bGV0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3Jl
YXRlIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsK
KyAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICAgICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBv
YmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRy
dWV9KTsKKyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNh
bGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAy
MDsKKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJh
Y2s7CisgICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVy
RGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRl
cnZhbENvdW50ZXJJREIgPSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7
CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1
bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNl
dEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJD
aGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291
bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBh
Z2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0
cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBj
aGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAg
ICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAg
ICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBjaGVja3Mg
ZXhoYXVzdGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qg
b3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJD
aGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0
aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRv
ZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIw
MCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9y
YWdlOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVja0xv
Y2FsU3RvcmFnZUludGVydmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0
IjsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24g
Y2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAg
ICAgICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xvY2Fs
U3RvcmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9u
KSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3Jh
Z2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZh
bHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkg
IiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSAr
ICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJh
Y2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
SGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAg
ICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2Fs
U3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6
ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2Nh
bFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEw
MCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBp
cyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFs
SUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRl
cnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9y
YWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246
IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJk
b2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hl
Y2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0
SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJB
ZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3Rv
cmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzeW5jIGZ1
bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUg
Y29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0
cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNy
ZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tp
ZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2llIjog
c2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAic2Ft
ZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29va2ll
TmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKworICAgICAgICAv
LyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxT
dG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFn
ZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIEluZGV4
ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0ZXN0UnVubmVyLmlu
c3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0
YUFuZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0
ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAgICAg
ICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29r
aWVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IGNvbnN0IG9yaWdpblVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGlmICgxICE9PSB0ZXN0UnVubmVyLmFkZFN0YXRpc3RpY3NB
cHBCb3VuZERvbWFpbihvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkRpZG4ndCBnZXQgYSB0b3RhbCBvZiBvbmUgYXBwLWJvdW5kIGRvbWFpbiBhZnRlciBhZGRp
bmcgdGhlIGZpcnN0LiIpOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmln
aW5VbmRlclRlc3QsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVu
ZGVyVGVzdCArICIgZGlkbid0IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398101</attachid>
            <date>2020-04-30 15:18:46 -0700</date>
            <delta_ts>2020-04-30 15:31:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200430151845.patch</filename>
            <type>text/plain</type>
            <size>90170</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ1MjBmMGE2MGNiMjVm
MmM4NjRmN2M0ZmQxNzQ1NTBkOTc0NTdhOC4uNjQ5NjIzOGIwNzAyZDA5NGZmNWRiNzI0ZGRlODZk
OGE3NTM0YmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA0LTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91
bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFy
dHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIHRvIGFsbG93IGl0IHRvIGV4ZW1wdAorICAgICAgICBhcHAtYm91bmQgZG9tYWlucyBm
cm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KKworICAgICAgICBDYWxscyB0byBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5kRG9tYWlucygpIGFuZAorICAgICAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZygpIGF1dG9tYXRp
Y2FsbHkgc2V0cyB0aGUKKyAgICAgICAgY29va2llIGJsb2NraW5nIHBvbGljeSB0bworICAgICAg
ICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmRE
b21haW5zLgorCisgICAgICAgIENhbGxzIHRvIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRB
cHBCb3VuZERvbWFpbnMoKSBhdXRvbWF0aWNhbGx5IHNldHMgdGhlCisgICAgICAgIGNvb2tpZSBi
bG9ja2luZyBwb2xpY3kgdG8gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIHdoaWNo
IGlzIHRoZQorICAgICAgICBkZWZhdWx0LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVt
cHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2Fw
cC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFz
ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEt
ZGVsZXRpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
aG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERvbWFpbnMpOgorCiAyMDIwLTA0LTMwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuV2ViQ29udGVu
dCBwcm9jZXNzIGNyYXNoZXMgd2hlbiB3ZWIgZGV2ZWxvcGVyIHRvb2xzIGFyZSBvcGVuZWQgaW4g
U2FmYXJpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDk1YzNkYjE3OWZmNzYxNzdiYmY4NWZkMzgzZThhN2YyNGY0Yjc0
MGYuLjFlODFjYjc5NjA5NjE5MmE2ZDNmNzZiOTQyMThkNzI3OWU0ODYyMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzggQEAKKzIwMjAtMDQtMzAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5zIGZyb20gSVRQJ3Mgd2Vi
c2l0ZSBkYXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcgYmV0d2Vl
biB0aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndh
cmRzIGluZm9ybWF0aW9uIGFib3V0IGFwcC1ib3VuZCBkb21haW5zIHRvIElUUCBhbmQgd2ViCisg
ICAgICAgIHByb2Nlc3NlcyBzbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9tIHdlYnNpdGUg
ZGF0YSBkZWxldGlvbiBhbmQKKyAgICAgICAgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJl
dHdlZW4gdGhlbXNlbHZlcy4KKworICAgICAgICBTaW5jZSBhcHAtYm91bmQgZG9tYWlucyBhcmUg
bG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEgYmFja2dyb3VuZAorICAgICAgICB0aHJl
YWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycyBpZgorICAgICAgICB0aGV5J3ZlIGFscmVhZHkgYmVlbiBsb2FkZWQuIFRoZW4gZXZl
cnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUKKyAgICAgICAgdXBkYXRlZCwgdGhleSBhcmUg
Zm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQgSVRQIHdpbGwgaGF2ZSB0aGVtCisg
ICAgICAgIGFzIHNvb24gYXMgcG9zc2libGUuCisKKyAgICAgICAgU2V0dGluZyBhcHAtYm91bmQg
ZG9tYWlucyBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBhdXRvbWF0aWNhbGx5IHN3aXRjaGVzCisg
ICAgICAgIElUUCdzIGNvb2tpZSBibG9ja2luZyBwb2xpY3kgdG8gdGhlIG5ldworICAgICAgICBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBw
Qm91bmREb21haW5zLgorCisgICAgICAgIEEgbmV3IGZ1bmN0aW9uIGlzIGFkZGVkOiBXZWJzaXRl
RGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkKKyAgICAgICAgVGhp
cyBmdW5jdGlvbiBhbGxvd3MgZmV0Y2hpbmcgb2YgYXBwLWJvdW5kIGRvbWFpbnMgd2l0aG91dCB0
cmlnZ2VyaW5nCisgICAgICAgIHRoZSBsYXp5IGxvYWRpbmcuIFRoaXMgaXMganVzdCB0byBhbGxv
dyBzcGVjdWxhdGl2ZSBjb25maWd1cmF0aW9uIG9mIElUUAorICAgICAgICByaWdodCB3aGVuIGl0
J3MgY3JlYXRlZCDigJQgaWYgYW55IGFwcC1ib3VuZCBkb21haW5zIGFyZSBhbHJlYWR5IGNvbmZp
Z3VyZWQsCisgICAgICAgIGZvcndhcmQgdGhlbSB0byBJVFAgdmlhIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLgorCisgICAgICAgIFRoZSBDIEFQSSBjaGFuZ2VzIGFyZSBmb3IgdGVz
dCBwdXJwb3Nlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJv
dW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNob3VsZEV4ZW1w
dEZyb21XZWJzaXRlRGF0YURlbGV0aW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFwcEJvdW5kRG9tYWlucyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91bmRE
b21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjphZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NBZGRBcHBCb3Vu
ZERvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBw
Qm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5kRG9tYWluc0lmSW5p
dGlhbGl6ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWRkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
OgorCiAyMDIwLTA0LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBjaGFuZ2UgYSBXS1dlYlZpZXcncyBDT1JTIGRpc2Fi
bGluZyBwYXR0ZXJuIGFmdGVyIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXgg
YzU4NjY5ZjFjZjJjOWIxYzRiNmU2ZThjNjQ1OWRjYmE5MWFmNThmMy4uYzQ2YWUzODRlZjU3ODc0
ZjMzMGU0ZDQxNmRiNDkyNmIzZWQ4ZjI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMTM0LDYg
KzEzNCw4IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywKICAgICBzd2l0Y2ggKG1fdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSkgewogICAgIGNhc2UgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTo6QWxsOgogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnM6CisgICAgICAg
IHJldHVybiAhc2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pOwogICAgIGNhc2UgVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb246CiAg
ICAgICAgIGlmICghaGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGZpcnN0UGFydHlE
b21haW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDUsNiArMTQ3LDEyIEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29uc3QKK3sKKyAgICBBU1NFUlQo
dG9wRnJhbWVEb21haW4gIT0gcmVzb3VyY2VEb21haW4pOworICAgIHJldHVybiB0b3BGcmFtZURv
bWFpbiA9PSByZXNvdXJjZURvbWFpbiB8fCAobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnModG9w
RnJhbWVEb21haW4pICYmIG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKHJlc291cmNlRG9tYWlu
KSk7Cit9CisKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdl
Q2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2NrQ29va2llcyhy
ZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCkBAIC0yOTIsNiArMzAwLDI3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKFRoaXJkUGFydHlDb29raWVCbG9jCiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gYmxvY2tpbmdNb2RlOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKK3sK
KyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7CisgICAgc2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxF
eGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlc2V0QXBwQm91bmREb21haW5zKCkKK3sKKyAgICBtX2FwcEJvdW5kRG9tYWlucy5j
bGVhcigpOworICAgIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTo6QWxsKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluKQoreworICAgIC8vIE9ubHkgc3VwcG9ydCB0d28gYXBwLWJvdW5kIGRvbWFpbnMgZm9yIHRl
c3RpbmcuCisgICAgaWYgKG1fYXBwQm91bmREb21haW5zLnNpemUoKSA+PSAyKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9hcHBCb3VuZERvbWFpbnMuYWRkKGRvbWFpbik7CisgICAgc2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxF
eGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25z
dAogewogICAgIGlmICghbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyB8fCAhcGFnZUlEIHx8
IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291cmNlLmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IDEzOTFkZWQ0ZDg4ZWRiMjc2MDJmNjljMDZkMmZhMTM4
MGRiODI3ZDQuLjI5NTljODNjNjEyZTg2NWQwZGVhYTMzZjlhNDE4NDFhNTYzMjAxMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaApAQCAtNzcsNyArNzcsNyBAQCBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogZW51bSBj
bGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVz
IDogYm9vbDsKLWVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4
X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5n
VG9QZXJEb21haW5Qb2xpY3kgfTsKK2VudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIEFs
bE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Q
b2xpY3kgfTsKIGVudW0gY2xhc3MgU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgOiBi
b29sIHsgWWVzLCBObyB9OwogZW51bSBjbGFzcyBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBBbGxCdXRDb29raWVzTGl2ZU9u
VGVzdGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3RpbmdUaW1lb3V0IH07CiBlbnVt
IGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC05NSw2ICs5NSw5IEBA
IHB1YmxpYzoKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKKyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGVybWl0UHJvY2Vz
c1RvVXNlQ29va2llQVBJKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHBy
b2Nlc3NNYXlVc2VDb29raWVBUEkoKTsKIApAQCAtMTk2LDYgKzE5OSw5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5z
ZmVyRnJvbVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFp
biwgUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMo
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXNldEFwcEJvdW5kRG9tYWlucygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXBwQm91
bmREb21haW5Gb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTI0MSw3ICsyNDcsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCA9IGZhbHNlOwotICAgIE9wdGlvbmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVD
YXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPikgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNh
cChjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7
CisgICAgYm9vbCBzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9j
a2luZyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJikgY29u
c3Q7CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKICAgICBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb25Bc0ZpcnN0UGFydHk7CkBAIC0yNTMsNiArMjYwLDcgQEAgcHJpdmF0ZToKICAgICBIYXNo
TWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0
ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25h
dmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogICAgIFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CisgICAgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtMjc3LDYgKzI4NSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUs
CiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCwKKyAg
ICAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0
d2VlbkFwcEJvdW5kRG9tYWlucywKICAgICAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sCiAgICAgICAgIFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6Ok9ubHlBY2NvcmRpbmdUb1BlckRv
bWFpblBvbGljeQogICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA0NjI4MDI4NTc5YTRmNDE0NjA4N2I1NjA1YTI3
ZGE2YjViMjdmMmVmLi40OGQyM2YxZDYxMTI3ZmE0NTQ0M2YzMzg4ZmI0NzQzYzE1Mjc1ODkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKQEAgLTI2MTQsNyArMjYxNCw3IEBAIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzCiAgICAg
VmVjdG9yPERvbWFpbkRhdGE+IGRvbWFpbnMgPSB0aGlzLT5kb21haW5zKCk7CiAgICAgVmVjdG9y
PHVuc2lnbmVkPiBkb21haW5JRHNUb0NsZWFyR3JhbmRmYXRoZXJpbmc7CiAgICAgZm9yIChhdXRv
JiBzdGF0aXN0aWMgOiBkb21haW5zKSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWMucmVnaXN0cmFi
bGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAgIGlmIChz
aG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihzdGF0aXN0aWMucmVnaXN0cmFibGVE
b21haW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG9sZGVzdFVzZXJJbnRlcmFj
dGlvbiA9IHN0ZDo6bWluKG9sZGVzdFVzZXJJbnRlcmFjdGlvbiwgc3RhdGlzdGljLm1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFsbFdlYnNp
dGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5k
ZXggNjUwNjc5NzE5NjIyYWYxMmZhZDVjMTYyZjJjZGRjYWFhYjkwZTQ3Ni4uYWY1MDA0MWQyMzdi
NDBjNzZkNWI0ZDFjNzYwODg5NTNhM2FmOGY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTk4MCw3ICs5ODAsNyBAQCBSZWdp
c3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5UwogICAgIGF1dG8gb2xkZXN0VXNlckludGVyYWN0aW9uID0gbm93
OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
IHRvRGVsZXRlT3JSZXN0cmljdEZvcjsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWMucmVn
aXN0cmFibGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAg
IGlmIChzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihzdGF0aXN0aWMucmVnaXN0
cmFibGVEb21haW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG9sZGVzdFVzZXJJ
bnRlcmFjdGlvbiA9IHN0ZDo6bWluKG9sZGVzdFVzZXJJbnRlcmFjdGlvbiwgc3RhdGlzdGljLm1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFs
bFdlYnNpdGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggYWI1
NmE4MDUwODNjN2I4YWIwMTRkMjZmZWFjNzczNGY3ODUyYzA4ZS4uMTUxN2EzNTRiNDJlYzNhZTBl
Mzg0ZmYyYTQ0OWUyMTlmODVmYWFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTMxNCw2ICszMTQsMjEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lz
dHIKICAgICBtX2RlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBkb21haW47CiB9CiAKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQoreworICAgIG1fYXBwQm91bmREb21haW5z
ID0gV1RGTW92ZShkb21haW5zKTsKKyAgICBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
KFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERv
bWFpbnMpOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWRkQXBwQm91
bmREb21haW5Gb3JUZXN0aW5nKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKQoreworICAgIC8v
IE9ubHkgc3VwcG9ydCB0d28gYXBwLWJvdW5kIGRvbWFpbnMgZm9yIHRlc3RpbmcuCisgICAgaWYg
KG1fYXBwQm91bmREb21haW5zLnNpemUoKSA+PSAyKQorICAgICAgICByZXR1cm47CisgICAgbV9h
cHBCb3VuZERvbWFpbnMuYWRkKFdURk1vdmUoZG9tYWluKSk7CisgICAgc2V0VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRC
ZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWZOZWNlc3NhcnkoKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTY1LDYgKzU4MCw4IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9wYXJhbWV0
ZXJzID0geyB9OworICAgIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0geyB9OworICAg
IG1fYXBwQm91bmREb21haW5zLmNsZWFyKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKQEAgLTY0OSw2
ICs2NjYsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRlYnVnTG9nRG9t
YWluc0luQmF0Y2hlcyhjb25zdCBjaGFyKiBhY3Rpb24sIGMKICAgICAgICAgUkVMRUFTRV9MT0df
SU5GTyhJVFBEZWJ1ZywgIiUiIFBVQkxJQ19MT0dfU1RSSU5HICIgdG8gKCV7cHVibGljfWQgb2Yg
JXUpOiAlIiBQVUJMSUNfTE9HX1NUUklORyAiLiIsIGFjdGlvbiwgYmF0Y2hOdW1iZXIsIG51bWJl
ck9mQmF0Y2hlcywgZG9tYWluc1RvU3RyaW5nKGJhdGNoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAor
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNob3VsZEV4ZW1wdEZyb21XZWJzaXRl
RGF0YURlbGV0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGRvbWFpbiA9PSBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB8fCBtX2Fw
cEJvdW5kRG9tYWlucy5jb250YWlucyhkb21haW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5k
ZXggNDQ4MzMzYzQ5ZjYzYjJmMTkyMGI4NmUzMzIwNTg3ZmNlMzViNjkzYi4uNmU4ZTA1YzJjZTBi
YjZhYTM2NjUwMDM4MTYyNTg0ZGI4YzU3ODAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaApAQCAtMTY5LDYgKzE2OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlz
U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID09IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkOjpZZXM7IH07CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBt
b2RlKSB7IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBtb2RlOyB9CiAgICAg
dm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oUmVnaXN0cmFibGVEb21haW4mJiBk
b21haW4pIHsgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBXVEZNb3ZlKGRvbWFpbik7
IH0KKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiYmKTsKKyAgICB2b2lkIGFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhSZWdpc3RyYWJsZURv
bWFpbiYmKTsKKyAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMo
KSBjb25zdCB7IHJldHVybiBtX2FwcEJvdW5kRG9tYWluczsgfQogCiAgICAgdmlydHVhbCBib29s
IGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWlu
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1l
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgPSAwOwpAQCAtMjQ5LDcgKzI1Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29s
IGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTG9nZ2luZ0VuYWJs
ZWQ7IH07CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z01vZGVFbmFibGVkOyB9CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOyB9Ci0gICAgUmVnaXN0cmFibGVEb21h
aW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9zdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW47IH0KKyAgICBib29sIHNob3VsZEV4ZW1wdEZyb21XZWJzaXRl
RGF0YURlbGV0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE51bWJlck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0
VHJhY2VCYWNrIHsgNTAgfTsKICAgICAKQEAgLTI5MSw2ICsyOTQsNyBAQCBwcml2YXRlOgogICAg
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0IHsgU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAg
ICAgUmVnaXN0cmFibGVEb21haW4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAg
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggNjhmNTVjNGM1Y2RkZTc1YzZiNDJhYjIyYWY4NzMxOWVkNjg2NDZi
Mi4uNmQ3ODBkNWM1ZTNiNjQxNDVmNGY0NWFlMDZmMWMzNWI0YjY5YjhiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTY3OCw2ICs2Nzgs
NTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN0YW5kYWxvbmVB
cHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3QKICAgICB9KTsKIH0KIAordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRvbWFpbnMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29w
eShkb21haW5zKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldEFwcEJv
dW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9KTsKKworICAgIGlmIChtX25ldHdv
cmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29y
a1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICAgICAgc3RvcmFnZVNl
c3Npb24tPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZGRBcHBCb3VuZERvbWFpbkZv
clRlc3RpbmcoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRv
bWFpbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0g
bV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgICAgICBz
dG9yYWdlU2Vzc2lvbi0+YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKGRvbWFpbik7CisgICAg
fQorCisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGNyb3NzVGhyZWFkQ29weShkb21haW4p
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5n
KFdURk1vdmUoZG9tYWluKSk7CisgICAgICAgIGF1dG8gdG90YWxBcHBCb3VuZERvbWFpbnMgPSBt
X3N0YXRpc3RpY3NTdG9yZS0+YXBwQm91bmREb21haW5zKCkuc2l6ZSgpOworICAgICAgICBwb3N0
VGFza1JlcGx5KFt0b3RhbEFwcEJvdW5kRG9tYWlucywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHRvdGFsQXBwQm91bmREb21haW5zKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3Jr
UHJvY2VzcygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTEyODAsNiAr
MTMyNSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJh
bWV0ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCisgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisg
ICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+cmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKKyAgICB9
CisKICAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3Jl
KQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVs
dFZhbHVlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CmluZGV4IDEzNTliM2I3ZTc1ZTA5NDUxNDdjOTcyNGE3ZjgwNGZhNTUyYzY3NmUuLjQ4ZmJjYmJk
NmM3NDEzYTQ3YjhkNjljZjY4Y2YxMDU2ZTg0Y2RlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI3OSw2ICsyNzksOCBAQCBzdHJ1Y3QgVGhp
cmRQYXJ0eURhdGEgewogICAgIHZvaWQgc2V0U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQoV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpOwogICAgIHZvaWQg
c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0QXBwQm91bmRE
b21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOworICAgIHZvaWQgYWRkQXBwQm91
bmREb21haW5Gb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKIAogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1By
b2Nlc3NlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCAyNGVhNWFkZDU3YmUyZmZiZTE4N2UzNWUwNDI5NGQ4MWMxYzQyZWUzLi5h
ZmVkZDg5YWY0YzllMDFhMTc1NzdmNWQxMzI1M2QwOTEwZGYyZjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTMwNyw2ICsxMzA3
LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVz
dWx0KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QXBwQm91bmREb21haW5zRm9yUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgYXBwQm91bmREb21haW5zKQoreworICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoYXBwQm91bmREb21haW5zKSk7Cisg
ICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJl
ckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtlbmFibGVkXShh
dXRvJiBuZXR3b3JrU2Vzc2lvbikgewpAQCAtMTM1NSw2ICsxMzYzLDE4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfQogfQorCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKGRvbWFp
biwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKDApOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IDU3OGQ4NjVmZDg1MWE5ZDhmZTMwOWE2NWNkYTMxOTBkNjVjYjFkYzYuLjgwMWZmNzhiZTliMzFm
MzI2YTY2ZmIyYzk0OTVlMGYyODMwMDZkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI2MSwxMiArMjYxLDE0IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBo
YXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CisgICAg
dm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vz
c2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICAgICBib29s
IGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERhdGFiYXNlRW5h
YmxlZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJv
b2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkQXBwQm91bmREb21haW5Gb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICNlbmRpZgogCiAgICAgdXNpbmcg
Q2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDViODEwMmJjYTM5YmU1OTVjNGZkZWNhNDc1ODA5
NDJhMGZkYjQ4Y2MuLmJjMWFiZThkNjE0OGRkNTZmZjU3NThmYzNiZTg1MWQ0NmRmYTMxYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMTQwLDExICsxNDAsMTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0Rl
Y29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMK
ICAgICBEZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29r
aWVzKSAtPiAoKSBBc3luYwogICAgIEhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKGJvb2wgaGFz
SXNvbGF0ZWRTZXNzaW9uKSBBc3luYworICAgIFNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMpCiAgICAgU2V0U2hvdWxkRG93bmdy
YWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICAgICBTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTpi
b29sIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIC0+
ICgpIEFzeW5jCiAgICAgU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9T
YW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIEFkZEFw
cEJvdW5kRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGFwcEJvdW5kRG9tYWluKSAtPiAodWludDY0X3QgdG90YWxBcHBC
b3VuZERvbWFpbnMpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRC
eUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRl
eCA0NmZmYmQ0MzIxNTJiZjllNDhhYzUxMTVjZmY4YWZhNjM3MTYzMDYwLi4zOGYwOGVjYjkzY2Jm
OWNjODkwMmQ4NzdjN2EyZDdjZWQ3OGMwMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTI5LDYgKzEyOSwxMiBAQCBOZXR3b3Jr
U2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2VzcwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQpOworICAgIGlmIChtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MgJiYgIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuYXBwQm91bmREb21haW5zLmlzRW1wdHkoKSkgeworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiBzZXQ7CisgICAgICAgIHNldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zLnNp
emUoKSk7CisgICAgICAgIHNldC5hZGQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuYmVnaW4oKSwgcGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuZW5kKCkpOworICAgICAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKHNldCkp
OworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA5MjdhZWMzYTc0YWQxZWZj
YjU5NDhhMDQzZjgxZmNmMjlmOWJlYjllLi5lMmVmODVkYjE0Y2I2NmZjMjY4MDNiNzcwOTk4NDcz
MGI1YmY5M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENv
b2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW4geyB9OworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
YXBwQm91bmREb21haW5zIHsgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgICAgIGVuY29kZXIgPDwgZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAgICBlbmNvZGVyIDw8IGFwcEJvdW5kRG9tYWluczsK
ICAgICAgICAgZW5jb2RlciA8PCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICB9CiAKQEAg
LTEyNyw2ICsxMjksMTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
IHsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgZGVjb2RlciA+
PiBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgIGlmICghYXBwQm91bmREb21haW5zKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGRlY29k
ZXIgPj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGlmICghbWFudWFsUHJldmFs
ZW50UmVzb3VyY2UpCkBAIC0xNDYsNiArMTUzLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgICAgICAgICAgV1RGTW92ZSgqZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmFwcEJvdW5kRG9tYWlu
cyksCiAgICAgICAgICAgICBXVEZNb3ZlKCptYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAgICAg
ICAgIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGYwZjVhMTQxYWI3ZmVlY2QyYmU2ODJi
Yjg4ODVmZTYyODY1MjcyOWIuLmY1YzdmZTBmZjk0YTJkZTkzMjU4ZGQ4N2VhYmNjMTc1NWM0ODBk
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNjE3LDYgKzYxNywxOSBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Zv
clRlc3RpbgogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0Fk
ZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0TmFtZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0FkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+YWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Fw
cEJvdW5kRG9tYWluRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3ROYW1l
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdICh1aW50NjRfdCB0b3Rh
bEFwcEJvdW5kRG9tYWlucykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b3RhbEFwcEJv
dW5kRG9tYWlucywgY29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShk
YXRhU3RvcmVSZWYpOworICAgIFVOVVNFRF9QQVJBTShob3N0TmFtZSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoMCwgY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IGY5YTM4MjM3
ZmYzODc5ZjcwYzIyOTE4NGI1ZTZlMjdmNjk0ZDRjNDAuLmYwOGQ1ZjZmNDgxYWUwMDkwMTMyNzI4
OGMzZjViOTJjYzdjNjJkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMjksNiArMTI5LDggQEAgdHlwZWRl
ZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHlXZWJzaXRlRGF0YVIKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRl
c3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxl
dGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9u
KSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVz
dGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0
TmFtZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NB
ZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmdGdW5jdGlvbikodWludDY0X3QgdG90YWxBcHBCb3Vu
ZERvbWFpbnMsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzQWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQWRkQXBwQm91bmREb21haW5Gb3JU
ZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCAxNGE0YjljNTRiYjY3YjExOTVkZmU5NGE3OGQ2YzZiNTRmY2JiY2EwLi5iZDgx
MzExZTUyN2JmZTQzZDJiN2E1YWZmZWY1YTRmOTdkY2UyODRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTExMjEsNiArMTEyMSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0lzb2xhdGVk
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZwogICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc0lzb2xhdGVkU2Vzc2lvbihz
ZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mIGFwcEJvdW5kRG9tYWlucykKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpTZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwg
YXBwQm91bmREb21haW5zKSwgMCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0
U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2Vu
ZE1lc3NhZ2UoKSkgewpAQCAtMTE2MCw2ICsxMTY4LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlCiAKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbmcoc2Vzc2lvbklELCBkb21haW4pLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZEFw
cEJvdW5kRG9tYWluRm9yVGVzdGluZyhzZXNzaW9uSUQsIFdURk1vdmUoZG9tYWluKSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2ls
bFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDA4ZGM5ZmQ5ODQ3
NDJjZDFlZGM5NWY5NmU1M2Q5ODMyYmRlZDhiYTYuLjdmOTIwYmQ1ZGI3YTI2NGJkZjgwMWE4ZTg2
ZTg2YzUzNzE4MGIwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNzQsNiArMTc0LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYpOworICAgIHZvaWQgYWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklELCBSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
KT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9v
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMjI0YTVhMjBhZDExY2E1OWMzYjMwNDMzNzYzZDI0
MDEzM2RlYTc1Zi4uMTA3MjNiOGUxMDA4YjY0MjFmMGI4YjcyZjJkM2ZiYTNlYjRlMjMzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjA1LDggKzYw
NSw5IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3Jr
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIFdlYkNvcmU6OlNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVk
ID0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOwogI2VuZGlm
Ci0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9t
YWluIHsgfTsKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CiAgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogICAgIFdFQl9Q
Uk9DRVNTX1BPT0xfQURESVRJT05TXzIKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsK
QEAgLTYyNCw2ICs2MjUsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAg
ICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbiA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAgICBhcHBCb3Vu
ZERvbWFpbnMgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50
UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjUw
LDYgKzY1Miw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVO
ZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjZW5kaWYKICAgICAgICAgICAg
IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlOwogICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlu
cyA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5hcHBCb3VuZERvbWFpbnM7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5tYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQogCkBAIC02ODksNiArNjky
LDggQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQsCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUsCisgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwKKyAgICAgICAg
YXBwQm91bmREb21haW5zLAogICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSwKICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZjM0MjNhOTJhYmFk
OWJmYWEwZjhlZWQ5MjEyYmUwYTJhN2M1ZDQwNC4uMjM1ZjljNmFkNzQyYzY1MThiNjAxMzYyNTJm
YzM3NGNjNmZlODA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAt
NDA1LDE0ICs0MDUsMTQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91
bmREb21haW5zKEZvcmNlUmVpbml0aWFsaXphdGlvbiBmb3JjZVJlaW4KICAgICAKICAgICBzdGF0
aWMgY29uc3QgYXV0byBtYXhBcHBCb3VuZERvbWFpbkNvdW50ID0gMTA7CiAgICAgCi0gICAgYXBw
Qm91bmREb21haW5RdWV1ZSgpLmRpc3BhdGNoKFtpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
ID0gcGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkLCBmb3JjZVJlaW5pdGlhbGl6YXRpb25dICgpIG11dGFibGUgeworICAgIGFw
cEJvdW5kRG9tYWluUXVldWUoKS5kaXNwYXRjaChbdGhpcywgaXNJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCA9IHBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaXNJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zICYmIGZvcmNlUmVpbml0
aWFsaXphdGlvbiAhPSBGb3JjZVJlaW5pdGlhbGl6YXRpb246OlllcykKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIG9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OkAiV0tBcHBC
b3VuZERvbWFpbnMiXTsKICAgICAgICAga2V5RXhpc3RzID0gZG9tYWlucyA/IHRydWUgOiBmYWxz
ZTsKICAgICAgICAgCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbaXNJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uLCBkb21haW5zID0gcmV0
YWluUHRyKGRvbWFpbnMpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhp
cywgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uLCBk
b21haW5zID0gcmV0YWluUHRyKGRvbWFpbnMpXSB7CiAgICAgICAgICAgICBpZiAoZm9yY2VSZWlu
aXRpYWxpemF0aW9uID09IEZvcmNlUmVpbml0aWFsaXphdGlvbjo6WWVzKQogICAgICAgICAgICAg
ICAgIGFwcEJvdW5kRG9tYWlucygpLmNsZWFyKCk7CiAKQEAgLTQzMyw2ICs0MzMsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRp
YWxpemF0aW9uIGZvcmNlUmVpbgogICAgICAgICAgICAgICAgIFdFQlNJVEVfREFUQV9TVE9SRV9B
RERJVElPTlMKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGhhc0luaXRpYWxpemVkQXBwQm91
bmREb21haW5zID0gdHJ1ZTsKKyAgICAgICAgICAgIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC00NDQsNiAr
NDQ1LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2UKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIC8vIEhvcHBpbmcgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkIHRoZW4gYmFjayB0byB0
aGUgbWFpbiB0aHJlYWQKKyAgICAvLyBlbnN1cmVzIHRoYXQgaW5pdGlhbGl6ZUFwcEJvdW5kRG9t
YWlucygpIGhhcyBmaW5pc2hlZC4KICAgICBhcHBCb3VuZERvbWFpblF1ZXVlKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAg
QVNTRVJUKGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zKTsKQEAgLTQ4NCw2ICs0ODcsMTQg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFcKICAgICB9KTsKIH0KIAorT3B0aW9uYWw8SGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IFdlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJv
dW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKSBjb25zdAoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgaWYgKCFoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucykKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYXBwQm91bmREb21haW5zKCk7Cit9
CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKCkK
IHsKICAgICBoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAppbmRleCBiNDQ5NzAyZDA0ODc4YWUxMzJiNGQzNjJjMmMzNzE2NzBjODNkYzI0Li5mOTI4
MjIwNjEyNWM5YjVjNDMzMGY4N2VmOTY4YmViZWNlOTM1YWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApA
QCAtMTkwNiw2ICsxOTA2LDI1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluCiAgICAgICAgICAg
ICBuZXR3b3JrUHJvY2Vzcy0+c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKG1f
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiB9
CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FwcEJv
dW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywgZG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbmV0
d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzLT5hZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcobV9zZXNz
aW9uSUQsIFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigwKTsKKyAgICB9KTsKKworICAgIGlmIChtX3RoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUgIT0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6
QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucykgeworICAgICAgICBtX3RoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zOworICAgICAgICBmb3IgKGF1dG8mIHdl
YlByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHdlYlByb2Nlc3Muc2V0U2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywgW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQor
fQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0yMjE5LDYgKzIyMzgsMTMgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vi
c2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgYXV0byBvcHRpb25hbEFwcEJvdW5kRG9tYWlucyA9IGdldEFwcEJvdW5kRG9tYWluc0lmSW5p
dGlhbGl6ZWQoKTsKKyAgICBpZiAob3B0aW9uYWxBcHBCb3VuZERvbWFpbnMgJiYgbV9hcHBCb3Vu
ZElUUFJlbGF4YXRpb25FbmFibGVkKQorICAgICAgICBhcHBCb3VuZERvbWFpbnMgPSBjb3B5VG9W
ZWN0b3IoKm9wdGlvbmFsQXBwQm91bmREb21haW5zKTsKKyNlbmRpZgogICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSB7IH07CiAKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyA9IHsKQEAgLTIyMzksNiArMjI2NSw4IEBAIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAg
ICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8sCiAjZW5k
aWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCisgICAgICAgIFdU
Rk1vdmUoc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgV1RGTW92ZShhcHBC
b3VuZERvbWFpbnMpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAgICAgfTsKIApAQCAtMjQwNyw0ICsyNDM1LDI5IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6Y2xlYXJBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5z
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKCFtX2FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gYXBwQm91bmREb21haW5zID0gZ2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXpl
ZCgpOworICAgIEFTU0VSVChhcHBCb3VuZERvbWFpbnMpOworICAgIGlmICghYXBwQm91bmREb21h
aW5zKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV90aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlICE9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2Vw
dEJldHdlZW5BcHBCb3VuZERvbWFpbnMpIHsKKyAgICAgICAgbV90aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhj
ZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNz
IDogcHJvY2Vzc2VzKCkpCisgICAgICAgICAgICB3ZWJQcm9jZXNzLnNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIFtdIHsgfSk7CisgICAgfQor
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291
cmNlTG9hZFN0YXRpc3RpY3MobV9zZXNzaW9uSUQsICphcHBCb3VuZERvbWFpbnMpOworICAgIH0K
KyNlbmRpZgorfQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNjFlM2I2OTZiYTBjYzUzZGQw
N2Y4YmRkMjI4ZmRiNjcyY2QxNDBlYy4uZTRkNGI3NTAxZTkxMWYzMTg5MjlkYjQ1ODM4ODM2YWEw
YTU5NzliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjAxLDYgKzIwMSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZUZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29r
aWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSgpIGNvbnN0OworICAgIHZvaWQgYWRkUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0FwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgYm9vbCBpc0l0cFN0YXRlRXhwbGljaXRseVNldCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7IH0KICAgICB2b2lkIHVzZUV4
cGxpY2l0SVRQU3RhdGUoKSB7IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQgPSB0cnVlOyB9CiAj
ZW5kaWYKQEAgLTMyNyw2ICszMjgsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWF5YmVSZWdp
c3RlcldpdGhTZXNzaW9uSURNYXAoKTsKIAorICAgIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkgY29u
c3Q7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICB2b2lkIHNldEFw
cEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyNlbmRpZgorCiAgICAg
Y29uc3QgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uOwpAQCAtMzM5LDYgKzM0
NSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7
IGZhbHNlIH07CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX3N0YXRp
c3RpY3NUZXN0aW5nQ2FsbGJhY2s7CisgICAgbXV0YWJsZSBPcHRpb25hbDxXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7
IC8vIExhemlseSBjb21wdXRlZC4KKyAgICAvLyBSZW1vdmUgaWYgd2UgZGVjaWRlIHRvIGVuYWJs
ZSB0aGlzIGZlYXR1cmUuCisgICAgYm9vbCBtX2FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQg
eyBmYWxzZSB9OwogI2VuZGlmCiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwpAQCAtMzc3
LDkgKzM4Niw2IEBAIHByaXZhdGU6CiAjaWYgSEFWRShBUFBfU1NPKQogICAgIFVuaXF1ZVJlZjxT
T0F1dGhvcml6YXRpb25Db29yZGluYXRvcj4gbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvcjsK
ICNlbmRpZgotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgbXV0YWJs
ZSBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiBtX3RoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGU7IC8vIExhemlseSBjb21wdXRlZC4KLSNlbmRpZgogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGZhNTRiZjQzODllZDBlMDNiY2Q3YzEyOThhNDM5ZWFlOGVmNjFkM2MuLmZiOWFmNmVlZmJlM2Zk
Y2JkYmU4ZjZhNDRmMzkwMGU0NTBiNmQ3YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wNC0zMCAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeGVtcHQgYXBwLWJvdW5k
IGRvbWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gYW5kIHRoaXJkLXBhcnR5
IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3NAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBUZXN0UnVubmVyIGZ1bmN0aW9uCisgICAgICAg
IGFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbigpIHdoaWNoIHJldHVybnMgdGhlIHRvdGFsIG51
bWJlcgorICAgICAgICBvZiBhcHAtYm91bmQgZG9tYWlucyBjb25maWd1cmVkIHNvIHRoYXQgaXQg
Y2FuIGJlIGNoZWNrZWQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OmFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnJlc291cmNlU3RhdGlzdGljc1Vu
c2lnbmVkUmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6YWRk
U3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAyMC0wNC0zMCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gY2hh
bmdlIGEgV0tXZWJWaWV3J3MgQ09SUyBkaXNhYmxpbmcgcGF0dGVybiBhZnRlciBpbml0aWFsaXph
dGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggNWNiZTk1MTYyZWQ3Y2Q3NDcyNzQz
NjAwZmNkM2MyZTRhOWFlODM5NS4uNDc5M2U0OTYyYmQxNmRlMmQ2ZjY4ZGRiYjdjMWRjMzZjNjg4
YTk0MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDgsNiArMzQ4LDcgQEAgaW50
ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBvcHRpb25hbCBi
b29sZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbGVhbiB2YWx1ZSwg
b2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0
Q29va2llcyhET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjYWxsYmFjayk7CisgICAgdW5zaWdu
ZWQgbG9uZyBhZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4oRE9NU3RyaW5nIGhvc3ROYW1lKTsK
ICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKG9iamVjdCBjYWxsYmFjayk7CiAKICAg
ICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1M2QxMWFkNzMz
ZTkxZDhjMTE4NDRhMTAyZjI3NjM1ZDJjZjIwMGEyLi41N2Y3M2UxZmFjZTY4NWIwZTQwM2VlNzE1
YWY1NDgzNmY4OTVjYWUxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIzMzAsNiArMjMzMCwxNiBAQCB2b2lkIFRl
c3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxs
YmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0VG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNDYWxsYmFja0lEKTsKIH0KIAordW5zaWduZWQgVGVzdFJ1bm5lcjo6
YWRkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKEpTU3RyaW5nUmVmIGhvc3ROYW1lKQoreworICAg
IGF1dG8gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJBZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4iKSk7CisgICAgYXV0byBtZXNzYWdlQm9keSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpKTsKKyAgICBXS1R5
cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+
cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksICZyZXR1cm5EYXRh
KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmV0dXJuRGF0YSkgPT0gV0tVSW50NjRHZXRUeXBl
SUQoKSk7CisgICAgcmV0dXJuIFdLVUludDY0R2V0VmFsdWUoYWRvcHRXSyhzdGF0aWNfY2FzdDxX
S1VJbnQ2NFJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpz
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRSZXNldFRv
Q29uc2lzdGVudFN0YXRlQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBm
NWI2MzZlMDE4OWNhNzI0OWY0NjM2NWQ0ZGI2NmZhY2NjNGZhYWIwLi5iZDk2MzQ1MDkwMGY0YmU4
NWY5NzAxZTVhMjQ5MjI0YmQ0ZDFlNzVhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDUyLDYgKzQ1Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJp
Y3RDb29raWVzKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFj
aygpOworICAgIHVuc2lnbmVkIGFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbihKU1N0cmluZ1Jl
ZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShK
U1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlk
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBsb2FkZWRUaGlyZFBh
cnR5RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYzRkNTdlMTg4YjcwNzhkNDkxMDFiZWM5Mzg4YzAwMTIz
NWIwY2Q4NS4uMzMyNDc5YTQzODQ2NWM2ZDg4Njg5ODg1ODg3YTUyYzVhOGY3ZjQwMiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTMzOTEsNiArMzM5MSw3
IEBAIHN0cnVjdCBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgewogICAgIGJvb2wg
ZG9uZSB7IGZhbHNlIH07CiAgICAgYm9vbCByZXN1bHQgeyBmYWxzZSB9OwogICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVwcmVzZW50YXRpb247Cisg
ICAgdWludDY0X3QgdW5zaWduZWRSZXN1bHQ7CiB9OwogICAgIAogc3RhdGljIHZvaWQgcmVzb3Vy
Y2VTdGF0aXN0aWNzU3RyaW5nUmVzdWx0Q2FsbGJhY2soV0tTdHJpbmdSZWYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1JlcHJlc2VudGF0aW9uLCB2b2lkKiB1c2VyRGF0YSkKQEAgLTM0MTYsNiArMzQx
NywxNCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZVN0YXRpc3RpY3NCb29sZWFuUmVzdWx0Q2FsbGJh
Y2soYm9vbCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQogICAgIGNvbnRleHQtPnRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKIH0KIAorc3RhdGljIHZvaWQgcmVzb3VyY2VTdGF0aXN0aWNzVW5z
aWduZWRSZXN1bHRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQorewor
ICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFj
a0NvbnRleHQqPih1c2VyRGF0YSk7CisgICAgY29udGV4dC0+dW5zaWduZWRSZXN1bHQgPSByZXN1
bHQ7CisgICAgY29udGV4dC0+ZG9uZSA9IHRydWU7CisgICAgY29udGV4dC0+dGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhclN0YXRpc3Rp
Y3NEYXRhRm9yRG9tYWluKFdLU3RyaW5nUmVmIGRvbWFpbikKIHsKICAgICBSZXNvdXJjZVN0YXRp
c3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CkBAIC0zNzc3LDYgKzM3ODYsMTQg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29r
aWVzKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNl
dFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKCk7CiB9CiAKK3Vuc2lnbmVkIFRlc3RDb250cm9sbGVy
OjphZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7Cisg
ICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAg
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NBZGRBcHBCb3VuZERvbWFpbkZvclRlc3Rpbmco
d2Vic2l0ZURhdGFTdG9yZSgpLCBob3N0TmFtZSwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGlj
c1Vuc2lnbmVkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9U
aW1lb3V0KTsKKyAgICByZXR1cm4gY29udGV4dC51bnNpZ25lZFJlc3VsdDsKK30KKwogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewogICAg
IFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAzMzdlZjZlM2I0MzBiZTFkNzc3
MjJlYWI3ZmVhOGNiMjFhZWVkMWMxLi42N2M0NGFkNmIyOTIyOTgwMWJmZWRlYzVhNTlmYmFjOGQ4
OTU2ZTVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNjYs
NiArMjY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvU2FtZVNpdGVT
dHJpY3RDb29raWVzKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKKyAgICB1bnNpZ25lZCBhZGRTdGF0
aXN0aWNzQXBwQm91bmREb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwogICAgIHZvaWQgc3Rh
dGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKaW5kZXggN2VhN2QyMDBhYTQ3MGMxMTAyYTgzMDkwYzc4ZTQyZGZiMDk1NDQxZi4uMTYwMDU4
MGUyOWUxNDViZjM1NTM2ZmI0NWQzNjE0OWQ1ZDE0NjI3NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NDAsNiArMTY0MCwxMyBAQCBXS1JldGFpblB0
cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkU3RhdGlzdGljc0Fw
cEJvdW5kRG9tYWluIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5
KSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWUg
PSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LmFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbihob3N0TmFtZSkpKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIkNsZWFyRE9NQ2FjaGUiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOwogICAgICAgICBXS1N0cmlu
Z1JlZiBvcmlnaW4gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGJhYzExNjU0OTQxMGJjZWI4YjUyMDU2ZjVhYzBkMDc0NTYzMDNlMjUuLmY4MTc0MTBkZTNl
ZTQ2ZmRlNThkMzIxNTg0Y2JhMWQzOWZiNDAxMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
MC0wNC0zMCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBF
eGVtcHQgYXBwLWJvdW5kIGRvbWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24g
YW5kIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tp
bmctYmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRv
bWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVs
ZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1l
eGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMv
YXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTMwICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuV2ViQ29udGVudCBwcm9jZXNzIGNy
YXNoZXMgd2hlbiB3ZWIgZGV2ZWxvcGVyIHRvb2xzIGFyZSBvcGVuZWQgaW4gU2FmYXJpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4
ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjllY2ZlZGNjZmYzNjBiOGFlM2E3MzVhNzM2NDgzYjBjZDU2ZTY3MGIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUt
YmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBA
CitUZXN0cyB0aGF0IGFwcC1ib3VuZCBkb21haW5zIGFyZSBleGVtcHQgZnJvbSB0aGlyZC1wYXJ0
eSBjb29raWUgYmxvY2tpbmcgYmV0d2VlbiB0aGVtc2VsdmVzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisgIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUxLS0+JworLS0tLS0tLS0K
K1Nob3VsZCBub3QgcmVjZWl2ZSBjb29raWUuCitEaWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVk
ICdmaXJzdFBhcnR5Q29va2llJy4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ3BhcnRp
dGlvbmVkQ29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZToKKworLS0tLS0tLS0K
K0ZyYW1lOiAnPCEtLWZyYW1lMi0tPicKKy0tLS0tLS0tCitTaG91bGQgcmVjZWl2ZSBjb29raWUu
CitSZWNlaXZlZCBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5vdCByZWNl
aXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUgZG9jdW1l
bnQuY29va2llOiBmaXJzdFBhcnR5Q29va2llPXZhbHVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91
bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwNTMzZmVjMTg0ZjRlMTk2NTdm
NjFlOTViN2Q0Y2VjYWY5NjljOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21h
aW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbApA
QCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFk
PgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAg
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYXBwLWJvdW5kIGRvbWFpbnMgYXJlIGV4ZW1wdCBmcm9t
IHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMuIik7CisgICAg
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBmaXJzdFBhcnR5T3JpZ2luID0gImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHRoaXJkUGFydHlSZXNvdXJjZVVybCA9IHRo
aXJkUGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsKKyAg
ICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2llIjsKKyAgICBj
b25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gIi9zZXQtY29va2llLnBocD9uYW1l
PSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHBh
cnRpdGlvbmVkQ29va2llTmFtZSA9ICJwYXJ0aXRpb25lZENvb2tpZSI7CisgICAgY29uc3Qgc3Vi
UGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUgPSAiL3NldC1jb29raWUucGhwP25hbWU9IiArIHBh
cnRpdGlvbmVkQ29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHJldHVyblVy
bCA9IGZpcnN0UGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vl
bi1lYWNoLW90aGVyLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENvb2tpZXMgPSAiL2dl
dC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAiJm5hbWUyPSIg
KyBwYXJ0aXRpb25lZENvb2tpZU5hbWU7CisgICAgY29uc3QgcmVkaXJlY3RDaGFpblVybCA9IHRo
aXJkUGFydHlSZXNvdXJjZVVybCArICIvcmVkaXJlY3QucGhwP3JlZGlyZWN0VG89IiArIHRoaXJk
UGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXM7CisKKyAgICBmdW5jdGlvbiBv
cGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQuc3JjID0g
dXJsOworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxlbWVudC5v
bmxvYWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAgICAgICBj
YXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1wYXJ0eSBjb29raWUg
Zm9yIGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0g
dGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSArICIj
IiArIHJldHVyblVybCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBj
b29raWUgZG9lc24ndCBnZXQgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBzaW5j
ZSB0aGV5IGFyZSBib3RoIGNvbmZpZ3VyZWQgYXMgYXBwLWJvdW5kIGRvbWFpbnMuCisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7CisgICAgICAgICAgICAg
ICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVz
ICsgIiZtZXNzYWdlPVNob3VsZCBub3QgcmVjZWl2ZSBjb29raWUuIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICgyICE9PSB0ZXN0UnVubmVyLmFkZFN0YXRpc3RpY3NBcHBC
b3VuZERvbWFpbihmaXJzdFBhcnR5T3JpZ2luKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkRpZG4ndCBnZXQgYSB0b3RhbCBvZiB0d28gYXBwLWJvdW5kIGRvbWFpbnMgYWZ0
ZXIgYWRkaW5nIHRoZSBzZWNvbmQuIik7CisgICAgICAgICAgICAgICAgICAgIHJ1blRlc3QoKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgY29va2ll
IGdldHMgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBzaW5jZSB0aGV5IGFyZSBu
b3cgYm90aCBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBkb21haW5zLgorICAgICAgICAgICAgICAg
IGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDQiOworICAgICAgICAgICAgICAgIG9wZW5J
ZnJhbWUodGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVz
c2FnZT1TaG91bGQgcmVjZWl2ZSBjb29raWUuIiwgcnVuVGVzdCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDQiOgorICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoZmFsc2UsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBm
aW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09
ICIiKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgaWYgKDEgIT09IHRlc3RSdW5uZXIuYWRkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWlu
KHRoaXJkUGFydHlPcmlnaW4pKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRpZG4ndCBn
ZXQgYSB0b3RhbCBvZiBvbmUgYXBwLWJvdW5kIGRvbWFpbiBhZnRlciBhZGRpbmcgdGhlIGZpcnN0
LiIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAgICAgICAg
cnVuVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBydW5UZXN0KCk7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAt
Ym91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGU0NWQ3ZjE5
OWEzYzY5YWJjMWVhMTVmMTc5MzI5OWZiNzdkNjVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBw
LWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBk
b2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9u
IGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKworQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQt
c2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhp
c3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
CitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3Jl
IGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgZGVsZXRpb246IEh0dHBP
bmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4
aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
CitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitBZnRlciBk
ZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0
RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRp
b24tZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmViYWYyNzZlZmZkMWFiNTNhNjNiNjYyMzU0
YjVkODE2ZGY3YTRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhl
bXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSwy
NTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0i
L2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj5DaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBh
IHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3Vu
ZC48L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0Pgor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisKKyAgICBjb25z
dCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2Vy
dmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGll
bnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24g
c29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAg
ICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDog
YiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRw
dXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi
KTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVz
c2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVu
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50
ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAg
ICAgICAgIGFkZE91dHB1dCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSAr
ICIgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IE5vIGNvb2tpZXMgZm91bmQuIik7CisgICAg
ICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNv
b2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6Cisg
ICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0
ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiAiICsgKGlzQWZ0
ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhpc3RzLiIpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHNlcnZlclNpZGVD
b29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdl
cy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlv
bjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgor
ICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0Fm
dGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogQ2xpZW50LXNp
ZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9
IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKKyAgICAg
ICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2Vz
KSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgICAgICB9
CisgICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAgICBmdW5j
dGlvbiBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWRE
Qi4iKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVx
dWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbGV0
IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICAg
ICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKworICAgIGxl
dCBpbnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7CisgICAgbGV0
IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsK
KyAgICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNh
bGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENvdW50ZXJJ
REIgPSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlm
ICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBp
cyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBt
YXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lE
QkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxl
dGlvbjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBz
ZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNh
bGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lE
QkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUg
ZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVy
dmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNl
bWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsr
aW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBjaGVja3MgZXhoYXVzdGVkLiIp
OworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVk
REIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRl
cnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlOworICAgIGxl
dCBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUlu
dGVydmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsKKyAgICBjb25z
dCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hlY2tMb2NhbFN0
b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBpbnRlcnZh
bENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxi
YWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAg
ICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50
ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxT
dG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9
PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9y
YWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQg
dmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRy
eSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIp
ICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0
b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRl
cnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJM
b2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFn
ZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2Vz
IG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0
b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlv
bjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8g
ImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRl
V2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUgY29va2llcy4KKyAg
ICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tp
ZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAi
c2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2Vz
L3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNv
b2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0p
OworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7
CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKworICAgICAgICAvLyBXcml0ZSBMb2Nh
bFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwg
bG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxz
ZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAg
ICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
Y2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9j
ZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJz
aXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0
aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVl
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRh
UmVjb3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250
aW51ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAgICAgICBjaGVja0xvY2Fs
U3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBjaGVja0lEQkRh
dGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzKCk7CisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFs
c2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9yaWdp
blVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIGlmICgxICE9PSB0ZXN0UnVubmVyLmFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFp
bihvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRpZG4ndCBn
ZXQgYSB0b3RhbCBvZiBvbmUgYXBwLWJvdW5kIGRvbWFpbiBhZnRlciBhZGRpbmcgdGhlIGZpcnN0
LiIpOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3Qs
IHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIg
ZGlkbid0IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhl
bXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OGU0NWQ3ZjE5OWEzYzY5YWJjMWVhMTVmMTc5MzI5OWZiNzdkNjVmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERv
bWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBk
b2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9u
IGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKworQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQt
c2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhp
c3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
CitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3Jl
IGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgZGVsZXRpb246IEh0dHBP
bmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4
aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
CitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitBZnRlciBk
ZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9h
cHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZDQyZTUxMWY1NjgzYTM2N2UwNmU4ZjE4NTAwNTc5MzU4ZDM4YTkxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRl
c3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVjayB0aGF0IHdlYnNpdGUgZGF0
YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0
aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC48L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91
dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgY29uc3QgaHR0cE9ubHlD
b29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29r
aWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tp
ZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdB
cnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBi
LnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEg
OiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAg
ICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAg
IG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRP
dXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAg
ICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
aGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRD
b29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICBhZGRP
dXRwdXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHNjcmlwdC1h
Y2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICBmb3IgKGxl
dCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkg
eworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAgICAgICAgICAg
ICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24g
PyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiArIChpc0FmdGVyRGVsZXRpb24g
PyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToK
KyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNB
ZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IFJlZ3VsYXIg
c2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAg
ICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9u
ID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBl
eGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRl
c3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAgICAgIGZvciAobGV0
IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAg
ICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVuY3Rpb24gY3JlYXRl
SURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERC
Lm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIuIik7CisgICAg
ICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgICAgICAgICBvYmpT
dG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisKKyAgICBsZXQgaW50ZXJ2YWxD
b3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOworICAgIGxldCBjaGVja0lEQklu
dGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgZnVuY3Rp
b24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgewor
ICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVySURCID0gMDsKKyAg
ICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJE
ZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisg
ICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisK
KyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxz
KSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBl
bnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURC
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFs
KGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRl
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJ
REIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9y
ZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVu
dGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0
SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJD
aGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291
bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGV4aGF1c3RlZC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sg
YWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQor
CisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2Nh
bFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOwor
ICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9y
YWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3Rz
KGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9j
YWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxi
YWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hl
Y2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgewor
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJ
dGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJl
Zm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3Rv
cmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5V
bmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9j
YWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1
ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3Qu
Iik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
ID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiAr
ICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hh
c0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAg
ICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7
CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3Rv
cmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJk
b2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRh
QW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0
IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tp
ZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2lu
IiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVz
LmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsg
Ij0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAg
ZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAg
IGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisg
ICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFn
ZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9u
KCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVh
dGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0
YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRk
TGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVE
YXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRD
b250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5E
YXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAg
IHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7Cisg
ICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlz
dHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlz
dHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShmYWxzZSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3Qg
ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBp
ZiAoMSAhPT0gdGVzdFJ1bm5lci5hZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4ob3JpZ2luVW5k
ZXJUZXN0KSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEaWRuJ3QgZ2V0IGEgdG90YWwg
b2Ygb25lIGFwcC1ib3VuZCBkb21haW4gYWZ0ZXIgYWRkaW5nIHRoZSBmaXJzdC4iKTsKKworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZG4ndCBnZXQg
Y2xhc3NpZmllZCBhcyBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vi
c2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398104</attachid>
            <date>2020-04-30 15:31:05 -0700</date>
            <delta_ts>2020-05-04 20:30:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200430153104.patch</filename>
            <type>text/plain</type>
            <size>90281</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ1MjBmMGE2MGNiMjVm
MmM4NjRmN2M0ZmQxNzQ1NTBkOTc0NTdhOC4uNjQ5NjIzOGIwNzAyZDA5NGZmNWRiNzI0ZGRlODZk
OGE3NTM0YmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA0LTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91
bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFy
dHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIHRvIGFsbG93IGl0IHRvIGV4ZW1wdAorICAgICAgICBhcHAtYm91bmQgZG9tYWlucyBm
cm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KKworICAgICAgICBDYWxscyB0byBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5kRG9tYWlucygpIGFuZAorICAgICAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZygpIGF1dG9tYXRp
Y2FsbHkgc2V0cyB0aGUKKyAgICAgICAgY29va2llIGJsb2NraW5nIHBvbGljeSB0bworICAgICAg
ICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmRE
b21haW5zLgorCisgICAgICAgIENhbGxzIHRvIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRB
cHBCb3VuZERvbWFpbnMoKSBhdXRvbWF0aWNhbGx5IHNldHMgdGhlCisgICAgICAgIGNvb2tpZSBi
bG9ja2luZyBwb2xpY3kgdG8gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIHdoaWNo
IGlzIHRoZQorICAgICAgICBkZWZhdWx0LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVt
cHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2Fw
cC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFz
ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEt
ZGVsZXRpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
aG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERvbWFpbnMpOgorCiAyMDIwLTA0LTMwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuV2ViQ29udGVu
dCBwcm9jZXNzIGNyYXNoZXMgd2hlbiB3ZWIgZGV2ZWxvcGVyIHRvb2xzIGFyZSBvcGVuZWQgaW4g
U2FmYXJpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDk1YzNkYjE3OWZmNzYxNzdiYmY4NWZkMzgzZThhN2YyNGY0Yjc0
MGYuLjFlODFjYjc5NjA5NjE5MmE2ZDNmNzZiOTQyMThkNzI3OWU0ODYyMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzggQEAKKzIwMjAtMDQtMzAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5zIGZyb20gSVRQJ3Mgd2Vi
c2l0ZSBkYXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcgYmV0d2Vl
biB0aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndh
cmRzIGluZm9ybWF0aW9uIGFib3V0IGFwcC1ib3VuZCBkb21haW5zIHRvIElUUCBhbmQgd2ViCisg
ICAgICAgIHByb2Nlc3NlcyBzbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9tIHdlYnNpdGUg
ZGF0YSBkZWxldGlvbiBhbmQKKyAgICAgICAgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJl
dHdlZW4gdGhlbXNlbHZlcy4KKworICAgICAgICBTaW5jZSBhcHAtYm91bmQgZG9tYWlucyBhcmUg
bG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEgYmFja2dyb3VuZAorICAgICAgICB0aHJl
YWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycyBpZgorICAgICAgICB0aGV5J3ZlIGFscmVhZHkgYmVlbiBsb2FkZWQuIFRoZW4gZXZl
cnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUKKyAgICAgICAgdXBkYXRlZCwgdGhleSBhcmUg
Zm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQgSVRQIHdpbGwgaGF2ZSB0aGVtCisg
ICAgICAgIGFzIHNvb24gYXMgcG9zc2libGUuCisKKyAgICAgICAgU2V0dGluZyBhcHAtYm91bmQg
ZG9tYWlucyBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBhdXRvbWF0aWNhbGx5IHN3aXRjaGVzCisg
ICAgICAgIElUUCdzIGNvb2tpZSBibG9ja2luZyBwb2xpY3kgdG8gdGhlIG5ldworICAgICAgICBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBw
Qm91bmREb21haW5zLgorCisgICAgICAgIEEgbmV3IGZ1bmN0aW9uIGlzIGFkZGVkOiBXZWJzaXRl
RGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkKKyAgICAgICAgVGhp
cyBmdW5jdGlvbiBhbGxvd3MgZmV0Y2hpbmcgb2YgYXBwLWJvdW5kIGRvbWFpbnMgd2l0aG91dCB0
cmlnZ2VyaW5nCisgICAgICAgIHRoZSBsYXp5IGxvYWRpbmcuIFRoaXMgaXMganVzdCB0byBhbGxv
dyBzcGVjdWxhdGl2ZSBjb25maWd1cmF0aW9uIG9mIElUUAorICAgICAgICByaWdodCB3aGVuIGl0
J3MgY3JlYXRlZCDigJQgaWYgYW55IGFwcC1ib3VuZCBkb21haW5zIGFyZSBhbHJlYWR5IGNvbmZp
Z3VyZWQsCisgICAgICAgIGZvcndhcmQgdGhlbSB0byBJVFAgdmlhIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLgorCisgICAgICAgIFRoZSBDIEFQSSBjaGFuZ2VzIGFyZSBmb3IgdGVz
dCBwdXJwb3Nlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJv
dW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNob3VsZEV4ZW1w
dEZyb21XZWJzaXRlRGF0YURlbGV0aW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFwcEJvdW5kRG9tYWlucyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91bmRE
b21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjphZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NBZGRBcHBCb3Vu
ZERvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBw
Qm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5kRG9tYWluc0lmSW5p
dGlhbGl6ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWRkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
OgorCiAyMDIwLTA0LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBjaGFuZ2UgYSBXS1dlYlZpZXcncyBDT1JTIGRpc2Fi
bGluZyBwYXR0ZXJuIGFmdGVyIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXgg
YzU4NjY5ZjFjZjJjOWIxYzRiNmU2ZThjNjQ1OWRjYmE5MWFmNThmMy4uNGY5NDY1ZGRmNjhjMmRj
MzYwMmY4MmVlNDM1NTlkOTUyYTk4ZGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMTM0LDYg
KzEzNCw4IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywKICAgICBzd2l0Y2ggKG1fdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSkgewogICAgIGNhc2UgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTo6QWxsOgogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnM6CisgICAgICAg
IHJldHVybiAhc2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pOwogICAgIGNhc2UgVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb246CiAg
ICAgICAgIGlmICghaGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGZpcnN0UGFydHlE
b21haW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDUsNiArMTQ3LDE1IEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29uc3QKK3sKKyAgICBBU1NFUlQo
dG9wRnJhbWVEb21haW4gIT0gcmVzb3VyY2VEb21haW4pOworICAgIGlmICh0b3BGcmFtZURvbWFp
bi5pc0VtcHR5KCkgfHwgcmVzb3VyY2VEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdG9wRnJhbWVEb21haW4gPT0gcmVzb3VyY2VEb21haW4gfHwg
KG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKHRvcEZyYW1lRG9tYWluKSAmJiBtX2FwcEJvdW5k
RG9tYWlucy5jb250YWlucyhyZXNvdXJjZURvbWFpbikpOworfQorCiBPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Om1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAobV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQpKQpAQCAtMjkyLDYgKzMwMywyNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvYwog
ICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IGJsb2NraW5nTW9kZTsKIH0KIAor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpCit7CisgICAgbV9hcHBCb3VuZERvbWFpbnMgPSBX
VEZNb3ZlKGRvbWFpbnMpOworICAgIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlu
cyk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldEFwcEJvdW5kRG9tYWlu
cygpCit7CisgICAgbV9hcHBCb3VuZERvbWFpbnMuY2xlYXIoKTsKKyAgICBzZXRUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCk7Cit9
CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjphZGRBcHBCb3VuZERvbWFpbkZvclRlc3Rp
bmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICAvLyBPbmx5IHN1cHBv
cnQgdHdvIGFwcC1ib3VuZCBkb21haW5zIGZvciB0ZXN0aW5nLgorICAgIGlmIChtX2FwcEJvdW5k
RG9tYWlucy5zaXplKCkgPj0gMikKKyAgICAgICAgcmV0dXJuOworICAgIG1fYXBwQm91bmREb21h
aW5zLmFkZChkb21haW4pOworICAgIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlu
cyk7Cit9CisKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50
U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29uc3QKIHsKICAgICBpZiAoIW1fYWdlQ2FwRm9y
Q2xpZW50U2lkZUNvb2tpZXMgfHwgIXBhZ2VJRCB8fCBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNv
cmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCAx
MzkxZGVkNGQ4OGVkYjI3NjAyZjY5YzA2ZDJmYTEzODBkYjgyN2Q0Li4yOTU5YzgzYzYxMmU4NjVk
MGRlYWEzM2Y5YTQxODQxYTU2MzIwMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTc3LDcgKzc3LDcg
QEAgc3RydWN0IFNhbWVTaXRlSW5mbzsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVDb29raWVzIDogYm9vbDsKIGVu
dW0gY2xhc3MgSW5jbHVkZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7Ci1lbnVtIGNsYXNzIFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgOiB1aW50OF90IHsgQWxsLCBBbGxPblNpdGVzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgT25seUFjY29yZGluZ1RvUGVyRG9tYWluUG9saWN5IH07CitlbnVt
IGNsYXNzIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgOiB1aW50OF90IHsgQWxsLCBBbGxF
eGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zLCBBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFj
dGlvbiwgT25seUFjY29yZGluZ1RvUGVyRG9tYWluUG9saWN5IH07CiBlbnVtIGNsYXNzIFNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIDogYm9vbCB7IFllcywgTm8gfTsKIGVudW0gY2xh
c3MgRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29v
a2llcywgTm9uZSwgQWxsQnV0Q29va2llc0xpdmVPblRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29r
aWVzUmVwcm9UZXN0aW5nVGltZW91dCB9OwogZW51bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29s
IHsgTm8sIFllcyB9OwpAQCAtOTUsNiArOTUsOSBAQCBwdWJsaWM6CiBjbGFzcyBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHVzaW5nIFRvcEZy
YW1lRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgU3ViUmVz
b3VyY2VEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHBlcm1pdFByb2Nlc3NUb1VzZUNvb2tpZUFQSShib29sKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBwcm9jZXNzTWF5VXNlQ29va2llQVBJKCk7CiAK
QEAgLTE5Niw2ICsxOTksOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRD
b21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25G
b3JUZXN0aW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0yNDEsNyArMjQ3LDgg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBPcHRp
b25hbDxTZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIE9wdGlv
bmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgVG9wRnJhbWVEb21haW4mLCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRXhlbXB0RG9t
YWluUGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgVG9wRnJhbWVEb21haW4m
LCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYpIGNvbnN0OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3I7
CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQnV0S2VlcENvb2tpZXNGb3I7CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9y
ZWdpc3RyYWJsZURvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5OwpAQCAtMjUz
LDYgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgUmVnaXN0cmFibGVEb21haW4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVBy
ZXZhbGVudFJlc291cmNlOwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSBmYWxzZTsKICAgICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6
OkFsbCB9OworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fYXBwQm91bmREb21haW5z
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI3Nyw2ICsyODUsNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAogICAgICAgICBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsCiAgICAg
ICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uLAogICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOjpPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kKICAgICA+OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5k
ZXggNDYyODAyODU3OWE0ZjQxNDYwODdiNTYwNWEyN2RhNmI1YjI3ZjJlZi4uNDhkMjNmMWQ2MTEy
N2ZhNDU0NDNmMzM4OGZiNDc0M2MxNTI3NTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNjE0LDcgKzI2MTQsNyBA
QCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhcwogICAgIFZlY3RvcjxEb21haW5EYXRhPiBkb21haW5z
ID0gdGhpcy0+ZG9tYWlucygpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gZG9tYWluSURzVG9DbGVh
ckdyYW5kZmF0aGVyaW5nOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogZG9tYWlucykgewot
ICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRh
RGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2Vy
SW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7CiAg
ICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3Vs
ZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDY1MDY3OTcxOTYyMmFmMTJmYWQ1YzE2
MmYyY2RkY2FhYWI5MGU0NzYuLmFmNTAwNDFkMjM3YjQwYzc2ZDViNGQxYzc2MDg4OTUzYTNhZjhm
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuY3BwCkBAIC05ODAsNyArOTgwLDcgQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVMKICAgICBh
dXRvIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IG5vdzsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNU
b0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZU9yUmVzdHJpY3RGb3I7CiAg
ICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMo
KSkgewotICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNp
dGVEYXRhRGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRl
c3RVc2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZSk7CiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMs
IHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGFiNTZhODA1MDgzYzdiOGFiMDE0ZDI2ZmVhYzc3
MzRmNzg1MmMwOGUuLmQxZmFlNjY2MjkxNDA3NDYwZDlkY2NmMzAyOTJhZWU2N2Q4NmUzMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMTQsNiAr
MzE0LDIxIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyCiAgICAgbV9kZWJ1Z01hbnVhbFByZXZh
bGVudFJlc291cmNlID0gZG9tYWluOwogfQogCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9t
YWlucykKK3sKKyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7CisgICAg
c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKK30KKwordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbikKK3sKKyAgICAvLyBPbmx5IHN1cHBvcnQgdHdvIGFwcC1ib3Vu
ZCBkb21haW5zIGZvciB0ZXN0aW5nLgorICAgIGlmIChtX2FwcEJvdW5kRG9tYWlucy5zaXplKCkg
Pj0gMikKKyAgICAgICAgcmV0dXJuOworICAgIG1fYXBwQm91bmREb21haW5zLmFkZChXVEZNb3Zl
KGRvbWFpbikpOworICAgIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucyk7Cit9
CisKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZVN0YXRpc3RpY3NQ
cm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKQEAgLTU2NSw2ICs1ODAsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCkKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAogICAgIG1fcGFyYW1ldGVycyA9IHsgfTsKKyAgICBtX3N0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbiA9IHsgfTsKKyAgICBtX2FwcEJvdW5kRG9tYWlucy5jbGVhcigp
OwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVzdGluZ0V2ZW50
KGNvbnN0IFN0cmluZyYgZXZlbnQpCkBAIC02NDksNiArNjY2LDExIEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xvZ0RvbWFpbnNJbkJhdGNoZXMoY29uc3QgY2hhciog
YWN0aW9uLCBjCiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICIlIiBQVUJMSUNf
TE9HX1NUUklORyAiIHRvICgle3B1YmxpY31kIG9mICV1KTogJSIgUFVCTElDX0xPR19TVFJJTkcg
Ii4iLCBhY3Rpb24sIGJhdGNoTnVtYmVyLCBudW1iZXJPZkJhdGNoZXMsIGRvbWFpbnNUb1N0cmlu
ZyhiYXRjaCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAoreworICAgIHJldHVybiAhZG9tYWluLmlzRW1wdHko
KSAmJiAoZG9tYWluID09IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHx8IG1fYXBwQm91
bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXgg
NDQ4MzMzYzQ5ZjYzYjJmMTkyMGI4NmUzMzIwNTg3ZmNlMzViNjkzYi4uNmU4ZTA1YzJjZTBiYjZh
YTM2NjUwMDM4MTYyNTg0ZGI4YzU3ODAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaApAQCAtMTY5LDYgKzE2OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID09IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkOjpZZXM7IH07CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtb2Rl
KSB7IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBtb2RlOyB9CiAgICAgdm9p
ZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oUmVnaXN0cmFibGVEb21haW4mJiBkb21h
aW4pIHsgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBXVEZNb3ZlKGRvbWFpbik7IH0K
KyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYm
KTsKKyAgICB2b2lkIGFkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZyhSZWdpc3RyYWJsZURvbWFp
biYmKTsKKyAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMoKSBj
b25zdCB7IHJldHVybiBtX2FwcEJvdW5kRG9tYWluczsgfQogCiAgICAgdmlydHVhbCBib29sIGFy
ZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWluJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgPSAwOwpAQCAtMjQ5LDcgKzI1Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGRl
YnVnTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQ7
IH07CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01v
ZGVFbmFibGVkOyB9CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Zp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOyB9Ci0gICAgUmVnaXN0cmFibGVEb21haW4g
c3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9zdGFuZGFsb25l
QXBwbGljYXRpb25Eb21haW47IH0KKyAgICBib29sIHNob3VsZEV4ZW1wdEZyb21XZWJzaXRlRGF0
YURlbGV0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1heE51bWJlck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJh
Y2VCYWNrIHsgNTAgfTsKICAgICAKQEAgLTI5MSw2ICsyOTQsNyBAQCBwcml2YXRlOgogICAgIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0IHsgU2hvdWxkSW5j
bHVkZUxvY2FsaG9zdDo6WWVzIH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAgICAg
UmVnaXN0cmFibGVEb21haW4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKaW5kZXggNjhmNTVjNGM1Y2RkZTc1YzZiNDJhYjIyYWY4NzMxOWVkNjg2NDZiMi4u
NmQ3ODBkNWM1ZTNiNjQxNDVmNGY0NWFlMDZmMWMzNWI0YjY5YjhiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTY3OCw2ICs2NzgsNTEg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3QKICAgICB9KTsKIH0KIAordm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYmIGRvbWFpbnMpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRvbWFpbnMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShk
b21haW5zKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldEFwcEJvdW5k
RG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9KTsKKworICAgIGlmIChtX25ldHdvcmtT
ZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nl
c3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICAgICAgc3RvcmFnZVNlc3Np
b24tPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZGRBcHBCb3VuZERvbWFpbkZvclRl
c3RpbmcoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRvbWFp
bi5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1f
bmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9u
ZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgICAgICBzdG9y
YWdlU2Vzc2lvbi0+YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKGRvbWFpbik7CisgICAgfQor
CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGNyb3NzVGhyZWFkQ29weShkb21haW4pLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFdU
Rk1vdmUoZG9tYWluKSk7CisgICAgICAgIGF1dG8gdG90YWxBcHBCb3VuZERvbWFpbnMgPSBtX3N0
YXRpc3RpY3NTdG9yZS0+YXBwQm91bmREb21haW5zKCkuc2l6ZSgpOworICAgICAgICBwb3N0VGFz
a1JlcGx5KFt0b3RhbEFwcEJvdW5kRG9tYWlucywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHRvdGFsQXBwQm91bmREb21haW5zKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJv
Y2VzcygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTEyODAsNiArMTMy
NSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJhbWV0
ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VT
ZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisgICAg
ICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+cmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKKyAgICB9CisK
ICAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQog
ICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZh
bHVlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmlu
ZGV4IDEzNTliM2I3ZTc1ZTA5NDUxNDdjOTcyNGE3ZjgwNGZhNTUyYzY3NmUuLjQ4ZmJjYmJkNmM3
NDEzYTQ3YjhkNjljZjY4Y2YxMDU2ZTg0Y2RlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI3OSw2ICsyNzksOCBAQCBzdHJ1Y3QgVGhpcmRQ
YXJ0eURhdGEgewogICAgIHZvaWQgc2V0U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQo
V2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpOwogICAgIHZvaWQgc2V0
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0QXBwQm91bmREb21h
aW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOworICAgIHZvaWQgYWRkQXBwQm91bmRE
b21haW5Gb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29y
a1Byb2Nlc3MoKTsKIAogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nl
c3NlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCAyNGVhNWFkZDU3YmUyZmZiZTE4N2UzNWUwNDI5NGQ4MWMxYzQyZWUzLi5hZmVk
ZDg5YWY0YzllMDFhMTc1NzdmNWQxMzI1M2QwOTEwZGYyZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTMwNyw2ICsxMzA3LDE0
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0
KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+JiYgYXBwQm91bmREb21haW5zKQoreworICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoYXBwQm91bmREb21haW5zKSk7CisgICAg
fQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZv
clRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtlbmFibGVkXShhdXRv
JiBuZXR3b3JrU2Vzc2lvbikgewpAQCAtMTM1NSw2ICsxMzYzLDE4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfQogfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjphZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKGRvbWFpbiwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKDApOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDU3
OGQ4NjVmZDg1MWE5ZDhmZTMwOWE2NWNkYTMxOTBkNjVjYjFkYzYuLjgwMWZmNzhiZTliMzFmMzI2
YTY2ZmIyYzk0OTVlMGYyODMwMDZkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI2MSwxMiArMjYxLDE0IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBoYXNJ
c29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CisgICAgdm9p
ZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lv
bklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICAgICBib29sIGlz
SVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERhdGFiYXNlRW5hYmxl
ZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2ws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICNlbmRpZgogCiAgICAgdXNpbmcgQ2Fj
aGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDViODEwMmJjYTM5YmU1OTVjNGZkZWNhNDc1ODA5NDJh
MGZkYjQ4Y2MuLmJjMWFiZThkNjE0OGRkNTZmZjU3NThmYzNiZTg1MWQ0NmRmYTMxYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMTQwLDExICsxNDAsMTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAg
ICBEZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVz
KSAtPiAoKSBBc3luYwogICAgIEhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKGJvb2wgaGFzSXNv
bGF0ZWRTZXNzaW9uKSBBc3luYworICAgIFNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMpCiAgICAgU2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJs
b2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICAgICBTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTpib29s
IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIC0+ICgp
IEFzeW5jCiAgICAgU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIEFkZEFwcEJv
dW5kRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGFwcEJvdW5kRG9tYWluKSAtPiAodWludDY0X3QgdG90YWxBcHBCb3Vu
ZERvbWFpbnMpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1
dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA0
NmZmYmQ0MzIxNTJiZjllNDhhYzUxMTVjZmY4YWZhNjM3MTYzMDYwLi4zOGYwOGVjYjkzY2JmOWNj
ODkwMmQ4NzdjN2EyZDdjZWQ3OGMwMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTI5LDYgKzEyOSwxMiBAQCBOZXR3b3JrU2Vz
c2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25z
dCBOZXR3b3JrU2VzcwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQpOworICAgIGlmIChtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MgJiYgIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
YXBwQm91bmREb21haW5zLmlzRW1wdHkoKSkgeworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiBzZXQ7CisgICAgICAgIHNldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zLnNpemUo
KSk7CisgICAgICAgIHNldC5hZGQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5hcHBCb3VuZERvbWFpbnMuYmVnaW4oKSwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuZW5kKCkpOworICAgICAgICBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKHNldCkpOwor
ICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA5MjdhZWMzYTc0YWQxZWZjYjU5
NDhhMDQzZjgxZmNmMjlmOWJlYjllLi5lMmVmODVkYjE0Y2I2NmZjMjY4MDNiNzcwOTk4NDczMGI1
YmY5M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
IHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tp
ZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4geyB9OworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBw
Qm91bmREb21haW5zIHsgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtYW51YWxQ
cmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdApAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhbmRhbG9uZUFw
cGxpY2F0aW9uRG9tYWluOworICAgICAgICBlbmNvZGVyIDw8IGFwcEJvdW5kRG9tYWluczsKICAg
ICAgICAgZW5jb2RlciA8PCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICB9CiAKQEAgLTEy
Nyw2ICsxMjksMTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsK
ICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgZGVjb2RlciA+PiBh
cHBCb3VuZERvbWFpbnM7CisgICAgICAgIGlmICghYXBwQm91bmREb21haW5zKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGRlY29kZXIg
Pj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGlmICghbWFudWFsUHJldmFsZW50
UmVzb3VyY2UpCkBAIC0xNDYsNiArMTUzLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgICAgICAgICAgV1RGTW92ZSgqZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3RhbmRhbG9uZUFw
cGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmFwcEJvdW5kRG9tYWlucyks
CiAgICAgICAgICAgICBXVEZNb3ZlKCptYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAgICAgICAg
IH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGYwZjVhMTQxYWI3ZmVlY2QyYmU2ODJiYjg4
ODVmZTYyODY1MjcyOWIuLmY1YzdmZTBmZjk0YTJkZTkzMjU4ZGQ4N2VhYmNjMTc1NWM0ODBkYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmNwcApAQCAtNjE3LDYgKzYxNywxOSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRl
c3RpbgogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0FkZEFw
cEJvdW5kRG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0TmFtZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0FkZEFwcEJvdW5kRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25I
YW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+YWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FwcEJv
dW5kRG9tYWluRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3ROYW1lKS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdICh1aW50NjRfdCB0b3RhbEFw
cEJvdW5kRG9tYWlucykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b3RhbEFwcEJvdW5k
RG9tYWlucywgY29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkYXRh
U3RvcmVSZWYpOworICAgIFVOVVNFRF9QQVJBTShob3N0TmFtZSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoMCwgY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IGY5YTM4MjM3ZmYz
ODc5ZjcwYzIyOTE4NGI1ZTZlMjdmNjk0ZDRjNDAuLmYwOGQ1ZjZmNDgxYWUwMDkwMTMyNzI4OGMz
ZjViOTJjYzdjNjJkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMjksNiArMTI5LDggQEAgdHlwZWRlZiB2
b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVIKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3Rp
bmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlv
bkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uKSh2
b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGlu
ZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0TmFt
ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25I
YW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NBZGRB
cHBCb3VuZERvbWFpbkZvclRlc3RpbmdGdW5jdGlvbikodWludDY0X3QgdG90YWxBcHBCb3VuZERv
bWFpbnMsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQWRkQXBwQm91bmREb21haW5Gb3JUZXN0
aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRv
Q29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCAxNGE0YjljNTRiYjY3YjExOTVkZmU5NGE3OGQ2YzZiNTRmY2JiY2EwLi5iZDgxMzEx
ZTUyN2JmZTQzZDJiN2E1YWZmZWY1YTRmOTdkY2UyODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEx
MjEsNiArMTEyMSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0lzb2xhdGVkU2Vz
c2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZwogICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc0lzb2xhdGVkU2Vzc2lvbihzZXNz
aW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mIGFwcEJvdW5kRG9tYWlucykKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBw
Qm91bmREb21haW5zKSwgMCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1l
c3NhZ2UoKSkgewpAQCAtMTE2MCw2ICsxMTY4LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
CiAKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRU
b1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbmcoc2Vzc2lvbklELCBkb21haW4pLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
YWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVn
aXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZEFwcEJv
dW5kRG9tYWluRm9yVGVzdGluZyhzZXNzaW9uSUQsIFdURk1vdmUoZG9tYWluKSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDA4ZGM5ZmQ5ODQ3NDJj
ZDFlZGM5NWY5NmU1M2Q5ODMyYmRlZDhiYTYuLjdmOTIwYmQ1ZGI3YTI2NGJkZjgwMWE4ZTg2ZTg2
YzUzNzE4MGIwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNzQsNiArMTc0LDggQEAgcHVibGljOgogICAg
IHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0Zv
clJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiYpOworICAgIHZvaWQgYWRkQXBwQm91bmREb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
LCBSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4m
Jik7CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMjI0YTVhMjBhZDExY2E1OWMzYjMwNDMzNzYzZDI0MDEz
M2RlYTc1Zi4uMTA3MjNiOGUxMDA4YjY0MjFmMGI4YjcyZjJkM2ZiYTNlYjRlMjMzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjA1LDggKzYwNSw5
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJv
Y2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0g
V2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOwogI2VuZGlmCi0g
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWlu
IHsgfTsKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CiAgICAgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogICAgIFdFQl9QUk9D
RVNTX1BPT0xfQURESVRJT05TXzIKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsKQEAg
LTYyNCw2ICs2MjUsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAgICAg
ICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
biA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAgICBhcHBCb3VuZERv
bWFpbnMgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuYXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVz
b3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjUwLDYg
KzY1Miw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3
b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjZW5kaWYKICAgICAgICAgICAgIGZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlOwogICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9
IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5hcHBCb3VuZERvbWFpbnM7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9
IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5tYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQogCkBAIC02ODksNiArNjkyLDgg
QEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEVuYWJsZWQsCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUsCisgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwKKyAgICAgICAgYXBw
Qm91bmREb21haW5zLAogICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSwKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZjM0MjNhOTJhYmFkOWJm
YWEwZjhlZWQ5MjEyYmUwYTJhN2M1ZDQwNC4uMjM1ZjljNmFkNzQyYzY1MThiNjAxMzYyNTJmYzM3
NGNjNmZlODA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNDA1
LDE0ICs0MDUsMTQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmRE
b21haW5zKEZvcmNlUmVpbml0aWFsaXphdGlvbiBmb3JjZVJlaW4KICAgICAKICAgICBzdGF0aWMg
Y29uc3QgYXV0byBtYXhBcHBCb3VuZERvbWFpbkNvdW50ID0gMTA7CiAgICAgCi0gICAgYXBwQm91
bmREb21haW5RdWV1ZSgpLmRpc3BhdGNoKFtpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkID0g
cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkLCBmb3JjZVJlaW5pdGlhbGl6YXRpb25dICgpIG11dGFibGUgeworICAgIGFwcEJv
dW5kRG9tYWluUXVldWUoKS5kaXNwYXRjaChbdGhpcywgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCA9IHBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaXNJbkFwcEJyb3dz
ZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zICYmIGZvcmNlUmVpbml0aWFs
aXphdGlvbiAhPSBGb3JjZVJlaW5pdGlhbGl6YXRpb246OlllcykKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIG9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OkAiV0tBcHBCb3Vu
ZERvbWFpbnMiXTsKICAgICAgICAga2V5RXhpc3RzID0gZG9tYWlucyA/IHRydWUgOiBmYWxzZTsK
ICAgICAgICAgCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbaXNJbkFwcEJyb3dz
ZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uLCBkb21haW5zID0gcmV0YWlu
UHRyKGRvbWFpbnMpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
aXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWluaXRpYWxpemF0aW9uLCBkb21h
aW5zID0gcmV0YWluUHRyKGRvbWFpbnMpXSB7CiAgICAgICAgICAgICBpZiAoZm9yY2VSZWluaXRp
YWxpemF0aW9uID09IEZvcmNlUmVpbml0aWFsaXphdGlvbjo6WWVzKQogICAgICAgICAgICAgICAg
IGFwcEJvdW5kRG9tYWlucygpLmNsZWFyKCk7CiAKQEAgLTQzMyw2ICs0MzMsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxp
emF0aW9uIGZvcmNlUmVpbgogICAgICAgICAgICAgICAgIFdFQlNJVEVfREFUQV9TVE9SRV9BRERJ
VElPTlMKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmRE
b21haW5zID0gdHJ1ZTsKKyAgICAgICAgICAgIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC00NDQsNiArNDQ1
LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIC8vIEhvcHBpbmcgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkIHRoZW4gYmFjayB0byB0aGUg
bWFpbiB0aHJlYWQKKyAgICAvLyBlbnN1cmVzIHRoYXQgaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlu
cygpIGhhcyBmaW5pc2hlZC4KICAgICBhcHBCb3VuZERvbWFpblF1ZXVlKCkuZGlzcGF0Y2goW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
ewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgQVNT
RVJUKGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zKTsKQEAgLTQ4NCw2ICs0ODcsMTQgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoU2V0PFcKICAgICB9KTsKIH0KIAorT3B0aW9uYWw8SGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IFdlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5k
RG9tYWluc0lmSW5pdGlhbGl6ZWQoKSBjb25zdAoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgaWYgKCFoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYXBwQm91bmREb21haW5zKCk7Cit9CisK
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKCkKIHsK
ICAgICBoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAppbmRleCBiNDQ5NzAyZDA0ODc4YWUxMzJiNGQzNjJjMmMzNzE2NzBjODNkYzI0Li5mOTI4MjIw
NjEyNWM5YjVjNDMzMGY4N2VmOTY4YmViZWNlOTM1YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAt
MTkwNiw2ICsxOTA2LDI1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluCiAgICAgICAgICAgICBu
ZXR3b3JrUHJvY2Vzcy0+c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKG1fc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiB9CisK
K3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FwcEJvdW5k
RG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywgZG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbmV0d29y
a1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzLT5hZGRBcHBCb3VuZERvbWFpbkZvclRlc3RpbmcobV9zZXNzaW9u
SUQsIFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigwKTsKKyAgICB9KTsKKworICAgIGlmIChtX3RoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgIT0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxs
RXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucykgeworICAgICAgICBtX3RoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpB
bGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zOworICAgICAgICBmb3IgKGF1dG8mIHdlYlBy
b2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHdlYlByb2Nlc3Muc2V0U2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQog
I2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25k
cyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC0yMjE5LDYgKzIyMzgsMTMgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0
ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0
SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
YXV0byBvcHRpb25hbEFwcEJvdW5kRG9tYWlucyA9IGdldEFwcEJvdW5kRG9tYWluc0lmSW5pdGlh
bGl6ZWQoKTsKKyAgICBpZiAob3B0aW9uYWxBcHBCb3VuZERvbWFpbnMgJiYgbV9hcHBCb3VuZElU
UFJlbGF4YXRpb25FbmFibGVkKQorICAgICAgICBhcHBCb3VuZERvbWFpbnMgPSBjb3B5VG9WZWN0
b3IoKm9wdGlvbmFsQXBwQm91bmREb21haW5zKTsKKyNlbmRpZgogICAgIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSB7IH07CiAKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycyA9IHsKQEAgLTIyMzksNiArMjI2NSw4IEBAIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAg
ICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8sCiAjZW5kaWYK
ICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCisgICAgICAgIFdURk1v
dmUoc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgV1RGTW92ZShhcHBCb3Vu
ZERvbWFpbnMpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQ
cmV2YWxlbnRSZXNvdXJjZSksCiAgICAgfTsKIApAQCAtMjQwNyw0ICsyNDM1LDI5IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6Y2xlYXJBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYg
KCFtX2FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gYXBwQm91bmREb21haW5zID0gZ2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgp
OworICAgIEFTU0VSVChhcHBCb3VuZERvbWFpbnMpOworICAgIGlmICghYXBwQm91bmREb21haW5z
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlICE9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJl
dHdlZW5BcHBCb3VuZERvbWFpbnMpIHsKKyAgICAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0
QmV0d2VlbkFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzIDog
cHJvY2Vzc2VzKCkpCisgICAgICAgICAgICB3ZWJQcm9jZXNzLnNldFNob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIFtdIHsgfSk7CisgICAgfQorCisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlm
IChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQor
ICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MobV9zZXNzaW9uSUQsICphcHBCb3VuZERvbWFpbnMpOworICAgIH0KKyNl
bmRpZgorfQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNjFlM2I2OTZiYTBjYzUzZGQwN2Y4
YmRkMjI4ZmRiNjcyY2QxNDBlYy4uZTRkNGI3NTAxZTkxMWYzMTg5MjlkYjQ1ODM4ODM2YWEwYTU5
NzliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjAxLDYgKzIwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZUZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVz
Rm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSgpIGNvbnN0OworICAgIHZvaWQgYWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Fw
cEJvdW5kRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90KT4mJik7CiAgICAgYm9vbCBpc0l0cFN0YXRlRXhwbGljaXRseVNldCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7IH0KICAgICB2b2lkIHVzZUV4cGxp
Y2l0SVRQU3RhdGUoKSB7IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQgPSB0cnVlOyB9CiAjZW5k
aWYKQEAgLTMyNyw2ICszMjgsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWF5YmVSZWdpc3Rl
cldpdGhTZXNzaW9uSURNYXAoKTsKIAorICAgIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkgY29uc3Q7
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICB2b2lkIHNldEFwcEJv
dW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyNlbmRpZgorCiAgICAgY29u
c3QgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24+IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uOwpAQCAtMzM5LDYgKzM0NSw5
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZh
bHNlIH07CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX3N0YXRpc3Rp
Y3NUZXN0aW5nQ2FsbGJhY2s7CisgICAgbXV0YWJsZSBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlPiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7IC8v
IExhemlseSBjb21wdXRlZC4KKyAgICAvLyBSZW1vdmUgaWYgd2UgZGVjaWRlIHRvIGVuYWJsZSB0
aGlzIGZlYXR1cmUuCisgICAgYm9vbCBtX2FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQgeyBm
YWxzZSB9OwogI2VuZGlmCiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwpAQCAtMzc3LDkg
KzM4Niw2IEBAIHByaXZhdGU6CiAjaWYgSEFWRShBUFBfU1NPKQogICAgIFVuaXF1ZVJlZjxTT0F1
dGhvcml6YXRpb25Db29yZGluYXRvcj4gbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvcjsKICNl
bmRpZgotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgbXV0YWJsZSBP
cHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiBtX3RoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU7IC8vIExhemlseSBjb21wdXRlZC4KLSNlbmRpZgogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZh
NTRiZjQzODllZDBlMDNiY2Q3YzEyOThhNDM5ZWFlOGVmNjFkM2MuLmZiOWFmNmVlZmJlM2ZkY2Jk
YmU4ZjZhNDRmMzkwMGU0NTBiNmQ3YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wNC0zMCAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeGVtcHQgYXBwLWJvdW5kIGRv
bWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gYW5kIHRoaXJkLXBhcnR5IGNv
b2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBUZXN0UnVubmVyIGZ1bmN0aW9uCisgICAgICAgIGFk
ZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbigpIHdoaWNoIHJldHVybnMgdGhlIHRvdGFsIG51bWJl
cgorICAgICAgICBvZiBhcHAtYm91bmQgZG9tYWlucyBjb25maWd1cmVkIHNvIHRoYXQgaXQgY2Fu
IGJlIGNoZWNrZWQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmFk
ZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnJlc291cmNlU3RhdGlzdGljc1Vuc2ln
bmVkUmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6YWRkU3Rh
dGlzdGljc0FwcEJvdW5kRG9tYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAyMC0wNC0zMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gY2hhbmdl
IGEgV0tXZWJWaWV3J3MgQ09SUyBkaXNhYmxpbmcgcGF0dGVybiBhZnRlciBpbml0aWFsaXphdGlv
bgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggNWNiZTk1MTYyZWQ3Y2Q3NDcyNzQzNjAw
ZmNkM2MyZTRhOWFlODM5NS4uNDc5M2U0OTYyYmQxNmRlMmQ2ZjY4ZGRiYjdjMWRjMzZjNjg4YTk0
MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDgsNiArMzQ4LDcgQEAgaW50ZXJm
YWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBvcHRpb25hbCBib29s
ZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbGVhbiB2YWx1ZSwgb2Jq
ZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29v
a2llcyhET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjYWxsYmFjayk7CisgICAgdW5zaWduZWQg
bG9uZyBhZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4oRE9NU3RyaW5nIGhvc3ROYW1lKTsKICAg
ICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKG9iamVjdCBjYWxsYmFjayk7CiAKICAgICAv
LyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1M2QxMWFkNzMzZTkx
ZDhjMTE4NDRhMTAyZjI3NjM1ZDJjZjIwMGEyLi41N2Y3M2UxZmFjZTY4NWIwZTQwM2VlNzE1YWY1
NDgzNmY4OTVjYWUxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIzMzAsNiArMjMzMCwxNiBAQCB2b2lkIFRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFj
aygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0VG9TYW1lU2l0
ZVN0cmljdENvb2tpZXNDYWxsYmFja0lEKTsKIH0KIAordW5zaWduZWQgVGVzdFJ1bm5lcjo6YWRk
U3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKEpTU3RyaW5nUmVmIGhvc3ROYW1lKQoreworICAgIGF1
dG8gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJB
ZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4iKSk7CisgICAgYXV0byBtZXNzYWdlQm9keSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpKTsKKyAgICBXS1R5cGVS
ZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFn
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksICZyZXR1cm5EYXRhKTsK
KyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmV0dXJuRGF0YSkgPT0gV0tVSW50NjRHZXRUeXBlSUQo
KSk7CisgICAgcmV0dXJuIFdLVUludDY0R2V0VmFsdWUoYWRvcHRXSyhzdGF0aWNfY2FzdDxXS1VJ
bnQ2NFJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRSZXNldFRvQ29u
c2lzdGVudFN0YXRlQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBmNWI2
MzZlMDE4OWNhNzI0OWY0NjM2NWQ0ZGI2NmZhY2NjNGZhYWIwLi5iZDk2MzQ1MDkwMGY0YmU4NWY5
NzAxZTVhMjQ5MjI0YmQ0ZDFlNzVhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDUyLDYgKzQ1Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJpY3RD
b29raWVzKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2
b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFjaygp
OworICAgIHVuc2lnbmVkIGFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbihKU1N0cmluZ1JlZiBo
b3N0TmFtZSk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1Zh
bHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBsb2FkZWRUaGlyZFBhcnR5
RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggYzRkNTdlMTg4YjcwNzhkNDkxMDFiZWM5Mzg4YzAwMTIzNWIw
Y2Q4NS4uMzMyNDc5YTQzODQ2NWM2ZDg4Njg5ODg1ODg3YTUyYzVhOGY3ZjQwMiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTMzOTEsNiArMzM5MSw3IEBA
IHN0cnVjdCBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgewogICAgIGJvb2wgZG9u
ZSB7IGZhbHNlIH07CiAgICAgYm9vbCByZXN1bHQgeyBmYWxzZSB9OwogICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVwcmVzZW50YXRpb247CisgICAg
dWludDY0X3QgdW5zaWduZWRSZXN1bHQ7CiB9OwogICAgIAogc3RhdGljIHZvaWQgcmVzb3VyY2VT
dGF0aXN0aWNzU3RyaW5nUmVzdWx0Q2FsbGJhY2soV0tTdHJpbmdSZWYgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1JlcHJlc2VudGF0aW9uLCB2b2lkKiB1c2VyRGF0YSkKQEAgLTM0MTYsNiArMzQxNywx
NCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZVN0YXRpc3RpY3NCb29sZWFuUmVzdWx0Q2FsbGJhY2so
Ym9vbCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQogICAgIGNvbnRleHQtPnRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKIH0KIAorc3RhdGljIHZvaWQgcmVzb3VyY2VTdGF0aXN0aWNzVW5zaWdu
ZWRSZXN1bHRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAg
IGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0Nv
bnRleHQqPih1c2VyRGF0YSk7CisgICAgY29udGV4dC0+dW5zaWduZWRSZXN1bHQgPSByZXN1bHQ7
CisgICAgY29udGV4dC0+ZG9uZSA9IHRydWU7CisgICAgY29udGV4dC0+dGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhclN0YXRpc3RpY3NE
YXRhRm9yRG9tYWluKFdLU3RyaW5nUmVmIGRvbWFpbikKIHsKICAgICBSZXNvdXJjZVN0YXRpc3Rp
Y3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CkBAIC0zNzc3LDYgKzM3ODYsMTQgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVz
KFdLU3RyaW5nUmVmIGhvc3ROYW1lKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldFRv
U2FtZVNpdGVTdHJpY3RDb29raWVzKCk7CiB9CiAKK3Vuc2lnbmVkIFRlc3RDb250cm9sbGVyOjph
ZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7CisgICAg
UmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NBZGRBcHBCb3VuZERvbWFpbkZvclRlc3Rpbmcod2Vi
c2l0ZURhdGFTdG9yZSgpLCBob3N0TmFtZSwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1Vu
c2lnbmVkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1l
b3V0KTsKKyAgICByZXR1cm4gY29udGV4dC51bnNpZ25lZFJlc3VsdDsKK30KKwogdm9pZCBUZXN0
Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewogICAgIFJl
c291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAzMzdlZjZlM2I0MzBiZTFkNzc3MjJl
YWI3ZmVhOGNiMjFhZWVkMWMxLi42N2M0NGFkNmIyOTIyOTgwMWJmZWRlYzVhNTlmYmFjOGQ4OTU2
ZTVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNjYsNiAr
MjY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb24pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJp
Y3RDb29raWVzKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKKyAgICB1bnNpZ25lZCBhZGRTdGF0aXN0
aWNzQXBwQm91bmREb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwogICAgIHZvaWQgc3RhdGlz
dGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
aW5kZXggN2VhN2QyMDBhYTQ3MGMxMTAyYTgzMDkwYzc4ZTQyZGZiMDk1NDQxZi4uMTYwMDU4MGUy
OWUxNDViZjM1NTM2ZmI0NWQzNjE0OWQ1ZDE0NjI3NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NDAsNiArMTY0MCwxMyBAQCBXS1JldGFpblB0cjxX
S1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkU3RhdGlzdGljc0FwcEJv
dW5kRG9tYWluIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9
PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWUgPSBz
dGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmFk
ZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbihob3N0TmFtZSkpKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkNsZWFyRE9NQ2FjaGUiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQo
bWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOwogICAgICAgICBXS1N0cmluZ1Jl
ZiBvcmlnaW4gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGJhYzExNjU0OTQxMGJjZWI4YjUyMDU2ZjVhYzBkMDc0NTYzMDNlMjUuLmY4MTc0MTBkZTNlZTQ2
ZmRlNThkMzIxNTg0Y2JhMWQzOWZiNDAxMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0w
NC0zMCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeGVt
cHQgYXBwLWJvdW5kIGRvbWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gYW5k
IHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFp
bnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0
RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRp
b24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVt
cHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBw
LWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRh
LWRlbGV0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTMwICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuV2ViQ29udGVudCBwcm9jZXNzIGNyYXNo
ZXMgd2hlbiB3ZWIgZGV2ZWxvcGVyIHRvb2xzIGFyZSBvcGVuZWQgaW4gU2FmYXJpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0
RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0
d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1w
dC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjllY2ZlZGNjZmYzNjBiOGFlM2E3MzVhNzM2NDgzYjBjZDU2ZTY3MGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxv
Y2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitU
ZXN0cyB0aGF0IGFwcC1ib3VuZCBkb21haW5zIGFyZSBleGVtcHQgZnJvbSB0aGlyZC1wYXJ0eSBj
b29raWUgYmxvY2tpbmcgYmV0d2VlbiB0aGVtc2VsdmVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisgIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUxLS0+JworLS0tLS0tLS0KK1No
b3VsZCBub3QgcmVjZWl2ZSBjb29raWUuCitEaWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVkICdm
aXJzdFBhcnR5Q29va2llJy4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ3BhcnRpdGlv
bmVkQ29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZToKKworLS0tLS0tLS0KK0Zy
YW1lOiAnPCEtLWZyYW1lMi0tPicKKy0tLS0tLS0tCitTaG91bGQgcmVjZWl2ZSBjb29raWUuCitS
ZWNlaXZlZCBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5vdCByZWNlaXZl
IGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUgZG9jdW1lbnQu
Y29va2llOiBmaXJzdFBhcnR5Q29va2llPXZhbHVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQt
ZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0
RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0
d2Vlbi1lYWNoLW90aGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwNTMzZmVjMTg0ZjRlMTk2NTdmNjFl
OTViN2Q0Y2VjYWY5NjljOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5z
LWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbApAQCAt
MCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgor
ICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVz
Y3JpcHRpb24oIlRlc3RzIHRoYXQgYXBwLWJvdW5kIGRvbWFpbnMgYXJlIGV4ZW1wdCBmcm9tIHRo
aXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMuIik7CisgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBmaXJzdFBhcnR5T3JpZ2luID0gImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHRoaXJkUGFydHlSZXNvdXJjZVVybCA9IHRoaXJk
UGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsKKyAgICBj
b25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2llIjsKKyAgICBjb25z
dCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gIi9zZXQtY29va2llLnBocD9uYW1lPSIg
KyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHBhcnRp
dGlvbmVkQ29va2llTmFtZSA9ICJwYXJ0aXRpb25lZENvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0
aFRvU2V0UGFydGl0aW9uZWRDb29raWUgPSAiL3NldC1jb29raWUucGhwP25hbWU9IiArIHBhcnRp
dGlvbmVkQ29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHJldHVyblVybCA9
IGZpcnN0UGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlu
cy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1l
YWNoLW90aGVyLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENvb2tpZXMgPSAiL2dldC1j
b29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAiJm5hbWUyPSIgKyBw
YXJ0aXRpb25lZENvb2tpZU5hbWU7CisgICAgY29uc3QgcmVkaXJlY3RDaGFpblVybCA9IHRoaXJk
UGFydHlSZXNvdXJjZVVybCArICIvcmVkaXJlY3QucGhwP3JlZGlyZWN0VG89IiArIHRoaXJkUGFy
dHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXM7CisKKyAgICBmdW5jdGlvbiBvcGVu
SWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQuc3JjID0gdXJs
OworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxlbWVudC5vbmxv
YWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAgICAgICBjYXNl
ICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1wYXJ0eSBjb29raWUgZm9y
IGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdGhp
cmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSArICIjIiAr
IHJldHVyblVybCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBjb29r
aWUgZG9lc24ndCBnZXQgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBzaW5jZSB0
aGV5IGFyZSBib3RoIGNvbmZpZ3VyZWQgYXMgYXBwLWJvdW5kIGRvbWFpbnMuCisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7CisgICAgICAgICAgICAgICAg
b3BlbklmcmFtZSh0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsg
IiZtZXNzYWdlPVNob3VsZCBub3QgcmVjZWl2ZSBjb29raWUuIiwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICgyICE9PSB0ZXN0UnVubmVyLmFkZFN0YXRpc3RpY3NBcHBCb3Vu
ZERvbWFpbihmaXJzdFBhcnR5T3JpZ2luKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkRpZG4ndCBnZXQgYSB0b3RhbCBvZiB0d28gYXBwLWJvdW5kIGRvbWFpbnMgYWZ0ZXIg
YWRkaW5nIHRoZSBzZWNvbmQuIik7CisgICAgICAgICAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgY29va2llIGdl
dHMgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBzaW5jZSB0aGV5IGFyZSBub3cg
Ym90aCBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBkb21haW5zLgorICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDQiOworICAgICAgICAgICAgICAgIG9wZW5JZnJh
bWUodGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2Fn
ZT1TaG91bGQgcmVjZWl2ZSBjb29raWUuIiwgcnVuVGVzdCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDQiOgorICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoZmFsc2UsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIi
KSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgaWYgKDEgIT09IHRlc3RSdW5uZXIuYWRkU3RhdGlzdGljc0FwcEJvdW5kRG9tYWluKHRo
aXJkUGFydHlPcmlnaW4pKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRpZG4ndCBnZXQg
YSB0b3RhbCBvZiBvbmUgYXBwLWJvdW5kIGRvbWFpbiBhZnRlciBhZGRpbmcgdGhlIGZpcnN0LiIp
OworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAgICAgICAgcnVu
VGVzdCgpOworICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBydW5UZXN0KCk7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91
bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRh
LWRlbGV0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGU0NWQ3ZjE5OWEz
YzY5YWJjMWVhMTVmMTc5MzI5OWZiNzdkNjVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBkb2Vz
IG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9uIGlm
IHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKworQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQtc2lk
ZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3Rz
LgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitC
ZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3JlIGRl
bGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgZGVsZXRpb246IEh0dHBPbmx5
IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0
cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitB
ZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitBZnRlciBkZWxl
dGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5k
LWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24t
ZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmViYWYyNzZlZmZkMWFiNTNhNjNiNjYyMzU0YjVk
ODE2ZGY3YTRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0
LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSwyNTcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nv
b2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij5DaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBl
cmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC48
L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisKKyAgICBjb25zdCBo
dHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVy
U2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRT
aWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29y
dFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAg
ICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+
IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRwdXQo
KSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsK
KyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2Fn
ZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJu
YWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAg
ICAgIGFkZE91dHB1dCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIg
c2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IE5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAg
IGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvb2tp
ZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6CisgICAg
ICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJE
ZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiAiICsgKGlzQWZ0ZXJE
ZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhpc3RzLiIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHNlcnZlclNpZGVDb29r
aWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5w
dXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjog
UmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgorICAg
ICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVy
RGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogQ2xpZW50LXNpZGUg
Y29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVu
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKKyAgICAgICAg
Zm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7
CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAgICBmdW5jdGlv
biBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4i
KTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbGV0IGRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICAgICAg
ICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKworICAgIGxldCBp
bnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7CisgICAgbGV0IGNo
ZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAg
ICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxi
YWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENvdW50ZXJJREIg
PSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICgh
aXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBh
IElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0g
dHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJ
bnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQklu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlv
bjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1h
cGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
ZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQklu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVs
ZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNr
SURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
Q2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFs
SUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFw
aG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50
ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBjaGVja3MgZXhoYXVzdGVkLiIpOwor
ICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZh
bCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlOworICAgIGxldCBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsKKyAgICBjb25zdCBs
b2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hlY2tMb2NhbFN0b3Jh
Z2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBpbnRlcnZhbENv
dW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNr
ID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAg
ICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVj
a0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2
YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9y
YWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0g
bG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdl
KG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFs
dWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAi
ICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsg
IiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFj
aygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3Jh
Z2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZh
bChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2Nh
bFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBl
bnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5v
dCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VD
YWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3Jh
Z2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjog
TG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRv
ZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVj
a0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vi
c2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUgY29va2llcy4KKyAgICAg
ICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5w
aHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2Ft
ZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3Nl
dENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNvb2tp
ZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOwor
ICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7CisK
KyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKworICAgICAgICAvLyBXcml0ZSBMb2NhbFN0
b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9j
YWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwg
ZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAgICAg
ICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgY2hl
Y2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNz
V2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRl
RGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNz
RGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVj
b3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51
ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBjaGVja0lEQkRhdGFT
dG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzKCk7CisgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
KGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2Us
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9yaWdpblVu
ZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIGlmICgxICE9PSB0ZXN0UnVubmVyLmFkZFN0YXRpc3RpY3NBcHBCb3VuZERvbWFpbihv
cmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRpZG4ndCBnZXQg
YSB0b3RhbCBvZiBvbmUgYXBwLWJvdW5kIGRvbWFpbiBhZnRlciBhZGRpbmcgdGhlIGZpcnN0LiIp
OworCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3QsIHRy
dWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZGlk
bid0IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
d3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRl
LWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0
LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGU0
NWQ3ZjE5OWEzYzY5YWJjMWVhMTVmMTc5MzI5OWZiNzdkNjVmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFp
bnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBkb2Vz
IG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9uIGlm
IHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKworQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQtc2lk
ZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3Rz
LgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitC
ZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3JlIGRl
bGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgZGVsZXRpb246IEh0dHBPbmx5
IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0
cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitB
ZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitBZnRlciBkZWxl
dGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5k
LWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAt
Ym91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZDQyZTUxMWY1NjgzYTM2N2UwNmU4ZjE4NTAwNTc5MzU4ZDM4YTkxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRh
LWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGls
aXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3Qo
KScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBk
b2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9u
IGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC48L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1
dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgY29uc3QgaHR0cE9ubHlDb29r
aWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29raWVO
YW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tpZU5h
bWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJh
eShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBiLnRv
TG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAw
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAgICAg
ICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAgIG91
dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPdXRw
dXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAgICAg
IG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVj
a0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29r
aWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICBhZGRPdXRw
dXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHNjcmlwdC1hY2Nl
c3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICBmb3IgKGxldCBj
b29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkgewor
ICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAgICAgICAgICAgICAg
ICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAi
QWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiArIChpc0FmdGVyRGVsZXRpb24gPyAi
ICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAg
ICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRl
ckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IFJlZ3VsYXIgc2Vy
dmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAg
ICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8g
IkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlz
dHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAgICAgIGZvciAobGV0IHRl
c3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAgICAg
ICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVuY3Rpb24gY3JlYXRlSURC
RGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIuIik7CisgICAgICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgICAgICAgICBvYmpTdG9y
ZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisgICAg
fQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisKKyAgICBsZXQgaW50ZXJ2YWxDb3Vu
dGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOworICAgIGxldCBjaGVja0lEQkludGVy
dmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgZnVuY3Rpb24g
Y2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAg
ICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVySURCID0gMDsKKyAgICAg
ICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxl
dGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAg
ICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7
CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBlbnRy
eSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRl
eGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNv
dWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIg
ZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlE
QkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNr
KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGls
IHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50
ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVj
aykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9y
ZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRl
cklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFm
dGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGV4aGF1c3RlZC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
Y2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdh
aW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAg
IGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdl
VmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlz
QWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxT
dG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNr
OworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sg
dW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
aWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJ
RCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVt
KGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9y
ZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFn
ZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAg
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRl
clRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxT
dG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9
PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49
IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNr
TG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9
IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2
YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhp
c3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xv
Y2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFn
ZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2Vz
IG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5k
Q29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0IGZl
dGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5h
bWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9
KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVzLmNn
aSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsgIj0x
OyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgZG9j
dW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAgIGNo
ZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAg
ICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZh
bHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkg
eworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVhdGVJ
REJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0
b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGlu
ZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRh
QW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250
aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRh
UmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAgIHRl
c3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAg
ICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMo
dHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMo
dHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZp
bmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShmYWxzZSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0g
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpZiAo
MSAhPT0gdGVzdFJ1bm5lci5hZGRTdGF0aXN0aWNzQXBwQm91bmREb21haW4ob3JpZ2luVW5kZXJU
ZXN0KSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEaWRuJ3QgZ2V0IGEgdG90YWwgb2Yg
b25lIGFwcC1ib3VuZCBkb21haW4gYWZ0ZXIgYWRkaW5nIHRoZSBmaXJzdC4iKTsKKworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZG4ndCBnZXQgY2xh
c3NpZmllZCBhcyBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0
ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398465</attachid>
            <date>2020-05-04 20:30:52 -0700</date>
            <delta_ts>2020-05-04 20:50:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200504203051.patch</filename>
            <type>text/plain</type>
            <size>98172</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NmYjhiZDAxNDYyNGJj
ZmExYWZkMTg1MWM1NTI2Mzk3NjhkNjMzYS4uZmVjOGM5NTYyYThhZmU2NmU4YmE3ZWM0ZTdkMTJh
MTJkMzE1MTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA1LTA0ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91
bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFy
dHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIHRvIGFsbG93IGl0IHRvIGV4ZW1wdAorICAgICAgICBhcHAtYm91bmQgZG9tYWlucyBm
cm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KKworICAgICAgICBDYWxscyB0byBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5kRG9tYWlucygpIGF1dG9tYXRpY2FsbHkgc2V0
cyB0aGUKKyAgICAgICAgY29va2llIGJsb2NraW5nIHBvbGljeSB0bworICAgICAgICBUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zLgor
CisgICAgICAgIENhbGxzIHRvIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERv
bWFpbnMoKSBhdXRvbWF0aWNhbGx5IHNldHMgdGhlCisgICAgICAgIGNvb2tpZSBibG9ja2luZyBw
b2xpY3kgdG8gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIHdoaWNoIGlzIHRoZQor
ICAgICAgICBkZWZhdWx0LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1j
b29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKKyAgICAgICAgICAgICAgIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1k
b21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24u
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9j
a0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9ja2luZyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5k
RG9tYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0
QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oOgorCiAyMDIwLTA1LTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFRhcHBpbmcgdG8gZm9jdXMgZWRpdGFibGUgZWxlbWVudHMg
c2hvdWxkIHN0YXJ0IGNhcmV0IHNlbGVjdGlvbiBhdCB3b3JkIGJvdW5kYXJ5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDY3MDliYzE5MTc3YzU5NTA5NTQ1MzhjNjg0NmZmOTQ4ZmEzNmU2M2UuLmU3NTM0Y2U4OWI2ZGY4
YTY3YzJlZmM1MmZkNGQwYmY1ZmEyZmE2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisy
MDIwLTA1LTA0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAg
IEV4ZW1wdCBhcHAtYm91bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlv
biBhbmQgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBmb3J3YXJkcyBpbmZvcm1hdGlvbiBh
Ym91dCBhcHAtYm91bmQgZG9tYWlucyB0byBJVFAgYW5kIHdlYgorICAgICAgICBwcm9jZXNzZXMg
c28gdGhhdCB0aGV5IGNhbiBiZSBleGVtcHQgZnJvbSB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gYW5k
CisgICAgICAgIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMu
CisKKyAgICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgYXJlIGNvbmZpZ3VyZWQgc3RhdGljYWxseSBh
bmQgYXBwbHkgdG8gYWxsIHdlYnNpdGUKKyAgICAgICAgZGF0YSBzdG9yZXMuIFRoZXJlZm9yZSB0
aGUgc2V0dGluZyBuZWVkcyB0byBiZSBmb3J3YXJkZWQgdG8gYWxsCisgICAgICAgIHdlYnNpdGUg
ZGF0YSBzdG9yZXMgYW5kIElUUCBmdW5jdGlvbmFsaXR5IGluIGFsbCBuZXR3b3JrIGFuZCB3ZWIK
KyAgICAgICAgY29udGVudCBwcm9jZXNzZXMuIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBuZXcg
c3RhdGljIGZ1bmN0aW9uCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OnNldEFwcEJvdW5kRG9t
YWluc0ZvcklUUElmSW5pdGlhbGl6ZWQoKS4KKworICAgICAgICBTaW5jZSBhcHAtYm91bmQgZG9t
YWlucyBhcmUgbG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEgYmFja2dyb3VuZAorICAg
ICAgICB0aHJlYWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycyBpZgorICAgICAgICB0aGV5J3ZlIGFscmVhZHkgYmVlbiBsb2FkZWQu
IFRoZW4gZXZlcnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUKKyAgICAgICAgdXBkYXRlZCwg
dGhleSBhcmUgZm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQgSVRQIHdpbGwgaGF2
ZSB0aGVtCisgICAgICAgIGFzIHNvb24gYXMgcG9zc2libGUuCisKKyAgICAgICAgU2V0dGluZyBh
cHAtYm91bmQgZG9tYWlucyBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBhdXRvbWF0aWNhbGx5IHN3
aXRjaGVzCisgICAgICAgIElUUCdzIGNvb2tpZSBibG9ja2luZyBwb2xpY3kgdG8gdGhlIG5ldwor
ICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRC
ZXR3ZWVuQXBwQm91bmREb21haW5zLgorCisgICAgICAgIEEgbmV3IGZ1bmN0aW9uIGlzIGFkZGVk
OiBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkKKwor
ICAgICAgICBUaGUgQyBBUEkgY2hhbmdlcyBhcmUgZm9yIHRlc3QgcHVycG9zZXMuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVP
clJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1Rv
RGVmYXVsdFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRhRGVsZXRpb24gY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhbmRh
bG9uZUFwcGxpY2F0aW9uRG9tYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91
bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dl
YnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOiBEZWxldGVk
LgorICAgICAgICAgICAgUmVuYW1lZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
dFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlu
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5k
RG9tYWluc0lmSW5pdGlhbGl6ZWQpOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3Mg
ZmV0Y2hpbmcgb2YgYXBwLWJvdW5kIGRvbWFpbnMgd2l0aG91dCB0cmlnZ2VyaW5nCisgICAgICAg
ICAgICB0aGUgbGF6eSBsb2FkaW5nLiBUaGlzIGlzIGp1c3QgdG8gYWxsb3cgc3BlY3VsYXRpdmUg
Y29uZmlndXJhdGlvbiBvZiBJVFAKKyAgICAgICAgICAgIHJpZ2h0IHdoZW4gaXQncyBjcmVhdGVk
IOKAlCBpZiBhbnkgYXBwLWJvdW5kIGRvbWFpbnMgYXJlIGFscmVhZHkgY29uZmlndXJlZCwKKyAg
ICAgICAgICAgIGZvcndhcmQgdGhlbSB0byBJVFAgdmlhIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3Vu
ZERvbWFpbnNGb3JUZXN0aW5nKToKKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgQ29jb2Et
c3BlY2lmaWMgYW5kIG9ubHkgYWNjZXB0cyBsb2NhbGhvc3QgYW5kIDEyNy4wLjAuMQorICAgICAg
ICAgICAgdG8gYmUgY29uZmlndXJlZCBhcyBhcHAtYm91bmQgZG9tYWlucy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQSWZJbml0aWFsaXplZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldEFwcEJvdW5kRG9tYWluc0ZvcklU
UCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rp
bmcpOiBEZWxldGVkLgorICAgICAgICAgICAgUmVuYW1lZCBzZXRUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNS0wNCAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBUYXBwaW5nIHRvIGZv
Y3VzIGVkaXRhYmxlIGVsZW1lbnRzIHNob3VsZCBzdGFydCBjYXJldCBzZWxlY3Rpb24gYXQgd29y
ZCBib3VuZGFyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IGM1ODY2OWYxY2YyYzliMWM0YjZlNmU4
YzY0NTlkY2JhOTFhZjU4ZjMuLjYzNzM0MDA3NDc1MDZhMmFkYjYyMzJjYWY0ZjA4ODdkMmJhYjZh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTEzNCw2ICsxMzQsOCBAQCBib29sIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMsCiAgICAgc3dpdGNoIChtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpIHsK
ICAgICBjYXNlIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDoKICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgY2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNl
cHRCZXR3ZWVuQXBwQm91bmREb21haW5zOgorICAgICAgICByZXR1cm4gIXNob3VsZEV4ZW1wdERv
bWFpblBhaXJGcm9tVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGZpcnN0UGFydHlEb21haW4sIHJl
c291cmNlRG9tYWluKTsKICAgICBjYXNlIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uOgogICAgICAgICBpZiAoIWhhc0hhZFVzZXJJ
bnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShmaXJzdFBhcnR5RG9tYWluKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMTQ1LDYgKzE0NywxNSBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxk
RXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVz
b3VyY2VEb21haW4pIGNvbnN0Cit7CisgICAgQVNTRVJUKHRvcEZyYW1lRG9tYWluICE9IHJlc291
cmNlRG9tYWluKTsKKyAgICBpZiAodG9wRnJhbWVEb21haW4uaXNFbXB0eSgpIHx8IHJlc291cmNl
RG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRv
cEZyYW1lRG9tYWluID09IHJlc291cmNlRG9tYWluIHx8IChtX2FwcEJvdW5kRG9tYWlucy5jb250
YWlucyh0b3BGcmFtZURvbWFpbikgJiYgbV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMocmVzb3Vy
Y2VEb21haW4pKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjptYXhBZ2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAg
aWYgKG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tD
b29raWVzKHJlcXVlc3QsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KSkKQEAgLTI5Miw2ICsz
MDMsMTggQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2MKICAgICBtX3RoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgPSBibG9ja2luZ01vZGU7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21h
aW5zKQoreworICAgIG1fYXBwQm91bmREb21haW5zID0gV1RGTW92ZShkb21haW5zKTsKKyAgICBz
ZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMpOworfQorCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERvbWFpbnMoKQoreworICAgIG1fYXBwQm91bmRE
b21haW5zLmNsZWFyKCk7CisgICAgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwpOworfQorCiBPcHRpb25hbDxTZWNvbmRzPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdlSUQg
fHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2UuaXNF
bXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggMTM5MWRlZDRkODhlZGIyNzYwMmY2OWMwNmQyZmEx
MzgwZGI4MjdkNC4uMTk2ODVmMWI1ZWU0NGNkMzZjYWQ1N2E1ZWE3ZDFiNjQ2ZWJiZGY0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCkBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBTYW1lU2l0ZUluZm87CiBlbnVt
IGNsYXNzIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogZW51bSBjbGFzcyBJbmNs
dWRlU2VjdXJlQ29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25seUNvb2tp
ZXMgOiBib29sOwotZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWlu
dDhfdCB7IEFsbCwgQWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIE9ubHlBY2NvcmRp
bmdUb1BlckRvbWFpblBvbGljeSB9OworZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlIDogdWludDhfdCB7IEFsbCwgQWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywg
QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIE9ubHlBY2NvcmRpbmdUb1BlckRvbWFp
blBvbGljeSB9OwogZW51bSBjbGFzcyBTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA6
IGJvb2wgeyBZZXMsIE5vIH07CiBlbnVtIGNsYXNzIEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlIDogdWludDhfdCB7IEFsbEJ1dENvb2tpZXMsIE5vbmUsIEFsbEJ1dENvb2tpZXNMaXZl
T25UZXN0aW5nVGltZW91dCwgQWxsQnV0Q29va2llc1JlcHJvVGVzdGluZ1RpbWVvdXQgfTsKIGVu
dW0gY2xhc3MgU2hvdWxkQXNrSVRQIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTk1LDYgKzk1LDkg
QEAgcHVibGljOgogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShOZXR3b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKKyAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOworICAgIHVzaW5nIFN1YlJlc291cmNlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW47CisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBwZXJtaXRQcm9j
ZXNzVG9Vc2VDb29raWVBUEkoYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpOwogCkBAIC0xOTYsNiArMTk5LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJh
bnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9t
YWluLCBQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENyb3Nz
U2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZygpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFwcEJvdW5kRG9tYWlu
cyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc2V0QXBwQm91bmREb21haW5zKCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTI0MSw3ICsy
NDYsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBib29sIG1faXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGZhbHNlOwotICAg
IE9wdGlvbmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CisgICAg
T3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBUb3BGcmFtZURvbWFp
biYsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFeGVt
cHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9ja2luZyhjb25zdCBUb3BGcmFtZURv
bWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJikgY29uc3Q7CiAgICAgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2ll
c0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWlu
c1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHk7CkBA
IC0yNTMsNiArMjU5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlv
bkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRpb25XaXRoTGlua0RlY29y
YXRpb25UZXN0TW9kZSA9IGZhbHNlOwogICAgIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
bV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTo6QWxsIH07CisgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3VuZERv
bWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjc3LDYgKzI4NCw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsCiAgICAgICAgIFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCwKKyAgICAgICAgV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywK
ICAgICAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRl
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sCiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6Ok9ubHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeQogICAgID47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCA0YjI0Y2U1MTIxMWVmMWMyMmY2MGEwNmUyYjNmMTNlY2MyZWRjNTllLi4yOWY2ODdj
Nzc0MWY2ZTU0NDQ4YTZlYTBmMGM3MGQzYmFkNmVlNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTI2MTQsNyArMjYx
NCw3IEBAIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzCiAgICAgVmVjdG9yPERvbWFpbkRhdGE+IGRv
bWFpbnMgPSB0aGlzLT5kb21haW5zKCk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBkb21haW5JRHNU
b0NsZWFyR3JhbmRmYXRoZXJpbmc7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBkb21haW5z
KSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4gPT0gc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAgIGlmIChzaG91bGRFeGVtcHRGcm9tV2Vic2l0
ZURhdGFEZWxldGlvbihzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IHN0ZDo6bWluKG9sZGVz
dFVzZXJJbnRlcmFjdGlvbiwgc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
KTsKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKHN0YXRpc3RpYywg
c2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggNjUwNjc5NzE5NjIyYWYxMmZh
ZDVjMTYyZjJjZGRjYWFhYjkwZTQ3Ni4uYWY1MDA0MWQyMzdiNDBjNzZkNWI0ZDFjNzYwODg5NTNh
M2FmOGY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAKQEAgLTk4MCw3ICs5ODAsNyBAQCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5Uwog
ICAgIGF1dG8gb2xkZXN0VXNlckludGVyYWN0aW9uID0gbm93OwogICAgIFJlZ2lzdHJhYmxlRG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHRvRGVsZXRlT3JSZXN0cmljdEZv
cjsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZh
bHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4gPT0gc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAgIGlmIChzaG91bGRFeGVtcHRGcm9t
V2Vic2l0ZURhdGFEZWxldGlvbihzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4pKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IHN0ZDo6bWlu
KG9sZGVzdFVzZXJJbnRlcmFjdGlvbiwgc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25UaW1lKTsKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKHN0YXRp
c3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggM2M4NmEzNDYwYmIxMTZlMzc0ODY3OTM5
NjQ2YTQ2MTFmOWY0MDE2YS4uMGNkMzU1ODFiMTYzYTJkOTBjYTllOTFhMmUzOWI4NzBjMDI5ZGVi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTMx
Nyw2ICszMTcsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZh
bGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lzdHIKICAgICBtX2RlYnVnTWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBkb21haW47CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
JiBkb21haW5zKQoreworICAgIG1fYXBwQm91bmREb21haW5zID0gV1RGTW92ZShkb21haW5zKTsK
KyAgICBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMpOworfQorCiB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ1Jl
cXVlc3RJZk5lY2Vzc2FyeSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBA
IC01NjgsNiArNTc0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0
UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcygpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICBtX3BhcmFtZXRlcnMgPSB7IH07CisgICAgbV9zdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4gPSB7IH07CisgICAgbV9hcHBCb3VuZERvbWFpbnMuY2xlYXIoKTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJp
bmcmIGV2ZW50KQpAQCAtNjUyLDYgKzY2MCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6ZGVidWdMb2dEb21haW5zSW5CYXRjaGVzKGNvbnN0IGNoYXIqIGFjdGlvbiwgYwog
ICAgICAgICBSRUxFQVNFX0xPR19JTkZPKElUUERlYnVnLCAiJSIgUFVCTElDX0xPR19TVFJJTkcg
IiB0byAoJXtwdWJsaWN9ZCBvZiAldSk6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIuIiwgYWN0aW9u
LCBiYXRjaE51bWJlciwgbnVtYmVyT2ZCYXRjaGVzLCBkb21haW5zVG9TdHJpbmcoYmF0Y2gpLnV0
ZjgoKS5kYXRhKCkpOwogfQogCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hv
dWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRhRGVsZXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbikgY29uc3QKK3sKKyAgICByZXR1cm4gIWRvbWFpbi5pc0VtcHR5KCkgJiYgKGRvbWFp
biA9PSBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB8fCBtX2FwcEJvdW5kRG9tYWlucy5j
b250YWlucyhkb21haW4pKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDQ0ODMzM2M0OWY2
M2IyZjE5MjBiODZlMzMyMDU4N2ZjZTM1YjY5M2IuLjJkYmU5ZTUwYmFlNDcwZjljODEwNWM1MmM5
ZjUwM2FmYmRlZjc0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTE2OSw2ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50RW5hYmxlZCA9PSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZDo6WWVzOyB9OwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUo
V2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSkgeyBtX2ZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbW9kZTsgfQogICAgIHZvaWQgc2V0U3RhbmRh
bG9uZUFwcGxpY2F0aW9uRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKSB7IG1fc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gV1RGTW92ZShkb21haW4pOyB9CisgICAgdm9pZCBz
ZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgYXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5kZXIoY29uc3QgVG9w
RnJhbWVEb21haW4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CkBAIC0yNDksNyArMjUwLDcgQEAgcHJvdGVjdGVk
OgogICAgIGJvb2wgZGVidWdMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdM
b2dnaW5nRW5hYmxlZDsgfTsKICAgICBib29sIGRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH0KICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7IH0KLSAgICBSZWdp
c3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oKSBjb25zdCB7IHJldHVy
biBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsgfQorICAgIGJvb2wgc2hvdWxkRXhlbXB0
RnJvbVdlYnNpdGVEYXRhRGVsZXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4TnVtYmVyT2ZSZWN1cnNpdmVDYWxs
c0luUmVkaXJlY3RUcmFjZUJhY2sgeyA1MCB9OwogICAgIApAQCAtMjkxLDYgKzI5Miw3IEBAIHBy
aXZhdGU6CiAgICAgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhv
c3QgeyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgfTsKICAgICBXZWJDb3JlOjpGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENv
b2tpZXMgfTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbjsKKyAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX2FwcEJvdW5kRG9tYWluczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA2OGY1NWM0YzVjZGRlNzVjNmI0MmFiMjJhZjg3
MzE5ZWQ2ODY0NmIyLi5lNmIwZGEwYWIzM2Y3ZjdjYzUzYzYzZDFmMWRhMWU2YWRiZWZlZGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAt
Njc4LDYgKzY3OCwzMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKGNvbnN0IFJlZ2lzdAogICAgIH0pOwogfQogCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91bmREb21haW5zKEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBpZiAoaXNFcGhlbWVyYWwoKSB8fCBkb21haW5zLmlzRW1wdHkoKSkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBkb21haW5zQ29weSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zKTsKKworICAgIGlmICht
X25ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1f
bmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICAgICAgc3Rv
cmFnZVNlc3Npb24tPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9
CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlucyA9IFdURk1vdmUoZG9tYWluc0NvcHkpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCisgICAgICAgICAgICBtX3N0YXRpc3Rp
Y3NTdG9yZS0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoZG9tYWlucykpOworICAgICAgICBw
b3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKQEAgLTEyODAsNiArMTMwNSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+cmVzZXRBcHBCb3Vu
ZERvbWFpbnMoKTsKKyAgICB9CisKICAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnJlc2V0
UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDEzNTliM2I3ZTc1ZTA5NDUxNDdjOTcyNGE3ZjgwNGZh
NTUyYzY3NmUuLjM0NWZkMjg3N2FjOWVkMjAzNDkxNDEwZTNiZTAxYzc2MGQ2ZTE4N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI3OSw2ICsy
NzksNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQgc2V0U2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEVuYWJsZWQoV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoV2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJv
Y2VzcygpOwogCiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2Vk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDkyZTlmZGVjOTU1NWFmYTI0ZDQ0ODg0YjYxYTI3OWNiNDkyZmI4ODAuLjM3Mjk1NzZh
Mzk4ZDZiOWY2YTVmZmFiMTY3ZDQyNGIyN2ZmMjc4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzA3LDYgKzEzMDcsMTggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZToKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwog
fQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4mJiBhcHBCb3VuZERvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkgeworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBw
Qm91bmREb21haW5zKFdURk1vdmUoYXBwQm91bmREb21haW5zKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29s
IGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRdKGF1dG8mIG5ldHdvcmtTZXNz
aW9uKSB7CkBAIC0xMzE1LDcgKzEzMjcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91
bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aQogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5n
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpCiAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKGJsb2NraW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKaW5kZXggODdlZTQ2NzFlY2IxY2MwNDEzNWUwNjM3ODMzZjVhYTI2NzRk
NzFjZC4uMDEyZGQ2NTU3ZDY0MGExOGRhNGNlZTkwMmE3OWY0MmJiZmNiZDQ4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjYxLDkgKzI2
MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZy
b21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0Rl
Y29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpIGNvbnN0OworICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBib29sIGlzSVRQRGF0
YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERhdGFiYXNlRW5hYmxlZDsgfQog
ICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDE1ZTE3NjQxZjBk
YTFlYjU0NDIxZTBiMmI4YWJkYjU2OWYyZGJkODcuLjUwYmFlNDM4MmZjZDFiNDkxZDk3NDUyNzA3
MTI2MzdkYjhhMjMxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTQxLDggKzE0MSw5IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXNldENyb3NzU2l0
ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+ICgpIEFzeW5jCiAgICAgRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIGJvb2wgaW5j
bHVkZUh0dHBPbmx5Q29va2llcykgLT4gKCkgQXN5bmMKICAgICBIYXNJc29sYXRlZFNlc3Npb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4pIC0+IChib29sIGhhc0lzb2xhdGVkU2Vzc2lvbikgQXN5bmMKKyAgICBTZXRBcHBCb3VuZERv
bWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5zKSAtPiAo
KSBBc3luYwogICAgIFNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVu
YWJsZWQpIC0+ICgpIEFzeW5jCi0gICAgU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCisg
ICAgU2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJs
b2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICAgICBTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTpib29s
IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIC0+ICgp
IEFzeW5jCiAgICAgU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCmluZGV4IDUyN2NhNzlkODEwOGEyYmNjYmM3MDViNGQwZTY3NGE2Y2U3YWQ2ODIuLjgyYjNi
MmNmYjA0YmY1ZWNjOWQ1NWQ1ODc4MzEzMTg2ZDNkZGVlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
QEAgLTEyMjksNiArMTIyOSw4IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9u
Q29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrCiAgICAgbV9kZXZp
Y2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCA9IHBhcmFtZXRlcnMuZGV2aWNlTWFuYWdl
bWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CiAgICAgbV9hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1h
bmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nID0gcGFyYW1ldGVycy5hbGxMb2Fkc0Jsb2Nr
ZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nOwogCisgICAgaWYgKG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyAmJiAhcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKHBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zKSwgW10geyB9
KTsKICNpZiBIQVZFKFNFU1NJT05fQ0xFQU5VUCkKICAgICBhY3RpdmF0ZVNlc3Npb25DbGVhbnVw
KCp0aGlzLCBwYXJhbWV0ZXJzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKaW5kZXggOTI3YWVjM2E3
NGFkMWVmY2I1OTQ4YTA0M2Y4MWZjZjI5ZjliZWI5ZS4uYjlhY2JkM2IyYTc4NTIzNGQ5YzQwYjU3
ZDgzNjMzZTYyYWM2NmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVj
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpB
bGxCdXRDb29raWVzIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBhcHBCb3VuZERvbWFpbnMgeyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICAgICAKICAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC02NSw2ICs2Niw3IEBAIHN0cnVjdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICAgICAgZW5jb2RlciA8
PCBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgZW5jb2RlciA8PCBz
dGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgIGVuY29kZXIgPDwgYXBwQm91bmRE
b21haW5zOwogICAgICAgICBlbmNvZGVyIDw8IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAg
IH0KIApAQCAtMTI3LDYgKzEyOSwxMSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMgewogICAgICAgICBpZiAoIXN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICAgICAgT3B0aW9uYWw8SGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKKyAgICAgICAg
ZGVjb2RlciA+PiBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgIGlmICghYXBwQm91bmREb21haW5z
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAg
ICAgIGRlY29kZXIgPj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGlmICghbWFu
dWFsUHJldmFsZW50UmVzb3VyY2UpCkBAIC0xNDYsNiArMTUzLDcgQEAgc3RydWN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAgICAgICAgICAgV1RGTW92ZSgq
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgq
c3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmFwcEJv
dW5kRG9tYWlucyksCiAgICAgICAgICAgICBXVEZNb3ZlKCptYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSksCiAgICAgICAgIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGYwZjVhMTQxYWI3ZmVl
Y2QyYmU2ODJiYjg4ODVmZTYyODY1MjcyOWIuLmUyNDJmZjcyMjA5ZmM0MTg3ZjQ3YjU3YmJkZWZm
MTFkY2IyM2Y0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhUmVjb3JkLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCkBAIC02MTcsNiArNjE4LDMxIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGlu
CiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNG
b3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLQXJyYXlSZWYg
b3JpZ2luVVJMc1JlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91
bmREb21haW5zRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgUmVmUHRyPEFQSTo6QXJyYXk+IG9y
aWdpblVSTHNBcnJheSA9IHRvSW1wbChvcmlnaW5VUkxzUmVmKTsKKyAgICBzaXplX3QgbmV3U2l6
ZSA9IG9yaWdpblVSTHNBcnJheSA/IG9yaWdpblVSTHNBcnJheS0+c2l6ZSgpIDogMDsKKyAgICBI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zOworICAgIGRvbWFpbnMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuZXdTaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG5ld1NpemU7ICsraSkgeworICAgICAgICBhdXRvKiBvcmlnaW5VUkwgPSBvcmlnaW5VUkxz
QXJyYXktPmF0PEFQSTo6VVJMPihpKTsKKyAgICAgICAgaWYgKCFvcmlnaW5VUkwpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGRvbWFpbnMuYWRkKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCBvcmlnaW5VUkwtPnN0cmluZygpKSB9KTsKKyAg
ICB9CisKKyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldEFwcEJvdW5kRG9tYWluc0Zv
clRlc3RpbmcoV1RGTW92ZShkb21haW5zKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSAo
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oZGF0YVN0b3JlUmVmKTsKKyAgICBVTlVTRURfUEFSQU0ob3JpZ2lu
VVJMc1JlZik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30KKwog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5oCmluZGV4IGY5YTM4MjM3ZmYzODc5ZjcwYzIyOTE4NGI1ZTZlMjdmNjk0ZDRjNDAuLjRi
MDZmZmMxOWRiMmQ2OWEyMmQ5NGYwMTc5ZDgzOTNjNTY5ZGZjODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0x
MjksNiArMTI5LDggQEAgdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVIKIFdLX0VYUE9SVCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JU
ZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29r
aWVzRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNp
dGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0TmFtZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVz
dGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVu
Y3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJv
dW5kRG9tYWluc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
V0tBcnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
OwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25z
aXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxl
dGlvbkhhbmRsZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0ZmNhMjA4NmRhMGQzZDJiZThmZWE0
NWI0NjRlNDc0M2RmMWQ4Y2VlLi5jYzBhMzg3YzNjNTNkYTM2MTkyMjk1NGE0YTcwMWEwNTg5ZGQ5
NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTExMjYsNiArMTEyNiwxMSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6Okhhc0lzb2xhdGVkU2Vzc2lvbihzZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBcHBCb3Vu
ZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGFwcEJvdW5kRG9tYWlucywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcEJvdW5kRG9tYWlu
c0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Moc2Vzc2lvbklELCBhcHBCb3VuZERvbWFpbnMpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
Y2FuU2VuZE1lc3NhZ2UoKSkgewpAQCAtMTEzNiw5ICsxMTQxLDkgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFi
bGVkLCBDb20KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoZW5hYmxlZCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgYmxvY2tpbmdNb2RlKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoc2Vzc2lvbklE
LCBibG9ja2luZ01vZGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZTA3Y2Y5OTA0OThiNmIwODBi
NTVjYjkyZWExNWQzOGI3NjRiMjRkYy4uNzFlZTNiZjQ5YTA4YjM0YTQ3ZTdjZjQxZDIzY2Y5NDgz
YzVhNWU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE3NSw4ICsxNzUsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVn
aXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZERvd25ncmFk
ZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkRW5i
bGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMjI0YTVhMjBhZDExY2E1
OWMzYjMwNDMzNzYzZDI0MDEzM2RlYTc1Zi4uOTI0Y2Q3YjVhZGNhY2YxYTM2NjVhMWFhYzZiYTgx
ZWYzM2M3NGQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtNjA1LDggKzYwNSw5IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29s
OjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIFdl
YkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkID0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQ6Ok5vOwogI2VuZGlmCi0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07
CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5z
IHsgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSB7IH07CiAgICAgV0VCX1BST0NFU1NfUE9PTF9BRERJVElPTlNfMgogICAgIGlmICh3aXRo
V2Vic2l0ZURhdGFTdG9yZSkgewpAQCAtNjI0LDYgKzYyNSw3IEBAIE5ldHdvcmtQcm9jZXNzUHJv
eHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3Jl
KiB3aXRoCiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAgICAgICAgICAgc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsK
KyAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnM7CiAgICAgICAg
ICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5tYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsK
ICAgICAgICAgfQogCkBAIC02NTAsNiArNjUyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgK
ICNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBu
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBzdGFuZGFsb25l
QXBwbGljYXRpb25Eb21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAg
ICAgICAgYXBwQm91bmREb21haW5zID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWluczsKICAgICAgICAgICAgIG1h
bnVhbFByZXZhbGVudFJlc291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAg
ICB9CiAKQEAgLTY4OSw2ICs2OTIsOCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNz
UG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgICAg
ICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwKICNlbmRpZgogICAgICAgICBmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwKKyAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluLAorICAgICAgICBhcHBCb3VuZERvbWFpbnMsCiAgICAgICAgIG1hbnVhbFByZXZh
bGVudFJlc291cmNlLAogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IDA1NGQzMDFhN2U5NTRiMmExMzQyZjY0MTMyYWIwZjFiMzM3ZTNl
NTkuLjlmYjNlNmIxNTQ5MTU5ZWQ1MDcyNWRjYjczMjY4NGY1ZDMzZDAyNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDU4LDkgKzQ1OCw5IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlz
aGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAgICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZSgiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVk
IiwgbWVzc2FnZUJvZHkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKHRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAppbmRleCBjMWUzYTE0YWU0OGM3OThhY2VmNzU5MDRmNTViYjY5MmY0MDY1
YmIyLi41MWJmOWZkZmFhNGQ4MjhkNmNlYjdjZmY2ZDc1ZGIzNDdkNmMyMzg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMjE5LDcgKzIxOSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0
cmFibGVEb21haW5zRmluaXNoZWQoKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlXZWJzaXRlRGF0
YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogCi0gICAgdm9pZCBzZXRTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KaW5kZXggZjM0MjNhOTJhYmFkOWJmYWEwZjhlZWQ5MjEyYmUwYTJhN2M1ZDQw
NC4uY2Y1MDNjOGVhNDg3MzgwOWM4YTcwMGNiMTJjYWQyYTE1MzRjZmM0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNDMzLDYgKzQzMyw4IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRp
b24gZm9yY2VSZWluCiAgICAgICAgICAgICAgICAgV0VCU0lURV9EQVRBX1NUT1JFX0FERElUSU9O
UwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFp
bnMgPSB0cnVlOworICAgICAgICAgICAgaWYgKGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxl
ZCkKKyAgICAgICAgICAgICAgICBzZXRBcHBCb3VuZERvbWFpbnNGb3JJVFBJZkluaXRpYWxpemVk
KFtdIHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtNDQ0LDYgKzQ0Niw4IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSGFzaFNlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBI
b3BwaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCB0aGVuIGJhY2sgdG8gdGhlIG1haW4gdGhy
ZWFkCisgICAgLy8gZW5zdXJlcyB0aGF0IGluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoKSBoYXMg
ZmluaXNoZWQuCiAgICAgYXBwQm91bmREb21haW5RdWV1ZSgpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChoYXNJ
bml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyk7CkBAIC00ODQsNiArNDg4LDI3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSGFzaFNldDxXCiAgICAgfSk7CiB9CiAKK09wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+PiBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnNJ
ZkluaXRpYWxpemVkKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGlm
ICghaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIGFwcEJvdW5kRG9tYWlucygpOworfQorCit2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoSGFzaFNldDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKSB7
CisgICAgICAgIGlmIChkb21haW4uc3RyaW5nKCkgIT0gImxvY2FsaG9zdCJfcyAmJiBkb21haW4u
c3RyaW5nKCkgIT0gIjEyNy4wLjAuMSJfcykgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBhcHBCb3Vu
ZERvbWFpbnMoKSA9IFdURk1vdmUoZG9tYWlucyk7CisgICAgaGFzSW5pdGlhbGl6ZWRBcHBCb3Vu
ZERvbWFpbnMgPSB0cnVlOworICAgIHNldEFwcEJvdW5kRG9tYWluc0ZvcklUUElmSW5pdGlhbGl6
ZWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucygpCiB7CiAgICAgaGFzSW5pdGlhbGl6ZWRB
cHBCb3VuZERvbWFpbnMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggZTM2Mzc2YzVlZDJm
Mjk3YWRhNDQxNTBhY2I1MDM5NzBlYTFjMmRjOC4uNTBmNGU0NDcwZTQ3MTI4NGJiNzMzZjA3NDU2
NzEyOWJmYTRjMWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE4NTgsMjAgKzE4NTgsMjQgQEAg
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBXZWJzaXRlRGF0YVN0b3JlOjp0
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
Ym9vbCBlbmFibGVkLCBib29sIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8g
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgYmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTo6T25seUFjY29yZGluZ1RvUGVyRG9tYWluUG9saWN5OwogICAgIGlmIChlbmFibGVkKQogICAg
ICAgICBibG9ja2luZ01vZGUgPSBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24gPyBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvbiA6IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bDsKKyAgICBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKGJsb2NraW5nTW9kZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBpZiAo
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpICE9IGJsb2NraW5nTW9kZSkgewogICAgICAg
ICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBibG9ja2luZ01vZGU7CiAgICAgICAg
IGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IHByb2Nlc3NlcygpKQotICAgICAgICAgICAgd2ViUHJv
Y2Vzcy5zZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhibG9ja2luZ01v
ZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOworICAgICAgICAgICAgd2ViUHJvY2Vzcy5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKGJsb2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6
IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHBy
b2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mt
PnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBi
bG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUobV9zZXNzaW9uSUQsIGJsb2NraW5nTW9kZSwgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgfQogfQog
CkBAIC0yMjI1LDYgKzIyMjksMTMgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0
ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0
SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlOjpBbGxCdXRDb29raWVzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5zOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGF1dG8gb3B0aW9uYWxBcHBCb3VuZERvbWFpbnMgPSBnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRp
YWxpemVkKCk7CisgICAgaWYgKG9wdGlvbmFsQXBwQm91bmREb21haW5zICYmIGlzQXBwQm91bmRJ
VFBSZWxheGF0aW9uRW5hYmxlZCkKKyAgICAgICAgYXBwQm91bmREb21haW5zID0gKm9wdGlvbmFs
QXBwQm91bmREb21haW5zOworI2VuZGlmCiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKIAogICAg
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzID0gewpAQCAtMjI0NSw2ICsyMjU2LDggQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIFdlYkNvcmU6OlNh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObywKICNlbmRpZgogICAgICAgICBmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwKKyAgICAgICAgV1RGTW92ZShzdGFuZGFsb25l
QXBwbGljYXRpb25Eb21haW4pLAorICAgICAgICBXVEZNb3ZlKGFwcEJvdW5kRG9tYWlucyksCiAg
ICAgICAgIFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291
cmNlKSwKICAgICB9OwogCkBAIC0yNDI0LDQgKzI0MzcsMzkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFVSTCYmIG9sZE5hbWUsIFVSTCYmIG5ld05h
bWUsIE8KICAgICB9CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQSWZJbml0aWFsaXplZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgYXV0byBhcHBCb3VuZERvbWFpbnMgPSBnZXRBcHBCb3VuZERvbWFpbnNJ
ZkluaXRpYWxpemVkKCk7CisgICAgaWYgKCFhcHBCb3VuZERvbWFpbnMpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gcHJvcGFnYXRlQXBwQm91bmREb21haW5zID0gW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIChXZWJzaXRlRGF0YVN0b3JlKiBz
dG9yZSwgY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMp
IHsKKyAgICAgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoc3RvcmUtPnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSAhPSBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5z
KQorICAgICAgICAgICAgc3RvcmUtPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJv
dW5kRG9tYWlucywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7CisKKyAgICAgICAgc3RvcmUtPnNldEFwcEJvdW5kRG9tYWluc0ZvcklUUChk
b21haW5zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKKyAgICB9OworCisgICAgcHJvcGFnYXRlQXBwQm91bmREb21haW5zKGdsb2JhbERl
ZmF1bHREYXRhU3RvcmUoKS5nZXQoKSwgKmFwcEJvdW5kRG9tYWlucyk7CisKKyAgICBmb3IgKGF1
dG8qIHN0b3JlIDogbm9uRGVmYXVsdERhdGFTdG9yZXMoKS52YWx1ZXMoKSkKKyAgICAgICAgcHJv
cGFnYXRlQXBwQm91bmREb21haW5zKHN0b3JlLCAqYXBwQm91bmREb21haW5zKTsKK30KKwordm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JJVFAoY29uc3QgSGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewor
ICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1By
b2Nlc3MoKSkKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRBcHBCb3VuZERvbWFpbnNG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKG1fc2Vzc2lvbklELCBkb21haW5zLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9Cit9
CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGNkNjdlYjU4MmZkYjk1YmE5ZjIxODA0ODI0
NGFlZWNiM2MzOTAzZmEuLmNkYjhmY2QxZjUxYWQ0NDRiYjEyMTEwNzk1NTg2YmUxOWRiYWVjNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKQEAgLTE5OSw2ICsxOTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYXNJ
c29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1No
b3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgYm9vbCBvbmx5T25TaXRl
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50Rm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVT
aXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTI5Niw2ICsyOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRBcHBC
b3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKSBjb25zdDsKICAgICB2b2lkIGVuc3VyZUFwcEJvdW5k
RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+Jik+JiYpIGNvbnN0OwogICAgIHZvaWQgcmVpbml0aWFsaXplQXBwQm91
bmREb21haW5zKCk7CisgICAgc3RhdGljIHZvaWQgc2V0QXBwQm91bmREb21haW5zRm9yVGVzdGlu
ZyhIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRm9yY2VSZWluaXRpYWxp
emF0aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTMzMSw2ICszMzMsMTMgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgbWF5YmVSZWdpc3RlcldpdGhTZXNzaW9uSURNYXAoKTsKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHN0YXRpYyBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpOworICAgIGNvbnN0
ZXhwciBzdGF0aWMgY29uc3Qgc3RkOjphdG9taWM8Ym9vbD4gaXNBcHBCb3VuZElUUFJlbGF4YXRp
b25FbmFibGVkID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgc2V0QXBwQm91bmREb21haW5zRm9y
SVRQSWZJbml0aWFsaXplZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0QXBwQm91bmREb21haW5zRm9ySVRQKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyNlbmRpZgorCiAgICAg
Y29uc3QgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDU5MzY2YzBiMmVlNjUwMTc3NDE3OTdiMjRk
N2IwYzljMDMzMDRmOTAuLjNlM2JlMmYxODM3YmI3YjU1NTYwNGQyZTA2YmI2ZmMyZjJkZWY5NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE4OTgsNyArMTg5
OCw3IEBAIGJvb2wgV2ViUHJvY2Vzczo6YXJlQWxsUGFnZXNUaHJvdHRsZWFibGUoKSBjb25zdAog
fQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViUHJvY2Vz
czo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3M6OnNl
dFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMTg5YjM0YWYzNDc4
ZDc1YWU2MzlkOTcyZGY3OTBlNzAxNGNjN2IwNC4uYjhjOWU3Yzk1MzIxNjFlMDBlY2Y0ZDgwNzU2
ZDFkMjdiZGFlMjk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00
NTgsNyArNDU4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNG
b3JUZXN0aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXpl
UHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IGUwZmVlMGIwNGRlNjljNjYxYzU5ZWY3MGU2NmVjNzAwNDhjYmUyZDUuLjExNDliZjA4OTg2
NjVmY2M1ZjdjMGY1MGZmYjdjNTdhNTQ4ZWE0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNTcsNyArMTU3LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgU2VlZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NGb3JUZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hv
dWxkU2NoZWR1bGVOb3RpZmljYXRpb24pIC0+ICgpIEFzeW5jCi0gICAgU2V0U2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoZW51bTp1aW50OF90IFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKSAtPiAoKSBBc3luYworICAgIFNldFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoZW51bTp1aW50OF90IFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKSAtPiAoKSBBc3luYwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggOTRiYzg5MDQ2ODlmZWZlYzY5NGExZmY3ZWIzMDliYzlmMjcyYzhiZS4u
NjZmY2M2YWY5MDQxMTZlYWMyNzk2MzNmZDc1ZmU0NTU5YmVjMmExZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIw
LTA1LTA0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4
ZW1wdCBhcHAtYm91bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBh
bmQgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IFRlc3RSdW5uZXIgZnVu
Y3Rpb24KKyAgICAgICAgc2V0QXBwQm91bmREb21haW4oKSB3aGljaCB0YWtlcyBhbiBhcnJheSBv
ZiBvcmlnaW4KKyAgICAgICAgc3RyaW5ncyBhbmQgc2V0cyB0aGVtIHRvIGFwcC1ib3VuZCBkb21h
aW5zLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRp
ZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRB
cHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3Vu
ZERvbWFpbnNDYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRBcHBCb3VuZERvbWFp
bnMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFNldEFwcEJvdW5kRG9tYWlucyk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorCiAyMDIwLTA1LTA0ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEIGNoZWNrcyBhZ2FpbnN0IG9sZCB2ZXJzaW9ucyBleHBsaWNp
dCBhYm91dCB3YXRjaE9TIGFuZCB0dk9TCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA1
Y2JlOTUxNjJlZDdjZDc0NzI3NDM2MDBmY2QzYzJlNGE5YWU4Mzk1Li5hMTlkZjk1ZjY0MDU1YmVk
YjA1MjdkMGRjYWJjNzg2ZmYwN2Q0NzhkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAg
LTM5Myw3ICszOTMsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCByZXNldE1v
Y2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1bnNp
Z25lZCBsb25nIG9yaWVudGF0aW9uKTsKICAgICBib29sZWFuIGlzTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJFbmFibGVkKCk7CisKICAgICBib29sZWFuIGhhc0FwcEJvdW5kU2Vzc2lvbigp
OworICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKG9iamVjdCBvcmlnaW5zQXJyYXksIG9iamVj
dCBjYWxsYmFjayk7CiAKICAgICB2b2lkIGluamVjdFVzZXJTY3JpcHQoRE9NU3RyaW5nIHN0cmlu
Zyk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdXNlclNjcmlwdEluamVj
dGVkQ291bnQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDEwZTZlZTNmNzFmMzIxNmZiNDc2MWVlZWVj
NjU3MDBiM2YyYzBjMGYuLmZlNWQ3NTc0ZDcxZjMzY2VjYWFhMmM3NmFjNzE0NGU4ZWNkMzdmMjcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC01MTgsNyArNTE4LDEyIEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+cGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldEFwcEJvdW5kRG9tYWlucyIpKSB7
CisgICAgICAgIG1fdGVzdFJ1bm5lci0+ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBl
cnJvck1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
RXJyb3IiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJvZHkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikpOwogICAg
IFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UsIGVycm9yTWVzc2FnZU5hbWUuZ2V0KCksIGVy
cm9yTWVzc2FnZUJvZHkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNTNkMTFhZDczM2U5MWQ4YzExODQ0
YTEwMmYyNzYzNWQyY2YyMDBhMi4uNGExOGMxODkzNTA3ZDNkNmQzZDRmZmJkZDFiZDA5NDE4NzU1
MDViOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC03NjMsNiArNzYzLDcgQEAgZW51bSB7CiAgICAgVGV4dEZpZWxk
RGlkQmVnaW5FZGl0aW5nQ2FsbGJhY2tJRCwKICAgICBUZXh0RmllbGREaWRFbmRFZGl0aW5nQ2Fs
bGJhY2tJRCwKICAgICBDdXN0b21NZW51QWN0aW9uQ2FsbGJhY2tJRCwKKyAgICBEaWRTZXRBcHBC
b3VuZERvbWFpbnNDYWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEID0gMTAw
CiB9OwogCkBAIC0yOTc1LDQgKzI5NzYsNDMgQEAgYm9vbCBUZXN0UnVubmVyOjpoYXNBcHBCb3Vu
ZFNlc3Npb24oKQogICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19j
YXN0PFdLQm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKIH0KIAordm9pZCBUZXN0UnVu
bmVyOjpzZXRBcHBCb3VuZERvbWFpbnMoSlNWYWx1ZVJlZiBvcmlnaW5BcnJheSwgSlNWYWx1ZVJl
ZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhEaWRT
ZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBK
U0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChX
S0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2Uo
KS0+cGFnZSgpKSk7CisKKyAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIG9yaWdpbkFy
cmF5KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNPYmplY3RSZWYgb3JpZ2lucyA9IEpTVmFs
dWVUb09iamVjdChjb250ZXh0LCBvcmlnaW5BcnJheSwgbnVsbHB0cik7CisgICAgc3RhdGljIGF1
dG8gbGVuZ3RoUHJvcGVydHkgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
bGVuZ3RoIikpOworICAgIEpTVmFsdWVSZWYgb3JpZ2luc0xlbmd0aFZhbHVlID0gSlNPYmplY3RH
ZXRQcm9wZXJ0eShjb250ZXh0LCBvcmlnaW5zLCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVsbHB0
cik7CisgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgb3JpZ2luc0xlbmd0aFZhbHVl
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBvcmlnaW5VUkxzID0gYWRvcHRXSyhXS011
dGFibGVBcnJheUNyZWF0ZSgpKTsKKyAgICBhdXRvIG9yaWdpbnNMZW5ndGggPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBvcmlnaW5zTGVuZ3RoVmFsdWUsIG51
bGxwdHIpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdpbnNMZW5ndGg7ICsraSkg
eworICAgICAgICBKU1ZhbHVlUmVmIG9yaWdpblZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0
SW5kZXgoY29udGV4dCwgb3JpZ2lucywgaSwgbnVsbHB0cik7CisgICAgICAgIGlmICghSlNWYWx1
ZUlzU3RyaW5nKGNvbnRleHQsIG9yaWdpblZhbHVlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGF1dG8gb3JpZ2luID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBvcmlnaW5WYWx1ZSwgbnVsbHB0cikpOworICAgICAgICBzaXplX3Qgb3JpZ2luQnVmZmVyU2l6
ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShvcmlnaW4uZ2V0KCkpICsgMTsK
KyAgICAgICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4ob3JpZ2lu
QnVmZmVyU2l6ZSk7CisgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcob3JpZ2luLmdldCgp
LCBvcmlnaW5CdWZmZXIuZ2V0KCksIG9yaWdpbkJ1ZmZlclNpemUpOworCisgICAgICAgIFdLQXJy
YXlBcHBlbmRJdGVtKG9yaWdpblVSTHMuZ2V0KCksIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRG
OENTdHJpbmcob3JpZ2luQnVmZmVyLmdldCgpKSkuZ2V0KCkpOworICAgIH0KKworICAgIGF1dG8g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRB
cHBCb3VuZERvbWFpbnMiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBvcmlnaW5VUkxzLmdl
dCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFj
aygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnND
YWxsYmFja0lEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGY1YjYzNmUwMTg5
Y2E3MjQ5ZjQ2MzY1ZDRkYjY2ZmFjY2M0ZmFhYjAuLmNlODAxYTNiMzJiOWFiZTA3YjhlYWYyODZk
ZGNkYTRmYzhkZjQ1YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MDAsNyArNTAwLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9yaWVu
dGF0aW9uKHVuc2lnbmVkKTsKICAgICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJFbmFibGVkKCk7CisKICAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpOworICAgIHZvaWQg
c2V0QXBwQm91bmREb21haW5zKEpTVmFsdWVSZWYgb3JpZ2luQXJyYXksIEpTVmFsdWVSZWYgY2Fs
bGJhY2spOworICAgIHZvaWQgZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKTsKIAogICAg
IHNpemVfdCB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5qZWN0
VXNlclNjcmlwdChKU1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IGM0ZDU3ZTE4OGI3MDc4ZDQ5MTAxYmVjOTM4OGMwMDEyMzViMGNkODUu
LjVlZDc4MWRmNjZjOGIzMDUzODBiMTM4YjlkOThhNzE3OGQwODZlZDQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNzc3LDYgKzM3NzcsMTQgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzKFdL
U3RyaW5nUmVmIGhvc3ROYW1lKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldFRvU2Ft
ZVNpdGVTdHJpY3RDb29raWVzKCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFwcEJv
dW5kRG9tYWlucyhXS0FycmF5UmVmIG9yaWdpblVSTHMpCit7CisgICAgUmVzb3VyY2VTdGF0aXN0
aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3Rpbmcod2Vic2l0ZURhdGFTdG9yZSgpLCBvcmlnaW5V
UkxzLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAg
ICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgbV9jdXJyZW50SW52b2Nh
dGlvbi0+ZGlkU2V0QXBwQm91bmREb21haW5zKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsKICAgICBSZXNvdXJjZVN0YXRp
c3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMzM3ZWY2ZTNiNDMwYmUxZDc3NzIyZWFiN2ZlYThjYjIx
YWVlZDFjMS4uMThkZDhiMDYzZjllODE5OGYzMjY5ODBjYzFlNzFmMzYwZTU3NWQ4NyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjY2LDYgKzI2Niw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
KGJvb2wgdmFsdWUsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29s
IHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhX
S1N0cmluZ1JlZiBob3N0TmFtZSk7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoV0tBcnJh
eVJlZiBvcmlnaW5VUkxzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0
YXRlKCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDdlYTdkMjAwYWE0NzBjMTEw
MmE4MzA5MGM3OGU0MmRmYjA5NTQ0MWYuLmVhMWE5ZjdmYTA4ZGZlMjJhMGNmYmFhZGVkYWQyN2I3
ZTAwMmQwMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBA
IC05OTQsNiArOTk0LDEzIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdl
TmFtZSwgIlNldEFwcEJvdW5kRG9tYWlucyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSkgPT0gV0tBcnJheUdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tBcnJheVJl
ZiBvcmlnaW5VUkxzID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpOworICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0QXBwQm91bmREb21haW5zKG9yaWdp
blVSTHMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKQEAgLTIwMTEsNiArMjAxOCwxMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9Jbmpl
Y3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFn
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFNldEFwcEJvdW5kRG9tYWlucygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERp
ZFNldEFwcEJvdW5kRG9tYWlucyIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCiB7CiAgICAgbV9zaG91bGREdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmgKaW5kZXggMWU1NzdkYWE3ZDkwODVkNDA2ZGFhMTczNGNlMDA1YzQyOGQ4M2QzMy4uMjkzNDQw
YzM2MWI2MWQyNDhhM2ZlM2Y5NGMyOGEwNWIxY2Y0OWZkMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaApAQCAtOTAsNyArOTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5z
KTsKIAogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7Ci0gICAgCisK
KyAgICB2b2lkIGRpZFNldEFwcEJvdW5kRG9tYWlucygpOworCiAgICAgdm9pZCBkdW1wUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpOwogCiAgICAgYm9vbCBjYW5PcGVuV2luZG93cygpIGNvbnN0IHsg
cmV0dXJuIG1fY2FuT3BlbldpbmRvd3M7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0Njc0NThlMGQ1MmI4YjhjOGE3Mzk1
N2MxNmE3MjRhY2UyMjZiMDliLi43ZDJlODNjODcwNjhkZmYzODI0ZTNmMjRkZTQ1OWE5NDQ5MmM4
NDM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDUtMDQgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5zIGZy
b20gSVRQJ3Mgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUgYmxv
Y2tpbmcgYmV0d2VlbiB0aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUwNzY3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRv
bWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1i
bG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFp
bnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4
ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRl
bGV0aW9uLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1m
cm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3Vu
ZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sOiBBZGRlZC4K
KwogMjAyMC0wNS0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUYXBwaW5nIHRvIGZvY3VzIGVkaXRhYmxlIGVsZW1lbnRzIHNob3VsZCBzdGFydCBj
YXJldCBzZWxlY3Rpb24gYXQgd29yZCBib3VuZGFyeQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5k
LWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxv
Y2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmIyMzEw
YzQ3MWVjZWUxZjM0ODFkODg0ZDcyYjgzYjM4ZGYwYTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMv
YXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFj
aC1vdGhlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAorVGVzdHMgdGhhdCBhcHAtYm91
bmQgZG9tYWlucyBhcmUgZXhlbXB0IGZyb20gdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJl
dHdlZW4gdGhlbXNlbHZlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0t
CitGcmFtZTogJzwhLS1mcmFtZTEtLT4nCistLS0tLS0tLQorU2hvdWxkIG5vdCByZWNlaXZlIGNv
b2tpZS4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgor
RGlkIG5vdCByZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50
LXNpZGUgZG9jdW1lbnQuY29va2llOgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUyLS0+
JworLS0tLS0tLS0KK1Nob3VsZCBub3QgcmVjZWl2ZSBjb29raWUuCitEaWQgbm90IHJlY2VpdmUg
Y29va2llIG5hbWVkICdmaXJzdFBhcnR5Q29va2llJy4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUg
bmFtZWQgJ3BhcnRpdGlvbmVkQ29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZToK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMy0tPicKKy0tLS0tLS0tCitTaG91bGQgcmVj
ZWl2ZSBjb29raWUuCitSZWNlaXZlZCBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgor
RGlkIG5vdCByZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50
LXNpZGUgZG9jdW1lbnQuY29va2llOiBmaXJzdFBhcnR5Q29va2llPXZhbHVlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vl
bi1lYWNoLW90aGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29r
aWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I1ODVmZmMy
ZGI1YjJlMmMzN2VlNjI3YzgwNWFkNmE2N2Q0ZThmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2Fw
cC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gt
b3RoZXIuaHRtbApAQCAtMCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9
ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYXBwLWJvdW5kIGRvbWFpbnMgYXJl
IGV4ZW1wdCBmcm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2
ZXMuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBmaXJzdFBhcnR5
T3JpZ2luID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9y
aWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHRoaXJkUGFydHlSZXNv
dXJjZVVybCA9IHRoaXJkUGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVz
b3VyY2VzIjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29v
a2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gIi9zZXQtY29v
a2llLnBocD9uYW1lPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOwor
ICAgIGNvbnN0IHBhcnRpdGlvbmVkQ29va2llTmFtZSA9ICJwYXJ0aXRpb25lZENvb2tpZSI7Cisg
ICAgY29uc3Qgc3ViUGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUgPSAiL3NldC1jb29raWUucGhw
P25hbWU9IiArIHBhcnRpdGlvbmVkQ29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNv
bnN0IHJldHVyblVybCA9IGZpcnN0UGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxv
Y2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENv
b2tpZXMgPSAiL2dldC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUg
KyAiJm5hbWUyPSIgKyBwYXJ0aXRpb25lZENvb2tpZU5hbWU7CisgICAgY29uc3QgcmVkaXJlY3RD
aGFpblVybCA9IHRoaXJkUGFydHlSZXNvdXJjZVVybCArICIvcmVkaXJlY3QucGhwP3JlZGlyZWN0
VG89IiArIHRoaXJkUGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXM7CisKKyAg
ICBmdW5jdGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25z
dCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVs
ZW1lbnQuc3JjID0gdXJsOworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAg
ICAgZWxlbWVudC5vbmxvYWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7Cisg
ICAgICAgICAgICBjYXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1w
YXJ0eSBjb29raWUgZm9yIGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2Nh
dGlvbi5ocmVmID0gdGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0
eUNvb2tpZSArICIjIiArIHJldHVyblVybCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICAvLyBDaGVj
ayB0aGF0IHRoZSBjb29raWUgZG9lc24ndCBnZXQgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEy
Ny4wLjAuMSBzaW5jZSBvbmx5IGxvY2FsaG9zdCBpcyBjb25maWd1cmVkIGFzIGFuIGFwcC1ib3Vu
ZCBkb21haW4uCisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVw
MyI7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBCb3VuZERvbWFpbnMoWyB0aGly
ZFBhcnR5T3JpZ2luIF0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBvcGVuSWZy
YW1lKHRoaXJkUGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3Nh
Z2U9U2hvdWxkIG5vdCByZWNlaXZlIGNvb2tpZS4iLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIj
c3RlcDMiOgorICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBkb2Vzbid0
IGdldCBzZW50IGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIHNpbmNlIG9ubHkgMTI3LjAu
MC4xIGlzIGNvbmZpZ3VyZWQgYXMgYW4gYXBwLWJvdW5kIGRvbWFpbi4KKyAgICAgICAgICAgICAg
ICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA0IjsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldEFwcEJvdW5kRG9tYWlucyhbIGZpcnN0UGFydHlPcmlnaW4gXSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eVJlc291cmNlVXJs
ICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgbm90IHJlY2VpdmUgY29v
a2llLiIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcnVuVGVzdCgpOwor
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAgICAg
Ly8gQ2hlY2sgdGhhdCB0aGUgY29va2llIGdldHMgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEy
Ny4wLjAuMSBzaW5jZSB0aGV5IGFyZSBub3cgYm90aCBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBk
b21haW5zLgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDUi
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXBwQm91bmREb21haW5zKFsgZmlyc3RQ
YXJ0eU9yaWdpbiwgdGhpcmRQYXJ0eU9yaWdpbiBdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQYXRoVG9HZXRD
b29raWVzICsgIiZtZXNzYWdlPVNob3VsZCByZWNlaXZlIGNvb2tpZS4iLCBydW5UZXN0KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgIiNzdGVwNSI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIpIHsKKyAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFz
aCA9ICJzdGVwMSI7CisgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIH0pOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNp
dGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9t
YWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg4ZTQ1ZDdmMTk5YTNjNjlhYmMxZWExNWYxNzkzMjk5ZmI3N2Q2NWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAK
K0NoZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVy
aW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYXBwLWJvdW5kLgor
CitCZWZvcmUgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVs
ZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIg
c2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdl
IGVudHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0
LgorCitBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0
aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIg
c2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2Ug
ZW50cnkgZG9lcyBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4K
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRl
LWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1w
dC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0
ZTY3MWIwYjgzM2EwZTViYTJkYTY4MDk0YjNjZjA1M2VkMjAxYzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24t
ZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDI1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgp
JywgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRv
ZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24g
aWYgdGhlIHdlYnNpdGUgaXMgYXBwLWJvdW5kLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0
Ij48L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBE
YXRhYmFzZSh0cnVlKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9u
bHktY29va2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lk
ZS1jb29raWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRl
LWNvb2tpZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAg
ICBhID0gYS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisg
ICAgICAgIHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQo
ZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAg
ICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgZWxlbWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hp
bGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJE
ZWxldGlvbikgeworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsK
KyAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBp
ZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgYWRkT3V0cHV0KChpc0FmdGVyRGVsZXRp
b24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjog
Tm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMp
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBj
YXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0
UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUi
KSArICIgZGVsZXRpb246ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBP
bmx5IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAg
IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRl
ciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBl
eGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVz
dFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3Jl
IikgKyAiIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQg
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29y
dChzb3J0U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBv
ZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0
UGFzc2VkTWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAi
VGVzdERhdGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFj
aykgeworICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0
KCJDb3VsZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAg
ICAgICAgICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0
b0luY3JlbWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOwor
ICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1h
eEludGVydmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQg
Y2hlY2tJREJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBz
ZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3Jl
RXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7
CisgICAgICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJh
Y2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAg
ICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJ
bnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYg
KHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYg
KCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAg
ICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3Qu
Iik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQp
OworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4
ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGlu
dGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURC
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3Qu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4K
KyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7
CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2
YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZh
bElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURC
IGVudHJ5IGNoZWNrcyBleGhhdXN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9y
ZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0
cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9u
OiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNh
bGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnRlcnZhbENv
dW50ZXJMb2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7Cisg
ICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0b3Jh
Z2VOYW1lID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVlIjsK
KyAgICBmdW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNh
bGxiYWNrKSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7CisgICAg
ICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFp
c0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExv
Y2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNl
dEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291
bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAg
ICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2Fs
U3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6
ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2Nh
bFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5l
ci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAg
ICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7
CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxv
Y2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBk
ZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZh
bHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNr
IHVudGlsIHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxT
dG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0
SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJB
ZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3Rv
cmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2lu
VW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9j
YWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxv
Y2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1
ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3Qu
Iik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9CisgICAgfQor
CisgICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAg
ICAgICAvLyBXcml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVz
b3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNv
b2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0
IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsg
IlNldC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3Jl
ZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNs
aWVudFNpZGVDb29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2Up
OworCisgICAgICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uu
c2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAg
Ly8gV3JpdGUgSW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7
CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAg
IHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhj
aGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXMo
dHJ1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3Qp
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAg
ICAgICByZXNldENvb2tpZXMoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAiOworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1
cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBCb3Vu
ZERvbWFpbnMoWyBvcmlnaW5VbmRlclRlc3QgXSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCwgdHJ1ZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZG4n
dCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQt
ZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFp
bnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGU0NWQ3ZjE5OWEzYzY5YWJjMWVhMTVmMTc5MzI5OWZi
NzdkNjVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZy
b20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitD
aGVjayB0aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlv
ZCBvZiBubyB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKwor
QmVmb3JlIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0
aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNl
cnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBl
bnRyeSBkb2VzIGV4aXN0LgorQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4K
KworQWZ0ZXIgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlv
bjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNl
cnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVu
dHJ5IGRvZXMgZXhpc3QuCitBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTA0Nzk1ZWFkNmE5NjUxM2Y2MjMx
NTNiMzVmYjY4NTMyNmZiNzEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFp
bnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyNTUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nv
b2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij5DaGVjayB0aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBl
cmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC48
L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworCisgICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOwor
ICAgIGNvbnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7Cisg
ICAgY29uc3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKwor
ICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93
ZXJDYXNlKCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJu
IGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExp
bmVicmVha1RvT3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50Lmlu
bmVyVGV4dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7Cisg
ICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQg
Y29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5s
ZW5ndGgpCisgICAgICAgICAgICBhZGRPdXRwdXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIg
OiAiQmVmb3JlIikgKyAiIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZv
dW5kLiIpOworICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAg
ICAgc3dpdGNoIChjb29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlD
b29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdl
cy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlv
bjogIiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4
aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0
UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUi
KSArICIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRl
Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2Fn
ZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRp
b246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFz
c2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdB
cnJheSk7CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdl
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2Ui
OworCisgICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAg
IGxldCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNy
ZWF0ZSBpbmRleGVkREIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07
CisgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQg
b2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0
cnVlfSk7CisgICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBj
YWxsYmFjaygpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0g
MjA7CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxi
YWNrOworICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRl
ckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50
ZXJ2YWxDb3VudGVySURCID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNr
OworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sg
dW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBz
ZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURC
Q2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1h
cGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENv
dW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sg
YWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAg
Y2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAg
ICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tz
IGV4aGF1c3RlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0
IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURC
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQg
dGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBz
ZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBk
b2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAy
MDApOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3Rv
cmFnZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tM
b2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVz
dCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9u
IGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAg
ICAgICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2Nh
bFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlv
bikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgor
ICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9y
YWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFs
KGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2
YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5
ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90Iikg
KyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAg
ICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2Nh
bFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIg
OiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAx
MDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUg
aXMgbm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZh
bElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50
ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3Rv
cmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9u
OiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAi
ZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRl
cnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdl
dEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgi
QWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0
b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBm
dW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRl
IGNvb2tpZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0
dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBj
cmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29r
aWVzL3Jlc291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6
IHNlcnZlclNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNh
bWUtb3JpZ2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tp
ZU5hbWUgKyAiPTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAg
Ly8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2Fs
U3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRl
eGVkREIuCisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5p
bnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURh
dGFBbmRDb250aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0
aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNp
dGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAg
ICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29v
a2llcygpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEFwcEJvdW5kRG9tYWlucyhbIG9y
aWdpblVuZGVyVGVzdCBdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZShvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZGlkbid0IGdldCBjbGFzc2lm
aWVkIGFzIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0
ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398468</attachid>
            <date>2020-05-04 20:51:01 -0700</date>
            <delta_ts>2020-05-05 12:36:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200504205100.patch</filename>
            <type>text/plain</type>
            <size>98394</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQzMTdhMDg3ZTFlZWJm
MDRkMWFhMDYwMzU3NTRlZDgzNzFlZjg0YS4uNjUwYTY4ODQ1Mjk2MGE3OTkxNTZhMTQ2OTNhZTQ1
NWVkN2E1YzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA1LTA0ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91
bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFy
dHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIHRvIGFsbG93IGl0IHRvIGV4ZW1wdAorICAgICAgICBhcHAtYm91bmQgZG9tYWlucyBm
cm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KKworICAgICAgICBDYWxscyB0byBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5kRG9tYWlucygpIGF1dG9tYXRpY2FsbHkgc2V0
cyB0aGUKKyAgICAgICAgY29va2llIGJsb2NraW5nIHBvbGljeSB0bworICAgICAgICBUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zLgor
CisgICAgICAgIENhbGxzIHRvIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERv
bWFpbnMoKSBhdXRvbWF0aWNhbGx5IHNldHMgdGhlCisgICAgICAgIGNvb2tpZSBibG9ja2luZyBw
b2xpY3kgdG8gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIHdoaWNoIGlzIHRoZQor
ICAgICAgICBkZWZhdWx0LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1j
b29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKKyAgICAgICAgICAgICAgIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1k
b21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24u
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9j
a0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9ja2luZyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5k
RG9tYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0
QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oOgorCiAyMDIwLTA1LTA0ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEluZGV4ZWREQiBXQUwgZmlsZSBrZWVwcyBncm93aW5nIHdoaWxlIGFwcCBpcyBp
biB1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggYmNiMjc1MjY1MjE2MDViYmE4MjA1ZGRjYzZhNDYzNjBmOGRhMGRk
NC4uN2Y4YmIyYmFiYTM4N2Y2MGQzY2RkMjJlOWQ5ZjE3MjczZTViODFkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMDAgQEAKKzIwMjAtMDUtMDQgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5zIGZyb20gSVRQJ3Mgd2Vi
c2l0ZSBkYXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcgYmV0d2Vl
biB0aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndh
cmRzIGluZm9ybWF0aW9uIGFib3V0IGFwcC1ib3VuZCBkb21haW5zIHRvIElUUCBhbmQgd2ViCisg
ICAgICAgIHByb2Nlc3NlcyBzbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9tIHdlYnNpdGUg
ZGF0YSBkZWxldGlvbiBhbmQKKyAgICAgICAgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJl
dHdlZW4gdGhlbXNlbHZlcy4KKworICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBhcmUgY29uZmln
dXJlZCBzdGF0aWNhbGx5IGFuZCBhcHBseSB0byBhbGwgd2Vic2l0ZQorICAgICAgICBkYXRhIHN0
b3Jlcy4gVGhlcmVmb3JlIHRoZSBzZXR0aW5nIG5lZWRzIHRvIGJlIGZvcndhcmRlZCB0byBhbGwK
KyAgICAgICAgd2Vic2l0ZSBkYXRhIHN0b3JlcyBhbmQgSVRQIGZ1bmN0aW9uYWxpdHkgaW4gYWxs
IG5ldHdvcmsgYW5kIHdlYgorICAgICAgICBjb250ZW50IHByb2Nlc3Nlcy4gVGhpcyBpcyBkb25l
IHRocm91Z2ggdGhlIG5ldyBzdGF0aWMgZnVuY3Rpb24KKyAgICAgICAgV2Vic2l0ZURhdGFTdG9y
ZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQSWZJbml0aWFsaXplZCgpLgorCisgICAgICAgIFNp
bmNlIGFwcC1ib3VuZCBkb21haW5zIGFyZSBsb2FkZWQgbGF6aWx5IGZyb20gZGlzayBhbmQgb24g
YSBiYWNrZ3JvdW5kCisgICAgICAgIHRocmVhZCwgdGhpcyBwYXRjaCBmb3J3YXJkcyB0aGVtIGlu
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIGlmCisgICAgICAgIHRoZXkndmUgYWxy
ZWFkeSBiZWVuIGxvYWRlZC4gVGhlbiBldmVyeSB0aW1lIGFwcC1ib3VuZCBkb21haW5zIGFyZQor
ICAgICAgICB1cGRhdGVkLCB0aGV5IGFyZSBmb3J3YXJkZWQgdG8gSVRQLiBUaGlzIGVuc3VyZXMg
dGhhdCBJVFAgd2lsbCBoYXZlIHRoZW0KKyAgICAgICAgYXMgc29vbiBhcyBwb3NzaWJsZS4KKwor
ICAgICAgICBTZXR0aW5nIGFwcC1ib3VuZCBkb21haW5zIGZvciB0aGUgcHVycG9zZXMgb2YgSVRQ
IGF1dG9tYXRpY2FsbHkgc3dpdGNoZXMKKyAgICAgICAgSVRQJ3MgY29va2llIGJsb2NraW5nIHBv
bGljeSB0byB0aGUgbmV3CisgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMuCisKKyAgICAgICAgQSBuZXcg
ZnVuY3Rpb24gaXMgYWRkZWQ6IFdlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5kRG9tYWluc0lm
SW5pdGlhbGl6ZWQoKQorCisgICAgICAgIFRoZSBDIEFQSSBjaGFuZ2VzIGFyZSBmb3IgdGVzdCBw
dXJwb3Nlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZWdpc3RyYWJs
ZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJvdW5k
RG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlv
biBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAg
ICAgICogU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZGVj
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3Rp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZW5hbWVkIHNldFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAgICAgUmVuYW1lZCBzZXRUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXpl
QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5z
dXJlQXBwQm91bmREb21haW5zIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6Z2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCk6CisgICAgICAgICAgICBUaGlz
IGZ1bmN0aW9uIGFsbG93cyBmZXRjaGluZyBvZiBhcHAtYm91bmQgZG9tYWlucyB3aXRob3V0IHRy
aWdnZXJpbmcKKyAgICAgICAgICAgIHRoZSBsYXp5IGxvYWRpbmcuIFRoaXMgaXMganVzdCB0byBh
bGxvdyBzcGVjdWxhdGl2ZSBjb25maWd1cmF0aW9uIG9mIElUUAorICAgICAgICAgICAgcmlnaHQg
d2hlbiBpdCdzIGNyZWF0ZWQg4oCUIGlmIGFueSBhcHAtYm91bmQgZG9tYWlucyBhcmUgYWxyZWFk
eSBjb25maWd1cmVkLAorICAgICAgICAgICAgZm9yd2FyZCB0aGVtIHRvIElUUCB2aWEgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGhpcyBm
dW5jdGlvbiBpcyBDb2NvYS1zcGVjaWZpYyBhbmQgb25seSBhY2NlcHRzIGxvY2FsaG9zdCBhbmQg
MTI3LjAuMC4xCisgICAgICAgICAgICB0byBiZSBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBkb21h
aW5zLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JJVFBJ
ZkluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBw
Qm91bmREb21haW5zRm9ySVRQKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZW5hbWVkIHNldFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAy
MDIwLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gTWFrZSBzdXJlIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSgpIGRvZXMgbm90IGhhbmcgZHVlIHRvIHByb2Nlc3Mgc3VzcGVuc2lvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uY3BwCmluZGV4IGM1ODY2OWYxY2YyYzliMWM0YjZlNmU4YzY0NTlkY2JhOTFhZjU4ZjMuLjYz
NzM0MDA3NDc1MDZhMmFkYjYyMzJjYWY0ZjA4ODdkMmJhYjZhNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5j
cHAKQEAgLTEzNCw2ICsxMzQsOCBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsCiAgICAgc3dpdGNo
IChtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpIHsKICAgICBjYXNlIFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU6OkFsbDoKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21h
aW5zOgorICAgICAgICByZXR1cm4gIXNob3VsZEV4ZW1wdERvbWFpblBhaXJGcm9tVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKTsKICAgICBj
YXNlIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uOgogICAgICAgICBpZiAoIWhhc0hhZFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0
eShmaXJzdFBhcnR5RG9tYWluKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ1LDYg
KzE0NywxNSBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVz
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21U
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pIGNvbnN0Cit7
CisgICAgQVNTRVJUKHRvcEZyYW1lRG9tYWluICE9IHJlc291cmNlRG9tYWluKTsKKyAgICBpZiAo
dG9wRnJhbWVEb21haW4uaXNFbXB0eSgpIHx8IHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRvcEZyYW1lRG9tYWluID09IHJlc291
cmNlRG9tYWluIHx8IChtX2FwcEJvdW5kRG9tYWlucy5jb250YWlucyh0b3BGcmFtZURvbWFpbikg
JiYgbV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMocmVzb3VyY2VEb21haW4pKTsKK30KKwogT3B0
aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhBZ2VDYWNoZUNhcChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fY2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0KSkKQEAgLTI5Miw2ICszMDMsMTggQEAgdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0
eUNvb2tpZUJsb2MKICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBibG9ja2lu
Z01vZGU7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRBcHBCb3VuZERvbWFp
bnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQoreworICAgIG1fYXBwQm91
bmREb21haW5zID0gV1RGTW92ZShkb21haW5zKTsKKyAgICBzZXRUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5B
cHBCb3VuZERvbWFpbnMpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRB
cHBCb3VuZERvbWFpbnMoKQoreworICAgIG1fYXBwQm91bmREb21haW5zLmNsZWFyKCk7CisgICAg
c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlOjpBbGwpOworfQorCiBPcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHks
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2Fn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdlSUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhM
aW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2UuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgK
aW5kZXggMTM5MWRlZDRkODhlZGIyNzYwMmY2OWMwNmQyZmExMzgwZGI4MjdkNC4uMTk2ODVmMWI1
ZWU0NGNkMzZjYWQ1N2E1ZWE3ZDFiNjQ2ZWJiZGY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC03Nyw3
ICs3Nyw3IEBAIHN0cnVjdCBTYW1lU2l0ZUluZm87CiBlbnVtIGNsYXNzIEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kgOiB1aW50OF90OwogZW51bSBjbGFzcyBJbmNsdWRlU2VjdXJlQ29va2llcyA6IGJv
b2w7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgOiBib29sOwotZW51bSBjbGFz
cyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdCB7IEFsbCwgQWxsT25TaXRl
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIE9ubHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeSB9
OworZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdCB7IEFs
bCwgQWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywgQWxsT25TaXRlc1dpdGhvdXRVc2Vy
SW50ZXJhY3Rpb24sIE9ubHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeSB9OwogZW51bSBjbGFz
cyBTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA6IGJvb2wgeyBZZXMsIE5vIH07CiBl
bnVtIGNsYXNzIEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIDogdWludDhfdCB7IEFs
bEJ1dENvb2tpZXMsIE5vbmUsIEFsbEJ1dENvb2tpZXNMaXZlT25UZXN0aW5nVGltZW91dCwgQWxs
QnV0Q29va2llc1JlcHJvVGVzdGluZ1RpbWVvdXQgfTsKIGVudW0gY2xhc3MgU2hvdWxkQXNrSVRQ
IDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTk1LDYgKzk1LDkgQEAgcHVibGljOgogY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICB1c2lu
ZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5n
IFN1YlJlc291cmNlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBwZXJtaXRQcm9jZXNzVG9Vc2VDb29raWVBUEkoYm9v
bCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgcHJvY2Vzc01heVVzZUNvb2tpZUFQ
SSgpOwogCkBAIC0xOTYsNiArMTk5LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVz
b3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllcik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNv
cmF0aW9uRm9yVGVzdGluZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0QXBwQm91bmREb21haW5z
KCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTI0MSw3ICsyNDYsOCBAQCBwcml2YXRlOgogCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faXNSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGZhbHNlOwotICAgIE9wdGlvbmFsPFNlY29uZHM+IGNs
aWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xp
ZW50U2lkZUNvb2tpZUNhcChjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJk
UGFydHlDb29raWVCbG9ja2luZyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291
cmNlRG9tYWluJikgY29uc3Q7CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdp
c3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKICAgICBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2ll
c0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHk7CkBAIC0yNTMsNiArMjU5LDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURv
bWFpbj4gbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7
CiAgICAgYm9vbCBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNl
OwogICAgIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgbV90aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlIHsgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CisgICAgSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtMjc3LDYgKzI4NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gewogICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUsCiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbCwKKyAgICAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywKICAgICAgICAgV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24sCiAgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6Ok9ubHlB
Y2NvcmRpbmdUb1BlckRvbWFpblBvbGljeQogICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA0YjI0Y2U1MTIxMWVm
MWMyMmY2MGEwNmUyYjNmMTNlY2MyZWRjNTllLi4yOWY2ODdjNzc0MWY2ZTU0NDQ4YTZlYTBmMGM3
MGQzYmFkNmVlNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTI2MTQsNyArMjYxNCw3IEBAIFJlZ2lzdHJhYmxlRG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzCiAgICAgVmVjdG9yPERvbWFpbkRhdGE+IGRvbWFpbnMgPSB0aGlzLT5kb21haW5z
KCk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBkb21haW5JRHNUb0NsZWFyR3JhbmRmYXRoZXJpbmc7
CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBkb21haW5zKSB7Ci0gICAgICAgIGlmIChzdGF0
aXN0aWMucmVnaXN0cmFibGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkp
CisgICAgICAgIGlmIChzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihzdGF0aXN0
aWMucmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG9s
ZGVzdFVzZXJJbnRlcmFjdGlvbiA9IHN0ZDo6bWluKG9sZGVzdFVzZXJJbnRlcmFjdGlvbiwgc3Rh
dGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKICAgICAgICAgaWYgKHNob3Vs
ZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZh
dGhlcmluZykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAKaW5kZXggNjUwNjc5NzE5NjIyYWYxMmZhZDVjMTYyZjJjZGRjYWFhYjkwZTQ3
Ni4uYWY1MDA0MWQyMzdiNDBjNzZkNWI0ZDFjNzYwODg5NTNhM2FmOGY1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTk4MCw3
ICs5ODAsNyBAQCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0
YUZvciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5UwogICAgIGF1dG8gb2xkZXN0VXNlcklu
dGVyYWN0aW9uID0gbm93OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmlj
dFdlYnNpdGVEYXRhRm9yIHRvRGVsZXRlT3JSZXN0cmljdEZvcjsKICAgICBmb3IgKGF1dG8mIHN0
YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlm
IChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9t
YWluKCkpCisgICAgICAgIGlmIChzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihz
dGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IHN0ZDo6bWluKG9sZGVzdFVzZXJJbnRlcmFjdGlv
biwgc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKICAgICAgICAgaWYg
KHNob3VsZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JH
cmFuZGZhdGhlcmluZykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKaW5kZXggM2M4NmEzNDYwYmIxMTZlMzc0ODY3OTM5NjQ2YTQ2MTFmOWY0MDE2YS4uMGNk
MzU1ODFiMTYzYTJkOTBjYTllOTFhMmUzOWI4NzBjMDI5ZGViZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTMxNyw2ICszMTcsMTIgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKGNvbnN0IFJlZ2lzdHIKICAgICBtX2RlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBk
b21haW47CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBCb3Vu
ZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQoreworICAgIG1f
YXBwQm91bmREb21haW5zID0gV1RGTW92ZShkb21haW5zKTsKKyAgICBzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJl
dHdlZW5BcHBCb3VuZERvbWFpbnMpOworfQorCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZk5lY2Vzc2FyeSgpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NjgsNiArNTc0LDggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZh
bHVlcygpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX3BhcmFtZXRl
cnMgPSB7IH07CisgICAgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSB7IH07CisgICAg
bV9hcHBCb3VuZERvbWFpbnMuY2xlYXIoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50KQpAQCAtNjUyLDYg
KzY2MCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGVidWdMb2dEb21h
aW5zSW5CYXRjaGVzKGNvbnN0IGNoYXIqIGFjdGlvbiwgYwogICAgICAgICBSRUxFQVNFX0xPR19J
TkZPKElUUERlYnVnLCAiJSIgUFVCTElDX0xPR19TVFJJTkcgIiB0byAoJXtwdWJsaWN9ZCBvZiAl
dSk6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIuIiwgYWN0aW9uLCBiYXRjaE51bWJlciwgbnVtYmVy
T2ZCYXRjaGVzLCBkb21haW5zVG9TdHJpbmcoYmF0Y2gpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiti
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVE
YXRhRGVsZXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKK3sKKyAg
ICByZXR1cm4gIWRvbWFpbi5pc0VtcHR5KCkgJiYgKGRvbWFpbiA9PSBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbiB8fCBtX2FwcEJvdW5kRG9tYWlucy5jb250YWlucyhkb21haW4pKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDQ0ODMzM2M0OWY2M2IyZjE5MjBiODZlMzMyMDU4N2Zj
ZTM1YjY5M2IuLjJkYmU5ZTUwYmFlNDcwZjljODEwNWM1MmM5ZjUwM2FmYmRlZjc0NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTE2OSw2ICsxNjksNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9PSBXZWJD
b3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6WWVzOyB9OwogICAgIHZvaWQg
c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSkgeyBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlID0gbW9kZTsgfQogICAgIHZvaWQgc2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWlu
KFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKSB7IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9t
YWluID0gV1RGTW92ZShkb21haW4pOyB9CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXJlQWxsVGhp
cmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5kZXIoY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KSA9IDA7CkBAIC0yNDksNyArMjUwLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZGVidWdMb2dn
aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdMb2dnaW5nRW5hYmxlZDsgfTsKICAg
ICBib29sIGRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJs
ZWQ7IH0KICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7IH0KLSAgICBSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW4oKSBjb25zdCB7IHJldHVybiBtX3N0YW5kYWxvbmVBcHBsaWNh
dGlvbkRvbWFpbjsgfQorICAgIGJvb2wgc2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRhRGVsZXRp
b24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbWF4TnVtYmVyT2ZSZWN1cnNpdmVDYWxsc0luUmVkaXJlY3RUcmFjZUJhY2sg
eyA1MCB9OwogICAgIApAQCAtMjkxLDYgKzI5Miw3IEBAIHByaXZhdGU6CiAgICAgU2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3QgeyBTaG91bGRJbmNsdWRlTG9j
YWxob3N0OjpZZXMgfTsKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXMgfTsKICAgICBSZWdpc3Ry
YWJsZURvbWFpbiBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiBtX2FwcEJvdW5kRG9tYWluczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAppbmRleCA2OGY1NWM0YzVjZGRlNzVjNmI0MmFiMjJhZjg3MzE5ZWQ2ODY0NmIyLi5lNmIwZGEw
YWIzM2Y3ZjdjYzUzYzYzZDFmMWRhMWU2YWRiZWZlZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNjc4LDYgKzY3OCwzMSBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluKGNvbnN0IFJlZ2lzdAogICAgIH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoaXNFcGhl
bWVyYWwoKSB8fCBkb21haW5zLmlzRW1wdHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBkb21haW5zQ29weSA9IGNy
b3NzVGhyZWFkQ29weShkb21haW5zKTsKKworICAgIGlmIChtX25ldHdvcmtTZXNzaW9uKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldEFwcEJv
dW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9CisKKyAgICBwb3N0VGFzayhbdGhp
cywgZG9tYWlucyA9IFdURk1vdmUoZG9tYWluc0NvcHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAobV9zdGF0
aXN0aWNzU3RvcmUpCisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+c2V0QXBwQm91bmRE
b21haW5zKFdURk1vdmUoZG9tYWlucykpOworICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJv
Y2VzcygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTEyODAsNiArMTMw
NSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJhbWV0
ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VT
ZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisgICAg
ICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+cmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKKyAgICB9CisK
ICAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQog
ICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZh
bHVlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmlu
ZGV4IDEzNTliM2I3ZTc1ZTA5NDUxNDdjOTcyNGE3ZjgwNGZhNTUyYzY3NmUuLjM0NWZkMjg3N2Fj
OWVkMjAzNDkxNDEwZTNiZTAxYzc2MGQ2ZTE4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI3OSw2ICsyNzksNyBAQCBzdHJ1Y3QgVGhpcmRQ
YXJ0eURhdGEgewogICAgIHZvaWQgc2V0U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQo
V2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpOwogICAgIHZvaWQgc2V0
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0QXBwQm91bmREb21h
aW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogCiAgICAgdm9pZCBu
b3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDkyZTlmZGVjOTU1NWFm
YTI0ZDQ0ODg0YjYxYTI3OWNiNDkyZmI4ODAuLjM3Mjk1NzZhMzk4ZDZiOWY2YTVmZmFiMTY3ZDQy
NGIyN2ZmMjc4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0xMzA3LDYgKzEzMDcsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZToKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBh
cHBCb3VuZERvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUo
YXBwQm91bmREb21haW5zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNo
b3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBmb3JFYWNoTmV0d29y
a1Nlc3Npb24oW2VuYWJsZWRdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CkBAIC0xMzE1LDcgKzEz
MjcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZv
clRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKGJsb2NraW5nTW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXgg
ODdlZTQ2NzFlY2IxY2MwNDEzNWUwNjM3ODMzZjVhYTI2NzRkNzFjZC4uMDEyZGQ2NTU3ZDY0MGEx
OGRhNGNlZTkwMmE3OWY0MmJiZmNiZDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjYxLDkgKzI2MSwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFz
SXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OworICAgIHZv
aWQgc2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Np
b25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICBib29sIGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0lUUERhdGFiYXNlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkRG93
bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91
bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDE1ZTE3NjQxZjBkYTFlYjU0NDIxZTBiMmI4YWJkYjU2
OWYyZGJkODcuLjUwYmFlNDM4MmZjZDFiNDkxZDk3NDUyNzA3MTI2MzdkYjhhMjMxY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMTQxLDggKzE0MSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAg
RGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykg
LT4gKCkgQXN5bmMKICAgICBIYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+IChib29sIGhhc0lzb2xh
dGVkU2Vzc2lvbikgQXN5bmMKKyAgICBTZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5zKSAtPiAoKSBBc3luYwogICAgIFNldFNob3Vs
ZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCi0g
ICAgU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCisgICAgU2V0VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06dWludDhfdCBXZWJD
b3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5
bmMKICAgICBTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTpib29sIFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIG1vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDUyN2NhNzlkODEw
OGEyYmNjYmM3MDViNGQwZTY3NGE2Y2U3YWQ2ODIuLjgyYjNiMmNmYjA0YmY1ZWNjOWQ1NWQ1ODc4
MzEzMTg2ZDNkZGVlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTEyMjksNiArMTIyOSw4IEBA
IE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrCiAgICAgbV9kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rp
b25zRW5hYmxlZCA9IHBhcmFtZXRlcnMuZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJs
ZWQ7CiAgICAgbV9hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNG
b3JUZXN0aW5nID0gcGFyYW1ldGVycy5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRS
ZXN0cmljdGlvbnNGb3JUZXN0aW5nOwogCisgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyAmJiAhcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3Vu
ZERvbWFpbnMuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNl
dEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zKSwgW10geyB9KTsKICNpZiBIQVZFKFNFU1NJT05f
Q0xFQU5VUCkKICAgICBhY3RpdmF0ZVNlc3Npb25DbGVhbnVwKCp0aGlzLCBwYXJhbWV0ZXJzKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLmgKaW5kZXggOTI3YWVjM2E3NGFkMWVmY2I1OTQ4YTA0M2Y4MWZj
ZjI5ZjliZWI5ZS4uYjlhY2JkM2IyYTc4NTIzNGQ5YzQwYjU3ZDgzNjMzZTYyYWM2NmY2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAgICAg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsg
fTsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFp
bnMgeyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJl
c291cmNlIHsgfTsKICAgICAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CkBAIC02NSw2ICs2Niw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycyB7CiAjZW5kaWYKICAgICAgICAgZW5jb2RlciA8PCBmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZTsKICAgICAgICAgZW5jb2RlciA8PCBzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW47CisgICAgICAgIGVuY29kZXIgPDwgYXBwQm91bmREb21haW5zOwogICAgICAgICBlbmNv
ZGVyIDw8IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgIH0KIApAQCAtMTI3LDYgKzEyOSwx
MSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICBp
ZiAoIXN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKKyAgICAgICAgT3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKKyAgICAgICAgZGVjb2RlciA+PiBhcHBCb3VuZERv
bWFpbnM7CisgICAgICAgIGlmICghYXBwQm91bmREb21haW5zKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKwogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGRlY29kZXIgPj4gbWFudWFs
UHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGlmICghbWFudWFsUHJldmFsZW50UmVzb3VyY2Up
CkBAIC0xNDYsNiArMTUzLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzIHsKICNlbmRpZgogICAgICAgICAgICAgV1RGTW92ZSgqZmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmFwcEJvdW5kRG9tYWlucyksCiAgICAgICAg
ICAgICBXVEZNb3ZlKCptYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAgICAgICAgIH19OwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCmluZGV4IGYwZjVhMTQxYWI3ZmVlY2QyYmU2ODJiYjg4ODVmZTYyODY1
MjcyOWIuLmUyNDJmZjcyMjA5ZmM0MTg3ZjQ3YjU3YmJkZWZmMTFkY2IyM2Y0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlw
ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3
dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCkBAIC02MTcs
NiArNjE4LDMxIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluCiAjZW5kaWYKIH0KIAordm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLQXJyYXlSZWYgb3JpZ2luVVJMc1JlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZ0Z1
bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgUmVmUHRyPEFQSTo6QXJyYXk+IG9yaWdpblVSTHNBcnJheSA9IHRvSW1w
bChvcmlnaW5VUkxzUmVmKTsKKyAgICBzaXplX3QgbmV3U2l6ZSA9IG9yaWdpblVSTHNBcnJheSA/
IG9yaWdpblVSTHNBcnJheS0+c2l6ZSgpIDogMDsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBkb21haW5zOworICAgIGRvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShuZXdTaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1NpemU7ICsraSkgewor
ICAgICAgICBhdXRvKiBvcmlnaW5VUkwgPSBvcmlnaW5VUkxzQXJyYXktPmF0PEFQSTo6VVJMPihp
KTsKKyAgICAgICAgaWYgKCFvcmlnaW5VUkwpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgCisgICAgICAgIGRvbWFpbnMuYWRkKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgVVJM
KFVSTCgpLCBvcmlnaW5VUkwtPnN0cmluZygpKSB9KTsKKyAgICB9CisKKyAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV1RGTW92ZShkb21h
aW5zKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSAoKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGF0
YVN0b3JlUmVmKTsKKyAgICBVTlVTRURfUEFSQU0ob3JpZ2luVVJMc1JlZik7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IGY5YTM4MjM3
ZmYzODc5ZjcwYzIyOTE4NGI1ZTZlMjdmNjk0ZDRjNDAuLjRiMDZmZmMxOWRiMmQ2OWEyMmQ5NGYw
MTc5ZDgzOTNjNTY5ZGZjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMjksNiArMTI5LDggQEAgdHlwZWRl
ZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHlXZWJzaXRlRGF0YVIKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRl
c3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxl
dGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9u
KSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVz
dGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0
TmFtZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5k
RG9tYWluc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VY
UE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3Rpbmco
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tBcnJheVJlZiBvcmlnaW5VUkxz
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNG
b3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiko
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCBjMTU3N2I4ZDhmMmU2ODk3NGYxNzVlZGJmMGM5M2I2ZmJjNzUyM2Y5Li5j
OTE4NDlkMWZkMWI4NjczYWFjNDNjZDA0YTkzNGExMzg2OTBkYjVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTExMzYsNiArMTEzNiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0lzb2xh
dGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZwogICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc0lzb2xhdGVkU2Vzc2lv
bihzZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mIGFwcEJvdW5kRG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3Moc2Vzc2lvbklELCBhcHBCb3VuZERvbWFpbnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewpA
QCAtMTE0OCw5ICsxMTUzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRE
b3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb20KICAgICB9KTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5n
KHNlc3Npb25JRCwgYmxvY2tpbmdNb2RlKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShzZXNz
aW9uSUQsIGJsb2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IGUwN2NmOTkwNDk4YjZiMDgwYjU1Y2I5MmVhMTVkMzhiNzY0YjI0ZGMuLjcx
ZWUzYmY0OWEwOGIzNGE0N2U3Y2Y0MWQyM2NmOTQ4M2M1YTVlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0x
NzUsOCArMTc1LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVs
ZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9p
ZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRBcHBC
b3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDIyNGE1YTIwYWQxMWNhNTljM2IzMDQzMzc2M2QyNDAxMzNkZWE3NWYu
LjkyNGNkN2I1YWRjYWNmMWEzNjY1YTFhYWM2YmE4MWVmMzNjNzRkMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYwNSw4ICs2MDUsOSBAQCBOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vi
c2l0ZURhdGFTdG9yZSogd2l0aAogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU6OkFsbDsKICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50RW5hYmxlZCBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IFdlYkNvcmU6
OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObzsKICNlbmRpZgotICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CiAg
ICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTo6QWxsQnV0Q29va2llczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4geyB9OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWlucyB7IH07CiAgICAgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogICAgIFdFQl9QUk9DRVNT
X1BPT0xfQURESVRJT05TXzIKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsKQEAgLTYy
NCw2ICs2MjUsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAgICAgICAg
ICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9
IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAgICBhcHBCb3VuZERvbWFp
bnMgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuYXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3Vy
Y2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjUwLDYgKzY1
Miw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3Jr
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlOwogICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5h
cHBCb3VuZERvbWFpbnM7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5t
YW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQogCkBAIC02ODksNiArNjkyLDggQEAg
TmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNz
KFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEVuYWJsZWQsCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUsCisgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwKKyAgICAgICAgYXBwQm91
bmREb21haW5zLAogICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSwKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1MGMwYmY5
ODJmZDM3YzdkYzM4N2I4OTg5Yzg3MjY3YzljYTVmMjdmLi4zYWE5OTRhYzk1MWViYWQxOWQ1ZWY4
NzQ4MjdhYTc0MTZiNTQ2YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKQEAgLTQ1OCw5ICs0NTgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90
aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZQog
ICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCIsIG1lc3NhZ2VCb2R5KTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0
aW5nKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSwgW2FjdGl2
aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OnNl
dFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nIl9zKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
aW5kZXggYzFlM2ExNGFlNDhjNzk4YWNlZjc1OTA0ZjU1YmI2OTJmNDA2NWJiMi4uNTFiZjlmZGZh
YTRkODI4ZDZjZWI3Y2ZmNmQ3NWRiMzQ3ZDZjMjM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTIxOSw3ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zp
bmlzaGVkKCk7CiAgICAgc3RhdGljIHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0
cmFibGVEb21haW5zRmluaXNoZWQoKTsKIAotICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llc0ZvclRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBlbmFibGVT
dWRkZW5UZXJtaW5hdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmlu
ZGV4IGYzNDIzYTkyYWJhZDliZmFhMGY4ZWVkOTIxMmJlMGEyYTdjNWQ0MDQuLmNmNTAzYzhlYTQ4
NzM4MDljOGE3MDBjYjEyY2FkMmExNTM0Y2ZjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KQEAgLTQzMyw2ICs0MzMsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omlu
aXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVpbgog
ICAgICAgICAgICAgICAgIFdFQlNJVEVfREFUQV9TVE9SRV9BRERJVElPTlMKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmIChpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCisgICAgICAgICAg
ICAgICAgc2V0QXBwQm91bmREb21haW5zRm9ySVRQSWZJbml0aWFsaXplZChbXSB7IH0pOwogICAg
ICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTQ0NCw2ICs0NDYsOCBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IEhhc2hTZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gSG9wcGluZyB0byB0aGUg
YmFja2dyb3VuZCB0aHJlYWQgdGhlbiBiYWNrIHRvIHRoZSBtYWluIHRocmVhZAorICAgIC8vIGVu
c3VyZXMgdGhhdCBpbml0aWFsaXplQXBwQm91bmREb21haW5zKCkgaGFzIGZpbmlzaGVkLgogICAg
IGFwcEJvdW5kRG9tYWluUXVldWUoKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoaGFzSW5pdGlhbGl6ZWRBcHBC
b3VuZERvbWFpbnMpOwpAQCAtNDg0LDYgKzQ4OCwyNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmdldEFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8
VwogICAgIH0pOwogfQogCitPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgp
Cit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAoIWhhc0luaXRpYWxp
emVkQXBwQm91bmREb21haW5zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBhcHBCb3VuZERvbWFpbnMoKTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRB
cHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykgeworICAgICAgICBpZiAo
ZG9tYWluLnN0cmluZygpICE9ICJsb2NhbGhvc3QiX3MgJiYgZG9tYWluLnN0cmluZygpICE9ICIx
MjcuMC4wLjEiX3MpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgYXBwQm91bmREb21haW5zKCkgPSBX
VEZNb3ZlKGRvbWFpbnMpOworICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zID0gdHJ1
ZTsKKyAgICBzZXRBcHBCb3VuZERvbWFpbnNGb3JJVFBJZkluaXRpYWxpemVkKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZWluaXRpYWxp
emVBcHBCb3VuZERvbWFpbnMoKQogewogICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5z
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGUzNjM3NmM1ZWQyZjI5N2FkYTQ0MTUwYWNi
NTAzOTcwZWExYzJkYzguLjUwZjRlNDQ3MGU0NzEyODRiYjczM2YwNzQ1NjcxMjliZmE0YzFkMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xODU4LDIwICsxODU4LDI0IEBAIFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgV2Vic2l0ZURhdGFTdG9yZTo6dGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nCiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwg
Ym9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIGNhbGxiYWNrQWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5n
TW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6Ok9ubHlBY2NvcmRp
bmdUb1BlckRvbWFpblBvbGljeTsKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgYmxvY2tpbmdN
b2RlID0gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uID8gV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24g
OiBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CisgICAgc2V0VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01vZGUsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxv
Y2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNy
ZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgaWYgKHRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUoKSAhPSBibG9ja2luZ01vZGUpIHsKICAgICAgICAgbV90aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlID0gYmxvY2tpbmdNb2RlOwogICAgICAgICBmb3IgKGF1dG8mIHdl
YlByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHdlYlByb2Nlc3Muc2V0U2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoYmxvY2tpbmdNb2RlLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAg
ICAgIHdlYlByb2Nlc3Muc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01v
ZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgYmxvY2tpbmdNb2RlLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
KyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKG1fc2Vzc2lvbklELCBibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMjIyNSw2ICsy
MjI5LDEzIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBh
cmFtZXRlcnMoKQogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZSA9IGZhbHNlOwogICAgIGF1dG8gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0
Q29va2llczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW4geyB9OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGFwcEJvdW5kRG9tYWluczsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIG9wdGlvbmFs
QXBwQm91bmREb21haW5zID0gZ2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpOworICAg
IGlmIChvcHRpb25hbEFwcEJvdW5kRG9tYWlucyAmJiBpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVu
YWJsZWQpCisgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9ICpvcHRpb25hbEFwcEJvdW5kRG9tYWlu
czsKKyNlbmRpZgogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAKICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyA9IHsK
QEAgLTIyNDUsNiArMjI1Niw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVE
YXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZDo6Tm8sCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUsCisgICAgICAgIFdURk1vdmUoc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9t
YWluKSwKKyAgICAgICAgV1RGTW92ZShhcHBCb3VuZERvbWFpbnMpLAogICAgICAgICBXVEZNb3Zl
KHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAgICAgfTsK
IApAQCAtMjQyNCw0ICsyNDM3LDM5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVuYW1lT3Jp
Z2luSW5XZWJzaXRlRGF0YShVUkwmJiBvbGROYW1lLCBVUkwmJiBuZXdOYW1lLCBPCiAgICAgfQog
fQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldEFwcEJv
dW5kRG9tYWluc0ZvcklUUElmSW5pdGlhbGl6ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2Fs
bGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IGF1dG8gYXBwQm91bmREb21haW5zID0gZ2V0QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgp
OworICAgIGlmICghYXBwQm91bmREb21haW5zKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHByb3BhZ2F0ZUFwcEJvdW5kRG9tYWlucyA9IFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSAoV2Vic2l0ZURhdGFTdG9yZSogc3RvcmUsIGNvbnN0IEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKSB7CisgICAgICAgIGlm
ICghc3RvcmUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0b3JlLT50aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgIT0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucykKKyAgICAgICAgICAg
IHN0b3JlLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIFtj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwor
CisgICAgICAgIHN0b3JlLT5zZXRBcHBCb3VuZERvbWFpbnNGb3JJVFAoZG9tYWlucywgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAg
fTsKKworICAgIHByb3BhZ2F0ZUFwcEJvdW5kRG9tYWlucyhnbG9iYWxEZWZhdWx0RGF0YVN0b3Jl
KCkuZ2V0KCksICphcHBCb3VuZERvbWFpbnMpOworCisgICAgZm9yIChhdXRvKiBzdG9yZSA6IG5v
bkRlZmF1bHREYXRhU3RvcmVzKCkudmFsdWVzKCkpCisgICAgICAgIHByb3BhZ2F0ZUFwcEJvdW5k
RG9tYWlucyhzdG9yZSwgKmFwcEJvdW5kRG9tYWlucyk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFj
a0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1
dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAg
ICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhtX3Nlc3Npb25JRCwgZG9tYWlucywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorI2VuZGlmCisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAppbmRleCBjZDY3ZWI1ODJmZGI5NWJhOWYyMTgwNDgyNDRhZWVjYjNjMzkwM2Zh
Li5jZGI4ZmNkMWY1MWFkNDQ0YmIxMjExMDc5NTU4NmJlMTlkYmFlYzVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CkBAIC0xOTksNiArMTk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9u
Rm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBj
b25zdDsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVS
ZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1Nob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRl
c3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tp
ZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBA
IC0yOTYsNiArMjk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QXBwQm91bmREb21haW5zKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCBlbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYpPiYmKSBjb25zdDsKICAgICB2b2lkIHJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucygpOwor
ICAgIHN0YXRpYyB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZvcmNlUmVpbml0aWFsaXphdGlvbiA6IGJvb2wg
eyBObywgWWVzIH07CkBAIC0zMzEsNiArMzMzLDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1h
eWJlUmVnaXN0ZXJXaXRoU2Vzc2lvbklETWFwKCk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGdl
dEFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIGNv
bnN0IHN0ZDo6YXRvbWljPGJvb2w+IGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxlZCA9IGZh
bHNlOworICAgIHN0YXRpYyB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvcklUUElmSW5pdGlhbGl6
ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9t
YWluc0ZvcklUUChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKKwogICAgIGNvbnN0IFBBTDo6U2Vz
c2lvbklEIG1fc2Vzc2lvbklEOwogCiAgICAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uPiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCA1OTM2NmMwYjJlZTY1MDE3NzQxNzk3YjI0ZDdiMGM5YzAzMzA0Zjkw
Li4zZTNiZTJmMTgzN2JiN2I1NTU2MDRkMmUwNmJiNmZjMmYyZGVmOTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xODk4LDcgKzE4OTgsNyBAQCBib29sIFdl
YlByb2Nlc3M6OmFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCkgY29uc3QKIH0KIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFdlYlByb2Nlc3M6OnNldFNob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDE4OWIzNGFmMzQ3OGQ3NWFlNjM5ZDk3MmRm
NzkwZTcwMTRjYzdiMDQuLmI4YzllN2M5NTMyMTYxZTAwZWNmNGQ4MDc1NmQxZDI3YmRhZTI5Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDU4LDcgKzQ1OCw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhXZWJD
b3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29uc3Qg
QXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlMGZlZTBiMDRk
ZTY5YzY2MWM1OWVmNzBlNjZlYzcwMDQ4Y2JlMmQ1Li4xMTQ5YmYwODk4NjY1ZmNjNWY3YzBmNTBm
ZmI3YzU3YTU0OGVhNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTU3LDcgKzE1Nyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIFNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGlu
ZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90
aWZpY2F0aW9uKSAtPiAoKSBBc3luYwotICAgIFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNGb3JUZXN0aW5nKGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKKyAgICBTZXRUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
SU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQ4NjM4ODMyZjJmZGE5ZmM2NmQxZjg4ODhhMDllN2Q4YzQ3MjlhODEuLmZiODEyOGI3ZGMzZTRh
MmNlZGY1OGE4MmU2MjU2NmU3MzNiYjVlYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wNS0wNCAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeGVtcHQgYXBwLWJvdW5k
IGRvbWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gYW5kIHRoaXJkLXBhcnR5
IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3NAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBUZXN0UnVubmVyIGZ1bmN0aW9uCisgICAgICAg
IHNldEFwcEJvdW5kRG9tYWluKCkgd2hpY2ggdGFrZXMgYW4gYXJyYXkgb2Ygb3JpZ2luCisgICAg
ICAgIHN0cmluZ3MgYW5kIHNldHMgdGhlbSB0byBhcHAtYm91bmQgZG9tYWlucy4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2Fn
ZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0QXBwQm91bmREb21haW5z
KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJh
Y2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0QXBwQm91bmREb21haW5zKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpkaWRTZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKwogMjAyMC0wNS0wNCAgQmVuIE5oYW0gIDxuaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbmRleGVkREIgV0FMIGZpbGUga2VlcHMgZ3Jvd2luZyB3
aGlsZSBhcHAgaXMgaW4gdXNlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA1Y2JlOTUx
NjJlZDdjZDc0NzI3NDM2MDBmY2QzYzJlNGE5YWU4Mzk1Li5hMTlkZjk1ZjY0MDU1YmVkYjA1Mjdk
MGRjYWJjNzg2ZmYwN2Q0NzhkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM5Myw3
ICszOTMsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCByZXNldE1vY2tNZWRp
YURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1bnNpZ25lZCBs
b25nIG9yaWVudGF0aW9uKTsKICAgICBib29sZWFuIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJFbmFibGVkKCk7CisKICAgICBib29sZWFuIGhhc0FwcEJvdW5kU2Vzc2lvbigpOworICAg
IHZvaWQgc2V0QXBwQm91bmREb21haW5zKG9iamVjdCBvcmlnaW5zQXJyYXksIG9iamVjdCBjYWxs
YmFjayk7CiAKICAgICB2b2lkIGluamVjdFVzZXJTY3JpcHQoRE9NU3RyaW5nIHN0cmluZyk7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdXNlclNjcmlwdEluamVjdGVkQ291
bnQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDEwZTZlZTNmNzFmMzIxNmZiNDc2MWVlZWVjNjU3MDBi
M2YyYzBjMGYuLmZlNWQ3NTc0ZDcxZjMzY2VjYWFhMmM3NmFjNzE0NGU4ZWNkMzdmMjcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCkBAIC01MTgsNyArNTE4LDEyIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRp
ZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+cGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldEFwcEJvdW5kRG9tYWlucyIpKSB7CisgICAg
ICAgIG1fdGVzdFJ1bm5lci0+ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1l
c3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXJyb3Ii
KSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJvZHkgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikpOwogICAgIFdLQnVu
ZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UsIGVycm9yTWVzc2FnZU5hbWUuZ2V0KCksIGVycm9yTWVz
c2FnZUJvZHkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNTNkMTFhZDczM2U5MWQ4YzExODQ0YTEwMmYy
NzYzNWQyY2YyMDBhMi4uNGExOGMxODkzNTA3ZDNkNmQzZDRmZmJkZDFiZDA5NDE4NzU1MDViOCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCkBAIC03NjMsNiArNzYzLDcgQEAgZW51bSB7CiAgICAgVGV4dEZpZWxkRGlkQmVn
aW5FZGl0aW5nQ2FsbGJhY2tJRCwKICAgICBUZXh0RmllbGREaWRFbmRFZGl0aW5nQ2FsbGJhY2tJ
RCwKICAgICBDdXN0b21NZW51QWN0aW9uQ2FsbGJhY2tJRCwKKyAgICBEaWRTZXRBcHBCb3VuZERv
bWFpbnNDYWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEID0gMTAwCiB9Owog
CkBAIC0yOTc1LDQgKzI5NzYsNDMgQEAgYm9vbCBUZXN0UnVubmVyOjpoYXNBcHBCb3VuZFNlc3Np
b24oKQogICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdL
Qm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpz
ZXRBcHBCb3VuZERvbWFpbnMoSlNWYWx1ZVJlZiBvcmlnaW5BcnJheSwgSlNWYWx1ZVJlZiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBC
b3VuZERvbWFpbnNDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBKU0NvbnRl
eHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChXS0J1bmRs
ZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFn
ZSgpKSk7CisKKyAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIG9yaWdpbkFycmF5KSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSlNPYmplY3RSZWYgb3JpZ2lucyA9IEpTVmFsdWVUb09i
amVjdChjb250ZXh0LCBvcmlnaW5BcnJheSwgbnVsbHB0cik7CisgICAgc3RhdGljIGF1dG8gbGVu
Z3RoUHJvcGVydHkgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3Ro
IikpOworICAgIEpTVmFsdWVSZWYgb3JpZ2luc0xlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9w
ZXJ0eShjb250ZXh0LCBvcmlnaW5zLCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVsbHB0cik7Cisg
ICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgb3JpZ2luc0xlbmd0aFZhbHVlKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBvcmlnaW5VUkxzID0gYWRvcHRXSyhXS011dGFibGVB
cnJheUNyZWF0ZSgpKTsKKyAgICBhdXRvIG9yaWdpbnNMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBvcmlnaW5zTGVuZ3RoVmFsdWUsIG51bGxwdHIp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdpbnNMZW5ndGg7ICsraSkgeworICAg
ICAgICBKU1ZhbHVlUmVmIG9yaWdpblZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgo
Y29udGV4dCwgb3JpZ2lucywgaSwgbnVsbHB0cik7CisgICAgICAgIGlmICghSlNWYWx1ZUlzU3Ry
aW5nKGNvbnRleHQsIG9yaWdpblZhbHVlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGF1dG8gb3JpZ2luID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBvcmln
aW5WYWx1ZSwgbnVsbHB0cikpOworICAgICAgICBzaXplX3Qgb3JpZ2luQnVmZmVyU2l6ZSA9IEpT
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShvcmlnaW4uZ2V0KCkpICsgMTsKKyAgICAg
ICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4ob3JpZ2luQnVmZmVy
U2l6ZSk7CisgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcob3JpZ2luLmdldCgpLCBvcmln
aW5CdWZmZXIuZ2V0KCksIG9yaWdpbkJ1ZmZlclNpemUpOworCisgICAgICAgIFdLQXJyYXlBcHBl
bmRJdGVtKG9yaWdpblVSTHMuZ2V0KCksIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJp
bmcob3JpZ2luQnVmZmVyLmdldCgpKSkuZ2V0KCkpOworICAgIH0KKworICAgIGF1dG8gbWVzc2Fn
ZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRBcHBCb3Vu
ZERvbWFpbnMiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBvcmlnaW5VUkxzLmdldCgpKTsK
K30KKwordm9pZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCit7
CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFj
a0lEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGY1YjYzNmUwMTg5Y2E3MjQ5
ZjQ2MzY1ZDRkYjY2ZmFjY2M0ZmFhYjAuLmNlODAxYTNiMzJiOWFiZTA3YjhlYWYyODZkZGNkYTRm
YzhkZjQ1YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCkBAIC01MDAsNyArNTAwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c2V0TW9ja01lZGlhRGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9yaWVudGF0aW9u
KHVuc2lnbmVkKTsKICAgICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFi
bGVkKCk7CisKICAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpOworICAgIHZvaWQgc2V0QXBw
Qm91bmREb21haW5zKEpTVmFsdWVSZWYgb3JpZ2luQXJyYXksIEpTVmFsdWVSZWYgY2FsbGJhY2sp
OworICAgIHZvaWQgZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKTsKIAogICAgIHNpemVf
dCB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5qZWN0VXNlclNj
cmlwdChKU1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IGM0ZDU3ZTE4OGI3MDc4ZDQ5MTAxYmVjOTM4OGMwMDEyMzViMGNkODUuLjVlZDc4
MWRmNjZjOGIzMDUzODBiMTM4YjlkOThhNzE3OGQwODZlZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNzc3LDYgKzM3NzcsMTQgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzKFdLU3RyaW5n
UmVmIGhvc3ROYW1lKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzKCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFwcEJvdW5kRG9t
YWlucyhXS0FycmF5UmVmIG9yaWdpblVSTHMpCit7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2Fs
bGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFw
cEJvdW5kRG9tYWluc0ZvclRlc3Rpbmcod2Vic2l0ZURhdGFTdG9yZSgpLCBvcmlnaW5VUkxzLCAm
Y29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5V
bnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+
ZGlkU2V0QXBwQm91bmREb21haW5zKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRp
c3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsKICAgICBSZXNvdXJjZVN0YXRpc3RpY3ND
YWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKaW5kZXggMzM3ZWY2ZTNiNDMwYmUxZDc3NzIyZWFiN2ZlYThjYjIxYWVlZDFj
MS4uMThkZDhiMDYzZjllODE5OGYzMjY5ODBjYzFlNzFmMzYwZTU3NWQ4NyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjY2LDYgKzI2Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wg
dmFsdWUsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sIHZhbHVl
KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhXS1N0cmlu
Z1JlZiBob3N0TmFtZSk7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoV0tBcnJheVJlZiBv
cmlnaW5VUkxzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7
CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDdlYTdkMjAwYWE0NzBjMTEwMmE4MzA5
MGM3OGU0MmRmYjA5NTQ0MWYuLmVhMWE5ZjdmYTA4ZGZlMjJhMGNmYmFhZGVkYWQyN2I3ZTAwMmQw
MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC05OTQs
NiArOTk0LDEzIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlNldEFwcEJvdW5kRG9tYWlucyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNz
YWdlQm9keSkgPT0gV0tBcnJheUdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tBcnJheVJlZiBvcmln
aW5VUkxzID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0QXBwQm91bmREb21haW5zKG9yaWdpblVSTHMp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKQEAgLTIwMTEsNiArMjAxOCwxMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldEFw
cEJvdW5kRG9tYWlucygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldEFw
cEJvdW5kRG9tYWlucyIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpCiB7CiAgICAgbV9zaG91bGREdW1wUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5k
ZXggMWU1NzdkYWE3ZDkwODVkNDA2ZGFhMTczNGNlMDA1YzQyOGQ4M2QzMy4uMjkzNDQwYzM2MWI2
MWQyNDhhM2ZlM2Y5NGMyOGEwNWIxY2Y0OWZkMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaApAQCAtOTAsNyArOTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKIAog
ICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7Ci0gICAgCisKKyAgICB2
b2lkIGRpZFNldEFwcEJvdW5kRG9tYWlucygpOworCiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpOwogCiAgICAgYm9vbCBjYW5PcGVuV2luZG93cygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuT3BlbldpbmRvd3M7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0Njc0NThlMGQ1MmI4YjhjOGE3Mzk1N2MxNmE3
MjRhY2UyMjZiMDliLi43ZDJlODNjODcwNjhkZmYzODI0ZTNmMjRkZTQ1OWE5NDQ5MmM4NDM4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDUtMDQgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5zIGZyb20gSVRQ
J3Mgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcg
YmV0d2VlbiB0aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUwNzY3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMt
ZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9l
eGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2lu
Zy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhl
bXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERv
bWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9u
LWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdl
YnNpdGUtZGF0YS1kZWxldGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21h
aW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sOiBBZGRlZC4KKwogMjAy
MC0wNS0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUYXBwaW5nIHRvIGZvY3VzIGVkaXRhYmxlIGVsZW1lbnRzIHNob3VsZCBzdGFydCBjYXJldCBz
ZWxlY3Rpb24gYXQgd29yZCBib3VuZGFyeQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFp
bnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmIyMzEwYzQ3MWVj
ZWUxZjM0ODFkODg0ZDcyYjgzYjM4ZGYwYTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhl
ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAorVGVzdHMgdGhhdCBhcHAtYm91bmQgZG9t
YWlucyBhcmUgZXhlbXB0IGZyb20gdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJldHdlZW4g
dGhlbXNlbHZlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0tCitGcmFt
ZTogJzwhLS1mcmFtZTEtLT4nCistLS0tLS0tLQorU2hvdWxkIG5vdCByZWNlaXZlIGNvb2tpZS4K
K0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5v
dCByZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUg
ZG9jdW1lbnQuY29va2llOgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUyLS0+JworLS0t
LS0tLS0KK1Nob3VsZCBub3QgcmVjZWl2ZSBjb29raWUuCitEaWQgbm90IHJlY2VpdmUgY29va2ll
IG5hbWVkICdmaXJzdFBhcnR5Q29va2llJy4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQg
J3BhcnRpdGlvbmVkQ29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZToKKworLS0t
LS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMy0tPicKKy0tLS0tLS0tCitTaG91bGQgcmVjZWl2ZSBj
b29raWUuCitSZWNlaXZlZCBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5v
dCByZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUg
ZG9jdW1lbnQuY29va2llOiBmaXJzdFBhcnR5Q29va2llPXZhbHVlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9h
cHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNo
LW90aGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxv
Y2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I1ODVmZmMyZGI1YjJl
MmMzN2VlNjI3YzgwNWFkNmE2N2Q0ZThmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3Vu
ZC1kb21haW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIu
aHRtbApAQCAtMCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4K
KzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYXBwLWJvdW5kIGRvbWFpbnMgYXJlIGV4ZW1w
dCBmcm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMuIik7
CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBmaXJzdFBhcnR5T3JpZ2lu
ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHRoaXJkUGFydHlSZXNvdXJjZVVy
bCA9IHRoaXJkUGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2Vz
IjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2llIjsK
KyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gIi9zZXQtY29va2llLnBo
cD9uYW1lPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNv
bnN0IHBhcnRpdGlvbmVkQ29va2llTmFtZSA9ICJwYXJ0aXRpb25lZENvb2tpZSI7CisgICAgY29u
c3Qgc3ViUGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUgPSAiL3NldC1jb29raWUucGhwP25hbWU9
IiArIHBhcnRpdGlvbmVkQ29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHJl
dHVyblVybCA9IGZpcnN0UGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENvb2tpZXMg
PSAiL2dldC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAiJm5h
bWUyPSIgKyBwYXJ0aXRpb25lZENvb2tpZU5hbWU7CisgICAgY29uc3QgcmVkaXJlY3RDaGFpblVy
bCA9IHRoaXJkUGFydHlSZXNvdXJjZVVybCArICIvcmVkaXJlY3QucGhwP3JlZGlyZWN0VG89IiAr
IHRoaXJkUGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXM7CisKKyAgICBmdW5j
dGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQu
c3JjID0gdXJsOworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxl
bWVudC5vbmxvYWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAg
ICAgICBjYXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1wYXJ0eSBj
b29raWUgZm9yIGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5o
cmVmID0gdGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tp
ZSArICIjIiArIHJldHVyblVybCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0
IHRoZSBjb29raWUgZG9lc24ndCBnZXQgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAu
MSBzaW5jZSBvbmx5IGxvY2FsaG9zdCBpcyBjb25maWd1cmVkIGFzIGFuIGFwcC1ib3VuZCBkb21h
aW4uCisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBCb3VuZERvbWFpbnMoWyB0aGlyZFBhcnR5
T3JpZ2luIF0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRo
aXJkUGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hv
dWxkIG5vdCByZWNlaXZlIGNvb2tpZS4iLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDMi
OgorICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBkb2Vzbid0IGdldCBz
ZW50IGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIHNpbmNlIG9ubHkgMTI3LjAuMC4xIGlz
IGNvbmZpZ3VyZWQgYXMgYW4gYXBwLWJvdW5kIGRvbWFpbi4KKyAgICAgICAgICAgICAgICBkb2N1
bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA0IjsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldEFwcEJvdW5kRG9tYWlucyhbIGZpcnN0UGFydHlPcmlnaW4gXSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3Vi
UGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgbm90IHJlY2VpdmUgY29va2llLiIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgdGhhdCB0aGUgY29va2llIGdldHMgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAu
MSBzaW5jZSB0aGV5IGFyZSBub3cgYm90aCBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBkb21haW5z
LgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDUiOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXBwQm91bmREb21haW5zKFsgZmlyc3RQYXJ0eU9y
aWdpbiwgdGhpcmRQYXJ0eU9yaWdpbiBdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVz
ICsgIiZtZXNzYWdlPVNob3VsZCByZWNlaXZlIGNvb2tpZS4iLCBydW5UZXN0KTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNz
dGVwNSI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llcyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGls
ZEZyYW1lc0FzVGV4dCgpOworICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJz
dGVwMSI7CisgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIH0pOworICAgIH0gZWxzZSB7
CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0
YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1l
eGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg4ZTQ1ZDdmMTk5YTNjNjlhYmMxZWExNWYxNzkzMjk5ZmI3N2Q2NWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0NoZWNr
IHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9m
IG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYXBwLWJvdW5kLgorCitCZWZv
cmUgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246
IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVy
LXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5
IGRvZXMgZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitB
ZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBD
bGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVy
LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkg
ZG9lcyBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEt
ZGVsZXRpb24tZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9t
LXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0ZTY3MWIw
YjgzM2EwZTViYTJkYTY4MDk0YjNjZjA1M2VkMjAxYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9h
cHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJh
c2UuaHRtbApAQCAtMCwwICsxLDI1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCki
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90
IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhl
IHdlYnNpdGUgaXMgYXBwLWJvdW5kLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rp
dj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFz
ZSh0cnVlKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29v
a2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29r
aWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tp
ZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAgICBhID0g
YS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAgICAg
IHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAg
bGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxl
bWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxl
bWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlv
bikgeworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAg
ICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBpZiAoIWNv
b2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgYWRkT3V0cHV0KChpc0FmdGVyRGVsZXRpb24gPyAi
QWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8gY29v
a2llcyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0
dHBPbmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIg
ZGVsZXRpb246ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNv
b2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAi
QmVmb3JlIikgKyAiIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
Iik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xp
ZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3Nl
ZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAi
IGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0
U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0
ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2Vk
TWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERh
dGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgewor
ICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3Vs
ZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAg
ICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAg
ICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3Jl
bWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAg
ICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1heEludGVy
dmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQgY2hlY2tJ
REJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhpc3Rz
KGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7CisgICAg
ICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJhY2sgPSBj
YWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8v
IENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZh
bElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFw
aG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50
ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFs
IGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAg
ICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7
CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5
IGNoZWNrcyBleGhhdXN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJD
b3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
b251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIg
ZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlE
QkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNr
KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJM
b2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7CisgICAgbGV0
IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VOYW1l
ID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVlIjsKKyAgICBm
dW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNr
KSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7CisgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVy
RGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExvY2FsU3Rv
cmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVy
dmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxv
Y2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJ
bnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAg
ICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFn
ZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2Vz
IG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3Rv
cmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlv
bjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8g
ImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGls
IHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdl
SW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlm
ICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQp
OworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShs
b2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBk
ZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZh
bHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJU
ZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9y
YWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3Rv
cmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRP
dXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0g
bG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9CisgICAgfQorCisgICAg
YXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICAv
LyBXcml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2Vz
L3NldC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5h
bWUsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZldGNo
KCIvY29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1D
b29raWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlh
bHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNp
ZGVDb29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworCisg
ICAgICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRl
bShsb2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gV3Jp
dGUgSW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1dl
YnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9j
ZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hl
Y2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSk7
CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBy
ZXNldENvb2tpZXMoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAi
OworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1
ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBCb3VuZERvbWFp
bnMoWyBvcmlnaW5VbmRlclRlc3QgXSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUodHJ1
ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCwgdHJ1ZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZG4ndCBnZXQg
Y2xhc3NpZmllZCBhcyBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlu
cy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBw
LWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44OGU0NWQ3ZjE5OWEzYzY5YWJjMWVhMTVmMTc5MzI5OWZiNzdkNjVm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vi
c2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0
aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBu
byB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKworQmVmb3Jl
IGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBI
dHRwT25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1z
aWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBk
b2VzIGV4aXN0LgorQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0
ZXIgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xp
ZW50LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1z
aWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRv
ZXMgZXhpc3QuCitBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4
ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRl
bGV0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTA0Nzk1ZWFkNmE5NjUxM2Y2MjMxNTNiMzVm
YjY4NTMyNmZiNzEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhl
bXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyNTUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMv
cmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVj
ayB0aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBv
ZiBubyB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC48L2Rpdj4K
Kzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNv
bnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29u
c3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1
bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNl
KCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBi
ID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVh
a1RvT3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4
dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAg
IGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2ll
cyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgp
CisgICAgICAgICAgICBhZGRPdXRwdXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVm
b3JlIikgKyAiIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIp
OworICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dp
dGNoIChjb29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVO
YW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNo
KChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiAr
IChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4i
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2
ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIg
ZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2ll
TmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVz
aCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENs
aWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7
CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRN
ZXNzYWdlcykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisg
ICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCBy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBp
bmRleGVkREIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAg
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7
CisgICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFj
aygpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisK
KyAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOwor
ICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0g
ZmFsc2U7CisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0
aW9uLCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxD
b3VudGVySURCID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAg
ICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwg
dGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRl
cnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2sp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJ
REJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJ
REIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZv
cmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hl
Y2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4u
CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgi
QmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJ
REJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAg
IGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGV4aGF1
c3RlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3Blbihk
Yk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4g
aW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5l
eHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4
aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsK
KyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7Cisg
ICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNr
TG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAg
aW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49
IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNr
TG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9
IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAo
dmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4
aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xv
Y2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3Jh
Z2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9l
cyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9y
YWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8g
TG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0g
c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxD
b3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5h
bWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2Nh
bFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIg
OiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0o
bG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIg
ZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VW
YWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlv
biB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tp
ZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25s
eS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50
aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jl
c291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZl
clNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3Jp
Z2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUg
KyAiPTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3Jp
dGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFn
ZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlz
dHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIu
CisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9j
ZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxs
U3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRD
b250aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRh
QW5kQ29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hl
Y2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hl
Y2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygp
OworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25z
dCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEFwcEJvdW5kRG9tYWlucyhbIG9yaWdpblVu
ZGVyVGVzdCBdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZGlkbid0IGdldCBjbGFzc2lmaWVkIGFz
IHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFB
bmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398541</attachid>
            <date>2020-05-05 12:36:34 -0700</date>
            <delta_ts>2020-05-05 17:30:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200505123634.patch</filename>
            <type>text/plain</type>
            <size>98277</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE0OGY4ZmYwNWRkNTIx
MWY4MzU5NDVjM2ZmYWYxZGMzYTlmMzkxZS4uNTYyNTlkZWViMTQ5MWY4ZWU2YTQ0MmViNTIxZTVk
ODY4ZThlZjU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA1LTA1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91
bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFy
dHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIHRvIGFsbG93IGl0IHRvIGV4ZW1wdAorICAgICAgICBhcHAtYm91bmQgZG9tYWlucyBm
cm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KKworICAgICAgICBUZXN0czogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFp
bnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24t
ZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0
ZS1kYXRhLWRlbGV0aW9uLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpyZXNldEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKwogMjAyMC0wNS0wNSAgVGltb3RoeSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgIkVzc2VudGlhbCBTa2Vs
ZXRvbiIgZG9lcyBub3QgcmVzcG9uZCB0byBtb3VzZSBldmVudHMsIG9ubHkgdG91Y2ggZXZlbnRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDFhYWM3OGZmNzQ5YzczZjM2MTAyNjY1OGM3NGU4NjkyMjhlZmY2OWYuLjE5
NjdhZmVmNDVlZmMzZmYyYjY4MjgwZTEwMjIwYjJhMzVlZWM3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTA0IEBACisyMDIwLTA1LTA1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUg
ZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhl
bXNlbHZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBmb3J3YXJkcyBp
bmZvcm1hdGlvbiBhYm91dCBhcHAtYm91bmQgZG9tYWlucyB0byBJVFAgYW5kIHdlYgorICAgICAg
ICBwcm9jZXNzZXMgc28gdGhhdCB0aGV5IGNhbiBiZSBleGVtcHQgZnJvbSB3ZWJzaXRlIGRhdGEg
ZGVsZXRpb24gYW5kCisgICAgICAgIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVu
IHRoZW1zZWx2ZXMuCisKKyAgICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgYXJlIGNvbmZpZ3VyZWQg
c3RhdGljYWxseSBhbmQgYXBwbHkgdG8gYWxsIHdlYnNpdGUKKyAgICAgICAgZGF0YSBzdG9yZXMu
IFRoZXJlZm9yZSB0aGUgc2V0dGluZyBuZWVkcyB0byBiZSBmb3J3YXJkZWQgdG8gYWxsCisgICAg
ICAgIHdlYnNpdGUgZGF0YSBzdG9yZXMgYW5kIElUUCBmdW5jdGlvbmFsaXR5IGluIGFsbCBuZXR3
b3JrIGFuZCB3ZWIKKyAgICAgICAgY29udGVudCBwcm9jZXNzZXMuIFRoaXMgaXMgZG9uZSB0aHJv
dWdoIHRoZSBuZXcgc3RhdGljIGZ1bmN0aW9uCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dEFwcEJvdW5kRG9tYWluc0ZvcklUUElmSW5pdGlhbGl6ZWQoKS4KKworICAgICAgICBTaW5jZSBh
cHAtYm91bmQgZG9tYWlucyBhcmUgbG9hZGVkIGxhemlseSBmcm9tIGRpc2sgYW5kIG9uIGEgYmFj
a2dyb3VuZAorICAgICAgICB0aHJlYWQsIHRoaXMgcGF0Y2ggZm9yd2FyZHMgdGhlbSBpbiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyBpZgorICAgICAgICB0aGV5J3ZlIGFscmVhZHkg
YmVlbiBsb2FkZWQuIFRoZW4gZXZlcnkgdGltZSBhcHAtYm91bmQgZG9tYWlucyBhcmUKKyAgICAg
ICAgdXBkYXRlZCwgdGhleSBhcmUgZm9yd2FyZGVkIHRvIElUUC4gVGhpcyBlbnN1cmVzIHRoYXQg
SVRQIHdpbGwgaGF2ZSB0aGVtCisgICAgICAgIGFzIHNvb24gYXMgcG9zc2libGUuCisKKyAgICAg
ICAgU2V0dGluZyBhcHAtYm91bmQgZG9tYWlucyBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBhdXRv
bWF0aWNhbGx5IHN3aXRjaGVzCisgICAgICAgIElUUCdzIGNvb2tpZSBibG9ja2luZyBwb2xpY3kg
dG8gdGhlIG5ldworICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zLgorICAgICAgICBUaGlzIGlzIGRvbmUg
aW4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMoKS4K
KworICAgICAgICBBIG5ldyBmdW5jdGlvbiBpcyBhZGRlZDogV2Vic2l0ZURhdGFTdG9yZTo6Z2V0
QXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpCisKKyAgICAgICAgVGhlIEMgQVBJIGNoYW5n
ZXMgYXJlIGZvciB0ZXN0IHB1cnBvc2VzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNob3VsZEV4ZW1wdEZyb21X
ZWJzaXRlRGF0YURlbGV0aW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJhbWV0ZXJzVG9E
ZWZhdWx0VmFsdWVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldEFw
cEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vz
c2lvbkNvY29hKToKKyAgICAgICAgKiBTaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91
bmREb21haW5zRm9yVGVzdGluZyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgICAgICBDaGFuZ2VkIHRoZSBvcmRl
ciBvZiBjYWxscyB0byBtYWtlIHN1cmUgdGhlIGNvb2tpZSBibG9ja2luZyBwb2xpY3kgaXMgcmVz
ZXQKKyAgICAgICAgICAgIGFmdGVyIHBhcmFtZXRlcnMgYXJlIHJlc2V0LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyk6IERlbGV0ZWQu
CisgICAgICAgICAgICBSZW5hbWVkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUuCisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOiBEZWxl
dGVkLgorICAgICAgICAgICAgUmVuYW1lZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmRE
b21haW5zSWZJbml0aWFsaXplZCk6CisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyBm
ZXRjaGluZyBvZiBhcHAtYm91bmQgZG9tYWlucyB3aXRob3V0IHRyaWdnZXJpbmcKKyAgICAgICAg
ICAgIHRoZSBsYXp5IGxvYWRpbmcuIFRoaXMgaXMganVzdCB0byBhbGxvdyBzcGVjdWxhdGl2ZSBj
b25maWd1cmF0aW9uIG9mIElUUAorICAgICAgICAgICAgcmlnaHQgd2hlbiBpdCdzIGNyZWF0ZWQg
4oCUIGlmIGFueSBhcHAtYm91bmQgZG9tYWlucyBhcmUgYWxyZWFkeSBjb25maWd1cmVkLAorICAg
ICAgICAgICAgZm9yd2FyZCB0aGVtIHRvIElUUCB2aWEgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldEFwcEJvdW5k
RG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyBDb2NvYS1z
cGVjaWZpYyBhbmQgb25seSBhY2NlcHRzIGxvY2FsaG9zdCBhbmQgMTI3LjAuMC4xCisgICAgICAg
ICAgICB0byBiZSBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBkb21haW5zLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JJVFBJZkluaXRpYWxpemVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQ
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZW5hbWVkIHNldFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDIwLTA1LTA1ICBUaW1vdGh5
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICAiRXNzZW50aWFs
IFNrZWxldG9uIiBkb2VzIG5vdCByZXNwb25kIHRvIG1vdXNlIGV2ZW50cywgb25seSB0b3VjaCBl
dmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCBjNTg2NjlmMWNmMmM5YjFjNGI2ZTZlOGM2NDU5
ZGNiYTkxYWY1OGYzLi40OTQzMGFmZjkwOTk4NzM0NzExODhmYjliNWYzOGVhOWJmOGNmNmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCkBAIC0xMzQsNiArMTM0LDggQEAgYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29r
aWVzLAogICAgIHN3aXRjaCAobV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSB7CiAgICAg
Y2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw6CiAgICAgICAgIHJldHVybiB0
cnVlOworICAgIGNhc2UgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0
d2VlbkFwcEJvdW5kRG9tYWluczoKKyAgICAgICAgcmV0dXJuICFzaG91bGRFeGVtcHREb21haW5Q
YWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9ja2luZyhmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJj
ZURvbWFpbik7CiAgICAgY2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNp
dGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbjoKICAgICAgICAgaWYgKCFoYXNIYWRVc2VySW50ZXJh
Y3Rpb25Bc0ZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTE0NSw2ICsxNDcsMTUgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNo
b3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEV4ZW1w
dERvbWFpblBhaXJGcm9tVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluKSBjb25zdAoreworICAgIEFTU0VSVCh0b3BGcmFtZURvbWFpbiAhPSByZXNvdXJjZURv
bWFpbik7CisgICAgaWYgKHRvcEZyYW1lRG9tYWluLmlzRW1wdHkoKSB8fCByZXNvdXJjZURvbWFp
bi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0b3BGcmFt
ZURvbWFpbiA9PSByZXNvdXJjZURvbWFpbiB8fCAobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMo
dG9wRnJhbWVEb21haW4pICYmIG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKHJlc291cmNlRG9t
YWluKSk7Cit9CisKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4
QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICht
X2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2NrQ29va2ll
cyhyZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCkBAIC0yOTIsNiArMzAzLDE2
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9jCiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlID0gYmxvY2tpbmdNb2RlOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykK
K3sKKyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldEFwcEJvdW5kRG9tYWlucygpCit7CisgICAgbV9h
cHBCb3VuZERvbWFpbnMuY2xlYXIoKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIGlmICghbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyB8fCAhcGFnZUlEIHx8IG1fbmF2
aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291cmNlLmlzRW1wdHkoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDEzOTFkZWQ0ZDg4ZWRiMjc2MDJmNjljMDZkMmZhMTM4MGRiODI3
ZDQuLjE5Njg1ZjFiNWVlNDRjZDM2Y2FkNTdhNWVhN2QxYjY0NmViYmRmNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaApAQCAtNzcsNyArNzcsNyBAQCBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogZW51bSBjbGFzcyBI
VFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9v
bDsKLWVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3QgeyBB
bGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9QZXJE
b21haW5Qb2xpY3kgfTsKK2VudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6
IHVpbnQ4X3QgeyBBbGwsIEFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIEFsbE9uU2l0
ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kg
fTsKIGVudW0gY2xhc3MgU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgOiBib29sIHsg
WWVzLCBObyB9OwogZW51bSBjbGFzcyBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA6
IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBBbGxCdXRDb29raWVzTGl2ZU9uVGVzdGlu
Z1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3RpbmdUaW1lb3V0IH07CiBlbnVtIGNsYXNz
IFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC05NSw2ICs5NSw5IEBAIHB1Ymxp
YzoKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKKyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGVybWl0UHJvY2Vzc1RvVXNl
Q29va2llQVBJKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHByb2Nlc3NN
YXlVc2VDb29raWVBUEkoKTsKIApAQCAtMTk2LDYgKzE5OSw4IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJv
bVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFn
ZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fk
c1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldEFw
cEJvdW5kRG9tYWlucygpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0yNDEsNyArMjQ2LDggQEAg
cHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9v
bCBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBPcHRpb25h
bDxTZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBm
aXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIE9wdGlvbmFs
PFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRXhlbXB0RG9tYWlu
UGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgVG9wRnJhbWVEb21haW4mLCBj
b25zdCBTdWJSZXNvdXJjZURvbWFpbiYpIGNvbnN0OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3I7CiAg
ICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3I7CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdp
c3RyYWJsZURvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5OwpAQCAtMjUzLDYg
KzI1OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
UmVnaXN0cmFibGVEb21haW4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZh
bGVudFJlc291cmNlOwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9uVGVz
dE1vZGUgPSBmYWxzZTsKICAgICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bCB9OworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fYXBwQm91bmREb21haW5zOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI3Nyw2ICsyODQsNyBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAogICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsCiAgICAgICAg
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0
VXNlckludGVyYWN0aW9uLAogICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlOjpPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kKICAgICA+OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXgg
MWI3YTdjZmNmNTM3YWMyYmM5OWY2ODYyMjQwNzc3NjAyMGZjZGU0NC4uMzFlOTE5OTg2NTg2MDAy
MzFkNjRjYmMwNDkzMDFjYzVjM2FmNWI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNjIxLDcgKzI2MjEsNyBAQCBS
ZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhcwogICAgIFZlY3RvcjxEb21haW5EYXRhPiBkb21haW5zID0g
dGhpcy0+ZG9tYWlucygpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gZG9tYWluSURzVG9DbGVhckdy
YW5kZmF0aGVyaW5nOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogZG9tYWlucykgewotICAg
ICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxvbmVBcHBsaWNh
dGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRhRGVs
ZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2VySW50
ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7CiAgICAg
ICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3VsZENo
ZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDY1MDY3OTcxOTYyMmFmMTJmYWQ1YzE2MmYy
Y2RkY2FhYWI5MGU0NzYuLmFmNTAwNDFkMjM3YjQwYzc2ZDViNGQxYzc2MDg4OTUzYTNhZjhmNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwCkBAIC05ODAsNyArOTgwLDcgQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVMKICAgICBhdXRv
IG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IG5vdzsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Rl
bGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZU9yUmVzdHJpY3RGb3I7CiAgICAg
Zm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkg
ewotICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxvbmVB
cHBsaWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVE
YXRhRGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RV
c2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7
CiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNo
b3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDNjODZhMzQ2MGJiMTE2ZTM3NDg2NzkzOTY0NmE0NjEx
ZjlmNDAxNmEuLmUzNGM1ZTk2M2NkM2NiZDA1ZGFmMjY2YjM5M2M3OTI4OWIxM2VkMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMTcsNiArMzE3
LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNv
dXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyCiAgICAgbV9kZWJ1Z01hbnVhbFByZXZhbGVu
dFJlc291cmNlID0gZG9tYWluOwogfQogCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlu
cykKK3sKKyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7Cit9CisKIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNz
aW5nUmVxdWVzdElmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKQEAgLTU2OCw2ICs1NzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIG1fcGFyYW1ldGVycyA9IHsgfTsKKyAgICBtX2FwcEJvdW5kRG9tYWlu
cy5jbGVhcigpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVz
dGluZ0V2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnQpCkBAIC02NTIsNiArNjU4LDExIEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xvZ0RvbWFpbnNJbkJhdGNoZXMoY29u
c3QgY2hhciogYWN0aW9uLCBjCiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICIl
IiBQVUJMSUNfTE9HX1NUUklORyAiIHRvICgle3B1YmxpY31kIG9mICV1KTogJSIgUFVCTElDX0xP
R19TVFJJTkcgIi4iLCBhY3Rpb24sIGJhdGNoTnVtYmVyLCBudW1iZXJPZkJhdGNoZXMsIGRvbWFp
bnNUb1N0cmluZyhiYXRjaCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKK2Jvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAoreworICAgIHJldHVybiAhZG9tYWlu
LmlzRW1wdHkoKSAmJiAoZG9tYWluID09IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHx8
IG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbikpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKaW5kZXggNDQ4MzMzYzQ5ZjYzYjJmMTkyMGI4NmUzMzIwNTg3ZmNlMzViNjkzYi4uMmRiZTll
NTBiYWU0NzBmOWM4MTA1YzUyYzlmNTAzYWZiZGVmNzQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTY5LDYgKzE2OSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X3NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID09IFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkOjpZZXM7IH07CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSBtb2RlKSB7IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBtb2RlOyB9
CiAgICAgdm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oUmVnaXN0cmFibGVEb21h
aW4mJiBkb21haW4pIHsgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBXVEZNb3ZlKGRv
bWFpbik7IH0KKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Js
b2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKQEAgLTI0OSw3
ICsyNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9kZWJ1Z0xvZ2dpbmdFbmFibGVkOyB9OwogICAgIGJvb2wgZGVidWdNb2Rl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfQogICAgIFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTsgfQotICAgIFJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOyB9Cisg
ICAgYm9vbCBzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhO
dW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7IDUwIH07CiAgICAgCkBA
IC0yOTEsNiArMjkyLDcgQEAgcHJpdmF0ZToKICAgICBTaG91bGRJbmNsdWRlTG9jYWxob3N0IG1f
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdCB7IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyB9Owog
ICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1fZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
IG1fYXBwQm91bmREb21haW5zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDY4ZjU1YzRj
NWNkZGU3NWM2YjQyYWIyMmFmODczMTllZDY4NjQ2YjIuLjY1MjFkM2NmYzExODEyNzhjYjg2N2Iz
Y2UyZTkzNGM1ODE4MDE3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCkBAIC02NzgsNiArNjc4LDM1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3QgUmVn
aXN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRvbWFp
bnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIGRvbWFpbnNDb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KGRv
bWFpbnMpOworCisgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCkpIHsKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRBcHBCb3VuZERvbWFpbnMoV1RG
TW92ZShkb21haW5zKSk7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNl
cHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHBvc3RU
YXNrKFt0aGlzLCBkb21haW5zID0gV1RGTW92ZShkb21haW5zQ29weSksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
IChtX3N0YXRpc3RpY3NTdG9yZSkgeworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNl
dEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICAgICAgICAgIG1fc3RhdGlz
dGljc1N0b3JlLT4gICAgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKKyAg
ICAgICAgfQorICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTEyODAsNiArMTMwOSwxMSBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVz
KENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fbmV0d29y
a1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9uZXR3b3Jr
U2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+cmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKKyAgICB9CisKICAgICBwb3N0VGFzayhbdGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0
aXN0aWNzU3RvcmUtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDEzNTliM2I3ZTc1ZTA5
NDUxNDdjOTcyNGE3ZjgwNGZhNTUyYzY3NmUuLjM0NWZkMjg3N2FjOWVkMjAzNDkxNDEwZTNiZTAx
Yzc2MGQ2ZTE4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKQEAgLTI3OSw2ICsyNzksNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZv
aWQgc2V0U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoV2ViQ29yZTo6U2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBk
aWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogCiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUHJvY2Vzc2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDkyZTlmZGVjOTU1NWFmYTI0ZDQ0ODg0YjYxYTI3OWNi
NDkyZmI4ODAuLjM3Mjk1NzZhMzk4ZDZiOWY2YTVmZmFiMTY3ZDQyNGIyN2ZmMjc4MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0x
MzA3LDYgKzEzMDcsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzSXNvbGF0ZWRTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZToKICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXN1bHQpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERv
bWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBhcHBCb3VuZERvbWFpbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoYXBwQm91bmREb21haW5zKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZERvd25ncmFkZVJlZmVy
cmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRd
KGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CkBAIC0xMzE1LDcgKzEzMjcsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFi
bGVkLCBDb21wbGV0aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKGJsb2NraW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggODdlZTQ2NzFlY2IxY2MwNDEz
NWUwNjM3ODMzZjVhYTI2NzRkNzFjZC4uMDEyZGQ2NTU3ZDY0MGExOGRhNGNlZTkwMmE3OWY0MmJi
ZmNiZDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaApAQCAtMjYxLDkgKzI2MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0Rv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NT
aXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OworICAgIHZvaWQgc2V0QXBwQm91bmREb21h
aW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICBib29sIGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERh
dGFiYXNlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JU
ZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRUb1NhbWVTaXRlU3Ry
aWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDE1ZTE3NjQxZjBkYTFlYjU0NDIxZTBiMmI4YWJkYjU2OWYyZGJkODcuLjUwYmFlNDM4
MmZjZDFiNDkxZDk3NDUyNzA3MTI2MzdkYjhhMjMxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTQx
LDggKzE0MSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgRGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBkb21haW4sIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykgLT4gKCkgQXN5bmMKICAgICBI
YXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBkb21haW4pIC0+IChib29sIGhhc0lzb2xhdGVkU2Vzc2lvbikgQXN5bmMK
KyAgICBTZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBw
Qm91bmREb21haW5zKSAtPiAoKSBBc3luYwogICAgIFNldFNob3VsZERvd25ncmFkZVJlZmVycmVy
Rm9yVGVzdGluZyhib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCi0gICAgU2V0U2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01v
ZGUpIC0+ICgpIEFzeW5jCisgICAgU2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICAgICBTZXRTaG91bGRF
bmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgZW51bTpib29sIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIC0+ICgpIEFz
eW5jCiAgICAgU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBB
c3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGEyY2RiNDM3Y2FlZDY3ODcxZGEzYzdlYTQ4Mjcw
ZTc5NGJlZjQzOGEuLjYxZjEwY2M4MTI2NGUyNGE2Zjc2ZTUxOTQxMTlmZDU2N2YzN2Y5ZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KQEAgLTEyMjcsNiArMTIyNyw4IEBAIE5ldHdvcmtTZXNzaW9uQ29j
b2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrCiAgICAgbV9kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCA9IHBhcmFt
ZXRlcnMuZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CiAgICAgbV9hbGxMb2Fk
c0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nID0gcGFyYW1l
dGVycy5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0
aW5nOwogCisgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyAmJiAhcGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMuaXNFbXB0eSgp
KQorICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhX
VEZNb3ZlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91
bmREb21haW5zKSwgW10geyB9KTsKICNpZiBIQVZFKFNFU1NJT05fQ0xFQU5VUCkKICAgICBhY3Rp
dmF0ZVNlc3Npb25DbGVhbnVwKCp0aGlzLCBwYXJhbWV0ZXJzKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LmgKaW5kZXggOTI3YWVjM2E3NGFkMWVmY2I1OTQ4YTA0M2Y4MWZjZjI5ZjliZWI5ZS4uYjlhY2Jk
M2IyYTc4NTIzNGQ5YzQwYjU3ZDgzNjMzZTYyYWM2NmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCkBAIC00
OCw2ICs0OCw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAj
ZW5kaWYKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKKyAgICBIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMgeyB9OwogICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICAgICAK
ICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC02NSw2ICs2
Niw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjZW5kaWYK
ICAgICAgICAgZW5jb2RlciA8PCBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAg
ICAgICAgZW5jb2RlciA8PCBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgIGVu
Y29kZXIgPDwgYXBwQm91bmREb21haW5zOwogICAgICAgICBlbmNvZGVyIDw8IG1hbnVhbFByZXZh
bGVudFJlc291cmNlOwogICAgIH0KIApAQCAtMTI3LDYgKzEyOSwxMSBAQCBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICBpZiAoIXN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbikKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICAg
ICAgT3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5k
RG9tYWluczsKKyAgICAgICAgZGVjb2RlciA+PiBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgIGlm
ICghYXBwQm91bmREb21haW5zKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwog
ICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbWFudWFsUHJldmFs
ZW50UmVzb3VyY2U7CiAgICAgICAgIGRlY29kZXIgPj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7
CiAgICAgICAgIGlmICghbWFudWFsUHJldmFsZW50UmVzb3VyY2UpCkBAIC0xNDYsNiArMTUzLDcg
QEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNlbmRpZgogICAg
ICAgICAgICAgV1RGTW92ZSgqZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpLAogICAg
ICAgICAgICAgV1RGTW92ZSgqc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKKyAgICAgICAg
ICAgIFdURk1vdmUoKmFwcEJvdW5kRG9tYWlucyksCiAgICAgICAgICAgICBXVEZNb3ZlKCptYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAgICAgICAgIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmlu
ZGV4IGYwZjVhMTQxYWI3ZmVlY2QyYmU2ODJiYjg4ODVmZTYyODY1MjcyOWIuLjc1NDAyNzJmMDNk
ZTgwYzMxNjE3OGI1MDk3YWVhNTgyN2ViMTI5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdh
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCkBAIC02MTcsNiArNjE4LDMxIEBAIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJp
Y3RDb29raWVzRm9yVGVzdGluCiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIFdLQXJyYXlSZWYgb3JpZ2luVVJMc1JlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25I
YW5kbGVyKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlZlB0cjxBUEk6OkFycmF5PiBv
cmlnaW5VUkxzQXJyYXkgPSB0b0ltcGwob3JpZ2luVVJMc1JlZik7CisgICAgc2l6ZV90IG5ld1Np
emUgPSBvcmlnaW5VUkxzQXJyYXkgPyBvcmlnaW5VUkxzQXJyYXktPnNpemUoKSA6IDA7CisgICAg
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluczsKKyAgICBkb21haW5z
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobmV3U2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBuZXdTaXplOyArK2kpIHsKKyAgICAgICAgYXV0byogb3JpZ2luVVJMID0gb3JpZ2luVVJM
c0FycmF5LT5hdDxBUEk6OlVSTD4oaSk7CisgICAgICAgIGlmICghb3JpZ2luVVJMKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBkb21haW5zLmFkZChXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB7IFVSTChVUkwoKSwgb3JpZ2luVVJMLT5zdHJpbmcoKSkgfSk7Cisg
ICAgfQorCisgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNG
b3JUZXN0aW5nKFdURk1vdmUoZG9tYWlucyksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0g
KCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGRhdGFTdG9yZVJlZik7CisgICAgVU5VU0VEX1BBUkFNKG9yaWdp
blVSTHNSZWYpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworI2VuZGlmCit9CisK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaAppbmRleCBmOWEzODIzN2ZmMzg3OWY3MGMyMjkxODRiNWU2ZTI3ZjY5NGQ0YzQwLi40
YjA2ZmZjMTlkYjJkNjlhMjJkOTRmMDE3OWQ4MzkzYzU2OWRmYzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAt
MTI5LDYgKzEyOSw4IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSCiBXS19FWFBPUlQgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9y
VGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vi
c2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVT
aXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdE5hbWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRl
c3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNp
dGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBC
b3VuZERvbWFpbnNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLQXJyYXlSZWYgb3JpZ2luVVJMc1JlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVy
KTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBs
ZXRpb25IYW5kbGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYzE1NzdiOGQ4ZjJlNjg5NzRmMTc1
ZWRiZjBjOTNiNmZiYzc1MjNmOS4uYzkxODQ5ZDFmZDFiODY3M2FhYzQzY2QwNGE5MzRhMTM4Njkw
ZGI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMTM2LDYgKzExMzYsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWcKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpIYXNJc29sYXRlZFNlc3Npb24oc2Vzc2lvbklELCBkb21haW4pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91
bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBCb3VuZERvbWFp
bnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91bmREb21haW5zKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
IWNhblNlbmRNZXNzYWdlKCkpIHsKQEAgLTExNDgsOSArMTE1Myw5IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5h
YmxlZCwgQ29tCiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGJsb2NraW5nTW9kZSksIFthY3Rpdml0
eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmciX3MpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUoc2Vzc2lvbklELCBibG9ja2luZ01vZGUpLCBbYWN0aXZpdHkgPSB0
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlMDdjZjk5MDQ5OGI2YjA4MGI1NWNi
OTJlYTE1ZDM4Yjc2NGIyNGRjLi43MWVlM2JmNDlhMDhiMzRhNDdlN2NmNDFkMjNjZjk0ODNjNWE1
ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtMTc1LDggKzE3NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3Ry
YWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4mJik+JiYpOwogICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3Jl
OjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRUb1Nh
bWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAyMjRhNWEyMGFkMTFjYTU5YzNi
MzA0MzM3NjNkMjQwMTMzZGVhNzVmLi45MjRjZDdiNWFkY2FjZjFhMzY2NWExYWFjNmJhODFlZjMz
Yzc0ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBA
IC02MDUsOCArNjA1LDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
PSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CiAgICAgV2ViQ29y
ZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgc2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEVuYWJsZWQgPSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6
Tm87CiAjZW5kaWYKLSAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW4geyB9OwogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CisgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKKyAg
ICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMgeyB9
OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJlc291cmNl
IHsgfTsKICAgICBXRUJfUFJPQ0VTU19QT09MX0FERElUSU9OU18yCiAgICAgaWYgKHdpdGhXZWJz
aXRlRGF0YVN0b3JlKSB7CkBAIC02MjQsNiArNjI1LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdp
dGgKICNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBzdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAg
ICAgICAgICAgYXBwQm91bmREb21haW5zID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWluczsKICAgICAgICAgICAg
IG1hbnVhbFByZXZhbGVudFJlc291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAg
ICAgICB9CiAKQEAgLTY1MCw2ICs2NTIsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2Vu
ZGlmCiAgICAgICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbiA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAg
ICBhcHBCb3VuZERvbWFpbnMgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0K
IApAQCAtNjg5LDYgKzY5Miw4IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29s
OjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgIHNh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkLAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLAorICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW4sCisgICAgICAgIGFwcEJvdW5kRG9tYWlucywKICAgICAgICAgbWFudWFsUHJldmFsZW50
UmVzb3VyY2UsCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggNTBjMGJmOTgyZmQzN2M3ZGMzODdiODk4OWM4NzI2N2M5Y2E1ZjI3Zi4u
M2FhOTk0YWM5NTFlYmFkMTlkNWVmODc0ODI3YWE3NDE2YjU0NmE2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC00NTgsOSArNDU4LDkgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
QVBJOjpPYmplY3QqIG1lc3NhZ2UKICAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQiLCBt
ZXNzYWdlQm9keSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcodGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVz
dGluZyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBy
b2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSJfcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGMxZTNhMTRhZTQ4Yzc5OGFjZWY3NTkwNGY1NWJi
NjkyZjQwNjViYjIuLjUxYmY5ZmRmYWE0ZDgyOGQ2Y2ViN2NmZjZkNzVkYjM0N2Q2YzIzODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMTksNyArMjE5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25G
b3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdl
YnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7CiAKLSAgICB2b2lk
IHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5k
aWYKIAogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBmMzQyM2E5MmFiYWQ5YmZhYTBmOGVlZDkyMTJiZTBh
MmE3YzVkNDA0Li5jZjUwM2M4ZWE0ODczODA5YzhhNzAwY2IxMmNhZDJhMTUzNGNmYzQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC00MzMsNiArNDMzLDggQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKEZvcmNlUmVpbml0
aWFsaXphdGlvbiBmb3JjZVJlaW4KICAgICAgICAgICAgICAgICBXRUJTSVRFX0RBVEFfU1RPUkVf
QURESVRJT05TCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBoYXNJbml0aWFsaXplZEFwcEJv
dW5kRG9tYWlucyA9IHRydWU7CisgICAgICAgICAgICBpZiAoaXNBcHBCb3VuZElUUFJlbGF4YXRp
b25FbmFibGVkKQorICAgICAgICAgICAgICAgIHNldEFwcEJvdW5kRG9tYWluc0ZvcklUUElmSW5p
dGlhbGl6ZWQoW10geyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC00NDQsNiArNDQ2
LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIC8vIEhvcHBpbmcgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkIHRoZW4gYmFjayB0byB0aGUg
bWFpbiB0aHJlYWQKKyAgICAvLyBlbnN1cmVzIHRoYXQgaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlu
cygpIGhhcyBmaW5pc2hlZC4KICAgICBhcHBCb3VuZERvbWFpblF1ZXVlKCkuZGlzcGF0Y2goW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
ewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgQVNT
RVJUKGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zKTsKQEAgLTQ4NCw2ICs0ODgsMjcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoU2V0PFcKICAgICB9KTsKIH0KIAorT3B0aW9uYWw8SGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IFdlYnNpdGVEYXRhU3RvcmU6OmdldEFwcEJvdW5k
RG9tYWluc0lmSW5pdGlhbGl6ZWQoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisgICAgaWYgKCFoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYXBwQm91bmREb21haW5zKCk7Cit9CisKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZyhIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRv
bWFpbnMpIHsKKyAgICAgICAgaWYgKGRvbWFpbi5zdHJpbmcoKSAhPSAibG9jYWxob3N0Il9zICYm
IGRvbWFpbi5zdHJpbmcoKSAhPSAiMTI3LjAuMC4xIl9zKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAg
IGFwcEJvdW5kRG9tYWlucygpID0gV1RGTW92ZShkb21haW5zKTsKKyAgICBoYXNJbml0aWFsaXpl
ZEFwcEJvdW5kRG9tYWlucyA9IHRydWU7CisgICAgc2V0QXBwQm91bmREb21haW5zRm9ySVRQSWZJ
bml0aWFsaXplZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKCkKIHsKICAgICBoYXNJbml0
aWFsaXplZEFwcEJvdW5kRG9tYWlucyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBlMzYz
NzZjNWVkMmYyOTdhZGE0NDE1MGFjYjUwMzk3MGVhMWMyZGM4Li41MGY0ZTQ0NzBlNDcxMjg0YmI3
MzNmMDc0NTY3MTI5YmZhNGMxZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTg1OCwyMCArMTg1
OCwyNCBAQCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIFdlYnNpdGVEYXRh
U3RvcmU6OnRoaXJkUGFydHlDb29raWVCbG9ja2luZwogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyhib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOjpPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3k7CiAgICAgaWYgKGVuYWJs
ZWQpCiAgICAgICAgIGJsb2NraW5nTW9kZSA9IG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFj
dGlvbiA/IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNX
aXRob3V0VXNlckludGVyYWN0aW9uIDogV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTo6QWxsOworICAgIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoYmxvY2tpbmdN
b2RlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CiAKK3ZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIGlmICh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgIT0gYmxvY2tpbmdNb2RlKSB7
CiAgICAgICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IGJsb2NraW5nTW9kZTsK
ICAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzIDogcHJvY2Vzc2VzKCkpCi0gICAgICAgICAg
ICB3ZWJQcm9jZXNzLnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJs
b2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7CisgICAgICAgICAgICB3ZWJQcm9jZXNzLnNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoYmxvY2tpbmdNb2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9j
ZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3Jr
UHJvY2Vzcy0+c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcobV9zZXNz
aW9uSUQsIGJsb2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShtX3Nlc3Npb25JRCwgYmxvY2tpbmdNb2RlLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAg
ICB9CiB9CiAKQEAgLTIyMjUsNiArMjIyOSwxMyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBib29sIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxzZTsKICAgICBib29sIGVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBhdXRvIGZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKKyAgICBIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgYXV0byBvcHRpb25hbEFwcEJvdW5kRG9tYWlucyA9IGdldEFwcEJvdW5kRG9tYWlu
c0lmSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAob3B0aW9uYWxBcHBCb3VuZERvbWFpbnMgJiYgaXNB
cHBCb3VuZElUUFJlbGF4YXRpb25FbmFibGVkKQorICAgICAgICBhcHBCb3VuZERvbWFpbnMgPSAq
b3B0aW9uYWxBcHBCb3VuZERvbWFpbnM7CisjZW5kaWYKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9
OwogCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMgPSB7CkBAIC0yMjQ1LDYgKzIyNTYsOCBAQCBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgV2Vi
Q29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vLAogI2VuZGlmCiAgICAg
ICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLAorICAgICAgICBXVEZNb3ZlKHN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiksCisgICAgICAgIFdURk1vdmUoYXBwQm91bmREb21h
aW5zKSwKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFs
ZW50UmVzb3VyY2UpLAogICAgIH07CiAKQEAgLTI0MjQsNCArMjQzNywzOSBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJM
JiYgbmV3TmFtZSwgTwogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQordm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JJVFBJZkluaXRpYWxpemVkKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNh
bGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIGFwcEJvdW5kRG9tYWlucyA9IGdldEFwcEJvdW5k
RG9tYWluc0lmSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAoIWFwcEJvdW5kRG9tYWlucykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBwcm9wYWdhdGVBcHBCb3VuZERvbWFpbnMgPSBbY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0gKFdlYnNpdGVEYXRh
U3RvcmUqIHN0b3JlLCBjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWlucykgeworICAgICAgICBpZiAoIXN0b3JlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChzdG9yZS0+dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpICE9IFdlYkNv
cmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3Vu
ZERvbWFpbnMpCisgICAgICAgICAgICBzdG9yZS0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3
ZWVuQXBwQm91bmREb21haW5zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKKworICAgICAgICBzdG9yZS0+c2V0QXBwQm91bmREb21haW5z
Rm9ySVRQKGRvbWFpbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOworICAgIH07CisKKyAgICBwcm9wYWdhdGVBcHBCb3VuZERvbWFpbnMo
Z2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpLmdldCgpLCAqYXBwQm91bmREb21haW5zKTsKKworICAg
IGZvciAoYXV0byogc3RvcmUgOiBub25EZWZhdWx0RGF0YVN0b3JlcygpLnZhbHVlcygpKQorICAg
ICAgICBwcm9wYWdhdGVBcHBCb3VuZERvbWFpbnMoc3RvcmUsICphcHBCb3VuZERvbWFpbnMpOwor
fQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldEFwcEJvdW5kRG9tYWluc0ZvcklUUChjb25z
dCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5u
ZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEFwcEJvdW5k
RG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MobV9zZXNzaW9uSUQsIGRvbWFpbnMsIFtj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwor
ICAgIH0KK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggY2Q2N2ViNTgyZmRiOTViYTlm
MjE4MDQ4MjQ0YWVlY2IzYzM5MDNmYS4uY2RiOGZjZDFmNTFhZDQ0NGJiMTIxMTA3OTU1ODZiZTE5
ZGJhZWM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTk5LDYgKzE5OSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBib29sIG9u
bHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRFbmJsZVNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjk2LDYgKzI5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdldEFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYpIGNvbnN0OwogICAgIHZvaWQgZW5zdXJl
QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCByZWluaXRpYWxp
emVBcHBCb3VuZERvbWFpbnMoKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNG
b3JUZXN0aW5nKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBGb3JjZVJl
aW5pdGlhbGl6YXRpb24gOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMzMxLDYgKzMzMywxMyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBtYXliZVJlZ2lzdGVyV2l0aFNlc3Npb25JRE1hcCgpOwogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RhdGljIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCk7Cisg
ICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBzdGQ6OmF0b21pYzxib29sPiBpc0FwcEJvdW5kSVRQ
UmVsYXhhdGlvbkVuYWJsZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgdm9pZCBzZXRBcHBCb3VuZERv
bWFpbnNGb3JJVFBJZkluaXRpYWxpemVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JJVFAoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2VuZGlm
CisKICAgICBjb25zdCBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogICAgIFJlZjxXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggODJjM2M5Yjg3NzhjNGYwMWEw
NGJhZmMyYzViNTk1YWEyNjUyNTU3My4uNTQ2NThlMWFkYWNlYjE3Y2E4N2ZiNGE4NDU1NDZhZTMz
NjBhNThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTg5
NSw3ICsxODk1LDcgQEAgYm9vbCBXZWJQcm9jZXNzOjphcmVBbGxQYWdlc1Rocm90dGxlYWJsZSgp
IGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBX
ZWJQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJv
Y2Vzczo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3RoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgPSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAxODli
MzRhZjM0NzhkNzVhZTYzOWQ5NzJkZjc5MGU3MDE0Y2M3YjA0Li5iOGM5ZTdjOTUzMjE2MWUwMGVj
ZjRkODA3NTZkMWQyN2JkYWUyOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKQEAgLTQ1OCw3ICs0NTgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llc0ZvclRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggZTBmZWUwYjA0ZGU2OWM2NjFjNTllZjcwZTY2ZWM3MDA0OGNiZTJkNS4uMTE0
OWJmMDg5ODY2NWZjYzVmN2MwZjUwZmZiN2M1N2E1NDhlYTQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE1Nyw3ICsxNTcsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBTZWVkUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQ
YXJ0eURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGhpcmRQYXJ0eURvbWFpbiwg
Ym9vbCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbikgLT4gKCkgQXN5bmMKLSAgICBTZXRTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCisg
ICAgU2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyMTBmOTdiNGU0NGY2YmVmYmVhM2YzNThmZTQxNTAxNzBl
YmIzMTA5Li40MGFiYWY2YzgwZTUxNjY0OTdmZmIyZTJlMGQ0M2E5ZmViZjBiOGNmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMjAtMDUtMDUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5zIGZyb20gSVRQJ3Mgd2Vic2l0ZSBkYXRhIGRl
bGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcgYmV0d2VlbiB0aGVtc2VsdmVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2NzQK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBuZXcgVGVzdFJ1
bm5lciBmdW5jdGlvbgorICAgICAgICBzZXRBcHBCb3VuZERvbWFpbigpIHdoaWNoIHRha2VzIGFu
IGFycmF5IG9mIG9yaWdpbgorICAgICAgICBzdHJpbmdzIGFuZCBzZXRzIHRoZW0gdG8gYXBwLWJv
dW5kIGRvbWFpbnMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OnNldEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmRpZFNl
dEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEFwcEJv
dW5kRG9tYWlucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkU2V0QXBwQm91bmREb21haW5z
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjAt
MDUtMDUgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVX
UyBzaG91bGQgc2tpcCBBcHBsZSBXaW4gYnVpbGQgYW5kIHRlc3RzIGZvciBwYXRjaGVzIHRoYXQg
b25seSBjaGFuZ2UgV2ViS2l0MiBzb3VyY2VzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRl
eCA1Y2JlOTUxNjJlZDdjZDc0NzI3NDM2MDBmY2QzYzJlNGE5YWU4Mzk1Li5hMTlkZjk1ZjY0MDU1
YmVkYjA1MjdkMGRjYWJjNzg2ZmYwN2Q0NzhkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
QEAgLTM5Myw3ICszOTMsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCByZXNl
dE1vY2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1
bnNpZ25lZCBsb25nIG9yaWVudGF0aW9uKTsKICAgICBib29sZWFuIGlzTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CisKICAgICBib29sZWFuIGhhc0FwcEJvdW5kU2Vzc2lv
bigpOworICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKG9iamVjdCBvcmlnaW5zQXJyYXksIG9i
amVjdCBjYWxsYmFjayk7CiAKICAgICB2b2lkIGluamVjdFVzZXJTY3JpcHQoRE9NU3RyaW5nIHN0
cmluZyk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdXNlclNjcmlwdElu
amVjdGVkQ291bnQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDEwZTZlZTNmNzFmMzIxNmZiNDc2MWVl
ZWVjNjU3MDBiM2YyYzBjMGYuLmZlNWQ3NTc0ZDcxZjMzY2VjYWFhMmM3NmFjNzE0NGU4ZWNkMzdm
MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC01MTgsNyArNTE4LDEyIEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0
cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+cGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldEFwcEJvdW5kRG9tYWlucyIp
KSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2so
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBlcnJvck1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiRXJyb3IiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJv
ZHkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikpOwog
ICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UsIGVycm9yTWVzc2FnZU5hbWUuZ2V0KCks
IGVycm9yTWVzc2FnZUJvZHkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNTNkMTFhZDczM2U5MWQ4YzEx
ODQ0YTEwMmYyNzYzNWQyY2YyMDBhMi4uNGExOGMxODkzNTA3ZDNkNmQzZDRmZmJkZDFiZDA5NDE4
NzU1MDViOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NjMsNiArNzYzLDcgQEAgZW51bSB7CiAgICAgVGV4dEZp
ZWxkRGlkQmVnaW5FZGl0aW5nQ2FsbGJhY2tJRCwKICAgICBUZXh0RmllbGREaWRFbmRFZGl0aW5n
Q2FsbGJhY2tJRCwKICAgICBDdXN0b21NZW51QWN0aW9uQ2FsbGJhY2tJRCwKKyAgICBEaWRTZXRB
cHBCb3VuZERvbWFpbnNDYWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEID0g
MTAwCiB9OwogCkBAIC0yOTc1LDQgKzI5NzYsNDMgQEAgYm9vbCBUZXN0UnVubmVyOjpoYXNBcHBC
b3VuZFNlc3Npb24oKQogICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRp
Y19jYXN0PFdLQm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKIH0KIAordm9pZCBUZXN0
UnVubmVyOjpzZXRBcHBCb3VuZERvbWFpbnMoSlNWYWx1ZVJlZiBvcmlnaW5BcnJheSwgSlNWYWx1
ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhE
aWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAg
ICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4
dChXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBh
Z2UoKS0+cGFnZSgpKSk7CisKKyAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIG9yaWdp
bkFycmF5KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNPYmplY3RSZWYgb3JpZ2lucyA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCBvcmlnaW5BcnJheSwgbnVsbHB0cik7CisgICAgc3RhdGlj
IGF1dG8gbGVuZ3RoUHJvcGVydHkgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygibGVuZ3RoIikpOworICAgIEpTVmFsdWVSZWYgb3JpZ2luc0xlbmd0aFZhbHVlID0gSlNPYmpl
Y3RHZXRQcm9wZXJ0eShjb250ZXh0LCBvcmlnaW5zLCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVs
bHB0cik7CisgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgb3JpZ2luc0xlbmd0aFZh
bHVlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBvcmlnaW5VUkxzID0gYWRvcHRXSyhX
S011dGFibGVBcnJheUNyZWF0ZSgpKTsKKyAgICBhdXRvIG9yaWdpbnNMZW5ndGggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBvcmlnaW5zTGVuZ3RoVmFsdWUs
IG51bGxwdHIpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdpbnNMZW5ndGg7ICsr
aSkgeworICAgICAgICBKU1ZhbHVlUmVmIG9yaWdpblZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0
eUF0SW5kZXgoY29udGV4dCwgb3JpZ2lucywgaSwgbnVsbHB0cik7CisgICAgICAgIGlmICghSlNW
YWx1ZUlzU3RyaW5nKGNvbnRleHQsIG9yaWdpblZhbHVlKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGF1dG8gb3JpZ2luID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBvcmlnaW5WYWx1ZSwgbnVsbHB0cikpOworICAgICAgICBzaXplX3Qgb3JpZ2luQnVmZmVy
U2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShvcmlnaW4uZ2V0KCkpICsg
MTsKKyAgICAgICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4ob3Jp
Z2luQnVmZmVyU2l6ZSk7CisgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcob3JpZ2luLmdl
dCgpLCBvcmlnaW5CdWZmZXIuZ2V0KCksIG9yaWdpbkJ1ZmZlclNpemUpOworCisgICAgICAgIFdL
QXJyYXlBcHBlbmRJdGVtKG9yaWdpblVSTHMuZ2V0KCksIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRo
VVRGOENTdHJpbmcob3JpZ2luQnVmZmVyLmdldCgpKSkuZ2V0KCkpOworICAgIH0KKworICAgIGF1
dG8gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
ZXRBcHBCb3VuZERvbWFpbnMiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBvcmlnaW5VUkxz
LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxs
YmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFp
bnNDYWxsYmFja0lEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGY1YjYzNmUw
MTg5Y2E3MjQ5ZjQ2MzY1ZDRkYjY2ZmFjY2M0ZmFhYjAuLmNlODAxYTNiMzJiOWFiZTA3YjhlYWYy
ODZkZGNkYTRmYzhkZjQ1YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MDAsNyArNTAwLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9y
aWVudGF0aW9uKHVuc2lnbmVkKTsKICAgICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJFbmFibGVkKCk7CisKICAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpOworICAgIHZv
aWQgc2V0QXBwQm91bmREb21haW5zKEpTVmFsdWVSZWYgb3JpZ2luQXJyYXksIEpTVmFsdWVSZWYg
Y2FsbGJhY2spOworICAgIHZvaWQgZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKTsKIAog
ICAgIHNpemVfdCB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5q
ZWN0VXNlclNjcmlwdChKU1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IGM0ZDU3ZTE4OGI3MDc4ZDQ5MTAxYmVjOTM4OGMwMDEyMzViMGNk
ODUuLjVlZDc4MWRmNjZjOGIzMDUzODBiMTM4YjlkOThhNzE3OGQwODZlZDQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNzc3LDYgKzM3NzcsMTQgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVz
KFdLU3RyaW5nUmVmIGhvc3ROYW1lKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldFRv
U2FtZVNpdGVTdHJpY3RDb29raWVzKCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFw
cEJvdW5kRG9tYWlucyhXS0FycmF5UmVmIG9yaWdpblVSTHMpCit7CisgICAgUmVzb3VyY2VTdGF0
aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFT
dG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3Rpbmcod2Vic2l0ZURhdGFTdG9yZSgpLCBvcmln
aW5VUkxzLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsK
KyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+ZGlkU2V0QXBwQm91bmREb21haW5zKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsKICAgICBSZXNvdXJjZVN0
YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMzM3ZWY2ZTNiNDMwYmUxZDc3NzIyZWFiN2ZlYThj
YjIxYWVlZDFjMS4uMThkZDhiMDYzZjllODE5OGYzMjY5ODBjYzFlNzFmMzYwZTU3NWQ4NyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjY2LDYgKzI2Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKGJvb2wgdmFsdWUsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShi
b29sIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2ll
cyhXS1N0cmluZ1JlZiBob3N0TmFtZSk7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoV0tB
cnJheVJlZiBvcmlnaW5VUkxzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDdlYTdkMjAwYWE0NzBj
MTEwMmE4MzA5MGM3OGU0MmRmYjA5NTQ0MWYuLmVhMWE5ZjdmYTA4ZGZlMjJhMGNmYmFhZGVkYWQy
N2I3ZTAwMmQwMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CkBAIC05OTQsNiArOTk0LDEzIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNldEFwcEJvdW5kRG9tYWlucyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5
cGVJRChtZXNzYWdlQm9keSkgPT0gV0tBcnJheUdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tBcnJh
eVJlZiBvcmlnaW5VUkxzID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpOwor
ICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0QXBwQm91bmREb21haW5zKG9y
aWdpblVSTHMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKQEAgLTIwMTEsNiArMjAxOCwxMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
aWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+
cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246
OmRpZFNldEFwcEJvdW5kRG9tYWlucygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2Fs
bERpZFNldEFwcEJvdW5kRG9tYWlucyIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0
ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2Uo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9u
OjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCiB7CiAgICAgbV9zaG91bGREdW1wUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmgKaW5kZXggMWU1NzdkYWE3ZDkwODVkNDA2ZGFhMTczNGNlMDA1YzQyOGQ4M2QzMy4uMjkz
NDQwYzM2MWI2MWQyNDhhM2ZlM2Y5NGMyOGEwNWIxY2Y0OWZkMiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtOTAsNyArOTAsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zKTsKIAogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7Ci0gICAg
CisKKyAgICB2b2lkIGRpZFNldEFwcEJvdW5kRG9tYWlucygpOworCiAgICAgdm9pZCBkdW1wUmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpOwogCiAgICAgYm9vbCBjYW5PcGVuV2luZG93cygpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuT3BlbldpbmRvd3M7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3Njg3NWZkNzkzMDQzNDQxODhl
YTc1ZWFmZjBhYzMyYWQwY2JjNjU2Li5iODgxNmRmYjU5NjIzZjQ1MTMzMGY2MzMxMTU3OWFlMzI2
NDU1NTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDUtMDUgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5z
IGZyb20gSVRQJ3Mgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUg
YmxvY2tpbmcgYmV0d2VlbiB0aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUw
NzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5k
LWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLWNvb2tp
ZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRv
bWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRh
LWRlbGV0aW9uLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1w
dC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1i
b3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sOiBBZGRl
ZC4KKwogMjAyMC0wNS0wNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWxsb3cgQml0bWFwIHRvIHVzZSB1cCB0byBhIFVDUFVSZWdpc3RlciB3b3JkIHNpemUgZm9y
IGludGVybmFsIGJpdCBzdG9yYWdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMt
ZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0
RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0
d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmIyMzEwYzQ3MWVjZWUx
ZjM0ODFkODg0ZDcyYjgzYjM4ZGYwYTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5k
LWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAorVGVzdHMgdGhhdCBhcHAtYm91bmQgZG9tYWlu
cyBhcmUgZXhlbXB0IGZyb20gdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhl
bXNlbHZlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0tCitGcmFtZTog
JzwhLS1mcmFtZTEtLT4nCistLS0tLS0tLQorU2hvdWxkIG5vdCByZWNlaXZlIGNvb2tpZS4KK0Rp
ZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5vdCBy
ZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUgZG9j
dW1lbnQuY29va2llOgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUyLS0+JworLS0tLS0t
LS0KK1Nob3VsZCBub3QgcmVjZWl2ZSBjb29raWUuCitEaWQgbm90IHJlY2VpdmUgY29va2llIG5h
bWVkICdmaXJzdFBhcnR5Q29va2llJy4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ3Bh
cnRpdGlvbmVkQ29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZToKKworLS0tLS0t
LS0KK0ZyYW1lOiAnPCEtLWZyYW1lMy0tPicKKy0tLS0tLS0tCitTaG91bGQgcmVjZWl2ZSBjb29r
aWUuCitSZWNlaXZlZCBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5vdCBy
ZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUgZG9j
dW1lbnQuY29va2llOiBmaXJzdFBhcnR5Q29va2llPXZhbHVlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAt
Ym91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90
aGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tp
bmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I1ODVmZmMyZGI1YjJlMmMz
N2VlNjI3YzgwNWFkNmE2N2Q0ZThmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1k
b21haW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRt
bApAQCAtMCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxo
ZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cisg
ICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYXBwLWJvdW5kIGRvbWFpbnMgYXJlIGV4ZW1wdCBm
cm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMuIik7Cisg
ICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBmaXJzdFBhcnR5T3JpZ2luID0g
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHRoaXJkUGFydHlSZXNvdXJjZVVybCA9
IHRoaXJkUGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsK
KyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2llIjsKKyAg
ICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gIi9zZXQtY29va2llLnBocD9u
YW1lPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0
IHBhcnRpdGlvbmVkQ29va2llTmFtZSA9ICJwYXJ0aXRpb25lZENvb2tpZSI7CisgICAgY29uc3Qg
c3ViUGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUgPSAiL3NldC1jb29raWUucGhwP25hbWU9IiAr
IHBhcnRpdGlvbmVkQ29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHJldHVy
blVybCA9IGZpcnN0UGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0
RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0
d2Vlbi1lYWNoLW90aGVyLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENvb2tpZXMgPSAi
L2dldC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAiJm5hbWUy
PSIgKyBwYXJ0aXRpb25lZENvb2tpZU5hbWU7CisgICAgY29uc3QgcmVkaXJlY3RDaGFpblVybCA9
IHRoaXJkUGFydHlSZXNvdXJjZVVybCArICIvcmVkaXJlY3QucGhwP3JlZGlyZWN0VG89IiArIHRo
aXJkUGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXM7CisKKyAgICBmdW5jdGlv
biBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQuc3Jj
ID0gdXJsOworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxlbWVu
dC5vbmxvYWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAgICAg
ICBjYXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1wYXJ0eSBjb29r
aWUgZm9yIGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVm
ID0gdGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSAr
ICIjIiArIHJldHVyblVybCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRo
ZSBjb29raWUgZG9lc24ndCBnZXQgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBz
aW5jZSBvbmx5IGxvY2FsaG9zdCBpcyBjb25maWd1cmVkIGFzIGFuIGFwcC1ib3VuZCBkb21haW4u
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBCb3VuZERvbWFpbnMoWyB0aGlyZFBhcnR5T3Jp
Z2luIF0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJk
UGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hvdWxk
IG5vdCByZWNlaXZlIGNvb2tpZS4iLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJ1blRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDMiOgor
ICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBkb2Vzbid0IGdldCBzZW50
IGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIHNpbmNlIG9ubHkgMTI3LjAuMC4xIGlzIGNv
bmZpZ3VyZWQgYXMgYW4gYXBwLWJvdW5kIGRvbWFpbi4KKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID0gInN0ZXA0IjsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dEFwcEJvdW5kRG9tYWlucyhbIGZpcnN0UGFydHlPcmlnaW4gXSwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0
aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgbm90IHJlY2VpdmUgY29va2llLiIsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB0aGUgY29va2llIGdldHMgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBz
aW5jZSB0aGV5IGFyZSBub3cgYm90aCBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBkb21haW5zLgor
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDUiOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXBwQm91bmREb21haW5zKFsgZmlyc3RQYXJ0eU9yaWdp
biwgdGhpcmRQYXJ0eU9yaWdpbiBdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
b3BlbklmcmFtZSh0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsg
IiZtZXNzYWdlPVNob3VsZCByZWNlaXZlIGNvb2tpZS4iLCBydW5UZXN0KTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVw
NSI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
ZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpOworICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVw
MSI7CisgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIH0pOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9l
eGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1k
ZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVt
cHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg4ZTQ1ZDdmMTk5YTNjNjlhYmMxZWExNWYxNzkzMjk5ZmI3N2Q2NWYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEt
ZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0NoZWNrIHRo
YXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5v
IHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYXBwLWJvdW5kLgorCitCZWZvcmUg
ZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IEh0
dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNp
ZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRv
ZXMgZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRl
ciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBDbGll
bnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNp
ZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9l
cyBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVs
ZXRpb24tZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdl
YnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0ZTY3MWIwYjgz
M2EwZTViYTJkYTY4MDk0YjNjZjA1M2VkMjAxYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAt
Ym91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2Uu
aHRtbApAQCAtMCwwICsxLDI1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdl
dCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdl
YnNpdGUgaXMgYXBwLWJvdW5kLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4K
Kzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0
cnVlKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29va2ll
IjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29raWUi
OworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tpZSI7
CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAgICBhID0gYS50
b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAgICAgIHJl
dHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBh
ZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAgbGV0
IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxlbWVu
dC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlvbikg
eworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAgICAg
bGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBpZiAoIWNvb2tp
ZXMubGVuZ3RoKQorICAgICAgICAgICAgYWRkT3V0cHV0KChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0
ZXIiIDogIkJlZm9yZSIpICsgIiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8gY29va2ll
cyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBP
bmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVs
ZXRpb246ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNvb2tp
ZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVm
b3JlIikgKyAiIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50
U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1l
c3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRl
bGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVkVGVz
dFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0U3Ry
aW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2VkTWVz
c2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERhdGFi
YXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgeworICAg
ICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4n
dCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAg
ICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAgICAg
bGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3JlbWVu
dDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1heEludGVydmFs
cyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQgY2hlY2tJREJD
YWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBzZW1hcGhvcmVJ
REJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGlz
QWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7CisgICAgICAg
IGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJhY2sgPSBjYWxs
YmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENo
ZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElE
ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9y
ZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2
YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7CisgICAg
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNo
ZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAg
ICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAg
ICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGNo
ZWNrcyBleGhhdXN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhl
ZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVj
a0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3Vs
ZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9y
ZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7
CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
TGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIgZW50
cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7
CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJMb2Nh
bFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7CisgICAgbGV0IGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VOYW1lID0g
InRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVlIjsKKyAgICBmdW5j
dGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7
CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7CisgICAgICAgIGNoZWNr
TG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVs
ZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExvY2FsU3RvcmFn
ZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFs
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2Fs
U3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBs
ZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBl
bnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5v
dCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VD
YWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAg
ICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFn
ZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjog
TG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRv
ZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVj
a0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRo
ZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50
ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgr
K2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2Nh
bFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxl
dGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVl
ID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAg
ICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0
KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdl
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFn
ZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRw
dXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9j
YWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAg
ICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9CisgICAgfQorCisgICAgYXN5
bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICAvLyBX
cml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3Nl
dC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5hbWUs
IHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIv
Y29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1Db29r
aWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlhbHM6
ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNpZGVD
b29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworCisgICAg
ICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShs
b2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxT
dG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gV3JpdGUg
SW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1dlYnNp
dGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNz
U3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tX
ZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSk7Cisg
ICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICByZXNl
dENvb2tpZXMoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOwor
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBCb3VuZERvbWFpbnMo
WyBvcmlnaW5VbmRlclRlc3QgXSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUodHJ1ZSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCwgdHJ1ZSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZG4ndCBnZXQgY2xh
c3NpZmllZCBhcyBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZVdl
YnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1l
eGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44OGU0NWQ3ZjE5OWEzYzY5YWJjMWVhMTVmMTc5MzI5OWZiNzdkNjVmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0
ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0
IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1
c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKworQmVmb3JlIGRl
bGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRw
T25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRl
IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2Vz
IGV4aXN0LgorQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIg
ZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50
LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRl
IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMg
ZXhpc3QuCitBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1w
dERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEt
ZGVsZXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTA0Nzk1ZWFkNmE5NjUxM2Y2MjMxNTNiMzVmYjY4
NTMyNmZiNzEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0
LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyNTUgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVz
b3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNl
dFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVjayB0
aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBu
byB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC48L2Rpdj4KKzxi
cj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAg
Y29uc3QgaHR0cE9ubHlDb29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0
IHNlcnZlclNpZGVDb29raWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3Qg
Y2xpZW50U2lkZUNvb2tpZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0
aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7
CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8g
MSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1Rv
T3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9
IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxl
dCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9
IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisg
ICAgICAgICAgICBhZGRPdXRwdXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3Jl
IikgKyAiIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIpOwor
ICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNo
IChjb29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1l
OgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChp
c0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiArIChp
c0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJT
aWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVs
ZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFt
ZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgo
aXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENsaWVu
dC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2Fn
ZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7Cisg
ICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAg
ZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRl
eGVkREIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAg
IHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAg
IGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7Cisg
ICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygp
OworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisKKyAg
ICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOworICAg
IGxldCBjaGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFs
c2U7CisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9u
LCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxDb3Vu
dGVySURCID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAg
ICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhl
cmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZh
bChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJD
aGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIg
Pj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hl
Y2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUg
ZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJ
REJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisg
ICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hl
Y2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVm
b3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJ
bnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlm
IChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlm
ICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGV4aGF1c3Rl
ZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5h
bWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJ
RCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5k
ZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQg
aW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJ
REJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0
LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAg
ICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAg
Y29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9j
YWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50
ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VD
YWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAg
ICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAg
ICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1h
eEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9j
YWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxv
Y2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFs
dWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0
LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2Ug
ZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBu
b3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdl
Q2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9j
YWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0
SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3Vu
dGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUp
OworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0
b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAi
ZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxT
dG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9j
YWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVs
ZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1
ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3
cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMu
CisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1j
b29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFs
czogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291
cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNp
ZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2lu
IiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAi
PTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUg
TG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5h
bWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMo
ZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisg
ICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNz
V2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3Rh
dGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250
aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5k
Q29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tM
b2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJ
REJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygpOwor
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBv
cmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEFwcEJvdW5kRG9tYWlucyhbIG9yaWdpblVuZGVy
VGVzdCBdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShv
cmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgi
RkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZGlkbid0IGdldCBjbGFzc2lmaWVkIGFzIHBy
ZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFBbmRD
b250aW51ZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398573</attachid>
            <date>2020-05-05 17:30:44 -0700</date>
            <delta_ts>2020-05-06 11:13:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210674-20200505173044.patch</filename>
            <type>text/plain</type>
            <size>99534</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE0OGY4ZmYwNWRkNTIx
MWY4MzU5NDVjM2ZmYWYxZGMzYTlmMzkxZS4uNTYyNTlkZWViMTQ5MWY4ZWU2YTQ0MmViNTIxZTVk
ODY4ZThlZjU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA1LTA1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91
bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFy
dHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIHRvIGFsbG93IGl0IHRvIGV4ZW1wdAorICAgICAgICBhcHAtYm91bmQgZG9tYWlucyBm
cm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KKworICAgICAgICBUZXN0czogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFp
bnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24t
ZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0
ZS1kYXRhLWRlbGV0aW9uLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpyZXNldEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKwogMjAyMC0wNS0wNSAgVGltb3RoeSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgIkVzc2VudGlhbCBTa2Vs
ZXRvbiIgZG9lcyBub3QgcmVzcG9uZCB0byBtb3VzZSBldmVudHMsIG9ubHkgdG91Y2ggZXZlbnRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDFhYWM3OGZmNzQ5YzczZjM2MTAyNjY1OGM3NGU4NjkyMjhlZmY2OWYuLmFh
ZDM3MmRiMGIwNDFiMjQzYWQwM2U3Yzg0OTdhMjAyZGI2OWM5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTkgQEAKKzIwMjAtMDUtMDUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+
CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21haW5zIGZyb20gSVRQJ3Mgd2Vic2l0ZSBk
YXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcgYmV0d2VlbiB0aGVt
c2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTUwNzY3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGZvcndhcmRzIGlu
Zm9ybWF0aW9uIGFib3V0IGFwcC1ib3VuZCBkb21haW5zIHRvIElUUCBhbmQgd2ViCisgICAgICAg
IHByb2Nlc3NlcyBzbyB0aGF0IHRoZXkgY2FuIGJlIGV4ZW1wdCBmcm9tIHdlYnNpdGUgZGF0YSBk
ZWxldGlvbiBhbmQKKyAgICAgICAgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJldHdlZW4g
dGhlbXNlbHZlcy4KKworICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBhcmUgY29uZmlndXJlZCBz
dGF0aWNhbGx5IGFuZCBhcHBseSB0byBhbGwgd2Vic2l0ZQorICAgICAgICBkYXRhIHN0b3Jlcy4g
VGhlcmVmb3JlIHRoZSBzZXR0aW5nIG5lZWRzIHRvIGJlIGZvcndhcmRlZCB0byBhbGwKKyAgICAg
ICAgd2Vic2l0ZSBkYXRhIHN0b3JlcyBhbmQgSVRQIGZ1bmN0aW9uYWxpdHkgaW4gYWxsIG5ldHdv
cmsgYW5kIHdlYgorICAgICAgICBjb250ZW50IHByb2Nlc3Nlcy4gVGhpcyBpcyBkb25lIHRocm91
Z2ggdGhlIG5ldyBzdGF0aWMgZnVuY3Rpb24KKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
QXBwQm91bmREb21haW5zRm9ySVRQSWZJbml0aWFsaXplZCgpLgorCisgICAgICAgIFNpbmNlIGFw
cC1ib3VuZCBkb21haW5zIGFyZSBsb2FkZWQgbGF6aWx5IGZyb20gZGlzayBhbmQgb24gYSBiYWNr
Z3JvdW5kCisgICAgICAgIHRocmVhZCwgdGhpcyBwYXRjaCBmb3J3YXJkcyB0aGVtIGluIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIGlmCisgICAgICAgIHRoZXkndmUgYWxyZWFkeSBi
ZWVuIGxvYWRlZC4gVGhlbiBldmVyeSB0aW1lIGFwcC1ib3VuZCBkb21haW5zIGFyZQorICAgICAg
ICB1cGRhdGVkLCB0aGV5IGFyZSBmb3J3YXJkZWQgdG8gSVRQLiBUaGlzIGVuc3VyZXMgdGhhdCBJ
VFAgd2lsbCBoYXZlIHRoZW0KKyAgICAgICAgYXMgc29vbiBhcyBwb3NzaWJsZS4KKworICAgICAg
ICBTZXR0aW5nIGFwcC1ib3VuZCBkb21haW5zIGZvciB0aGUgcHVycG9zZXMgb2YgSVRQIGF1dG9t
YXRpY2FsbHkgc3dpdGNoZXMKKyAgICAgICAgSVRQJ3MgY29va2llIGJsb2NraW5nIHBvbGljeSB0
byB0aGUgbmV3CisgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6
OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMuCisgICAgICAgIFRoaXMgaXMgZG9uZSBp
biBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJvdW5kRG9tYWlucygpLgor
CisgICAgICAgIFRoZSBDIEFQSSBjaGFuZ2VzIGFyZSBmb3IgdGVzdCBwdXJwb3Nlcy4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEFwcEJvdW5kRG9tYWlucyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJhbWV0ZXJz
VG9EZWZhdWx0VmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbiBjb25zdCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBC
b3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAg
ICAgICAgUmVuYW1lZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAgICAgICogU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyk6IERlbGV0ZWQu
CisgICAgICAgICAgICBSZW5hbWVkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUuCisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOiBEZWxl
dGVkLgorICAgICAgICAgICAgUmVuYW1lZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YXBwQm91bmREb21h
aW5zSWZJbml0aWFsaXplZCk6CisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmZXRj
aGluZyBvZiBhcHAtYm91bmQgZG9tYWlucyB3aXRob3V0IHRyaWdnZXJpbmcKKyAgICAgICAgICAg
IHRoZSBsYXp5IGxvYWRpbmcuIFRoaXMgaXMganVzdCB0byBhbGxvdyBzcGVjdWxhdGl2ZSBjb25m
aWd1cmF0aW9uIG9mIElUUAorICAgICAgICAgICAgcmlnaHQgd2hlbiBpdCdzIGNyZWF0ZWQg4oCU
IGlmIGFueSBhcHAtYm91bmQgZG9tYWlucyBhcmUgYWxyZWFkeSBjb25maWd1cmVkLAorICAgICAg
ICAgICAgZm9yd2FyZCB0aGVtIHRvIElUUCB2aWEgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldEFwcEJvdW5kRG9t
YWluc0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyBDb2NvYS1zcGVj
aWZpYyBhbmQgb25seSBhY2NlcHRzIGxvY2FsaG9zdCBhbmQgMTI3LjAuMC4xCisgICAgICAgICAg
ICB0byBiZSBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBkb21haW5zLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpmb3J3YXJkQXBwQm91bmREb21haW5zVG9JVFBJZkluaXRpYWxpemVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQ
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDIwLTA1LTA1ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICAiRXNzZW50
aWFsIFNrZWxldG9uIiBkb2VzIG5vdCByZXNwb25kIHRvIG1vdXNlIGV2ZW50cywgb25seSB0b3Vj
aCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCBjNTg2NjlmMWNmMmM5YjFjNGI2ZTZlOGM2
NDU5ZGNiYTkxYWY1OGYzLi40OTQzMGFmZjkwOTk4NzM0NzExODhmYjliNWYzOGVhOWJmOGNmNmQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC0xMzQsNiArMTM0LDggQEAgYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLAogICAgIHN3aXRjaCAobV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSB7CiAg
ICAgY2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw6CiAgICAgICAgIHJldHVy
biB0cnVlOworICAgIGNhc2UgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0
QmV0d2VlbkFwcEJvdW5kRG9tYWluczoKKyAgICAgICAgcmV0dXJuICFzaG91bGRFeGVtcHREb21h
aW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9ja2luZyhmaXJzdFBhcnR5RG9tYWluLCByZXNv
dXJjZURvbWFpbik7CiAgICAgY2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxP
blNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbjoKICAgICAgICAgaWYgKCFoYXNIYWRVc2VySW50
ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE0NSw2ICsxNDcsMTUgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEV4
ZW1wdERvbWFpblBhaXJGcm9tVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlRG9tYWluKSBjb25zdAoreworICAgIEFTU0VSVCh0b3BGcmFtZURvbWFpbiAhPSByZXNvdXJj
ZURvbWFpbik7CisgICAgaWYgKHRvcEZyYW1lRG9tYWluLmlzRW1wdHkoKSB8fCByZXNvdXJjZURv
bWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0b3BG
cmFtZURvbWFpbiA9PSByZXNvdXJjZURvbWFpbiB8fCAobV9hcHBCb3VuZERvbWFpbnMuY29udGFp
bnModG9wRnJhbWVEb21haW4pICYmIG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKHJlc291cmNl
RG9tYWluKSk7Cit9CisKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlm
IChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2NrQ29v
a2llcyhyZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCkBAIC0yOTIsNiArMzAz
LDE2IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9jCiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlID0gYmxvY2tpbmdNb2RlOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlu
cykKK3sKKyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldEFwcEJvdW5kRG9tYWlucygpCit7CisgICAg
bV9hcHBCb3VuZERvbWFpbnMuY2xlYXIoKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAog
ewogICAgIGlmICghbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyB8fCAhcGFnZUlEIHx8IG1f
bmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291cmNlLmlzRW1wdHko
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oCmluZGV4IDEzOTFkZWQ0ZDg4ZWRiMjc2MDJmNjljMDZkMmZhMTM4MGRi
ODI3ZDQuLjE5Njg1ZjFiNWVlNDRjZDM2Y2FkNTdhNWVhN2QxYjY0NmViYmRmNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaApAQCAtNzcsNyArNzcsNyBAQCBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogZW51bSBjbGFz
cyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDog
Ym9vbDsKLWVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3Qg
eyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9Q
ZXJEb21haW5Qb2xpY3kgfTsKK2VudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIEFsbE9u
U2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xp
Y3kgfTsKIGVudW0gY2xhc3MgU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgOiBib29s
IHsgWWVzLCBObyB9OwogZW51bSBjbGFzcyBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBBbGxCdXRDb29raWVzTGl2ZU9uVGVz
dGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3RpbmdUaW1lb3V0IH07CiBlbnVtIGNs
YXNzIFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC05NSw2ICs5NSw5IEBAIHB1
YmxpYzoKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKKyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGVybWl0UHJvY2Vzc1Rv
VXNlQ29va2llQVBJKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHByb2Nl
c3NNYXlVc2VDb29raWVBUEkoKTsKIApAQCAtMTk2LDYgKzE5OSw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVy
RnJvbVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
UGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVM
b2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNl
dEFwcEJvdW5kRG9tYWlucygpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0yNDEsNyArMjQ2LDgg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBPcHRp
b25hbDxTZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIE9wdGlv
bmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgVG9wRnJhbWVEb21haW4mLCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRXhlbXB0RG9t
YWluUGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgVG9wRnJhbWVEb21haW4m
LCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYpIGNvbnN0OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3I7
CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQnV0S2VlcENvb2tpZXNGb3I7CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9y
ZWdpc3RyYWJsZURvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5OwpAQCAtMjUz
LDYgKzI1OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgUmVnaXN0cmFibGVEb21haW4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVBy
ZXZhbGVudFJlc291cmNlOwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSBmYWxzZTsKICAgICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6
OkFsbCB9OworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fYXBwQm91bmREb21haW5z
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI3Nyw2ICsyODQsNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAogICAgICAgICBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsCiAgICAg
ICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uLAogICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOjpPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kKICAgICA+OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5k
ZXggMWI3YTdjZmNmNTM3YWMyYmM5OWY2ODYyMjQwNzc3NjAyMGZjZGU0NC4uMzFlOTE5OTg2NTg2
MDAyMzFkNjRjYmMwNDkzMDFjYzVjM2FmNWI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNjIxLDcgKzI2MjEsNyBA
QCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhcwogICAgIFZlY3RvcjxEb21haW5EYXRhPiBkb21haW5z
ID0gdGhpcy0+ZG9tYWlucygpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gZG9tYWluSURzVG9DbGVh
ckdyYW5kZmF0aGVyaW5nOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogZG9tYWlucykgewot
ICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRh
RGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2Vy
SW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7CiAg
ICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3Vs
ZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDY1MDY3OTcxOTYyMmFmMTJmYWQ1YzE2
MmYyY2RkY2FhYWI5MGU0NzYuLmFmNTAwNDFkMjM3YjQwYzc2ZDViNGQxYzc2MDg4OTUzYTNhZjhm
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuY3BwCkBAIC05ODAsNyArOTgwLDcgQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVMKICAgICBh
dXRvIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IG5vdzsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNU
b0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZU9yUmVzdHJpY3RGb3I7CiAg
ICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMo
KSkgewotICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNp
dGVEYXRhRGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRl
c3RVc2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZSk7CiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMs
IHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDNjODZhMzQ2MGJiMTE2ZTM3NDg2NzkzOTY0NmE0
NjExZjlmNDAxNmEuLmUzNGM1ZTk2M2NkM2NiZDA1ZGFmMjY2YjM5M2M3OTI4OWIxM2VkMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMTcsNiAr
MzE3LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyCiAgICAgbV9kZWJ1Z01hbnVhbFByZXZh
bGVudFJlc291cmNlID0gZG9tYWluOwogfQogCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9t
YWlucykKK3sKKyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7Cit9CisK
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZVN0YXRpc3RpY3NQcm9j
ZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKQEAgLTU2OCw2ICs1NzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIG1fcGFyYW1ldGVycyA9IHsgfTsKKyAgICBtX2FwcEJvdW5kRG9t
YWlucy5jbGVhcigpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9n
VGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnQpCkBAIC02NTIsNiArNjU4LDExIEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xvZ0RvbWFpbnNJbkJhdGNoZXMo
Y29uc3QgY2hhciogYWN0aW9uLCBjCiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcs
ICIlIiBQVUJMSUNfTE9HX1NUUklORyAiIHRvICgle3B1YmxpY31kIG9mICV1KTogJSIgUFVCTElD
X0xPR19TVFJJTkcgIi4iLCBhY3Rpb24sIGJhdGNoTnVtYmVyLCBudW1iZXJPZkJhdGNoZXMsIGRv
bWFpbnNUb1N0cmluZyhiYXRjaCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKK2Jvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAoreworICAgIHJldHVybiAhZG9t
YWluLmlzRW1wdHkoKSAmJiAoZG9tYWluID09IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWlu
IHx8IG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbikpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKaW5kZXggNDQ4MzMzYzQ5ZjYzYjJmMTkyMGI4NmUzMzIwNTg3ZmNlMzViNjkzYi4uMmRi
ZTllNTBiYWU0NzBmOWM4MTA1YzUyYzlmNTAzYWZiZGVmNzQ2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTY5LDYgKzE2OSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID09IFdlYkNvcmU6OlNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpZZXM7IH07CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZSBtb2RlKSB7IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBtb2Rl
OyB9CiAgICAgdm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oUmVnaXN0cmFibGVE
b21haW4mJiBkb21haW4pIHsgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBXVEZNb3Zl
KGRvbWFpbik7IH0KKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2ll
c0Jsb2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKQEAgLTI0
OSw3ICsyNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWJ1Z0xvZ2dpbmdFbmFibGVkOyB9OwogICAgIGJvb2wgZGVidWdN
b2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfQogICAgIFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZTsgfQotICAgIFJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOyB9
CisgICAgYm9vbCBzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBt
YXhOdW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7IDUwIH07CiAgICAg
CkBAIC0yOTEsNiArMjkyLDcgQEAgcHJpdmF0ZToKICAgICBTaG91bGRJbmNsdWRlTG9jYWxob3N0
IG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCB7IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyB9
OwogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1fZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1f
c3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IG1fYXBwQm91bmREb21haW5zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDY4ZjU1
YzRjNWNkZGU3NWM2YjQyYWIyMmFmODczMTllZDY4NjQ2YjIuLjUzODdiNzY5MjRhN2I0MDdhMzYx
MjFhYjg4YzlkZWVjODIyMWY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCkBAIC02NzgsNiArNjc4LDMzIEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3Qg
UmVnaXN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5z
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRv
bWFpbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGRvbWFpbnNDb3B5ID0gY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnMpOworCisgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1
dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCkpIHsKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRBcHBCb3VuZERvbWFpbnMo
V1RGTW92ZShkb21haW5zKSk7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxF
eGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHBv
c3RUYXNrKFt0aGlzLCBkb21haW5zID0gV1RGTW92ZShkb21haW5zQ29weSksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGlmIChtX3N0YXRpc3RpY3NTdG9yZSkgeworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUt
PnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICAgICAgICAgIG1fc3Rh
dGlzdGljc1N0b3JlLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMpOworICAg
ICAgICB9CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0pOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlk
Q3JlYXRlTmV0d29ya1Byb2Nlc3MoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CkBAIC0xMjgwLDYgKzEzMDcsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhDb21wbGV0aW9uSGEKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX25ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlm
IChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdl
U2Vzc2lvbigpKQorICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlc2V0QXBwQm91bmREb21h
aW5zKCk7CisgICAgfQorCiAgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0
YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5yZXNldFBhcmFt
ZXRlcnNUb0RlZmF1bHRWYWx1ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAppbmRleCAxMzU5YjNiN2U3NWUwOTQ1MTQ3Yzk3MjRhN2Y4MDRmYTU1MmM2
NzZlLi4zNDVmZDI4NzdhYzllZDIwMzQ5MTQxMGUzYmUwMWM3NjBkNmUxODdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yNzksNiArMjc5LDcg
QEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIHNldFNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkKFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVk
KTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3Mo
KTsKIAogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCA5MmU5ZmRlYzk1NTVhZmEyNGQ0NDg4NGI2MWEyNzljYjQ5MmZiODgwLi4zNzI5NTc2YTM5OGQ2
YjlmNmE1ZmZhYjE2N2Q0MjRiMjdmZjI3ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTMwNyw2ICsxMzA3LDE4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6Omhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKIH0KIAor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+JiYgYXBwQm91bmREb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5k
RG9tYWlucyhXVEZNb3ZlKGFwcEJvdW5kRG9tYWlucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFi
bGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtlbmFibGVkXShhdXRvJiBuZXR3b3JrU2Vzc2lvbikg
ewpAQCAtMTMxNSw3ICsxMzI3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkRG93
bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGkKICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZShibG9ja2luZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IDg3ZWU0NjcxZWNiMWNjMDQxMzVlMDYzNzgzM2Y1YWEyNjc0ZDcxY2Qu
LjAxMmRkNjU1N2Q2NDBhMThkYTRjZWU5MDJhNzlmNDJiYmZjYmQ0ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI2MSw5ICsyNjEsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KSBjb25zdDsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgYm9vbCBpc0lUUERhdGFiYXNl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJVFBEYXRhYmFzZUVuYWJsZWQ7IH0KICAgICB2
b2lkIHNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxNWUxNzY0MWYwZGExZWI1
NDQyMWUwYjJiOGFiZGI1NjlmMmRiZDg3Li41MGJhZTQzODJmY2QxYjQ5MWQ5NzQ1MjcwNzEyNjM3
ZGI4YTIzMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE0MSw4ICsxNDEsOSBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fk
c1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVI
dHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCiAgICAgSGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAt
PiAoYm9vbCBoYXNJc29sYXRlZFNlc3Npb24pIEFzeW5jCisgICAgU2V0QXBwQm91bmREb21haW5z
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWlucykgLT4gKCkgQXN5
bmMKICAgICBTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVk
KSAtPiAoKSBBc3luYwotICAgIFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKSAtPiAoKSBBc3luYworICAgIFNl
dFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2lu
Z01vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06Ym9vbCBXZWJD
b3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkKSAtPiAoKSBBc3lu
YwogICAgIFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlKSAtPiAoKSBBc3luYwogICAgIFNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpp
bmRleCBhMmNkYjQzN2NhZWQ2Nzg3MWRhM2M3ZWE0ODI3MGU3OTRiZWY0MzhhLi42MWYxMGNjODEy
NjRlMjRhNmY3NmU1MTk0MTE5ZmQ1NjdmMzdmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0x
MjI3LDYgKzEyMjcsOCBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29h
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgIG1fZGV2aWNlTWFu
YWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgPSBwYXJhbWV0ZXJzLmRldmljZU1hbmFnZW1lbnRS
ZXN0cmljdGlvbnNFbmFibGVkOwogICAgIG1fYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2Vt
ZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyA9IHBhcmFtZXRlcnMuYWxsTG9hZHNCbG9ja2VkQnlE
ZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZzsKIAorICAgIGlmIChtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MgJiYgIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuYXBwQm91bmREb21haW5zLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5zZXRBcHBCb3VuZERvbWFpbnMoV1RGTW92ZShwYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucyksIFtdIHsgfSk7CiAj
aWYgSEFWRShTRVNTSU9OX0NMRUFOVVApCiAgICAgYWN0aXZhdGVTZXNzaW9uQ2xlYW51cCgqdGhp
cywgcGFyYW1ldGVycyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCmluZGV4IDkyN2FlYzNhNzRhZDFl
ZmNiNTk0OGEwNDNmODFmY2YyOWY5YmViOWUuLmI5YWNiZDNiMmE3ODUyMzRkOWM0MGI1N2Q4MzYz
M2U2MmFjNjZmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0
Q29va2llcyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbiB7IH07CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gYXBwQm91bmREb21haW5zIHsgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBt
YW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgICAgIGVuY29kZXIgPDwgZmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhbmRh
bG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAgICBlbmNvZGVyIDw8IGFwcEJvdW5kRG9tYWlu
czsKICAgICAgICAgZW5jb2RlciA8PCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICB9CiAK
QEAgLTEyNyw2ICsxMjksMTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzIHsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgICAgIE9wdGlvbmFsPEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgIGRlY29k
ZXIgPj4gYXBwQm91bmREb21haW5zOworICAgICAgICBpZiAoIWFwcEJvdW5kRG9tYWlucykKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBk
ZWNvZGVyID4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBpZiAoIW1hbnVhbFBy
ZXZhbGVudFJlc291cmNlKQpAQCAtMTQ2LDYgKzE1Myw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICAgICAgICAgIFdURk1vdmUoKmZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKSwKICAgICAgICAgICAgIFdURk1vdmUoKnN0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbiksCisgICAgICAgICAgICBXVEZNb3ZlKCphcHBCb3VuZERv
bWFpbnMpLAogICAgICAgICAgICAgV1RGTW92ZSgqbWFudWFsUHJldmFsZW50UmVzb3VyY2UpLAog
ICAgICAgICB9fTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCBmMGY1YTE0MWFiN2ZlZWNkMmJl
NjgyYmI4ODg1ZmU2Mjg2NTI3MjliLi4yY2ZkM2ExZTQ1ZWVkMDI3NDM5ZTIzZWEwOTE1Yzg3ZTFm
NzUwNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWlu
Lmg+CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIApAQCAtNjE3LDYgKzYxOCwzMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbgogI2Vu
ZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVz
dGluZyhXS0FycmF5UmVmIG9yaWdpblVSTHNSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZWZQdHI8QVBJOjpBcnJheT4gb3Jp
Z2luVVJMc0FycmF5ID0gdG9JbXBsKG9yaWdpblVSTHNSZWYpOworICAgIHNpemVfdCBuZXdTaXpl
ID0gb3JpZ2luVVJMc0FycmF5ID8gb3JpZ2luVVJMc0FycmF5LT5zaXplKCkgOiAwOworICAgIEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnM7CisgICAgZG9tYWlucy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5ld1NpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbmV3U2l6ZTsgKytpKSB7CisgICAgICAgIGF1dG8qIG9yaWdpblVSTCA9IG9yaWdpblVSTHNB
cnJheS0+YXQ8QVBJOjpVUkw+KGkpOworICAgICAgICBpZiAoIW9yaWdpblVSTCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgZG9tYWlucy5hZGQoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4geyBVUkwoVVJMKCksIG9yaWdpblVSTC0+c3RyaW5nKCkpIH0pOworICAg
IH0KKworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9y
VGVzdGluZyhXVEZNb3ZlKGRvbWFpbnMpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShvcmlnaW5VUkxzUmVmKTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7
CisgICAgVU5VU0VEX1BBUkFNKGNvbXBsZXRpb25IYW5kbGVyKTsKKyNlbmRpZgorfQorCiB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgKaW5kZXggZjlhMzgyMzdmZjM4NzlmNzBjMjI5MTg0YjVlNmUyN2Y2OTRkNGM0MC4uNzFiOTdm
M2NiZjY5ODRkNTQyYjQ4OGQ1OGM5MDI1N2U0NzNhNjBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTEyOSw2
ICsxMjksOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUgogV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3Rp
bmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVE
YXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNG
b3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0
cmljdENvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5n
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlv
bkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmRE
b21haW5zRm9yVGVzdGluZyhXS0FycmF5UmVmIG9yaWdpblVSTHNSZWYsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmdGdW5jdGlvbiBj
b21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRl
eHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9D
b25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGMxNTc3
YjhkOGYyZTY4OTc0ZjE3NWVkYmYwYzkzYjZmYmM3NTIzZjkuLjUwMjk4OGFlNTVlODFhMWE0Mzc4
ZTRlNzE4OTgzYzc3MzgxZjcyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEzNiw2ICsxMTM2LDEz
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6SGFzSXNvbGF0ZWRTZXNzaW9uKHNlc3Npb25JRCwgZG9tYWlu
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgYXBw
Qm91bmREb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
U2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhzZXNzaW9uSUQsIGFw
cEJvdW5kRG9tYWlucyksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7
Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJy
ZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewpAQCAtMTE0
OCw5ICsxMTU1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3Jh
ZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb20KICAgICB9KTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKHNlc3Np
b25JRCwgYmxvY2tpbmdNb2RlKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShzZXNzaW9uSUQs
IGJsb2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSJf
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CmluZGV4IGUwN2NmOTkwNDk4YjZiMDgwYjU1Y2I5MmVhMTVkMzhiNzY0YjI0ZGMuLjcxZWUzYmY0
OWEwOGIzNGE0N2U3Y2Y0MWQyM2NmOTQ4M2M1YTVlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNzUsOCAr
MTc1LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlD
b29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vi
c2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0
aW9uPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBoYXNJ
c29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRBcHBCb3VuZERv
bWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRF
bmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJD
b3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDIyNGE1YTIwYWQxMWNhNTljM2IzMDQzMzc2M2QyNDAxMzNkZWE3NWYuLjkyNGNk
N2I1YWRjYWNmMWEzNjY1YTFhYWM2YmE4MWVmMzNjNzRkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYwNSw4ICs2MDUsOSBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURh
dGFTdG9yZSogd2l0aAogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU6OkFsbDsKICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZCBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObzsKICNlbmRpZgotICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CiAgICAgV2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZTo6QWxsQnV0Q29va2llczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW4geyB9OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IGFwcEJvdW5kRG9tYWlucyB7IH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogICAgIFdFQl9QUk9DRVNTX1BPT0xf
QURESVRJT05TXzIKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsKQEAgLTYyNCw2ICs2
MjUsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAgICAgICAgICBmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgICAgICBhcHBCb3VuZERvbWFpbnMgPSBu
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
YXBwQm91bmREb21haW5zOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBu
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
bWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjUwLDYgKzY1Miw3IEBA
IE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vz
cyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
OwogICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVB
cHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IG5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3Vu
ZERvbWFpbnM7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5tYW51YWxQ
cmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQogCkBAIC02ODksNiArNjkyLDggQEAgTmV0d29y
a1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNp
dGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQsCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCisg
ICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwKKyAgICAgICAgYXBwQm91bmREb21h
aW5zLAogICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSwKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1MGMwYmY5ODJmZDM3
YzdkYzM4N2I4OTg5Yzg3MjY3YzljYTVmMjdmLi4zYWE5OTRhYzk1MWViYWQxOWQ1ZWY4NzQ4Mjdh
YTc0MTZiNTQ2YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTQ1OCw5ICs0NTgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFn
ZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZQogICAgICAg
ICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIlJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCIsIG1lc3NhZ2VCb2R5KTsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzRm9yVGVzdGluZyh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSwgW2FjdGl2aXR5ID0g
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OnNldFNob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nIl9zKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
YzFlM2ExNGFlNDhjNzk4YWNlZjc1OTA0ZjU1YmI2OTJmNDA2NWJiMi4uNTFiZjlmZGZhYTRkODI4
ZDZjZWI3Y2ZmNmQ3NWRiMzQ3ZDZjMjM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKQEAgLTIxOSw3ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgbm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVk
KCk7CiAgICAgc3RhdGljIHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVE
b21haW5zRmluaXNoZWQoKTsKIAotICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0ZvclRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBlbmFibGVTdWRkZW5U
ZXJtaW5hdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGYz
NDIzYTkyYWJhZDliZmFhMGY4ZWVkOTIxMmJlMGEyYTdjNWQ0MDQuLjJjYzY1NDFmYWZkMDNmY2Iy
YTJjYTQxM2QzNWQ1ZDc0YzY1YmY1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KQEAgLTQxMyw2ICs0MTMsOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxp
emVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVpbgogICAgICAg
ICBrZXlFeGlzdHMgPSBkb21haW5zID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkLCBm
b3JjZVJlaW5pdGlhbGl6YXRpb24sIGRvbWFpbnMgPSByZXRhaW5QdHIoZG9tYWlucyldIHsKKyAg
ICAgICAgICAgIGlmIChoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyAmJiBmb3JjZVJlaW5p
dGlhbGl6YXRpb24gIT0gRm9yY2VSZWluaXRpYWxpemF0aW9uOjpZZXMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCiAgICAgICAgICAgICBpZiAoZm9yY2VSZWluaXRpYWxpemF0aW9uID09IEZv
cmNlUmVpbml0aWFsaXphdGlvbjo6WWVzKQogICAgICAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlu
cygpLmNsZWFyKCk7CiAKQEAgLTQzMyw2ICs0MzYsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVp
bgogICAgICAgICAgICAgICAgIFdFQlNJVEVfREFUQV9TVE9SRV9BRERJVElPTlMKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zID0gdHJ1ZTsK
KyAgICAgICAgICAgIGlmIChpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCisgICAgICAg
ICAgICAgICAgZm9yd2FyZEFwcEJvdW5kRG9tYWluc1RvSVRQSWZJbml0aWFsaXplZChbXSB7IH0p
OwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTQ0NCw2ICs0NDksOCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hTZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gSG9wcGluZyB0
byB0aGUgYmFja2dyb3VuZCB0aHJlYWQgdGhlbiBiYWNrIHRvIHRoZSBtYWluIHRocmVhZAorICAg
IC8vIGVuc3VyZXMgdGhhdCBpbml0aWFsaXplQXBwQm91bmREb21haW5zKCkgaGFzIGZpbmlzaGVk
LgogICAgIGFwcEJvdW5kRG9tYWluUXVldWUoKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoaGFzSW5pdGlhbGl6
ZWRBcHBCb3VuZERvbWFpbnMpOwpAQCAtNDg0LDYgKzQ5MSwyNCBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmdldEFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhh
c2hTZXQ8VwogICAgIH0pOwogfQogCitPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6YXBwQm91bmREb21haW5zSWZJbml0aWFsaXpl
ZCgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAoIWhhc0luaXRp
YWxpemVkQXBwQm91bmREb21haW5zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBhcHBCb3VuZERvbWFpbnMoKTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpz
ZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZG9tYWluLnN0cmluZygpID09ICJsb2NhbGhvc3QiX3MgfHwgZG9tYWluLnN0
cmluZygpID09ICIxMjcuMC4wLjEiX3MpOworCisgICAgYXBwQm91bmREb21haW5zKCkgPSBXVEZN
b3ZlKGRvbWFpbnMpOworICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zID0gdHJ1ZTsK
KyAgICBmb3J3YXJkQXBwQm91bmREb21haW5zVG9JVFBJZkluaXRpYWxpemVkKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZWluaXRpYWxp
emVBcHBCb3VuZERvbWFpbnMoKQogewogICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5z
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGUzNjM3NmM1ZWQyZjI5N2FkYTQ0MTUwYWNi
NTAzOTcwZWExYzJkYzguLmM2MGZkOWEzMGYxMTZiZGI2ZTZkMWNkZDg3Y2FkMjcyMTdlOGNmOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xODU4LDIwICsxODU4LDI0IEBAIFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgV2Vic2l0ZURhdGFTdG9yZTo6dGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nCiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwg
Ym9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIGNhbGxiYWNrQWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5n
TW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6Ok9ubHlBY2NvcmRp
bmdUb1BlckRvbWFpblBvbGljeTsKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgYmxvY2tpbmdN
b2RlID0gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uID8gV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24g
OiBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CisgICAgc2V0VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01vZGUsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxv
Y2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNy
ZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgaWYgKHRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUoKSAhPSBibG9ja2luZ01vZGUpIHsKICAgICAgICAgbV90aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlID0gYmxvY2tpbmdNb2RlOwogICAgICAgICBmb3IgKGF1dG8mIHdl
YlByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHdlYlByb2Nlc3Muc2V0U2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoYmxvY2tpbmdNb2RlLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAg
ICAgIHdlYlByb2Nlc3Muc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01v
ZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgYmxvY2tpbmdNb2RlLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
KyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKG1fc2Vzc2lvbklELCBibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMjIyNSw3ICsy
MjI5LDE0IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBh
cmFtZXRlcnMoKQogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZSA9IGZhbHNlOwogICAgIGF1dG8gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0
Q29va2llczsKLSAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OworICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICBIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgYXV0byBvcHRpb25hbEFwcEJvdW5kRG9tYWlucyA9IGFwcEJvdW5kRG9tYWluc0lm
SW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAob3B0aW9uYWxBcHBCb3VuZERvbWFpbnMgJiYgaXNBcHBC
b3VuZElUUFJlbGF4YXRpb25FbmFibGVkKQorICAgICAgICBhcHBCb3VuZERvbWFpbnMgPSAqb3B0
aW9uYWxBcHBCb3VuZERvbWFpbnM7CisjZW5kaWYKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAKICAg
ICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycyA9IHsKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KSwKQEAgLTIyNDUsNiArMjI1Niw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
IFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBXZWJDb3JlOjpTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8sCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCisgICAgICAgIFdURk1vdmUoc3RhbmRhbG9uZUFwcGxp
Y2F0aW9uRG9tYWluKSwKKyAgICAgICAgV1RGTW92ZShhcHBCb3VuZERvbWFpbnMpLAogICAgICAg
ICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSks
CiAgICAgfTsKIApAQCAtMjQyNCw0ICsyNDM3LDM5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShVUkwmJiBvbGROYW1lLCBVUkwmJiBuZXdOYW1lLCBP
CiAgICAgfQogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5pdGlhbGl6ZWQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIGF1dG8gYXBwQm91bmREb21haW5zID0gYXBwQm91bmREb21haW5zSWZJbml0
aWFsaXplZCgpOworICAgIGlmICghYXBwQm91bmREb21haW5zKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIHByb3BhZ2F0ZUFwcEJvdW5kRG9tYWlucyA9IFtjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSAoV2Vic2l0ZURhdGFTdG9yZSogc3RvcmUs
IGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKSB7Cisg
ICAgICAgIGlmICghc3RvcmUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0
b3JlLT50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgIT0gV2ViQ29yZTo6VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucykKKyAg
ICAgICAgICAgIHN0b3JlLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERv
bWFpbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOworCisgICAgICAgIHN0b3JlLT5zZXRBcHBCb3VuZERvbWFpbnNGb3JJVFAoZG9tYWlu
cywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7CisgICAgfTsKKworICAgIHByb3BhZ2F0ZUFwcEJvdW5kRG9tYWlucyhnbG9iYWxEZWZhdWx0
RGF0YVN0b3JlKCkuZ2V0KCksICphcHBCb3VuZERvbWFpbnMpOworCisgICAgZm9yIChhdXRvKiBz
dG9yZSA6IG5vbkRlZmF1bHREYXRhU3RvcmVzKCkudmFsdWVzKCkpCisgICAgICAgIHByb3BhZ2F0
ZUFwcEJvdW5kRG9tYWlucyhzdG9yZSwgKmFwcEJvdW5kRG9tYWlucyk7Cit9CisKK3ZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQKGNvbnN0IEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNz
KCkpCisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0QXBwQm91bmREb21haW5zRm9yUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhtX3Nlc3Npb25JRCwgZG9tYWlucywgW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorI2Vu
ZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBjZDY3ZWI1ODJmZGI5NWJhOWYyMTgwNDgyNDRhZWVj
YjNjMzkwM2ZhLi5hMzViNjk3OTc1YTlmMTVkZTEyMjI5MWQ5YmQ4ZGEzYTIzMTI0YWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCkBAIC0xOTksNiArMTk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFzSXNvbGF0
ZWRTZXNzaW9uRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBjb25zdDsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRE
b3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0
cmljdENvb2tpZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CkBAIC0yOTYsNiArMjk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QXBwQm91bmRE
b21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCBlbnN1cmVBcHBCb3VuZERvbWFp
bnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiYpPiYmKSBjb25zdDsKICAgICB2b2lkIHJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9t
YWlucygpOworICAgIHN0YXRpYyB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZvcmNlUmVpbml0aWFsaXphdGlv
biA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0zMzEsNiArMzMzLDEzIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIG1heWJlUmVnaXN0ZXJXaXRoU2Vzc2lvbklETWFwKCk7CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBzdGF0aWMgT3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4+IGFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKTsKKyAgICBjb25zdGV4cHIgc3Rh
dGljIGNvbnN0IHN0ZDo6YXRvbWljPGJvb2w+IGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxl
ZCA9IGZhbHNlOworICAgIHN0YXRpYyB2b2lkIGZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElm
SW5pdGlhbGl6ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldEFw
cEJvdW5kRG9tYWluc0ZvcklUUChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKKwogICAgIGNvbnN0
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCiAgICAgUmVmPFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA4MmMzYzliODc3OGM0ZjAxYTA0YmFmYzJjNWI1OTVh
YTI2NTI1NTczLi41NDY1OGUxYWRhY2ViMTdjYTg3ZmI0YTg0NTU0NmFlMzM2MGE1OGM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xODk1LDcgKzE4OTUsNyBA
QCBib29sIFdlYlByb2Nlc3M6OmFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCkgY29uc3QKIH0KIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFdlYlByb2Nlc3M6OnNl
dFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzOjpzZXRUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9
IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDE4OWIzNGFmMzQ3OGQ3NWFl
NjM5ZDk3MmRmNzkwZTcwMTRjYzdiMDQuLmI4YzllN2M5NTMyMTYxZTAwZWNmNGQ4MDc1NmQxZDI3
YmRhZTI5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDU4LDcg
KzQ1OCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVz
dGluZyhXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nl
c3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBl
MGZlZTBiMDRkZTY5YzY2MWM1OWVmNzBlNjZlYzcwMDQ4Y2JlMmQ1Li4xMTQ5YmYwODk4NjY1ZmNj
NWY3YzBmNTBmZmI3YzU3YTU0OGVhNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTU3LDcgKzE1Nyw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rm9yVGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNj
aGVkdWxlTm90aWZpY2F0aW9uKSAtPiAoKSBBc3luYwotICAgIFNldFNob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKKyAgICBTZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDIxMGY5N2I0ZTQ0ZjZiZWZiZWEzZjM1OGZlNDE1MDE3MGViYjMxMDkuLmFkZDk0
N2YyNjdjY2U5NGYyN2FlZjA5NmZjN2U5ZGI4YWQyNzc1OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wNS0w
NSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeGVtcHQg
YXBwLWJvdW5kIGRvbWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gYW5kIHRo
aXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBUZXN0UnVubmVyIGZ1bmN0aW9u
CisgICAgICAgIHNldEFwcEJvdW5kRG9tYWluKCkgd2hpY2ggdGFrZXMgYW4gYXJyYXkgb2Ygb3Jp
Z2luCisgICAgICAgIHN0cmluZ3MgYW5kIHNldHMgdGhlbSB0byBhcHAtYm91bmQgZG9tYWlucy4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0QXBwQm91
bmREb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkU2V0QXBwQm91bmREb21h
aW5zQ2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpBcHBCb3VuZERvbWFpbnNDYWxsYmFja0NvbnRleHQ6OkFwcEJv
dW5kRG9tYWluc0NhbGxiYWNrQ29udGV4dCk6CisgICAgICAgIChXVFI6OmRpZFNldEFwcEJvdW5k
RG9tYWluc0NhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEFwcEJv
dW5kRG9tYWlucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkU2V0QXBwQm91bmREb21haW5z
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjAt
MDUtMDUgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVX
UyBzaG91bGQgc2tpcCBBcHBsZSBXaW4gYnVpbGQgYW5kIHRlc3RzIGZvciBwYXRjaGVzIHRoYXQg
b25seSBjaGFuZ2UgV2ViS2l0MiBzb3VyY2VzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRl
eCA1Y2JlOTUxNjJlZDdjZDc0NzI3NDM2MDBmY2QzYzJlNGE5YWU4Mzk1Li5hMTlkZjk1ZjY0MDU1
YmVkYjA1MjdkMGRjYWJjNzg2ZmYwN2Q0NzhkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
QEAgLTM5Myw3ICszOTMsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCByZXNl
dE1vY2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1
bnNpZ25lZCBsb25nIG9yaWVudGF0aW9uKTsKICAgICBib29sZWFuIGlzTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CisKICAgICBib29sZWFuIGhhc0FwcEJvdW5kU2Vzc2lv
bigpOworICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKG9iamVjdCBvcmlnaW5zQXJyYXksIG9i
amVjdCBjYWxsYmFjayk7CiAKICAgICB2b2lkIGluamVjdFVzZXJTY3JpcHQoRE9NU3RyaW5nIHN0
cmluZyk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdXNlclNjcmlwdElu
amVjdGVkQ291bnQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDEwZTZlZTNmNzFmMzIxNmZiNDc2MWVl
ZWVjNjU3MDBiM2YyYzBjMGYuLmZlNWQ3NTc0ZDcxZjMzY2VjYWFhMmM3NmFjNzE0NGU4ZWNkMzdm
MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC01MTgsNyArNTE4LDEyIEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0
cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+cGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldEFwcEJvdW5kRG9tYWlucyIp
KSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2so
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBlcnJvck1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiRXJyb3IiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJv
ZHkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikpOwog
ICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UsIGVycm9yTWVzc2FnZU5hbWUuZ2V0KCks
IGVycm9yTWVzc2FnZUJvZHkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNTNkMTFhZDczM2U5MWQ4YzEx
ODQ0YTEwMmYyNzYzNWQyY2YyMDBhMi4uNGExOGMxODkzNTA3ZDNkNmQzZDRmZmJkZDFiZDA5NDE4
NzU1MDViOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NjMsNiArNzYzLDcgQEAgZW51bSB7CiAgICAgVGV4dEZp
ZWxkRGlkQmVnaW5FZGl0aW5nQ2FsbGJhY2tJRCwKICAgICBUZXh0RmllbGREaWRFbmRFZGl0aW5n
Q2FsbGJhY2tJRCwKICAgICBDdXN0b21NZW51QWN0aW9uQ2FsbGJhY2tJRCwKKyAgICBEaWRTZXRB
cHBCb3VuZERvbWFpbnNDYWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEID0g
MTAwCiB9OwogCkBAIC0yOTc1LDQgKzI5NzYsNDMgQEAgYm9vbCBUZXN0UnVubmVyOjpoYXNBcHBC
b3VuZFNlc3Npb24oKQogICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRp
Y19jYXN0PFdLQm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKIH0KIAordm9pZCBUZXN0
UnVubmVyOjpzZXRBcHBCb3VuZERvbWFpbnMoSlNWYWx1ZVJlZiBvcmlnaW5BcnJheSwgSlNWYWx1
ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhE
aWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAg
ICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4
dChXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBh
Z2UoKS0+cGFnZSgpKSk7CisKKyAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIG9yaWdp
bkFycmF5KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNPYmplY3RSZWYgb3JpZ2lucyA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCBvcmlnaW5BcnJheSwgbnVsbHB0cik7CisgICAgc3RhdGlj
IGF1dG8gbGVuZ3RoUHJvcGVydHkgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygibGVuZ3RoIikpOworICAgIEpTVmFsdWVSZWYgb3JpZ2luc0xlbmd0aFZhbHVlID0gSlNPYmpl
Y3RHZXRQcm9wZXJ0eShjb250ZXh0LCBvcmlnaW5zLCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVs
bHB0cik7CisgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgb3JpZ2luc0xlbmd0aFZh
bHVlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBvcmlnaW5VUkxzID0gYWRvcHRXSyhX
S011dGFibGVBcnJheUNyZWF0ZSgpKTsKKyAgICBhdXRvIG9yaWdpbnNMZW5ndGggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBvcmlnaW5zTGVuZ3RoVmFsdWUs
IG51bGxwdHIpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdpbnNMZW5ndGg7ICsr
aSkgeworICAgICAgICBKU1ZhbHVlUmVmIG9yaWdpblZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0
eUF0SW5kZXgoY29udGV4dCwgb3JpZ2lucywgaSwgbnVsbHB0cik7CisgICAgICAgIGlmICghSlNW
YWx1ZUlzU3RyaW5nKGNvbnRleHQsIG9yaWdpblZhbHVlKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGF1dG8gb3JpZ2luID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBvcmlnaW5WYWx1ZSwgbnVsbHB0cikpOworICAgICAgICBzaXplX3Qgb3JpZ2luQnVmZmVy
U2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShvcmlnaW4uZ2V0KCkpICsg
MTsKKyAgICAgICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4ob3Jp
Z2luQnVmZmVyU2l6ZSk7CisgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcob3JpZ2luLmdl
dCgpLCBvcmlnaW5CdWZmZXIuZ2V0KCksIG9yaWdpbkJ1ZmZlclNpemUpOworCisgICAgICAgIFdL
QXJyYXlBcHBlbmRJdGVtKG9yaWdpblVSTHMuZ2V0KCksIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRo
VVRGOENTdHJpbmcob3JpZ2luQnVmZmVyLmdldCgpKSkuZ2V0KCkpOworICAgIH0KKworICAgIGF1
dG8gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
ZXRBcHBCb3VuZERvbWFpbnMiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBvcmlnaW5VUkxz
LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxs
YmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFp
bnNDYWxsYmFja0lEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGY1YjYzNmUw
MTg5Y2E3MjQ5ZjQ2MzY1ZDRkYjY2ZmFjY2M0ZmFhYjAuLmNlODAxYTNiMzJiOWFiZTA3YjhlYWYy
ODZkZGNkYTRmYzhkZjQ1YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MDAsNyArNTAwLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9y
aWVudGF0aW9uKHVuc2lnbmVkKTsKICAgICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJFbmFibGVkKCk7CisKICAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpOworICAgIHZv
aWQgc2V0QXBwQm91bmREb21haW5zKEpTVmFsdWVSZWYgb3JpZ2luQXJyYXksIEpTVmFsdWVSZWYg
Y2FsbGJhY2spOworICAgIHZvaWQgZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKTsKIAog
ICAgIHNpemVfdCB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5q
ZWN0VXNlclNjcmlwdChKU1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IGM0ZDU3ZTE4OGI3MDc4ZDQ5MTAxYmVjOTM4OGMwMDEyMzViMGNk
ODUuLjQ3NDYwMzIyYzZmMGNiNTE0NzU2ZmFmNTMzNTA4OTI1ZDM2MDcxNDkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNzc3LDYgKzM3NzcsMzAgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVz
KFdLU3RyaW5nUmVmIGhvc3ROYW1lKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldFRv
U2FtZVNpdGVTdHJpY3RDb29raWVzKCk7CiB9CiAKK3N0cnVjdCBBcHBCb3VuZERvbWFpbnNDYWxs
YmFja0NvbnRleHQgeworICAgIGV4cGxpY2l0IEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrQ29udGV4
dChUZXN0Q29udHJvbGxlciYgY29udHJvbGxlcikKKyAgICAgICAgOiB0ZXN0Q29udHJvbGxlcihj
b250cm9sbGVyKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGRvbmUgeyBmYWxzZSB9OworICAg
IFRlc3RDb250cm9sbGVyJiB0ZXN0Q29udHJvbGxlcjsKK307CisKK3N0YXRpYyB2b2lkIGRpZFNl
dEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3sKKyAgICBh
dXRvKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8QXBwQm91bmREb21haW5zQ2FsbGJhY2tDb250ZXh0
Kj4oY2FsbGJhY2tDb250ZXh0KTsKKyAgICBjb250ZXh0LT5kb25lID0gdHJ1ZTsKK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0QXBwQm91bmREb21haW5zKFdLQXJyYXlSZWYgb3JpZ2luVVJM
cykKK3sKKyAgICBBcHBCb3VuZERvbWFpbnNDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7
CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZyhvcmln
aW5VUkxzLCAmY29udGV4dCwgZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2spOworICAgIHJ1
blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5kaWRTZXRBcHBCb3VuZERvbWFpbnMoKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c3Rh
dGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewogICAgIFJlc291cmNlU3RhdGlzdGlj
c0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAppbmRleCAzMzdlZjZlM2I0MzBiZTFkNzc3MjJlYWI3ZmVhOGNiMjFhZWVk
MWMxLi4wNTQ2MWM0ZDkxN2RhMGRkOTM1NzNmYjM4MWU5MzUyNTI1YjFiODE1IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNjYsNiArMjY2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9v
bCB2YWx1ZSwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAgIHZv
aWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGJvb2wgdmFs
dWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lKTsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhXS0FycmF5UmVm
IG9yaWdpblVSTHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUo
KTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKTsKQEAgLTM1Miw2ICsz
NTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9u
VVJMRm9yVGVzdGluZyhXS1VSTFJlZik7CiAgICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9u
c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIAorICAgIHZvaWQgZGlkU2V0QXBwQm91bmREb21haW5z
KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlv
blJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAg
IFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENv
bmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnM6OkNvbnRleHRPcHRpb25zJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDdlYTdkMjAwYWE0
NzBjMTEwMmE4MzA5MGM3OGU0MmRmYjA5NTQ0MWYuLmVhMWE5ZjdmYTA4ZGZlMjJhMGNmYmFhZGVk
YWQyN2I3ZTAwMmQwMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCkBAIC05OTQsNiArOTk0LDEzIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIlNldEFwcEJvdW5kRG9tYWlucyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dl
dFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tBcnJheUdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tB
cnJheVJlZiBvcmlnaW5VUkxzID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkp
OworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0QXBwQm91bmREb21haW5z
KG9yaWdpblVSTHMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKQEAgLTIwMTEsNiArMjAxOCwxMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9u
OjpkaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogICAgIFdLUGFnZVBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXco
KS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRp
b246OmRpZFNldEFwcEJvdW5kRG9tYWlucygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q2FsbERpZFNldEFwcEJvdW5kRG9tYWlucyIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBh
Z2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RJbnZvY2F0
aW9uOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCiB7CiAgICAgbV9zaG91bGREdW1wUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmgKaW5kZXggMWU1NzdkYWE3ZDkwODVkNDA2ZGFhMTczNGNlMDA1YzQyOGQ4M2QzMy4u
MjkzNDQwYzM2MWI2MWQyNDhhM2ZlM2Y5NGMyOGEwNWIxY2Y0OWZkMiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtOTAsNyArOTAsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBk
b21haW5zKTsKIAogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7Ci0g
ICAgCisKKyAgICB2b2lkIGRpZFNldEFwcEJvdW5kRG9tYWlucygpOworCiAgICAgdm9pZCBkdW1w
UmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogCiAgICAgYm9vbCBjYW5PcGVuV2luZG93cygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuT3BlbldpbmRvd3M7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3Njg3NWZkNzkzMDQzNDQx
ODhlYTc1ZWFmZjBhYzMyYWQwY2JjNjU2Li5iODgxNmRmYjU5NjIzZjQ1MTMzMGY2MzMxMTU3OWFl
MzI2NDU1NTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDUtMDUgIEpvaG4gV2lsYW5k
ZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhlbXB0IGFwcC1ib3VuZCBkb21h
aW5zIGZyb20gSVRQJ3Mgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uIGFuZCB0aGlyZC1wYXJ0eSBjb29r
aWUgYmxvY2tpbmcgYmV0d2VlbiB0aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYx
OTUwNzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLWNv
b2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5k
LWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4
ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2Fw
cC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sOiBB
ZGRlZC4KKwogMjAyMC0wNS0wNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWxsb3cgQml0bWFwIHRvIHVzZSB1cCB0byBhIFVDUFVSZWdpc3RlciB3b3JkIHNpemUg
Zm9yIGludGVybmFsIGJpdCBzdG9yYWdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFp
bnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmIyMzEwYzQ3MWVj
ZWUxZjM0ODFkODg0ZDcyYjgzYjM4ZGYwYTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhl
ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAorVGVzdHMgdGhhdCBhcHAtYm91bmQgZG9t
YWlucyBhcmUgZXhlbXB0IGZyb20gdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIGJldHdlZW4g
dGhlbXNlbHZlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0tCitGcmFt
ZTogJzwhLS1mcmFtZTEtLT4nCistLS0tLS0tLQorU2hvdWxkIG5vdCByZWNlaXZlIGNvb2tpZS4K
K0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5v
dCByZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUg
ZG9jdW1lbnQuY29va2llOgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUyLS0+JworLS0t
LS0tLS0KK1Nob3VsZCBub3QgcmVjZWl2ZSBjb29raWUuCitEaWQgbm90IHJlY2VpdmUgY29va2ll
IG5hbWVkICdmaXJzdFBhcnR5Q29va2llJy4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQg
J3BhcnRpdGlvbmVkQ29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZToKKworLS0t
LS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMy0tPicKKy0tLS0tLS0tCitTaG91bGQgcmVjZWl2ZSBj
b29raWUuCitSZWNlaXZlZCBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5v
dCByZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUg
ZG9jdW1lbnQuY29va2llOiBmaXJzdFBhcnR5Q29va2llPXZhbHVlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9h
cHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmctYmV0d2Vlbi1lYWNo
LW90aGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxv
Y2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I1ODVmZmMyZGI1YjJl
MmMzN2VlNjI3YzgwNWFkNmE2N2Q0ZThmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3Vu
ZC1kb21haW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIu
aHRtbApAQCAtMCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4K
KzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYXBwLWJvdW5kIGRvbWFpbnMgYXJlIGV4ZW1w
dCBmcm9tIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMuIik7
CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBmaXJzdFBhcnR5T3JpZ2lu
ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHRoaXJkUGFydHlSZXNvdXJjZVVy
bCA9IHRoaXJkUGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2Vz
IjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2llIjsK
KyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gIi9zZXQtY29va2llLnBo
cD9uYW1lPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNv
bnN0IHBhcnRpdGlvbmVkQ29va2llTmFtZSA9ICJwYXJ0aXRpb25lZENvb2tpZSI7CisgICAgY29u
c3Qgc3ViUGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUgPSAiL3NldC1jb29raWUucGhwP25hbWU9
IiArIHBhcnRpdGlvbmVkQ29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHJl
dHVyblVybCA9IGZpcnN0UGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENvb2tpZXMg
PSAiL2dldC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAiJm5h
bWUyPSIgKyBwYXJ0aXRpb25lZENvb2tpZU5hbWU7CisgICAgY29uc3QgcmVkaXJlY3RDaGFpblVy
bCA9IHRoaXJkUGFydHlSZXNvdXJjZVVybCArICIvcmVkaXJlY3QucGhwP3JlZGlyZWN0VG89IiAr
IHRoaXJkUGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXM7CisKKyAgICBmdW5j
dGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQu
c3JjID0gdXJsOworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxl
bWVudC5vbmxvYWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAg
ICAgICBjYXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1wYXJ0eSBj
b29raWUgZm9yIGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5o
cmVmID0gdGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tp
ZSArICIjIiArIHJldHVyblVybCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0
IHRoZSBjb29raWUgZG9lc24ndCBnZXQgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAu
MSBzaW5jZSBvbmx5IGxvY2FsaG9zdCBpcyBjb25maWd1cmVkIGFzIGFuIGFwcC1ib3VuZCBkb21h
aW4uCisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBCb3VuZERvbWFpbnMoWyB0aGlyZFBhcnR5
T3JpZ2luIF0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRo
aXJkUGFydHlSZXNvdXJjZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hv
dWxkIG5vdCByZWNlaXZlIGNvb2tpZS4iLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDMi
OgorICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBkb2Vzbid0IGdldCBz
ZW50IGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIHNpbmNlIG9ubHkgMTI3LjAuMC4xIGlz
IGNvbmZpZ3VyZWQgYXMgYW4gYXBwLWJvdW5kIGRvbWFpbi4KKyAgICAgICAgICAgICAgICBkb2N1
bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA0IjsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldEFwcEJvdW5kRG9tYWlucyhbIGZpcnN0UGFydHlPcmlnaW4gXSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3Vi
UGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgbm90IHJlY2VpdmUgY29va2llLiIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgdGhhdCB0aGUgY29va2llIGdldHMgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAu
MSBzaW5jZSB0aGV5IGFyZSBub3cgYm90aCBjb25maWd1cmVkIGFzIGFwcC1ib3VuZCBkb21haW5z
LgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDUiOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXBwQm91bmREb21haW5zKFsgZmlyc3RQYXJ0eU9y
aWdpbiwgdGhpcmRQYXJ0eU9yaWdpbiBdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVz
ICsgIiZtZXNzYWdlPVNob3VsZCByZWNlaXZlIGNvb2tpZS4iLCBydW5UZXN0KTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNz
dGVwNSI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llcyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGls
ZEZyYW1lc0FzVGV4dCgpOworICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJz
dGVwMSI7CisgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIH0pOworICAgIH0gZWxzZSB7
CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0
YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1l
eGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg4ZTQ1ZDdmMTk5YTNjNjlhYmMxZWExNWYxNzkzMjk5ZmI3N2Q2NWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0NoZWNr
IHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9m
IG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYXBwLWJvdW5kLgorCitCZWZv
cmUgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246
IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVy
LXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5
IGRvZXMgZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitB
ZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBD
bGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVy
LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkg
ZG9lcyBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEt
ZGVsZXRpb24tZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9t
LXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0ZTY3MWIw
YjgzM2EwZTViYTJkYTY4MDk0YjNjZjA1M2VkMjAxYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9h
cHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJh
c2UuaHRtbApAQCAtMCwwICsxLDI1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCki
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90
IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhl
IHdlYnNpdGUgaXMgYXBwLWJvdW5kLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rp
dj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFz
ZSh0cnVlKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29v
a2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29r
aWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tp
ZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAgICBhID0g
YS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAgICAg
IHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAg
bGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxl
bWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxl
bWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlv
bikgeworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAg
ICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBpZiAoIWNv
b2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgYWRkT3V0cHV0KChpc0FmdGVyRGVsZXRpb24gPyAi
QWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8gY29v
a2llcyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0
dHBPbmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIg
ZGVsZXRpb246ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNv
b2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAi
QmVmb3JlIikgKyAiIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMu
Iik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xp
ZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3Nl
ZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAi
IGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0
U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0
ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2Vk
TWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERh
dGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgewor
ICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3Vs
ZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAg
ICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAg
ICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3Jl
bWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAg
ICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1heEludGVy
dmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQgY2hlY2tJ
REJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhpc3Rz
KGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7CisgICAg
ICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJhY2sgPSBj
YWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8v
IENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZh
bElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFw
aG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50
ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFs
IGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAg
ICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7
CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5
IGNoZWNrcyBleGhhdXN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJD
b3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
b251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIg
ZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlE
QkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNr
KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJM
b2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7CisgICAgbGV0
IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VOYW1l
ID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVlIjsKKyAgICBm
dW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNr
KSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7CisgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVy
RGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExvY2FsU3Rv
cmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVy
dmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxv
Y2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJ
bnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAg
ICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFn
ZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2Vz
IG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3Rv
cmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlv
bjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8g
ImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGls
IHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdl
SW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlm
ICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQp
OworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShs
b2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBk
ZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZh
bHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJU
ZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9y
YWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3Rv
cmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRP
dXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0g
bG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9CisgICAgfQorCisgICAg
YXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICAv
LyBXcml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2Vz
L3NldC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5h
bWUsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZldGNo
KCIvY29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1D
b29raWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlh
bHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNp
ZGVDb29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworCisg
ICAgICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRl
bShsb2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gV3Jp
dGUgSW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1dl
YnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9j
ZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hl
Y2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSk7
CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBy
ZXNldENvb2tpZXMoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAi
OworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1
ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBCb3VuZERvbWFp
bnMoWyBvcmlnaW5VbmRlclRlc3QgXSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUodHJ1
ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCwgdHJ1ZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZG4ndCBnZXQg
Y2xhc3NpZmllZCBhcyBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlu
cy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBw
LWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44OGU0NWQ3ZjE5OWEzYzY5YWJjMWVhMTVmMTc5MzI5OWZiNzdkNjVm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vi
c2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0
aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBu
byB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC4KKworQmVmb3Jl
IGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBI
dHRwT25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1z
aWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBk
b2VzIGV4aXN0LgorQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0
ZXIgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xp
ZW50LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1z
aWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRv
ZXMgZXhpc3QuCitBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4
ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRl
bGV0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTA0Nzk1ZWFkNmE5NjUxM2Y2MjMxNTNiMzVm
YjY4NTMyNmZiNzEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhl
bXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyNTUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMv
cmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVj
ayB0aGF0IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBv
ZiBubyB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGFwcC1ib3VuZC48L2Rpdj4K
Kzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNv
bnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29u
c3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1
bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNl
KCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBi
ID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVh
a1RvT3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4
dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAg
IGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2ll
cyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgp
CisgICAgICAgICAgICBhZGRPdXRwdXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVm
b3JlIikgKyAiIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIp
OworICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dp
dGNoIChjb29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVO
YW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNo
KChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiAr
IChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4i
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2
ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIg
ZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2ll
TmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVz
aCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENs
aWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7
CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRN
ZXNzYWdlcykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisg
ICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCBy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBp
bmRleGVkREIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAg
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7
CisgICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFj
aygpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisK
KyAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOwor
ICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0g
ZmFsc2U7CisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0
aW9uLCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxD
b3VudGVySURCID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAg
ICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwg
dGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRl
cnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2sp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJ
REJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJ
REIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZv
cmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hl
Y2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4u
CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgi
QmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJ
REJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAg
IGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGV4aGF1
c3RlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3Blbihk
Yk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4g
aW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5l
eHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4
aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsK
KyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7Cisg
ICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNr
TG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAg
aW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49
IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNr
TG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9
IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAo
dmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4
aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xv
Y2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3Jh
Z2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9l
cyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9y
YWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8g
TG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0g
c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxD
b3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5h
bWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2Nh
bFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIg
OiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0o
bG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIg
ZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VW
YWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlv
biB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tp
ZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25s
eS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50
aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jl
c291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZl
clNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3Jp
Z2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUg
KyAiPTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3Jp
dGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFn
ZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlz
dHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIu
CisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9j
ZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxs
U3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRD
b250aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRh
QW5kQ29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hl
Y2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hl
Y2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygp
OworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25z
dCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEFwcEJvdW5kRG9tYWlucyhbIG9yaWdpblVu
ZGVyVGVzdCBdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZGlkbid0IGdldCBjbGFzc2lmaWVkIGFz
IHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFB
bmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398638</attachid>
            <date>2020-05-06 11:13:42 -0700</date>
            <delta_ts>2020-05-06 11:44:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-210674-20200506111339.patch</filename>
            <type>text/plain</type>
            <size>99560</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg4NjBiNjQ4NTk3YTcx
Y2Y4YWU5MzMwYjY3YWJhMWViMzc0ZGI2Mi4uMGM5NjgxNWZkNzI1ZDMxMTE5ODM0NWRiYzcwNzkw
M2RmZmYxMjI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA1LTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4ZW1wdCBhcHAtYm91
bmQgZG9tYWlucyBmcm9tIElUUCdzIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBhbmQgdGhpcmQtcGFy
dHkgY29va2llIGJsb2NraW5nIGJldHdlZW4gdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjc0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTk1MDc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uIHRvIGFsbG93IGl0IHRvIGV4ZW1wdAorICAgICAgICBhcHAtYm91bmQgZG9tYWlucyBmcm9t
IHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMt
ZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlu
cy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0
YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpyZXNldEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKwogMjAyMC0wNS0wNiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vdy11bm5lZWRlZCBVU0UoR1JBTU1B
Ul9DSEVDS0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzFlZDQ0OGU0ZjAzNzMzNzRkY2VmYWMwYWFmNGRhMmE5
MzMyNWJhYy4uMGU3ZjIxNmY5NTI0YmI2OGU0M2IxZTA4MjlkNDExYmRlYmFmYzIyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5OSBAQAorMjAyMC0wNS0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KKworICAgICAgICBFeGVtcHQgYXBwLWJvdW5kIGRvbWFpbnMgZnJvbSBJVFAn
cyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gYW5kIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBi
ZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDY3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE5NTA3Njc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZm9y
d2FyZHMgaW5mb3JtYXRpb24gYWJvdXQgYXBwLWJvdW5kIGRvbWFpbnMgdG8gSVRQIGFuZCB3ZWIK
KyAgICAgICAgcHJvY2Vzc2VzIHNvIHRoYXQgdGhleSBjYW4gYmUgZXhlbXB0IGZyb20gd2Vic2l0
ZSBkYXRhIGRlbGV0aW9uIGFuZAorICAgICAgICB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcg
YmV0d2VlbiB0aGVtc2VsdmVzLgorCisgICAgICAgIEFwcC1ib3VuZCBkb21haW5zIGFyZSBjb25m
aWd1cmVkIHN0YXRpY2FsbHkgYW5kIGFwcGx5IHRvIGFsbCB3ZWJzaXRlCisgICAgICAgIGRhdGEg
c3RvcmVzLiBUaGVyZWZvcmUgdGhlIHNldHRpbmcgbmVlZHMgdG8gYmUgZm9yd2FyZGVkIHRvIGFs
bAorICAgICAgICB3ZWJzaXRlIGRhdGEgc3RvcmVzIGFuZCBJVFAgZnVuY3Rpb25hbGl0eSBpbiBh
bGwgbmV0d29yayBhbmQgd2ViCisgICAgICAgIGNvbnRlbnQgcHJvY2Vzc2VzLiBUaGlzIGlzIGRv
bmUgdGhyb3VnaCB0aGUgbmV3IHN0YXRpYyBmdW5jdGlvbgorICAgICAgICBXZWJzaXRlRGF0YVN0
b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JJVFBJZkluaXRpYWxpemVkKCkuCisKKyAgICAgICAg
U2luY2UgYXBwLWJvdW5kIGRvbWFpbnMgYXJlIGxvYWRlZCBsYXppbHkgZnJvbSBkaXNrIGFuZCBv
biBhIGJhY2tncm91bmQKKyAgICAgICAgdGhyZWFkLCB0aGlzIHBhdGNoIGZvcndhcmRzIHRoZW0g
aW4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgaWYKKyAgICAgICAgdGhleSd2ZSBh
bHJlYWR5IGJlZW4gbG9hZGVkLiBUaGVuIGV2ZXJ5IHRpbWUgYXBwLWJvdW5kIGRvbWFpbnMgYXJl
CisgICAgICAgIHVwZGF0ZWQsIHRoZXkgYXJlIGZvcndhcmRlZCB0byBJVFAuIFRoaXMgZW5zdXJl
cyB0aGF0IElUUCB3aWxsIGhhdmUgdGhlbQorICAgICAgICBhcyBzb29uIGFzIHBvc3NpYmxlLgor
CisgICAgICAgIFNldHRpbmcgYXBwLWJvdW5kIGRvbWFpbnMgZm9yIHRoZSBwdXJwb3NlcyBvZiBJ
VFAgYXV0b21hdGljYWxseSBzd2l0Y2hlcworICAgICAgICBJVFAncyBjb29raWUgYmxvY2tpbmcg
cG9saWN5IHRvIHRoZSBuZXcKKyAgICAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucy4KKyAgICAgICAgVGhpcyBp
cyBkb25lIGluIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91bmREb21h
aW5zKCkuCisKKyAgICAgICAgVGhlIEMgQVBJIGNoYW5nZXMgYXJlIGZvciB0ZXN0IHB1cnBvc2Vz
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWlu
c1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91bmREb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBh
cmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNob3VsZEV4ZW1wdEZyb21XZWJzaXRlRGF0YURlbGV0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyk6IERlbGV0ZWQu
CisgICAgICAgICAgICBSZW5hbWVkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKiBTaGFy
ZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKTog
RGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZW5hbWVkIHNldFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERv
bWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjplbnN1cmVBcHBCb3Vu
ZERvbWFpbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjphcHBC
b3VuZERvbWFpbnNJZkluaXRpYWxpemVkKToKKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gYWxs
b3dzIGZldGNoaW5nIG9mIGFwcC1ib3VuZCBkb21haW5zIHdpdGhvdXQgdHJpZ2dlcmluZworICAg
ICAgICAgICAgdGhlIGxhenkgbG9hZGluZy4gVGhpcyBpcyBqdXN0IHRvIGFsbG93IHNwZWN1bGF0
aXZlIGNvbmZpZ3VyYXRpb24gb2YgSVRQCisgICAgICAgICAgICByaWdodCB3aGVuIGl0J3MgY3Jl
YXRlZCDigJQgaWYgYW55IGFwcC1ib3VuZCBkb21haW5zIGFyZSBhbHJlYWR5IGNvbmZpZ3VyZWQs
CisgICAgICAgICAgICBmb3J3YXJkIHRoZW0gdG8gSVRQIHZpYSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBw
Qm91bmREb21haW5zRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIENv
Y29hLXNwZWNpZmljIGFuZCBvbmx5IGFjY2VwdHMgbG9jYWxob3N0IGFuZCAxMjcuMC4wLjEKKyAg
ICAgICAgICAgIHRvIGJlIGNvbmZpZ3VyZWQgYXMgYXBwLWJvdW5kIGRvbWFpbnMuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5pdGlhbGl6
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFp
bnNGb3JJVFApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNG
b3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjAtMDUt
MDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVsaW1pbmF0ZSBj
aGVja3Mgb2YgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpIGluIENvY29hLXNwZWNpZmljIGNv
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCBjNTg2NjlmMWNmMmM5YjFjNGI2ZTZlOGM2NDU5ZGNi
YTkxYWY1OGYzLi40OTQzMGFmZjkwOTk4NzM0NzExODhmYjliNWYzOGVhOWJmOGNmNmQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwCkBAIC0xMzQsNiArMTM0LDggQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVz
LAogICAgIHN3aXRjaCAobV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSB7CiAgICAgY2Fz
ZSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw6CiAgICAgICAgIHJldHVybiB0cnVl
OworICAgIGNhc2UgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2Vl
bkFwcEJvdW5kRG9tYWluczoKKyAgICAgICAgcmV0dXJuICFzaG91bGRFeGVtcHREb21haW5QYWly
RnJvbVRoaXJkUGFydHlDb29raWVCbG9ja2luZyhmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURv
bWFpbik7CiAgICAgY2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVz
V2l0aG91dFVzZXJJbnRlcmFjdGlvbjoKICAgICAgICAgaWYgKCFoYXNIYWRVc2VySW50ZXJhY3Rp
b25Bc0ZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE0NSw2ICsxNDcsMTUgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3Vs
ZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEV4ZW1wdERv
bWFpblBhaXJGcm9tVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluKSBjb25zdAoreworICAgIEFTU0VSVCh0b3BGcmFtZURvbWFpbiAhPSByZXNvdXJjZURvbWFp
bik7CisgICAgaWYgKHRvcEZyYW1lRG9tYWluLmlzRW1wdHkoKSB8fCByZXNvdXJjZURvbWFpbi5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0b3BGcmFtZURv
bWFpbiA9PSByZXNvdXJjZURvbWFpbiB8fCAobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnModG9w
RnJhbWVEb21haW4pICYmIG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKHJlc291cmNlRG9tYWlu
KSk7Cit9CisKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdl
Q2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2NrQ29va2llcyhy
ZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCkBAIC0yOTIsNiArMzAzLDE2IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKFRoaXJkUGFydHlDb29raWVCbG9jCiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gYmxvY2tpbmdNb2RlOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKK3sK
KyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldEFwcEJvdW5kRG9tYWlucygpCit7CisgICAgbV9hcHBC
b3VuZERvbWFpbnMuY2xlYXIoKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBm
aXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewogICAg
IGlmICghbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyB8fCAhcGFnZUlEIHx8IG1fbmF2aWdh
dGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291cmNlLmlzRW1wdHkoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oCmluZGV4IDEzOTFkZWQ0ZDg4ZWRiMjc2MDJmNjljMDZkMmZhMTM4MGRiODI3ZDQu
LjE5Njg1ZjFiNWVlNDRjZDM2Y2FkNTdhNWVhN2QxYjY0NmViYmRmNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aApAQCAtNzcsNyArNzcsNyBAQCBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogZW51bSBjbGFzcyBIVFRQ
Q29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9vbDsK
LWVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3QgeyBBbGws
IEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9QZXJEb21h
aW5Qb2xpY3kgfTsKK2VudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVp
bnQ4X3QgeyBBbGwsIEFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsIEFsbE9uU2l0ZXNX
aXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kgfTsK
IGVudW0gY2xhc3MgU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgOiBib29sIHsgWWVz
LCBObyB9OwogZW51bSBjbGFzcyBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA6IHVp
bnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBBbGxCdXRDb29raWVzTGl2ZU9uVGVzdGluZ1Rp
bWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3RpbmdUaW1lb3V0IH07CiBlbnVtIGNsYXNzIFNo
b3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC05NSw2ICs5NSw5IEBAIHB1YmxpYzoK
IGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsK
KyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGVybWl0UHJvY2Vzc1RvVXNlQ29v
a2llQVBJKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHByb2Nlc3NNYXlV
c2VDb29raWVBUEkoKTsKIApAQCAtMTk2LDYgKzE5OSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlk
ZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dp
dGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldEFwcEJv
dW5kRG9tYWlucygpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0yNDEsNyArMjQ2LDggQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9vbCBt
X2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBPcHRpb25hbDxT
ZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJz
dFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIE9wdGlvbmFsPFNl
Y29uZHM+IGNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRXhlbXB0RG9tYWluUGFp
ckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25z
dCBTdWJSZXNvdXJjZURvbWFpbiYpIGNvbnN0OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3I7CiAgICAg
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3I7CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3Ry
YWJsZURvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5OwpAQCAtMjUzLDYgKzI1
OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVn
aXN0cmFibGVEb21haW4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVu
dFJlc291cmNlOwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9uVGVzdE1v
ZGUgPSBmYWxzZTsKICAgICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSB7IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9
OworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fYXBwQm91bmREb21haW5zOwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI3Nyw2ICsyODQsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+
IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAogICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlOjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMsCiAgICAgICAgIFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0VXNl
ckludGVyYWN0aW9uLAogICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlOjpPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kKICAgICA+OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMWI3
YTdjZmNmNTM3YWMyYmM5OWY2ODYyMjQwNzc3NjAyMGZjZGU0NC4uMzFlOTE5OTg2NTg2MDAyMzFk
NjRjYmMwNDkzMDFjYzVjM2FmNWI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNjIxLDcgKzI2MjEsNyBAQCBSZWdp
c3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhcwogICAgIFZlY3RvcjxEb21haW5EYXRhPiBkb21haW5zID0gdGhp
cy0+ZG9tYWlucygpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gZG9tYWluSURzVG9DbGVhckdyYW5k
ZmF0aGVyaW5nOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogZG9tYWlucykgewotICAgICAg
ICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRhRGVsZXRp
b24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2VySW50ZXJh
Y3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7CiAgICAgICAg
IGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNr
Rm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDY1MDY3OTcxOTYyMmFmMTJmYWQ1YzE2MmYyY2Rk
Y2FhYWI5MGU0NzYuLmFmNTAwNDFkMjM3YjQwYzc2ZDViNGQxYzc2MDg4OTUzYTNhZjhmNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
CkBAIC05ODAsNyArOTgwLDcgQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0
V2Vic2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVMKICAgICBhdXRvIG9s
ZGVzdFVzZXJJbnRlcmFjdGlvbiA9IG5vdzsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZU9yUmVzdHJpY3RGb3I7CiAgICAgZm9y
IChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewot
ICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbigpKQorICAgICAgICBpZiAoc2hvdWxkRXhlbXB0RnJvbVdlYnNpdGVEYXRh
RGVsZXRpb24oc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBvbGRlc3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2Vy
SW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7CiAg
ICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3Vs
ZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCmluZGV4IDNjODZhMzQ2MGJiMTE2ZTM3NDg2NzkzOTY0NmE0NjExZjlm
NDAxNmEuLmUzNGM1ZTk2M2NkM2NiZDA1ZGFmMjY2YjM5M2M3OTI4OWIxM2VkMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMTcsNiArMzE3LDEx
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJj
ZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyCiAgICAgbV9kZWJ1Z01hbnVhbFByZXZhbGVudFJl
c291cmNlID0gZG9tYWluOwogfQogCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykK
K3sKKyAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoZG9tYWlucyk7Cit9CisKIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5n
UmVxdWVzdElmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTU2OCw2ICs1NzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
ZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIG1fcGFyYW1ldGVycyA9IHsgfTsKKyAgICBtX2FwcEJvdW5kRG9tYWlucy5j
bGVhcigpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVzdGlu
Z0V2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnQpCkBAIC02NTIsNiArNjU4LDExIEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xvZ0RvbWFpbnNJbkJhdGNoZXMoY29uc3Qg
Y2hhciogYWN0aW9uLCBjCiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICIlIiBQ
VUJMSUNfTE9HX1NUUklORyAiIHRvICgle3B1YmxpY31kIG9mICV1KTogJSIgUFVCTElDX0xPR19T
VFJJTkcgIi4iLCBhY3Rpb24sIGJhdGNoTnVtYmVyLCBudW1iZXJPZkJhdGNoZXMsIGRvbWFpbnNU
b1N0cmluZyhiYXRjaCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKK2Jvb2wgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAoreworICAgIHJldHVybiAhZG9tYWluLmlz
RW1wdHkoKSAmJiAoZG9tYWluID09IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHx8IG1f
YXBwQm91bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
aW5kZXggNDQ4MzMzYzQ5ZjYzYjJmMTkyMGI4NmUzMzIwNTg3ZmNlMzViNjkzYi4uMmRiZTllNTBi
YWU0NzBmOWM4MTA1YzUyYzlmNTAzYWZiZGVmNzQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTY5LDYgKzE2OSw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Nh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID09IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRFbmFibGVkOjpZZXM7IH07CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSBtb2RlKSB7IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBtb2RlOyB9CiAg
ICAgdm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oUmVnaXN0cmFibGVEb21haW4m
JiBkb21haW4pIHsgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBXVEZNb3ZlKGRvbWFp
bik7IH0KKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2Nr
ZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKQEAgLTI0OSw3ICsy
NTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWJ1Z0xvZ2dpbmdFbmFibGVkOyB9OwogICAgIGJvb2wgZGVidWdNb2RlRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfQogICAgIFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZTsgfQotICAgIFJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOyB9CisgICAg
Ym9vbCBzaG91bGRFeGVtcHRGcm9tV2Vic2l0ZURhdGFEZWxldGlvbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhOdW1i
ZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7IDUwIH07CiAgICAgCkBAIC0y
OTEsNiArMjkyLDcgQEAgcHJpdmF0ZToKICAgICBTaG91bGRJbmNsdWRlTG9jYWxob3N0IG1fc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCB7IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyB9OwogICAg
IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1fZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fc3RhbmRh
bG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1f
YXBwQm91bmREb21haW5zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDY4ZjU1YzRjNWNk
ZGU3NWM2YjQyYWIyMmFmODczMTllZDY4NjQ2YjIuLjUzODdiNzY5MjRhN2I0MDdhMzYxMjFhYjg4
YzlkZWVjODIyMWY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC02NzgsNiArNjc4LDMzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3QgUmVnaXN0
CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRB
cHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgpIHx8IGRvbWFpbnMu
aXNFbXB0eSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGRvbWFpbnNDb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFp
bnMpOworCisgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkp
IHsKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRBcHBCb3VuZERvbWFpbnMoV1RGTW92
ZShkb21haW5zKSk7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRC
ZXR3ZWVuQXBwQm91bmREb21haW5zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHBvc3RUYXNr
KFt0aGlzLCBkb21haW5zID0gV1RGTW92ZShkb21haW5zQ29weSksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICht
X3N0YXRpc3RpY3NTdG9yZSkgeworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldEFw
cEJvdW5kRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGlj
c1N0b3JlLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMpOworICAgICAgICB9
CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IH0pOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkQ3JlYXRl
TmV0d29ya1Byb2Nlc3MoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC0x
MjgwLDYgKzEzMDcsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
c2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhDb21wbGV0aW9uSGEKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGlmIChtX25ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRv
KiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpKQorICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlc2V0QXBwQm91bmREb21haW5zKCk7
CisgICAgfQorCiAgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3Rp
Y3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5yZXNldFBhcmFtZXRlcnNU
b0RlZmF1bHRWYWx1ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAppbmRleCAxMzU5YjNiN2U3NWUwOTQ1MTQ3Yzk3MjRhN2Y4MDRmYTU1MmM2NzZlLi4z
NDVmZDI4NzdhYzllZDIwMzQ5MTQxMGUzYmUwMWM3NjBkNmUxODdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yNzksNiArMjc5LDcgQEAgc3Ry
dWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIHNldFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRFbmFibGVkKFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKTsKICAg
ICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldEFw
cEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAog
ICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA5MmU5
ZmRlYzk1NTVhZmEyNGQ0NDg4NGI2MWEyNzljYjQ5MmZiODgwLi4zNzI5NTc2YTM5OGQ2YjlmNmE1
ZmZhYjE2N2Q0MjRiMjdmZjI3ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTMwNyw2ICsxMzA3LDE4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6Omhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKIH0KIAordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+JiYgYXBwQm91bmREb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
IHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlu
cyhXVEZNb3ZlKGFwcEJvdW5kRG9tYWlucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZm9y
RWFjaE5ldHdvcmtTZXNzaW9uKFtlbmFibGVkXShhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewpAQCAt
MTMxNSw3ICsxMzI3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGkKICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQogICAg
ICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9j
a2luZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IDg3ZWU0NjcxZWNiMWNjMDQxMzVlMDYzNzgzM2Y1YWEyNjc0ZDcxY2QuLjAxMmRk
NjU1N2Q2NDBhMThkYTRjZWU5MDJhNzlmNDJiYmZjYmQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI2MSw5ICsyNjEsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25z
dDsKKyAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgYm9vbCBpc0lUUERhdGFiYXNlRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJVFBEYXRhYmFzZUVuYWJsZWQ7IH0KICAgICB2b2lkIHNl
dFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxNWUxNzY0MWYwZGExZWI1NDQyMWUw
YjJiOGFiZGI1NjlmMmRiZDg3Li41MGJhZTQzODJmY2QxYjQ5MWQ5NzQ1MjcwNzEyNjM3ZGI4YTIz
MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE0MSw4ICsxNDEsOSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBB
c3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25s
eUNvb2tpZXMpIC0+ICgpIEFzeW5jCiAgICAgSGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoYm9v
bCBoYXNJc29sYXRlZFNlc3Npb24pIEFzeW5jCisgICAgU2V0QXBwQm91bmREb21haW5zRm9yUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWlucykgLT4gKCkgQXN5bmMKICAg
ICBTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkKSAtPiAo
KSBBc3luYwotICAgIFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKSAtPiAoKSBBc3luYworICAgIFNldFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUp
IC0+ICgpIEFzeW5jCiAgICAgU2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpT
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkKSAtPiAoKSBBc3luYwogICAg
IFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSBtb2RlKSAtPiAoKSBBc3luYwogICAgIFNldFRvU2FtZVNpdGVTdHJpY3RD
b29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBh
MmNkYjQzN2NhZWQ2Nzg3MWRhM2M3ZWE0ODI3MGU3OTRiZWY0MzhhLi42MWYxMGNjODEyNjRlMjRh
NmY3NmU1MTk0MTE5ZmQ1NjdmMzdmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMjI3LDYg
KzEyMjcsOCBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgIG1fZGV2aWNlTWFuYWdlbWVu
dFJlc3RyaWN0aW9uc0VuYWJsZWQgPSBwYXJhbWV0ZXJzLmRldmljZU1hbmFnZW1lbnRSZXN0cmlj
dGlvbnNFbmFibGVkOwogICAgIG1fYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zRm9yVGVzdGluZyA9IHBhcmFtZXRlcnMuYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VN
YW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZzsKIAorICAgIGlmIChtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MgJiYgIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuYXBwQm91bmREb21haW5zLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zZXRBcHBCb3VuZERvbWFpbnMoV1RGTW92ZShwYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucyksIFtdIHsgfSk7CiAjaWYgSEFW
RShTRVNTSU9OX0NMRUFOVVApCiAgICAgYWN0aXZhdGVTZXNzaW9uQ2xlYW51cCgqdGhpcywgcGFy
YW1ldGVycyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCmluZGV4IDkyN2FlYzNhNzRhZDFlZmNiNTk0
OGEwNDNmODFmY2YyOWY5YmViOWUuLjYwZGUzNWY2YWU5NTdkNzA2NzU5NDk2NDczY2UzNTE2NDI0
MWUyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuaApAQCAtNDcsOCArNDcsOSBAQCBzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHsgV2ViQ29y
ZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vIH07CiAjZW5kaWYKICAgICBX
ZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlOjpBbGxCdXRDb29raWVzIH07Ci0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKLSAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CisgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgIEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWluczsKKyAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAKICAgICB2b2lkIGVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewpAQCAtNjUsNiArNjYsNyBA
QCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2VuZGlmCiAgICAg
ICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAg
IGVuY29kZXIgPDwgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAgICBlbmNvZGVy
IDw8IGFwcEJvdW5kRG9tYWluczsKICAgICAgICAgZW5jb2RlciA8PCBtYW51YWxQcmV2YWxlbnRS
ZXNvdXJjZTsKICAgICB9CiAKQEAgLTEyNyw2ICsxMjksMTEgQEAgc3RydWN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4pCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgICAgIE9w
dGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBCb3VuZERvbWFp
bnM7CisgICAgICAgIGRlY29kZXIgPj4gYXBwQm91bmREb21haW5zOworICAgICAgICBpZiAoIWFw
cEJvdW5kRG9tYWlucykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1hbnVhbFByZXZhbGVudFJl
c291cmNlOwogICAgICAgICBkZWNvZGVyID4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAg
ICAgICBpZiAoIW1hbnVhbFByZXZhbGVudFJlc291cmNlKQpAQCAtMTQ2LDYgKzE1Myw3IEBAIHN0
cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICAgICAg
ICAgIFdURk1vdmUoKmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKSwKICAgICAgICAg
ICAgIFdURk1vdmUoKnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiksCisgICAgICAgICAgICBX
VEZNb3ZlKCphcHBCb3VuZERvbWFpbnMpLAogICAgICAgICAgICAgV1RGTW92ZSgqbWFudWFsUHJl
dmFsZW50UmVzb3VyY2UpLAogICAgICAgICB9fTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCBm
MGY1YTE0MWFiN2ZlZWNkMmJlNjgyYmI4ODg1ZmU2Mjg2NTI3MjliLi4yY2ZkM2ExZTQ1ZWVkMDI3
NDM5ZTIzZWEwOTE1Yzg3ZTFmNzUwNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApAQCAtNjE3LDYgKzYxOCwzMSBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0ZvclRlc3RpbgogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBw
Qm91bmREb21haW5zRm9yVGVzdGluZyhXS0FycmF5UmVmIG9yaWdpblVSTHNSZWYsIHZvaWQqIGNv
bnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmdGdW5j
dGlvbiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZWZQ
dHI8QVBJOjpBcnJheT4gb3JpZ2luVVJMc0FycmF5ID0gdG9JbXBsKG9yaWdpblVSTHNSZWYpOwor
ICAgIHNpemVfdCBuZXdTaXplID0gb3JpZ2luVVJMc0FycmF5ID8gb3JpZ2luVVJMc0FycmF5LT5z
aXplKCkgOiAwOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFp
bnM7CisgICAgZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5ld1NpemUpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3U2l6ZTsgKytpKSB7CisgICAgICAgIGF1dG8qIG9yaWdp
blVSTCA9IG9yaWdpblVSTHNBcnJheS0+YXQ8QVBJOjpVUkw+KGkpOworICAgICAgICBpZiAoIW9y
aWdpblVSTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgZG9tYWlu
cy5hZGQoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyBVUkwoVVJMKCksIG9yaWdpblVSTC0+
c3RyaW5nKCkpIH0pOworICAgIH0KKworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0
QXBwQm91bmREb21haW5zRm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbnMpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7Cisg
ICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvcmlnaW5VUkxzUmVmKTsKKyAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKGNvbXBsZXRpb25IYW5kbGVyKTsK
KyNlbmRpZgorfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNv
bnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRl
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggZjlhMzgyMzdmZjM4NzlmNzBjMjI5MTg0YjVlNmUy
N2Y2OTRkNGM0MC4uNzFiOTdmM2NiZjY5ODRkNTQyYjQ4OGQ1OGM5MDI1N2U0NzNhNjBiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmgKQEAgLTEyOSw2ICsxMjksOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUgogV0tf
RVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZUZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVm
IHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmlj
dENvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2
b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZ0Z1bmN0
aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZyhXS0FycmF5UmVmIG9yaWdpblVSTHNS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0Zv
clRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uKSh2
b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGMxNTc3YjhkOGYyZTY4OTc0ZjE3NWVkYmYwYzkzYjZmYmM3NTIzZjkuLjUw
Mjk4OGFlNTVlODFhMWE0Mzc4ZTRlNzE4OTgzYzc3MzgxZjcyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMTEzNiw2ICsxMTM2LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzSXNvbGF0
ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnCiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6SGFzSXNvbGF0ZWRTZXNzaW9u
KHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYgYXBwQm91bmREb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6U2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyhzZXNzaW9uSUQsIGFwcEJvdW5kRG9tYWlucyksIFthY3Rpdml0eSA9IHRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21h
aW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1l
c3NhZ2UoKSkgewpAQCAtMTE0OCw5ICsxMTU1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb20K
ICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgYmxvY2tpbmdNb2RlKSwgW2FjdGl2aXR5ID0gdGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZShzZXNzaW9uSUQsIGJsb2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGUwN2NmOTkwNDk4YjZiMDgwYjU1Y2I5MmVhMTVkMzhi
NzY0YjI0ZGMuLjcxZWUzYmY0OWEwOGIzNGE0N2U3Y2Y0MWQyM2NmOTQ4M2M1YTVlNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCkBAIC0xNzUsOCArMTc1LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlQ29va2ll
c0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9v
bCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
Jik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAg
dm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRl
c3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJD
b3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJp
Y3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDIyNGE1YTIwYWQxMWNhNTljM2IzMDQzMzc2M2Qy
NDAxMzNkZWE3NWYuLjhlYjdmNDI4N2ZkYmNhNjkwNTJmMzcwMjQ0MmMwZjcyMDZlNTc2NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYwNSw5ICs2
MDUsMTAgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CiAgICAgV2ViQ29yZTo6U2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQgPSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm87CiAjZW5k
aWYKLSAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW4geyB9OwogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7Ci0gICAgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OworICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICBIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7CisgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgV0VCX1BS
T0NFU1NfUE9PTF9BRERJVElPTlNfMgogICAgIGlmICh3aXRoV2Vic2l0ZURhdGFTdG9yZSkgewog
ICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gd2l0aFdlYnNpdGVEYXRhU3Rv
cmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CkBAIC02MjQsNiArNjI1LDcgQEAg
TmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNz
KFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7
CiAgICAgICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFw
cGxpY2F0aW9uRG9tYWluOworICAgICAgICAgICAgYXBwQm91bmREb21haW5zID0gbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5k
RG9tYWluczsKICAgICAgICAgICAgIG1hbnVhbFByZXZhbGVudFJlc291cmNlID0gbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLm1hbnVhbFBy
ZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKQEAgLTY1MCw2ICs2NTIsNyBAQCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0
ZURhdGFTdG9yZSogd2l0aAogI2VuZGlmCiAgICAgICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAg
ICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW47CisgICAgICAgICAgICBhcHBCb3VuZERvbWFpbnMgPSBuZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5z
OwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50
UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjg5LDYgKzY5Miw4IEBAIE5ldHdvcmtQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0
b3JlKiB3aXRoCiAgICAgICAgIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkLAogI2Vu
ZGlmCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLAorICAgICAgICBz
dGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4sCisgICAgICAgIGFwcEJvdW5kRG9tYWlucywKICAg
ICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2UsCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNTBjMGJmOTgyZmQzN2M3ZGMzODdi
ODk4OWM4NzI2N2M5Y2E1ZjI3Zi4uM2FhOTk0YWM5NTFlYmFkMTlkNWVmODc0ODI3YWE3NDE2YjU0
NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC00NTgsOSArNDU4LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpPYmplY3QqIG1lc3NhZ2UKICAgICAgICAgcGFnZS52
YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGVsZW1ldHJ5RmluaXNoZWQiLCBtZXNzYWdlQm9keSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRl
c3RpbmcodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGMxZTNhMTRh
ZTQ4Yzc5OGFjZWY3NTkwNGY1NWJiNjkyZjQwNjViYjIuLjUxYmY5ZmRmYWE0ZDgyOGQ2Y2ViN2Nm
ZjZkNzVkYjM0N2Q2YzIzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCkBAIC0yMTksNyArMjE5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG5vdGlm
eVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogICAg
IHN0YXRpYyB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zp
bmlzaGVkKCk7CiAKLSAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JU
ZXN0aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBjZThjM2VlZWQw
MGU5NmVhOWFhMDY4ZGYzZTUzZDQwYzgxNzZiNjVjLi4xYmQ1MzUxZGZhZTZmNTUxYzZjMDE0MTk4
ZWE3NzQ4Zjg2ZDA2OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBA
IC00MTMsNiArNDEzLDkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91
bmREb21haW5zKEZvcmNlUmVpbml0aWFsaXphdGlvbiBmb3JjZVJlaW4KICAgICAgICAga2V5RXhp
c3RzID0gZG9tYWlucyA/IHRydWUgOiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCwgZm9yY2VSZWlu
aXRpYWxpemF0aW9uLCBkb21haW5zID0gcmV0YWluUHRyKGRvbWFpbnMpXSB7CisgICAgICAgICAg
ICBpZiAoaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMgJiYgZm9yY2VSZWluaXRpYWxpemF0
aW9uICE9IEZvcmNlUmVpbml0aWFsaXphdGlvbjo6WWVzKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKwogICAgICAgICAgICAgaWYgKGZvcmNlUmVpbml0aWFsaXphdGlvbiA9PSBGb3JjZVJlaW5p
dGlhbGl6YXRpb246OlllcykKICAgICAgICAgICAgICAgICBhcHBCb3VuZERvbWFpbnMoKS5jbGVh
cigpOwogCkBAIC00MzMsNiArNDM2LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFs
aXplQXBwQm91bmREb21haW5zKEZvcmNlUmVpbml0aWFsaXphdGlvbiBmb3JjZVJlaW4KICAgICAg
ICAgICAgICAgICBXRUJTSVRFX0RBVEFfU1RPUkVfQURESVRJT05TCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyA9IHRydWU7CisgICAgICAg
ICAgICBpZiAoaXNBcHBCb3VuZElUUFJlbGF4YXRpb25FbmFibGVkKQorICAgICAgICAgICAgICAg
IGZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5pdGlhbGl6ZWQoW10geyB9KTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CkBAIC00NDQsNiArNDQ5LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjplbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBI
YXNoU2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIEhvcHBpbmcgdG8gdGhlIGJh
Y2tncm91bmQgdGhyZWFkIHRoZW4gYmFjayB0byB0aGUgbWFpbiB0aHJlYWQKKyAgICAvLyBlbnN1
cmVzIHRoYXQgaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucygpIGhhcyBmaW5pc2hlZC4KICAgICBh
cHBCb3VuZERvbWFpblF1ZXVlKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildICgpIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKGhhc0luaXRpYWxpemVkQXBwQm91
bmREb21haW5zKTsKQEAgLTQ4Niw2ICs0OTMsMjQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpn
ZXRBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFcK
ICAgICB9KTsKIH0KIAorT3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4+IFdlYnNpdGVEYXRhU3RvcmU6OmFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKQorewor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgaWYgKCFoYXNJbml0aWFsaXplZEFw
cEJvdW5kRG9tYWlucykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
YXBwQm91bmREb21haW5zKCk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91
bmREb21haW5zRm9yVGVzdGluZyhIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYm
IGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGRvbWFpbiA9PSAibG9jYWxob3N0Il9zIHx8IGRvbWFpbiA9PSAiMTI3LjAuMC4xIl9zKTsK
KworICAgIGFwcEJvdW5kRG9tYWlucygpID0gV1RGTW92ZShkb21haW5zKTsKKyAgICBoYXNJbml0
aWFsaXplZEFwcEJvdW5kRG9tYWlucyA9IHRydWU7CisgICAgZm9yd2FyZEFwcEJvdW5kRG9tYWlu
c1RvSVRQSWZJbml0aWFsaXplZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKCkKIHsKICAg
ICBoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCBlMzYzNzZjNWVkMmYyOTdhZGE0NDE1MGFjYjUwMzk3MGVhMWMyZGM4Li5hMGI0YmQ3Mzll
Y2FiYmFlNWEwNzM5OGJlZjQ5YmNjOGJjNTRlNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTg2
MiwxNiArMTg2MiwyMiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVAogICAgIFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6T25seUFjY29yZGluZ1RvUGVyRG9tYWluUG9saWN5Owog
ICAgIGlmIChlbmFibGVkKQogICAgICAgICBibG9ja2luZ01vZGUgPSBvbmx5T25TaXRlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24gPyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiA6IFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU6OkFsbDsKKyAgICBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKGJsb2NraW5nTW9kZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIAogICAgIGlmICh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgIT0g
YmxvY2tpbmdNb2RlKSB7CiAgICAgICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9
IGJsb2NraW5nTW9kZTsKICAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzIDogcHJvY2Vzc2Vz
KCkpCi0gICAgICAgICAgICB3ZWJQcm9jZXNzLnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNGb3JUZXN0aW5nKGJsb2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICB3ZWJQcm9jZXNzLnNldFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoYmxvY2tpbmdNb2RlLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAg
ICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcobV9zZXNzaW9uSUQsIGJsb2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBuZXR3b3Jr
UHJvY2Vzcy0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShtX3Nlc3Npb25JRCwgYmxv
Y2tpbmdNb2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKICAgICB9CiB9CiAKQEAgLTIyMjUsOCArMjIzMSwxMyBAQCBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBib29s
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxzZTsK
ICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsK
ICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7Ci0gICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVu
dFJlc291cmNlIHsgfTsKLQorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBhcHBCb3VuZERvbWFpbnM7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGlzQXBw
Qm91bmRJVFBSZWxheGF0aW9uRW5hYmxlZCkKKyAgICAgICAgYXBwQm91bmREb21haW5zID0gYXBw
Qm91bmREb21haW5zSWZJbml0aWFsaXplZCgpLnZhbHVlT3IoSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4geyB9KTsKKyNlbmRpZgorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycyA9IHsKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KSwKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFu
ZGxlKSwKQEAgLTIyNDUsNiArMjI1Niw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8sCiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUsCisgICAgICAgIFdURk1vdmUoc3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluKSwKKyAgICAgICAgV1RGTW92ZShhcHBCb3VuZERvbWFpbnMpLAogICAgICAgICBX
VEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAg
ICAgfTsKIApAQCAtMjQyNCw0ICsyNDM3LDM5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVu
YW1lT3JpZ2luSW5XZWJzaXRlRGF0YShVUkwmJiBvbGROYW1lLCBVUkwmJiBuZXdOYW1lLCBPCiAg
ICAgfQogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZv
cndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5pdGlhbGl6ZWQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGF1dG8gYXBwQm91bmREb21haW5zID0gYXBwQm91bmREb21haW5zSWZJbml0aWFs
aXplZCgpOworICAgIGlmICghYXBwQm91bmREb21haW5zKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIHByb3BhZ2F0ZUFwcEJvdW5kRG9tYWlucyA9IFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSAoV2Vic2l0ZURhdGFTdG9yZSogc3RvcmUsIGNv
bnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKSB7CisgICAg
ICAgIGlmICghc3RvcmUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0b3Jl
LT50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgIT0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucykKKyAgICAg
ICAgICAgIHN0b3JlLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFp
bnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOworCisgICAgICAgIHN0b3JlLT5zZXRBcHBCb3VuZERvbWFpbnNGb3JJVFAoZG9tYWlucywg
W2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7
CisgICAgfTsKKworICAgIHByb3BhZ2F0ZUFwcEJvdW5kRG9tYWlucyhnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKCkuZ2V0KCksICphcHBCb3VuZERvbWFpbnMpOworCisgICAgZm9yIChhdXRvKiBzdG9y
ZSA6IG5vbkRlZmF1bHREYXRhU3RvcmVzKCkudmFsdWVzKCkpCisgICAgICAgIHByb3BhZ2F0ZUFw
cEJvdW5kRG9tYWlucyhzdG9yZSwgKmFwcEJvdW5kRG9tYWlucyk7Cit9CisKK3ZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQKGNvbnN0IEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisK
KyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkp
CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhtX3Nlc3Npb25JRCwgZG9tYWlucywgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorI2VuZGlm
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaAppbmRleCBjZDY3ZWI1ODJmZGI5NWJhOWYyMTgwNDgyNDRhZWVjYjNj
MzkwM2ZhLi5hMzViNjk3OTc1YTlmMTVkZTEyMjI5MWQ5YmQ4ZGEzYTIzMTI0YWQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCkBAIC0xOTksNiArMTk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFzSXNvbGF0ZWRT
ZXNzaW9uRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBjb25zdDsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3du
Z3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0
VXNlckludGVyYWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmlj
dENvb2tpZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC0yOTYsNiArMjk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QXBwQm91bmREb21h
aW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCBlbnN1cmVBcHBCb3VuZERvbWFpbnMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYpPiYmKSBjb25zdDsKICAgICB2b2lkIHJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlu
cygpOworICAgIHN0YXRpYyB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoSGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZvcmNlUmVpbml0aWFsaXphdGlvbiA6
IGJvb2wgeyBObywgWWVzIH07CkBAIC0zMzEsNiArMzMzLDEzIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIG1heWJlUmVnaXN0ZXJXaXRoU2Vzc2lvbklETWFwKCk7CiAKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBzdGF0aWMgT3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4+IGFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKTsKKyAgICBjb25zdGV4cHIgc3RhdGlj
IGNvbnN0IHN0ZDo6YXRvbWljPGJvb2w+IGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxlZCA9
IGZhbHNlOworICAgIHN0YXRpYyB2b2lkIGZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5p
dGlhbGl6ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldEFwcEJv
dW5kRG9tYWluc0ZvcklUUChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKKwogICAgIGNvbnN0IFBB
TDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCiAgICAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uPiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCA4MmMzYzliODc3OGM0ZjAxYTA0YmFmYzJjNWI1OTVhYTI2
NTI1NTczLi41NDY1OGUxYWRhY2ViMTdjYTg3ZmI0YTg0NTU0NmFlMzM2MGE1OGM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xODk1LDcgKzE4OTUsNyBAQCBi
b29sIFdlYlByb2Nlc3M6OmFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCkgY29uc3QKIH0KIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFdlYlByb2Nlc3M6OnNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzOjpzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDE4OWIzNGFmMzQ3OGQ3NWFlNjM5
ZDk3MmRmNzkwZTcwMTRjYzdiMDQuLmI4YzllN2M5NTMyMTYxZTAwZWNmNGQ4MDc1NmQxZDI3YmRh
ZTI5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDU4LDcgKzQ1
OCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGlu
ZyhXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3Mo
Y29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlMGZl
ZTBiMDRkZTY5YzY2MWM1OWVmNzBlNjZlYzcwMDQ4Y2JlMmQ1Li4xMTQ5YmYwODk4NjY1ZmNjNWY3
YzBmNTBmZmI3YzU3YTU0OGVhNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTU3LDcgKzE1Nyw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9y
VGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVk
dWxlTm90aWZpY2F0aW9uKSAtPiAoKSBBc3luYwotICAgIFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXNGb3JUZXN0aW5nKGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKKyAgICBTZXRUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDBhYmJiMmJmYmQxOGY5YjI4ZjZhNzY2ZTBkYWM1YmRjMjI5ZDNhZGQuLjkwMWY5YzU1
ZTA2NmYwMDcyNTliOTY4OGIxOTQxZjBmZWFiNGE2MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wNS0wNiAg
Sm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeGVtcHQgYXBw
LWJvdW5kIGRvbWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gYW5kIHRoaXJk
LXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3NAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBUZXN0UnVubmVyIGZ1bmN0aW9uCisgICAg
ICAgIHNldEFwcEJvdW5kRG9tYWluKCkgd2hpY2ggdGFrZXMgYW4gYXJyYXkgb2Ygb3JpZ2luCisg
ICAgICAgIHN0cmluZ3MgYW5kIHNldHMgdGhlbSB0byBhcHAtYm91bmQgZG9tYWlucy4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVz
c2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0QXBwQm91bmREb21h
aW5zKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkU2V0QXBwQm91bmREb21haW5zQ2Fs
bGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpBcHBCb3VuZERvbWFpbnNDYWxsYmFja0NvbnRleHQ6OkFwcEJvdW5kRG9t
YWluc0NhbGxiYWNrQ29udGV4dCk6CisgICAgICAgIChXVFI6OmRpZFNldEFwcEJvdW5kRG9tYWlu
c0NhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEFwcEJvdW5kRG9t
YWlucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkU2V0QXBwQm91bmREb21haW5zKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjAtMDUtMDYg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVsaW1pbmF0ZSBjaGVj
a3Mgb2YgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpIGluIENvY29hLXNwZWNpZmljIGNvZGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDVjYmU5NTE2MmVkN2NkNzQ3Mjc0MzYwMGZj
ZDNjMmU0YTlhZTgzOTUuLmExOWRmOTVmNjQwNTViZWRiMDUyN2QwZGNhYmM3ODZmZjA3ZDQ3OGQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzkzLDcgKzM5Myw5IEBAIGludGVyZmFj
ZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogICAgIHZv
aWQgc2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKHVuc2lnbmVkIGxvbmcgb3JpZW50YXRpb24pOwog
ICAgIGJvb2xlYW4gaXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKKwog
ICAgIGJvb2xlYW4gaGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAgdm9pZCBzZXRBcHBCb3VuZERv
bWFpbnMob2JqZWN0IG9yaWdpbnNBcnJheSwgb2JqZWN0IGNhbGxiYWNrKTsKIAogICAgIHZvaWQg
aW5qZWN0VXNlclNjcmlwdChET01TdHJpbmcgc3RyaW5nKTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
aW5kZXggMTBlNmVlM2Y3MWYzMjE2ZmI0NzYxZWVlZWM2NTcwMGIzZjJjMGMwZi4uZmU1ZDc1NzRk
NzFmMzNjZWNhYWEyYzc2YWM3MTQ0ZThlY2QzN2YyNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTUx
OCw3ICs1MTgsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1Bh
Z2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVu
bmVyLT5wZXJmb3JtQ3VzdG9tTWVudUFjdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIAorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJDYWxsRGlkU2V0QXBwQm91bmREb21haW5zIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5k
aWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZU5hbWUgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKTsKICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlVua25vd24iKSk7CiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2Uo
cGFnZSwgZXJyb3JNZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAppbmRleCA1M2QxMWFkNzMzZTkxZDhjMTE4NDRhMTAyZjI3NjM1ZDJjZjIwMGEyLi40YTE4
YzE4OTM1MDdkM2Q2ZDNkNGZmYmRkMWJkMDk0MTg3NTUwNWI4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc2Myw2
ICs3NjMsNyBAQCBlbnVtIHsKICAgICBUZXh0RmllbGREaWRCZWdpbkVkaXRpbmdDYWxsYmFja0lE
LAogICAgIFRleHRGaWVsZERpZEVuZEVkaXRpbmdDYWxsYmFja0lELAogICAgIEN1c3RvbU1lbnVB
Y3Rpb25DYWxsYmFja0lELAorICAgIERpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrSUQsCiAg
ICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAKIH07CiAKQEAgLTI5NzUsNCArMjk3Niw0
MyBAQCBib29sIFRlc3RSdW5uZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbigpCiAgICAgcmV0dXJuIFdL
Qm9vbGVhbkdldFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5E
YXRhKSkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldEFwcEJvdW5kRG9tYWlucyhK
U1ZhbHVlUmVmIG9yaWdpbkFycmF5LCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKERpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNr
SUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tC
dW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpKTsKKworICAgIGlmICgh
SlNWYWx1ZUlzQXJyYXkoY29udGV4dCwgb3JpZ2luQXJyYXkpKQorICAgICAgICByZXR1cm47CisK
KyAgICBKU09iamVjdFJlZiBvcmlnaW5zID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIG9yaWdp
bkFycmF5LCBudWxscHRyKTsKKyAgICBzdGF0aWMgYXV0byBsZW5ndGhQcm9wZXJ0eSA9IGFkb3B0
KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgiKSk7CisgICAgSlNWYWx1ZVJl
ZiBvcmlnaW5zTGVuZ3RoVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIG9yaWdp
bnMsIGxlbmd0aFByb3BlcnR5LmdldCgpLCBudWxscHRyKTsKKyAgICBpZiAoIUpTVmFsdWVJc051
bWJlcihjb250ZXh0LCBvcmlnaW5zTGVuZ3RoVmFsdWUpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIG9yaWdpblVSTHMgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOworICAg
IGF1dG8gb3JpZ2luc0xlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIG9yaWdpbnNMZW5ndGhWYWx1ZSwgbnVsbHB0cikpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb3JpZ2luc0xlbmd0aDsgKytpKSB7CisgICAgICAgIEpTVmFsdWVSZWYgb3Jp
Z2luVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBvcmlnaW5zLCBp
LCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgb3JpZ2lu
VmFsdWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBvcmlnaW4gPSBh
ZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIG9yaWdpblZhbHVlLCBudWxscHRyKSk7
CisgICAgICAgIHNpemVfdCBvcmlnaW5CdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRG
OENTdHJpbmdTaXplKG9yaWdpbi5nZXQoKSkgKyAxOworICAgICAgICBhdXRvIG9yaWdpbkJ1ZmZl
ciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihvcmlnaW5CdWZmZXJTaXplKTsKKyAgICAgICAgSlNT
dHJpbmdHZXRVVEY4Q1N0cmluZyhvcmlnaW4uZ2V0KCksIG9yaWdpbkJ1ZmZlci5nZXQoKSwgb3Jp
Z2luQnVmZmVyU2l6ZSk7CisKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0ob3JpZ2luVVJMcy5n
ZXQoKSwgYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW5CdWZmZXIuZ2V0
KCkpKS5nZXQoKSk7CisgICAgfQorCisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEFwcEJvdW5kRG9tYWlucyIpKTsKKyAgICBX
S0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG9yaWdpblVSTHMuZ2V0KCkpOworfQorCit2b2lkIFRlc3RSdW5u
ZXI6OmRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5l
ckNhbGxiYWNrKERpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrSUQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmgKaW5kZXggZjViNjM2ZTAxODljYTcyNDlmNDYzNjVkNGRiNjZmYWNjYzRm
YWFiMC4uY2U4MDFhM2IzMmI5YWJlMDdiOGVhZjI4NmRkY2RhNGZjOGRmNDVhNyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAg
LTUwMCw3ICs1MDAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRNb2NrTWVkaWFEZXZpY2Vz
KCk7CiAgICAgdm9pZCBzZXRNb2NrQ2FtZXJhT3JpZW50YXRpb24odW5zaWduZWQpOwogICAgIGJv
b2wgaXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKKwogICAgIGJvb2wg
aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSlNWYWx1
ZVJlZiBvcmlnaW5BcnJheSwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBkaWRTZXRB
cHBCb3VuZERvbWFpbnNDYWxsYmFjaygpOwogCiAgICAgc2l6ZV90IHVzZXJTY3JpcHRJbmplY3Rl
ZENvdW50KCkgY29uc3Q7CiAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0KEpTU3RyaW5nUmVmKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYzRkNTdlMTg4
YjcwNzhkNDkxMDFiZWM5Mzg4YzAwMTIzNWIwY2Q4NS4uNDc0NjAzMjJjNmYwY2I1MTQ3NTZmYWY1
MzM1MDg5MjVkMzYwNzE0OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTM3NzcsNiArMzc3NywzMCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCiAgICAg
bV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoKTsKIH0K
IAorc3RydWN0IEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrQ29udGV4dCB7CisgICAgZXhwbGljaXQg
QXBwQm91bmREb21haW5zQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVy
KQorICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRyb2xsZXIpCisgICAgeworICAgIH0KKwor
ICAgIGJvb2wgZG9uZSB7IGZhbHNlIH07CisgICAgVGVzdENvbnRyb2xsZXImIHRlc3RDb250cm9s
bGVyOworfTsKKworc3RhdGljIHZvaWQgZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2sodm9p
ZCogY2FsbGJhY2tDb250ZXh0KQoreworICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxB
cHBCb3VuZERvbWFpbnNDYWxsYmFja0NvbnRleHQqPihjYWxsYmFja0NvbnRleHQpOworICAgIGNv
bnRleHQtPmRvbmUgPSB0cnVlOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRBcHBCb3Vu
ZERvbWFpbnMoV0tBcnJheVJlZiBvcmlnaW5VUkxzKQoreworICAgIEFwcEJvdW5kRG9tYWluc0Nh
bGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRB
cHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKG9yaWdpblVSTHMsICZjb250ZXh0LCBkaWRTZXRBcHBC
b3VuZERvbWFpbnNDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVv
dXQpOworICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldEFwcEJvdW5kRG9tYWlucygpOwor
fQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZSgpCiB7CiAgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRo
aXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDMzN2VmNmUz
YjQzMGJlMWQ3NzcyMmVhYjdmZWE4Y2IyMWFlZWQxYzEuLjA1NDYxYzRkOTE3ZGEwZGQ5MzU3M2Zi
MzgxZTkzNTI1MjViMWI4MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKQEAgLTI2Niw2ICsyNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVlLCBib29sIG9ubHlPblNpdGVzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoV0tTdHJpbmdSZWYgaG9zdE5hbWUpOworICAgIHZvaWQg
c2V0QXBwQm91bmREb21haW5zKFdLQXJyYXlSZWYgb3JpZ2luVVJMcyk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllcygpOwpAQCAtMzUyLDYgKzM1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFdLVVJMUmVmKTsKICAg
ICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygpOwogCisg
ICAgdm9pZCBkaWRTZXRBcHBCb3VuZERvbWFpbnMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBX
S1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25maWd1cmF0
aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29uZmln
dXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9u
czo6Q29udGV4dE9wdGlvbnMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKaW5kZXggN2VhN2QyMDBhYTQ3MGMxMTAyYTgzMDkwYzc4ZTQyZGZiMDk1NDQx
Zi4uZWExYTlmN2ZhMDhkZmUyMmEwY2ZiYWFkZWRhZDI3YjdlMDAyZDAyNiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTk5NCw2ICs5OTQsMTMgQEAgdm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0QXBwQm91bmREb21h
aW5zIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Fy
cmF5R2V0VHlwZUlEKCkpOworICAgICAgICBXS0FycmF5UmVmIG9yaWdpblVSTHMgPSBzdGF0aWNf
Y2FzdDxXS0FycmF5UmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5zZXRBcHBCb3VuZERvbWFpbnMob3JpZ2luVVJMcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAtMjAxMSw2ICsy
MDE4LDEyIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50
aWFscygpCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgp
LCAwKTsKIH0KIAordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0QXBwQm91bmREb21haW5zKCkK
K3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkU2V0QXBwQm91bmREb21haW5zIikp
OworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVs
bHB0cik7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkKIHsKICAgICBtX3Nob3VsZER1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCAxZTU3N2RhYTdkOTA4
NWQ0MDZkYWExNzM0Y2UwMDVjNDI4ZDgzZDMzLi4yOTM0NDBjMzYxYjYxZDI0OGEzZmUzZjk0YzI4
YTA1YjFjZjQ5ZmQyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBA
IC05MCw3ICs5MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVMb2FkZWRUaGlyZFBh
cnR5RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOwogCiAgICAgdm9pZCBkaWRSZW1v
dmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKLSAgICAKKworICAgIHZvaWQgZGlkU2V0QXBwQm91
bmREb21haW5zKCk7CisKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAK
ICAgICBib29sIGNhbk9wZW5XaW5kb3dzKCkgY29uc3QgeyByZXR1cm4gbV9jYW5PcGVuV2luZG93
czsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDhlZDMxMWQ4NzM5MmM5ZDhhOWZkZDZkOWY5YjkyMDRiM2E4NTg2MWMuLjNk
ZTUwMzQzOWJkMDI2YzZlNmFmZjBjNDI5NzI2ODhjNDBjZWY4ZTUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMC0wNS0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFeGVtcHQgYXBwLWJvdW5kIGRvbWFpbnMgZnJvbSBJVFAncyB3ZWJzaXRlIGRhdGEg
ZGVsZXRpb24gYW5kIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBiZXR3ZWVuIHRoZW1zZWx2
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY3
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE5NTA3Njc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUt
YmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJv
dW5kLWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJsb2NraW5nLWJldHdlZW4tZWFjaC1vdGhl
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9t
YWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERv
bWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vi
c2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA1LTA2ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgZmFzdC9vdmVyZmxvdy9ob3Jpem9udGFs
LXNjcm9sbC1hZnRlci1iYWNrLmh0bWwgaXMgYSBmbGFreSB0aW1lb3V0IG9uIG1hY09TCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUtYmxvY2tpbmct
YmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4
ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYyYjIzMTBjNDcxZWNlZTFmMzQ4MWQ4ODRkNzJiODNiMzhkZjBhMWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS1jb29raWUt
YmxvY2tpbmctYmV0d2Vlbi1lYWNoLW90aGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMzIEBA
CitUZXN0cyB0aGF0IGFwcC1ib3VuZCBkb21haW5zIGFyZSBleGVtcHQgZnJvbSB0aGlyZC1wYXJ0
eSBjb29raWUgYmxvY2tpbmcgYmV0d2VlbiB0aGVtc2VsdmVzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMS0tPicKKy0tLS0tLS0tCitT
aG91bGQgbm90IHJlY2VpdmUgY29va2llLgorRGlkIG5vdCByZWNlaXZlIGNvb2tpZSBuYW1lZCAn
Zmlyc3RQYXJ0eUNvb2tpZScuCitEaWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVkICdwYXJ0aXRp
b25lZENvb2tpZScuCitDbGllbnQtc2lkZSBkb2N1bWVudC5jb29raWU6CisKKy0tLS0tLS0tCitG
cmFtZTogJzwhLS1mcmFtZTItLT4nCistLS0tLS0tLQorU2hvdWxkIG5vdCByZWNlaXZlIGNvb2tp
ZS4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlk
IG5vdCByZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNp
ZGUgZG9jdW1lbnQuY29va2llOgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUzLS0+Jwor
LS0tLS0tLS0KK1Nob3VsZCByZWNlaXZlIGNvb2tpZS4KK1JlY2VpdmVkIGNvb2tpZSBuYW1lZCAn
Zmlyc3RQYXJ0eUNvb2tpZScuCitEaWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVkICdwYXJ0aXRp
b25lZENvb2tpZScuCitDbGllbnQtc2lkZSBkb2N1bWVudC5jb29raWU6IGZpcnN0UGFydHlDb29r
aWU9dmFsdWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLWNv
b2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21h
aW5zLWV4ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYjU4NWZmYzJkYjViMmUyYzM3ZWU2MjdjODA1YWQ2YTY3ZDRlOGY1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20tY29va2llLWJs
b2NraW5nLWJldHdlZW4tZWFjaC1vdGhlci5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRG
LTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBh
cHAtYm91bmQgZG9tYWlucyBhcmUgZXhlbXB0IGZyb20gdGhpcmQtcGFydHkgY29va2llIGJsb2Nr
aW5nIGJldHdlZW4gdGhlbXNlbHZlcy4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgIGNvbnN0IGZpcnN0UGFydHlPcmlnaW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAg
ICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CisgICAg
Y29uc3QgdGhpcmRQYXJ0eVJlc291cmNlVXJsID0gdGhpcmRQYXJ0eU9yaWdpbiArICIvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMiOworICAgIGNvbnN0IGZpcnN0UGFydHlDb29raWVO
YW1lID0gImZpcnN0UGFydHlDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFy
dHlDb29raWUgPSAiL3NldC1jb29raWUucGhwP25hbWU9IiArIGZpcnN0UGFydHlDb29raWVOYW1l
ICsgIiZ2YWx1ZT12YWx1ZSI7CisgICAgY29uc3QgcGFydGl0aW9uZWRDb29raWVOYW1lID0gInBh
cnRpdGlvbmVkQ29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRQYXJ0aXRpb25lZENvb2tp
ZSA9ICIvc2V0LWNvb2tpZS5waHA/bmFtZT0iICsgcGFydGl0aW9uZWRDb29raWVOYW1lICsgIiZ2
YWx1ZT12YWx1ZSI7CisgICAgY29uc3QgcmV0dXJuVXJsID0gZmlyc3RQYXJ0eU9yaWdpbiArICIv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4
ZW1wdC1mcm9tLWNvb2tpZS1ibG9ja2luZy1iZXR3ZWVuLWVhY2gtb3RoZXIuaHRtbCI7CisgICAg
Y29uc3Qgc3ViUGF0aFRvR2V0Q29va2llcyA9ICIvZ2V0LWNvb2tpZXMucGhwP25hbWUxPSIgKyBm
aXJzdFBhcnR5Q29va2llTmFtZSArICImbmFtZTI9IiArIHBhcnRpdGlvbmVkQ29va2llTmFtZTsK
KyAgICBjb25zdCByZWRpcmVjdENoYWluVXJsID0gdGhpcmRQYXJ0eVJlc291cmNlVXJsICsgIi9y
ZWRpcmVjdC5waHA/cmVkaXJlY3RUbz0iICsgdGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0
aFRvR2V0Q29va2llczsKKworICAgIGZ1bmN0aW9uIG9wZW5JZnJhbWUodXJsLCBvbkxvYWRIYW5k
bGVyKSB7CisgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
ZnJhbWUiKTsKKyAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7CisgICAgICAgIGlmIChvbkxvYWRI
YW5kbGVyKSB7CisgICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IG9uTG9hZEhhbmRsZXI7Cisg
ICAgICAgIH0KKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzd2l0Y2ggKGRvY3VtZW50
LmxvY2F0aW9uLmhhc2gpIHsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMSI6CisgICAgICAgICAg
ICAgICAgLy8gU2V0IGZpcnN0LXBhcnR5IGNvb2tpZSBmb3IgbG9jYWxob3N0LgorICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSB0aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBz
dWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llICsgIiMiICsgcmV0dXJuVXJsICsgIiNzdGVwMiI7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDIiOgorICAg
ICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBkb2Vzbid0IGdldCBzZW50IGZv
ciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIHNpbmNlIG9ubHkgbG9jYWxob3N0IGlzIGNvbmZp
Z3VyZWQgYXMgYW4gYXBwLWJvdW5kIGRvbWFpbi4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5s
b2NhdGlvbi5oYXNoID0gInN0ZXAzIjsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEFw
cEJvdW5kRG9tYWlucyhbIHRoaXJkUGFydHlPcmlnaW4gXSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eVJlc291cmNlVXJsICsgc3ViUGF0aFRv
R2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgbm90IHJlY2VpdmUgY29va2llLiIsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhh
dCB0aGUgY29va2llIGRvZXNuJ3QgZ2V0IHNlbnQgZm9yIGxvY2FsaG9zdCB1bmRlciAxMjcuMC4w
LjEgc2luY2Ugb25seSAxMjcuMC4wLjEgaXMgY29uZmlndXJlZCBhcyBhbiBhcHAtYm91bmQgZG9t
YWluLgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDQiOwor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXBwQm91bmREb21haW5zKFsgZmlyc3RQYXJ0
eU9yaWdpbiBdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0
aGlyZFBhcnR5UmVzb3VyY2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNo
b3VsZCBub3QgcmVjZWl2ZSBjb29raWUuIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBydW5UZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXA0
IjoKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBjb29raWUgZ2V0cyBzZW50IGZv
ciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIHNpbmNlIHRoZXkgYXJlIG5vdyBib3RoIGNvbmZp
Z3VyZWQgYXMgYXBwLWJvdW5kIGRvbWFpbnMuCisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9j
YXRpb24uaGFzaCA9ICJzdGVwNSI7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBC
b3VuZERvbWFpbnMoWyBmaXJzdFBhcnR5T3JpZ2luLCB0aGlyZFBhcnR5T3JpZ2luIF0sIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlSZXNvdXJj
ZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hvdWxkIHJlY2VpdmUgY29v
a2llLiIsIHJ1blRlc3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGZhbHNlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmlu
aXNoSlNUZXN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAi
IikgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICBk
b2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAgICAgICAgICAgIHJ1blRlc3QoKTsK
KyAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBwLWJvdW5kLWRvbWFp
bnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHRE
b21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlv
bi1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhlNDVkN2YxOTlhM2M2OWFiYzFl
YTE1ZjE3OTMyOTlmYjc3ZDY1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21h
aW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNSBAQAorQ2hlY2sgdGhhdCB3ZWJzaXRlIGRhdGEgZG9lcyBub3QgZ2V0
IHJlbW92ZWQgYWZ0ZXIgYSBwZXJpb2Qgb2Ygbm8gdXNlciBpbnRlcmFjdGlvbiBpZiB0aGUgd2Vi
c2l0ZSBpcyBhcHAtYm91bmQuCisKK0JlZm9yZSBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2ll
IGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0JlZm9y
ZSBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRl
bGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0JlZm9yZSBkZWxldGlvbjog
SURCIGVudHJ5IGRvZXMgZXhpc3QuCisKK0FmdGVyIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUg
ZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRl
ciBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVs
ZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQWZ0ZXIgZGVsZXRpb246IElE
QiBlbnRyeSBkb2VzIGV4aXN0LgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5z
LWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMvYXBw
LWJvdW5kLWRvbWFpbnMtZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTRlNjcxYjBiODMzYTBlNWJhMmRhNjgwOTRiM2NmMDUzZWQyMDFj
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdl
YnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCkBAIC0wLDAgKzEsMjU2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jl
c291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJz
ZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+Q2hlY2sg
dGhhdCB3ZWJzaXRlIGRhdGEgZG9lcyBub3QgZ2V0IHJlbW92ZWQgYWZ0ZXIgYSBwZXJpb2Qgb2Yg
bm8gdXNlciBpbnRlcmFjdGlvbiBpZiB0aGUgd2Vic2l0ZSBpcyBhcHAtYm91bmQuPC9kaXY+Cis8
YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPGJyPgorPHNjcmlwdD4KKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworCisgICAgY29uc3QgaHR0cE9ubHlD
b29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29r
aWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tp
ZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdB
cnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBi
LnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEg
OiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAg
ICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAg
IG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRP
dXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAg
ICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
aGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRD
b29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICBhZGRP
dXRwdXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHNjcmlwdC1h
Y2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICBmb3IgKGxl
dCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkg
eworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAgICAgICAgICAg
ICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24g
PyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiArIChpc0FmdGVyRGVsZXRpb24g
PyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToK
KyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNB
ZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IFJlZ3VsYXIg
c2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAg
ICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9u
ID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBl
eGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRl
c3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAgICAgIGZvciAobGV0
IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAg
ICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVuY3Rpb24gY3JlYXRl
SURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERC
Lm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIuIik7CisgICAg
ICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgICAgICAgICBvYmpT
dG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisKKyAgICBsZXQgaW50ZXJ2YWxD
b3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOworICAgIGxldCBjaGVja0lEQklu
dGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgZnVuY3Rp
b24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgewor
ICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVySURCID0gMDsKKyAg
ICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJE
ZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisg
ICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisK
KyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxz
KSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBl
bnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURC
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFs
KGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRl
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJ
REIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9y
ZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVu
dGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0
SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJD
aGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291
bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGV4aGF1c3RlZC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sg
YWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQor
CisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2Nh
bFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOwor
ICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9y
YWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3Rz
KGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9j
YWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxi
YWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hl
Y2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgewor
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJ
dGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJl
Zm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3Rv
cmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5V
bmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9j
YWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1
ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3Qu
Iik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
ID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiAr
ICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hh
c0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAg
ICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7
CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3Rv
cmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJk
b2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRh
QW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0
IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tp
ZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2lu
IiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVz
LmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsg
Ij0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAg
ZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAg
IGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisg
ICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFn
ZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9u
KCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVh
dGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0
YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRk
TGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVE
YXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRD
b250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5E
YXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAg
IHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7Cisg
ICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlz
dHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlz
dHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShmYWxzZSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3Qg
ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldEFwcEJvdW5kRG9tYWlucyhbIG9yaWdpblVuZGVyVGVzdCBdLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5k
ZXJUZXN0LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
dGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3Qp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdp
blVuZGVyVGVzdCArICIgZGlkbid0IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVt
cHREb21haW5zL2FwcC1ib3VuZC1kb21haW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxl
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4ZTQ1ZDdmMTk5YTNj
NjlhYmMxZWExNWYxNzkzMjk5ZmI3N2Q2NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91
bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTUgQEAKK0NoZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCBy
ZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNp
dGUgaXMgYXBwLWJvdW5kLgorCitCZWZvcmUgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBl
eGlzdHMuCitCZWZvcmUgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUg
ZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxl
dGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElE
QiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4
aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIg
ZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0
aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIg
ZW50cnkgZG9lcyBleGlzdC4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy9hcHAtYm91bmQtZG9tYWlucy1l
eGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zL2FwcC1ib3VuZC1kb21h
aW5zLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5
MDQ3OTVlYWQ2YTk2NTEzZjYyMzE1M2IzNWZiNjg1MzI2ZmI3MTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9t
YWlucy9hcHAtYm91bmQtZG9tYWlucy1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24u
aHRtbApAQCAtMCwwICsxLDI1NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdl
dCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdl
YnNpdGUgaXMgYXBwLWJvdW5kLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4K
Kzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUgPSAi
aHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAic2Vy
dmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJjbGll
bnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsK
KyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2Uo
KTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQor
CisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdl
KSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFw
cGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhp
c0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2Vz
ID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAg
ICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgIGFkZE91dHB1dCgoaXNBZnRl
ckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc2NyaXB0LWFjY2Vzc2libGUgZGVs
ZXRpb246IE5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBj
b29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAi
QmVmb3JlIikgKyAiIGRlbGV0aW9uOiAiICsgKGlzQWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSAr
ICJIdHRwT25seSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIHNlcnZlclNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAg
ICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24g
PyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lkZSBj
b29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNv
cnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDog
IkJlZm9yZSIpICsgIiBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1lc3Nh
Z2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKKyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3NlZE1l
c3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRPdXRw
dXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgZGJO
YW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3RvcmUo
Y2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUp
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFk
ZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0
Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFs
dWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBj
b25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7Cisg
ICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAg
ICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lEQkRh
dGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxldCBy
ZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOworICAgICAgICBjaGVja0lE
QkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7Cisg
ICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNo
ZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgbm90
IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRl
cnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3Bl
biBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVj
ayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUg
bmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2Vz
IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDAp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
YSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1h
eEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRp
b246IElEQiBlbnRyeSBjaGVja3MgZXhoYXVzdGVkLiIpOworICAgICAgICAgICAgICAgICAgICBz
ZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNh
bGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lE
QkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBk
ZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW50
ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUNhbGxi
YWNrOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQ7CisgICAgY29uc3QgbG9j
YWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2
YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0
aW9uLCBjYWxsYmFjaykgeworICAgICAgICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAw
OworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAg
IGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVy
ZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFs
SUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRl
cnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9y
YWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9u
OiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAi
ZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0
SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJC
ZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0
b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVj
a0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2
YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9y
YWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBs
b2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdl
KG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFs
dWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIg
KyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAi
IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNr
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgp
IHsKKyAgICAgICAgLy8gV3JpdGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29r
aWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0
cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAg
ICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFk
ZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9Lzsi
IH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5jb29r
aWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29raWVz
KGZhbHNlKTsKKworICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxT
dG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAg
ICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9y
ZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMo
ZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091
dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51
ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgewor
ICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2Fs
bGJhY2soY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgY2hlY2tD
b29raWVzKHRydWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5p
c2hUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgp
IHsKKyAgICAgICAgcmVzZXRDb29raWVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGZhbHNlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9yaWdpblVuZGVyVGVzdCAgPSAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwIjsKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
QXBwQm91bmREb21haW5zKFsgb3JpZ2luVW5kZXJUZXN0IF0sIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3QsIHRydWUs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0ICsg
IiBkaWRuJ3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50LiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>