<?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>229527</bug_id>
          
          <creation_ts>2021-08-25 16:27:14 -0700</creation_ts>
          <short_desc>Separate PrivateClickMeasurement database from ResourceLoadStatistics database and add SPI to set its location</short_desc>
          <delta_ts>2021-08-27 14:23:21 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1787372</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-25 16:27:14 -0700</bug_when>
    <thetext>Separate PrivateClickMeasurement database from ResourceLoadStatistics database and add SPI to set its location</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787376</commentid>
    <comment_count>1</comment_count>
      <attachid>436437</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-25 16:35:43 -0700</bug_when>
    <thetext>Created attachment 436437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787442</commentid>
    <comment_count>2</comment_count>
      <attachid>436461</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-25 20:15:42 -0700</bug_when>
    <thetext>Created attachment 436461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787471</commentid>
    <comment_count>3</comment_count>
      <attachid>436473</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-25 22:19:40 -0700</bug_when>
    <thetext>Created attachment 436473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787704</commentid>
    <comment_count>4</comment_count>
      <attachid>436540</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-26 11:41:55 -0700</bug_when>
    <thetext>Created attachment 436540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787770</commentid>
    <comment_count>5</comment_count>
      <attachid>436540</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-08-26 13:26:14 -0700</bug_when>
    <thetext>Comment on attachment 436540
Patch

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

I like this change, it&apos;s very clever. My main question is why we are storing the PCM store inside the ITP store? I think it could be separate and use separate queues now that they are in different databases.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:561
&gt;  void ResourceLoadStatisticsDatabaseStore::renameColumnInTable(String&amp;&amp; tableName, ExistingColumnName&amp;&amp; existingColumnName, ExpectedColumnName&amp;&amp; expectedColumnName)

You should delete this function, it is only used by the functions you deleted.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:795
&gt;      m_updateAttributionsEarliestTimeToSendStatement = nullptr;

This seems like it can be deleted.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:60
&gt;  using ExpectedColumnName = String;

ExistingColumns, ExpectedColumns, ExistingColumnName and ExpectedColumnName are all used in the migration functions you deleted. You can delete them here as well.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:133
&gt;      Vector&lt;String&gt; columnsForTable(const String&amp;);

Ditto, you should delete this function now that it is no longer used.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:142
&gt;      void addMissingTablesIfNecessary();

Ditto.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:145
&gt;      void renameColumnInTable(String&amp;&amp;, ExistingColumnName&amp;&amp;, ExpectedColumnName&amp;&amp;);

Ditto.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:146
&gt;      void addMissingColumnsToTable(String&amp;&amp;, const ExistingColumns&amp;, const ExpectedColumns&amp;);

Ditto.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:147
&gt;      void renameColumnInTable();

Ditto.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:149
&gt;      void updatePrivateClickMeasurementSchemaIfNecessary();

Ditto.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:267
&gt;      std::unique_ptr&lt;WebCore::SQLiteStatement&gt; m_updateAttributionsEarliestTimeToSendStatement;

Please delete this.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:170
&gt; +    , m_pcmStore(PCM::Store::create(sharedStatisticsQueue(), pcmStoreDirectory(networkSession, resourceLoadStatisticsDirectory, privateClickMeasurementStorageDirectory)))

We don&apos;t need PCM and ITP to share a queue because they have different databases now. Could we separate them out so we can do more work in parallel?

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:243
&gt; +    PCM::Store&amp; privateClickMeasurementStore() { return m_pcmStore.get();}

It seems strange to me to keep the PCM::Store as a member of the WebResourceLoadStatisticsStore instead of in the NetworkSession. Is there a reason you did it this way?

&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:131
&gt; +            return completionHandler(ResourceError(ResourceError::Type::Cancellation), { }, { });

Nice catch.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.cpp:43
&gt; +    if (!databaseDirectory.isEmpty()) {

I can&apos;t find the place in code where you set this to be empty if the session is ephemeral, where does that happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787779</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-26 13:38:17 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #5)
&gt; Comment on attachment 436540 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=436540&amp;action=review
&gt; 
&gt; I like this change, it&apos;s very clever. My main question is why we are storing
&gt; the PCM store inside the ITP store? I think it could be separate and use
&gt; separate queues now that they are in different databases.
I&apos;m just writing the two database files to the same directory by default so we don&apos;t have to add another directory, which would hurt startup time.  I like the idea of separate queues, though.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:243
&gt; &gt; +    PCM::Store&amp; privateClickMeasurementStore() { return m_pcmStore.get();}
&gt; 
&gt; It seems strange to me to keep the PCM::Store as a member of the
&gt; WebResourceLoadStatisticsStore instead of in the NetworkSession. Is there a
&gt; reason you did it this way?
That was necessary for the incremental approach with which I wrote this patch.  Now that it&apos;s a self-contained object, it can go anywhere.  I&apos;ll move it.

&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.cpp:43
&gt; &gt; +    if (!databaseDirectory.isEmpty()) {
&gt; 
&gt; I can&apos;t find the place in code where you set this to be empty if the session
&gt; is ephemeral, where does that happen?
currently in a function called pcmStoreDirectory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787830</commentid>
    <comment_count>7</comment_count>
      <attachid>436540</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-08-26 15:24:59 -0700</bug_when>
    <thetext>Comment on attachment 436540
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:238
&gt;  const int expectedIndexCount = 14;

I think you should decrement this now that you&apos;ve removed some indexes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787892</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-26 17:36:38 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #7)
&gt; Comment on attachment 436540 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=436540&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:238
&gt; &gt;  const int expectedIndexCount = 14;
&gt; 
&gt; I think you should decrement this now that you&apos;ve removed some indexes.

Yes, now it needs to be 12.

(In reply to Alex Christensen from comment #6)
&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:243
&gt; &gt; &gt; +    PCM::Store&amp; privateClickMeasurementStore() { return m_pcmStore.get();}
&gt; &gt; 
&gt; &gt; It seems strange to me to keep the PCM::Store as a member of the
&gt; &gt; WebResourceLoadStatisticsStore instead of in the NetworkSession. Is there a
&gt; &gt; reason you did it this way?
&gt; That was necessary for the incremental approach with which I wrote this
&gt; patch.  Now that it&apos;s a self-contained object, it can go anywhere.  I&apos;ll
&gt; move it.
Although it&apos;s easy to move now, I think I&apos;m going to keep it owned by WebResourceLoadStatisticsStore because of the lifetime of that object, which I want to be the same as the lifetime of PCM::Store.  Adding that lifetime management logic would look stranger than leaving this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787894</commentid>
    <comment_count>9</comment_count>
      <attachid>436593</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-26 17:40:05 -0700</bug_when>
    <thetext>Created attachment 436593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787896</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-26 17:40:24 -0700</bug_when>
    <thetext>Still no data migration, but this is getting closer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788059</commentid>
    <comment_count>11</comment_count>
      <attachid>436593</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-08-27 10:33:44 -0700</bug_when>
    <thetext>Comment on attachment 436593
Patch

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

Ok, took a closer pass today and I think this is almost there. I suggested one optimization for clearing now that we have a new schema, and had a few other nits. Then the grandfathering API tests seem to be failing as well. Grandfathering happens in WebResourceLoadStatisticsStore::populateMemoryStoreFromDisk() based on whether the file is new or not, so maybe a bug in the database open code?

&gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:110
&gt; +            return createdNewFile;

This return is not needed.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:425
&gt; +String Database::attributionToString(WebCore::SQLiteStatement* statement, PrivateClickMeasurementAttributionType attributionType)

Optional, could add ForTesting at the end of this function.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:482
&gt; +    ASSERT(!RunLoop::isMain());

Now that we have a separate table with all PCM domains and foreign key constraints, we can create one query to remove the domains from the PCMObservedDomains table to accomplish this task. Then we could replace this function with something simpler, like this:

void Database::clearPrivateClickMeasurement(std::optional&lt;RegistrableDomain&gt; domain)
{
ASSERT(!RunLoop::isMain());

    // Default to clear all entries if no domain is specified.
    String bindParameter = &quot;%&quot;;
    if (domain) {
        auto domainIDToMatch = domainID(*domain);
        if (!domainIDToMatch)
            return;

        bindParameter = String::number(*domainIDToMatch);
    }

    auto transactionScope = beginTransactionIfNecessary();

    auto clearAllPrivateClickMeasurementScopedStatement = this-&gt;scopedStatement(m_ clearAllPrivateClickMeasurementStatement, clearAllPrivateClickMeasurementQuery, &quot;clearPrivateClickMeasurement&quot;_s);

    if (!clearAllPrivateClickMeasurementScopedStatement
        || clearAllPrivateClickMeasurementScopedStatement-&gt;bindText(1, bindParameter) != SQLITE_OK
        || clearAllPrivateClickMeasurementScopedStatement-&gt;step() != SQLITE_DONE) {
        ITP_RELEASE_LOG_ERROR(m_sessionID, &quot;%p - ResourceLoadStatisticsStore::clearPrivateClickMeasurement clearAllPrivateClickMeasurementScopedStatement, error message: %&quot; PRIVATE_LOG_STRING, this, m_database.lastErrorMsg());
        ASSERT_NOT_REACHED();
    }
}



You will need a new clearAllPrivateClickMeasurementQuery (DELETE FROM PCMObservedDomains WHERE domainID LIKE ?) and statement that remove the domains from the PCMObservedDomains table, but can remove the two others used in this function.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:679
&gt; +        RELEASE_LOG_ERROR(PrivateClickMeasurement, &quot;%p - Database::insertObservedDomain failed to bind, error message: %&quot; PRIVATE_LOG_STRING, this, m_database.lastErrorMsg());

Database::insertObservedDomain -&gt; Database::ensureDomainID

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:685
&gt; +        RELEASE_LOG_ERROR(PrivateClickMeasurement, &quot;%p - Database::insertObservedDomain failed to commit, error message: %&quot; PRIVATE_LOG_STRING, this, m_database.lastErrorMsg());

Ditto.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.cpp:102
&gt; +    postTask([this, protectedThis = makeRef(*this), sourceSite = sourceSite.isolatedCopy(), destinationSite = destinationSite.isolatedCopy(), attributionTriggerData = WTFMove(attributionTriggerData), ephemeralMeasurement = crossThreadCopy(ephemeralMeasurement), completionHandler = WTFMove(completionHandler)] () mutable {

Why a crossThreadCopy of ephemeralMeasurement instead of an isolatedCopy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788061</commentid>
    <comment_count>12</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-08-27 10:38:13 -0700</bug_when>
    <thetext>And, I think doing migration in a separate patch is fine, this one is quite big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788078</commentid>
    <comment_count>13</comment_count>
      <attachid>436593</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-08-27 11:18:35 -0700</bug_when>
    <thetext>Comment on attachment 436593
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:310
&gt;      enableForeignKeys();

You should add this in the PCM database as well, so you can use PCMObservedDomains to perform cascading deletions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788087</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-27 11:38:53 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #11)
&gt; &gt; +    postTask([this, protectedThis = makeRef(*this), sourceSite = sourceSite.isolatedCopy(), destinationSite = destinationSite.isolatedCopy(), attributionTriggerData = WTFMove(attributionTriggerData), ephemeralMeasurement = crossThreadCopy(ephemeralMeasurement), completionHandler = WTFMove(completionHandler)] () mutable {
&gt; 
&gt; Why a crossThreadCopy of ephemeralMeasurement instead of an isolatedCopy?

ephemeralMeasurement is a std::optional, which has no isolatedCopy member.  crossThreadCopy deals with this and calls isolatedCopy() of the contained type if the optional is engaged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788088</commentid>
    <comment_count>15</comment_count>
      <attachid>436646</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-27 11:39:30 -0700</bug_when>
    <thetext>Created attachment 436646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788105</commentid>
    <comment_count>16</comment_count>
      <attachid>436646</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-08-27 12:01:21 -0700</bug_when>
    <thetext>Comment on attachment 436646
Patch

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

r=me as soon as EWS is happy.

&gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:109
&gt; +            return createdNewFile;

This return is still not needed :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788107</commentid>
    <comment_count>17</comment_count>
      <attachid>436654</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-27 12:08:45 -0700</bug_when>
    <thetext>Created attachment 436654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788172</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-27 14:22:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/r281721</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788173</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-27 14:23:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/82454337&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436437</attachid>
            <date>2021-08-25 16:35:43 -0700</date>
            <delta_ts>2021-08-25 20:15:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229527-20210825163542.patch</filename>
            <type>text/plain</type>
            <size>202806</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhkYjA1Mzc4ZWQwMDYwZDk4
NDEzZmNmNzMzYjYyNjNkOWMzMjdiNzQuLmVlMmIwMjhmMWI2OThlYTA5ZDg2NWUxMTA0YTMzMTc1
ZDU5YjMwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYzIEBACisyMDIxLTA4LTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJhdGUg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZGF0YWJhc2UgZnJvbSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIGRhdGFiYXNlIGFuZCBhZGQgU1BJIHRvIHNldCBpdHMgbG9jYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTUyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMs
IEkgbW92ZWQgY29tbW9uIGNvZGUgdG8gRGF0YWJhc2VVdGlsaXRpZXMgYW5kIG1vdmVkIHRoZSBQ
Q00gbG9naWMgZnJvbSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZQorICAgICAg
ICB0byBhIG5ldyBjbGFzcy4gIEl0IHB1dHMgdGhlIGRhdGEgaW4gYSBkaWZmZXJlbnQgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkgdW5sZXNzIFNQSSB0ZWxscyBpdCB0byBwdXQgaXQgaW4gYSBk
aWZmZXJlbnQgZGlyZWN0b3J5LgorCisgICAgICAgIFRoZSBiaWdnZXN0IGZ1bmN0aW9uYWwgY2hh
bmdlIEkgbmVlZGVkIHRvIGRvIHdhcyB0byBtYWtlIGEgUENNT2JzZXJ2ZWREb21haW5zIHRhYmxl
IGluIHRoZSBuZXcgREIgaW5zdGVhZCBvZiBhbiBPYnNlcnZlZERvbWFpbnMgdGFibGUsCisgICAg
ICAgIHdoaWNoIGNvbnRhaW5lZCBtb3JlIGluZm9ybWF0aW9uIHRoYW4gSSBuZWVkZWQuICBJIG5l
ZWQganVzdCBhbiBpbmRleCBhbmQgYSBsaXN0IG9mIGRvbWFpbnMuCisKKyAgICAgICAgQW5vdGhl
ciBzbGlnaHQgaW1wbGVtZW50YXRpb24gY2hhbmdlIGlzIHRoYXQgaW5zdGVhZCBvZiBjaGVja2lu
ZyBpc0VwaGVtZXJhbCBpbiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIEkganVzdCBw
YXNzIGFuIGVtcHR5CisgICAgICAgIFN0cmluZyB0byB0aGUgU3RvcmUgaWYgaXQncyBlcGhlbWVy
YWwsIHdoaWNoIGNhdXNlcyBubyBEQiB0byBiZSBjcmVhdGVkLCB3aGljaCBjYXVzZXMgZXF1aXZh
bGVudCBiZWhhdmlvci4KKworICAgICAgICBUaGUgcmVzdCBvZiB0aGlzIHBhdGNoIGp1c3QgbW92
ZXMgY29kZSBmcm9tIG9uZSBsb2NhdGlvbiB0byBhbm90aGVyLgorCisgICAgICAgIEkgc3RpbGwg
bmVlZCB0byBpbXBsZW1lbnQgbWlncmF0aW5nIGRhdGEgZnJvbSB0aGUgb2xkIERCIHRvIHRoZSBu
ZXcgREIsIGRlYnVnIG1lc3NhZ2UgYnJvYWRjYXN0aW5nLCBhbmQgdGVhcmRvd24uCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVl
cmllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuSVRQRGF0YWJhc2Up
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
bmVlZHNVcGRhdGVkU2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6aW5zZXJ0RGlzdGluY3RWYWx1
ZXNJblRhYmxlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVV
bmlxdWVJbmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVtYSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkZXN0cm95U3RhdGVtZW50cyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNl
Q29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpleHBlY3RlZFVuYXR0cmlidXRlZENvbHVtbnMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpleHBlY3RlZEF0dHJpYnV0ZWRDb2x1bW5zKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NoZW1hKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVuYW1lQ29sdW1uc0lmTmVj
ZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNjb3BlZFN0YXRlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpidWlsZFByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JU
ZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlbW92ZVVuYXR0cmlidXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphdHRyaWJ1dGVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
bGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphdHRyaWJ1dGlvblRv
U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
ZWFybGllc3RUaW1lc1RvU2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0
cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2hhcmVkU3RhdGlzdGljc1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6cGNtU3Rv
cmVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6c2hhcmVkU3RhdGlzdGljc1F1ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVk
Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFsbEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9t
YWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0
aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVV0aWxpdGllczo6
RGF0YWJhc2VVdGlsaXRpZXMpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVV0aWxpdGllczo6
c2NvcGVkU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRp
ZXM6OmJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlVXRpbGl0aWVzOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY1N0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjp+
RGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjcmVhdGVTY2hlbWEp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Om1hcmtBbGxVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmJ1aWxkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFi
YXNlOjpyZW1vdmVVbmF0dHJpYnV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNl
OjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpQQ006OkRhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YXR0cmlidXRpb25Ub1N0cmluZyk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006
OkRhdGFiYXNlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmNsZWFyU2VudEF0dHJpYnV0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UENNOjpEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjplYXJsaWVzdFRpbWVzVG9TZW5kKToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6ZG9tYWluSUQpOgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkRhdGFiYXNlOjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjplbnN1cmVEb21haW5JRCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREYXRhYmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OlN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpTdG9yZTo6cG9zdFRhc2spOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpwb3N0VGFz
a1JlcGx5KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjptYXJrQWxsVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6bWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNs
ZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaDog
QWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyOjpzdG9yZVVuYXR0cmlidXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKToKKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjphdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyU2VudEF0dHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKToK
KyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckV4
cGlyZWQpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6bWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6cmVzb2x2ZWROYW1lKToKKyAgICAgICAgKiBTaGFyZWQvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnldKToK
KyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMS0wOC0yMyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFByZXNlcnZlIGNvbG9yIHNwYWNlIHdoZW4gZ2V0dGluZyBjdXJy
ZW50IGNvbG9yIGluIERpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGJi
ZThkMmRiM2M3NWQ5Y2IyZDY4N2IyNWI5YWViZTAwYzIwYzlmYjMuLmJkMzQ4N2I5MWYxZjRmYzMx
Yjc2NmY3MTA5MTcxNjlhYjkzMmFhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIK
ICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlICJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFz
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CkBAIC04OCwxMCArODgsNiBA
QCBjb25zdGV4cHIgYXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5T
RVJUIE9SIFJFUExBQ0UgaW50byBTdWJmcgogY29uc3RleHByIGF1dG8gdG9wRnJhbWVMaW5rRGVj
b3JhdGlvbnNGcm9tUXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBUb3BGcmFtZUxpbmtE
ZWNvcmF0aW9uc0Zyb20gKHRvRG9tYWluSUQsIGxhc3RVcGRhdGVkLCBmcm9tRG9tYWluSUQpIFNF
TEVDVCA/LCA/LCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJs
ZURvbWFpbiBpbiAoICJfczsKIGNvbnN0ZXhwciBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnNRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnMgKHN1YnJlc291cmNlRG9tYWluSUQsIGxhc3RVcGRhdGVkLCB0b3BGcmFt
ZURvbWFpbklEKSBTRUxFQ1QgPywgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hF
UkUgcmVnaXN0cmFibGVEb21haW4gaW4gKCAiX3M7CiBjb25zdGV4cHIgYXV0byBzdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvUXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvIChzdWJyZXNvdXJjZURvbWFpbklELCBsYXN0VXBkYXRlZCwg
dG9Eb21haW5JRCkgU0VMRUNUID8sID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdI
RVJFIHJlZ2lzdHJhYmxlRG9tYWluIGluICggIl9zOwotY29uc3RleHByIGF1dG8gaW5zZXJ0VW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFD
RSBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9t
YWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCi0gICAgInNvdXJjZUlELCB0aW1lT2ZB
ZENsaWNrLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCkgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/
LCA/KSJfczsKLWNvbnN0ZXhwciBhdXRvIGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklELCAiCi0gICAgInNvdXJjZUlELCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwg
dGltZU9mQWRDbGljaywgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1
cmUsIGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKSBWQUxVRVMgKD8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zOwogCiAvLyBFWElTVFMgUXVlcmllcwogY29u
c3RleHByIGF1dG8gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzUXVlcnkgPSAiU0VM
RUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdI
RVJFIHN1YkZyYW1lRG9tYWluSUQgPSA/ICIKQEAgLTExNiw5ICsxMTIsNiBAQCBjb25zdGV4cHIg
YXV0byB1cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWRE
b21haW5zIFNFVCBpcwogY29uc3RleHByIGF1dG8gY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5
ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gMCwgaXNWZXJ5UHJl
dmFsZW50ID0gMCBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0
byB1cGRhdGVHcmFuZGZhdGhlcmVkUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQg
Z3JhbmRmYXRoZXJlZCA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3Rl
eHByIGF1dG8gdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFF1ZXJ5
ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwgPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKLWNvbnN0ZXhw
ciBhdXRvIHNldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkUXVl
cnkgPSAiVVBEQVRFIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCB0aW1l
T2ZBZENsaWNrID0gLTEuMCJfczsKLWNvbnN0ZXhwciBhdXRvIG1hcmtSZXBvcnRBc1NlbnRUb1Nv
dXJjZVF1ZXJ5ID0gIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VU
IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gbnVsbCBXSEVSRSBzb3VyY2VTaXRlRG9tYWlu
SUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0
byBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblF1ZXJ5ID0gIlVQREFURSBBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRp
b24gPSBudWxsIFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEID0gPyJfczsKIAogLy8gU0VMRUNUIFF1ZXJpZXMKIGNvbnN0ZXhwciBhdXRvIGRv
bWFpbklERnJvbVN0cmluZ1F1ZXJ5ID0gIlNFTEVDVCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9t
YWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CkBAIC0xMzcsMTQgKzEzMCw2IEBA
IGNvbnN0ZXhwciBhdXRvIGdldEFsbERvbWFpbnNRdWVyeSA9ICJTRUxFQ1QgcmVnaXN0cmFibGVE
b21haW4gRlJPTSBPYnNlcnZlZERvbWFpCiBjb25zdGV4cHIgYXV0byBnZXRBbGxTdWJTdGF0aXN0
aWNzVW5kZXJEb21haW5RdWVyeSA9ICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBGUk9NIFN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3ViRnJhbWVEb21haW5JRCA9ID8iCiAgICAg
IlVOSU9OIEFMTCBTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBGUk9NIFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iCiAgICAgIlVOSU9O
IEFMTCBTRUxFQ1QgdG9Eb21haW5JRCBGUk9NIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8g
V0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0byBhbGxVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5ID0gIlNFTEVD
VCAqIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci1jb25zdGV4
cHIgYXV0byBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJTRUxF
Q1QgKiwgTUlOKGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRU
b0Rlc3RpbmF0aW9uKSBhcyBtaW5WYWwgIgotICAgICJGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBXSEVSRSBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBJUyBOT1QgTlVM
TCBBTkQgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBJUyBOT1QgTlVMTCAiCi0gICAg
IlVOSU9OIEFMTCBTRUxFQ1QgKiwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgYXMgbWluVmFs
IEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGlt
ZVRvU2VuZFRvRGVzdGluYXRpb24gSVMgTlVMTCAiCi0gICAgIlVOSU9OIEFMTCBTRUxFQ1QgKiwg
ZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBhcyBtaW5WYWwgRlJPTSBBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2Ug
SVMgTlVMTCBPUkRFUiBCWSBtaW5WYWwiX3M7Ci1jb25zdGV4cHIgYXV0byBmaW5kVW5hdHRyaWJ1
dGVkUXVlcnkgPSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0byBmaW5kQXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVD
VCAqIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNp
dGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKLWNvbnN0
ZXhwciBhdXRvIGVhcmxpZXN0VGltZXNUb1NlbmRRdWVyeSA9ICJTRUxFQ1QgZWFybGllc3RUaW1l
VG9TZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gRlJPTSBBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0g
PyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOwogCiAvLyBFWElTVFMgZm9yIHRl
c3RpbmcgcXVlcmllcwogY29uc3RleHByIGF1dG8gbGlua0RlY29yYXRpb25FeGlzdHNRdWVyeSA9
ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSBXSEVSRSB0b0RvbWFpbklEID0gPyBPUiBmcm9tRG9tYWluSUQgPSA/KSJfczsKQEAgLTE1Niwx
MCArMTQxLDYgQEAgY29uc3RleHByIGF1dG8gb2JzZXJ2ZWREb21haW5zRXhpc3RzUXVlcnkgPSAi
U0VMRUNUIEVYSVNUUyAoU0VMRUNUICogRlJPTSBPYnNlcnYKIAogLy8gREVMRVRFIFF1ZXJpZXMK
IGNvbnN0ZXhwciBhdXRvIHJlbW92ZUFsbERhdGFRdWVyeSA9ICJERUxFVEUgRlJPTSBPYnNlcnZl
ZERvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9zOwotY29uc3RleHByIGF1dG8gY2xlYXJVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIkRFTEVURSBGUk9NIFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCBM
SUtFID8gT1IgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgTElLRSA/Il9zOwotY29uc3RleHByIGF1
dG8gY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJERUxFVEUg
RlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURv
bWFpbklEIExJS0UgPyBPUiBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBMSUtFID8iX3M7Ci1jb25z
dGV4cHIgYXV0byBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIkRF
TEVURSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFID8gPiB0
aW1lT2ZBZENsaWNrIl9zOwotY29uc3RleHByIGF1dG8gcmVtb3ZlVW5hdHRyaWJ1dGVkUXVlcnkg
PSAiREVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUg
c291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9z
OwogCiBjb25zdGV4cHIgYXV0byBjcmVhdGVPYnNlcnZlZERvbWFpbiA9ICJDUkVBVEUgVEFCTEUg
T2JzZXJ2ZWREb21haW5zICgiCiAgICAgImRvbWFpbklEIElOVEVHRVIgUFJJTUFSWSBLRVksIHJl
Z2lzdHJhYmxlRG9tYWluIFRFWFQgTk9UIE5VTEwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIGxh
c3RTZWVuIFJFQUwgTk9UIE5VTEwsICIKQEAgLTI0MCwxOSArMjIxLDYgQEAgY29uc3RleHByIGF1
dG8gY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tID0gIkNSRUFURSBUQUJMRSBT
dWJyZXNvdXJjZVUKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZU9wZXJhdGluZ0RhdGVzID0gIkNSRUFU
RSBUQUJMRSBPcGVyYXRpbmdEYXRlcyAoIgogICAgICJ5ZWFyIElOVEVHRVIgTk9UIE5VTEwsIG1v
bnRoIElOVEVHRVIgTk9UIE5VTEwsIG1vbnRoRGF5IElOVEVHRVIgTk9UIE5VTEwpIl9zOwogCi1j
b25zdGV4cHIgYXV0byBjcmVhdGVVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9
ICJDUkVBVEUgVEFCTEUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCIKLSAg
ICAic291cmNlU2l0ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIGRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIHNvdXJjZUlEIElOVEVHRVIgTk9UIE5VTEwsICIKLSAg
ICAidGltZU9mQWRDbGljayBSRUFMIE5PVCBOVUxMLCB0b2tlbiBURVhULCBzaWduYXR1cmUgVEVY
VCwga2V5SUQgVEVYVCwgRk9SRUlHTiBLRVkoc291cmNlU2l0ZURvbWFpbklEKSAiCi0gICAgIlJF
RkVSRU5DRVMgT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgRk9S
RUlHTiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgIgotICAgICJPYnNl
cnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKSJfczsKLQotY29uc3RleHBy
IGF1dG8gY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBU
QUJMRSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCIKLSAgICAic291cmNlU2l0
ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIElOVEVH
RVIgTk9UIE5VTEwsIHNvdXJjZUlEIElOVEVHRVIgTk9UIE5VTEwsICIKLSAgICAiYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSBJTlRFR0VSIE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5PVCBOVUxM
LCB0aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsICIKLSAgICAiZWFybGllc3RUaW1lVG9TZW5k
VG9Tb3VyY2UgUkVBTCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIGVh
cmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gUkVBTCwgIgotICAgICJGT1JFSUdOIEtFWShz
b3VyY2VTaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBP
TiBERUxFVEUgQ0FTQ0FERSwgRk9SRUlHTiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJF
RkVSRU5DRVMgIgotICAgICJPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVND
QURFKSJfczsKLQogLy8gQ1JFQVRFIFVOSVFVRSBJTkRFWCBRdWVyaWVzLgogY29uc3RleHByIGF1
dG8gY3JlYXRlVW5pcXVlSW5kZXhTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgPSAi
Q1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWluc19kb21haW5JRF90b3BMZXZlbERvbWFpbklEIG9uIFN0b3JhZ2VBY2Nlc3NVbmRl
clRvcEZyYW1lRG9tYWlucyAoIGRvbWFpbklELCB0b3BMZXZlbERvbWFpbklEICkiX3M7CiBjb25z
dGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gPSAi
Q1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG9fc291cmNlRG9tYWluSURfdG9Eb21haW5JRCBvbiBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
ICggc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQgKSJfczsKQEAgLTI2NSw4ICsyMzMsNiBAQCBj
b25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMgPSAiQ1JFQVRFIFVOSVFVRQogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9U
IEVYSVNUUyBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvX3N1YnJlc291cmNlRG9tYWluSURf
dG9Eb21haW5JRCBvbiBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvICggc3VicmVzb3VyY2VE
b21haW5JRCwgdG9Eb21haW5JRCApIl9zOwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5k
ZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJ
RiBOT1QgRVhJU1RTIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbV9zdWJyZXNvdXJjZURv
bWFpbklEX2Zyb21Eb21haW5JRCBvbiBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gKCBz
dWJyZXNvdXJjZURvbWFpbklELCBmcm9tRG9tYWluSUQgKSJfczsKIGNvbnN0ZXhwciBhdXRvIGNy
ZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBO
T1QgRVhJU1RTIE9wZXJhdGluZ0RhdGVzX3llYXJfbW9udGhfbW9udGhEYXkgb24gT3BlcmF0aW5n
RGF0ZXMgKCB5ZWFyLCBtb250aCwgbW9udGhEYXkgKSJfczsKLWNvbnN0ZXhwciBhdXRvIGNyZWF0
ZVVuaXF1ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRF
IFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50X3NvdXJjZVNpdGVEb21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21haW5JRCBvbiBVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21haW5JRCwgZGVz
dGluYXRpb25TaXRlRG9tYWluSUQgKSJfczsKLWNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUlu
ZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBVTklRVUUgSU5E
RVggSUYgTk9UIEVYSVNUUyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNl
U2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEIG9uIEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQgKSJfczsKIAogLy8gQWRkIG9uZSB0byB0aGUgY291bnQgb2YgdGhlIGFib3ZlIGluZGV4
IHF1ZXJpZXMgdG8gYWNjb3VudCBmb3IgdGhlIE9ic2VydmVkRG9tYWlucyB0YWJsZSwgd2hpY2gg
aGFzIGFuIGluZGV4IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBTUUxpdGUgYmVjYXVzZSBvZiBp
dHMgcHJpbWFyeSBrZXkuCiBjb25zdCBpbnQgZXhwZWN0ZWRJbmRleENvdW50ID0gMTQ7CkBAIC0y
ODEsMTggKzI0Nyw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgT2JzZXJ2ZWREb21haW5zVGFibGVT
Y2hlbWFWMUFsdGVybmF0ZSgpCiAgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJPYnNlcnZlZERv
bWFpbnNcIiAoZG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgcmVnaXN0cmFibGVEb21haW4g
VEVYVCBOT1QgTlVMTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgbGFzdFNlZW4gUkVBTCBOT1Qg
TlVMTCwgaGFkVXNlckludGVyYWN0aW9uIElOVEVHRVIgTk9UIE5VTEwsIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lIFJFQUwgTk9UIE5VTEwsIGdyYW5kZmF0aGVyZWQgSU5URUdFUiBOT1Qg
TlVMTCwgaXNQcmV2YWxlbnQgSU5URUdFUiBOT1QgTlVMTCwgaXNWZXJ5UHJldmFsZW50IElOVEVH
RVIgTk9UIE5VTEwsIGRhdGFSZWNvcmRzUmVtb3ZlZCBJTlRFR0VSIE5PVCBOVUxMLHRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiBJTlRFR0VSIE5PVCBOVUxMLCB0
aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIElOVEVHRVIgTk9U
IE5VTEwsaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCBJTlRFR0VSIE5PVCBO
VUxMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IEV4cGVjdGVkQ29sdW1ucyYgZXhwZWN0ZWRVbmF0
dHJpYnV0ZWRDb2x1bW5zKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjb2x1bW5zID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgInNvdXJjZVNpdGVEb21haW5JRCJfcywg
ImRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl9zLCAic291cmNlSUQiX3MsICJ0aW1lT2ZBZENsaWNr
Il9zLCAidG9rZW4iX3MsICJzaWduYXR1cmUiX3MsICJrZXlJRCJfcyB9KTsKLSAgICByZXR1cm4g
Y29sdW1ucy5nZXQoKTsKLX0KLQotc3RhdGljIGNvbnN0IEV4cGVjdGVkQ29sdW1ucyYgZXhwZWN0
ZWRBdHRyaWJ1dGVkQ29sdW1ucygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY29sdW1ucyA9
IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7ICJzb3VyY2VTaXRlRG9tYWluSUQi
X3MsICJkZXN0aW5hdGlvblNpdGVEb21haW5JRCJfcywgInNvdXJjZUlEIl9zLCAiYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSJfcywgInByaW9yaXR5Il9zLCAidGltZU9mQWRDbGljayJfcywgImVhcmxp
ZXN0VGltZVRvU2VuZFRvU291cmNlIl9zLCAidG9rZW4iX3MsICJzaWduYXR1cmUiX3MsICJrZXlJ
RCJfcywgImVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24iX3MgfSk7Ci0gICAgcmV0dXJu
IGNvbHVtbnMuZ2V0KCk7Ci19Ci0KIHN0YXRpYyBib29sIG5lZWRzTmV3Q3JlYXRlVGFibGVTY2hl
bWEoY29uc3QgU3RyaW5nJiBzY2hlbWEpCiB7CiAgICAgcmV0dXJuIHNjaGVtYS5jb250YWlucygi
UkVGRVJFTkNFUyBUb3BMZXZlbERvbWFpbnMiKTsKQEAgLTMxOSw4ICsyNzMsNiBAQCBzdGF0aWMg
Y29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFi
bGVBbmRJbmRleFBhaXI+JgogICAgICAgICB7ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRl
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3Jl
ZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpIH0s
CiAgICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbSwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0
ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKSkgfSwKICAgICAgICAg
eyAiT3BlcmF0aW5nRGF0ZXMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25h
bDxTdHJpbmc+PihjcmVhdGVPcGVyYXRpbmdEYXRlcywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0
b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMpKSB9LAotICAgICAgICB7
ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3BhaXI8
U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRl
VW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCi0gICAg
ICAgIHsgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3Bh
aXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0
ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgfQogICAgIH0p
OwogICAgIAogICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzOwpAQCAtMzQ5
LDE3ICszMDEsMTMgQEAgSGFzaFNldDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZSo+JiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG8KIAogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
KFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFN1c3BlbmRhYmxlV29ya1F1
ZXVlJiB3b3JrUXVldWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogICAgIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHN0b3JlLCB3b3Jr
UXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCi0gICAgLCBtX3N0b3JhZ2VEaXJlY3RvcnlQ
YXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5
UGF0aCwgIm9ic2VydmF0aW9ucy5kYiJfcykpCi0gICAgLCBtX3RyYW5zYWN0aW9uKG1fZGF0YWJh
c2UpCisgICAgLCBEYXRhYmFzZVV0aWxpdGllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoc3RvcmFnZURpcmVjdG9yeVBhdGgsICJvYnNlcnZhdGlvbnMuZGIiX3MpKQogICAg
ICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgb3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CiAgICAgZW5hYmxl
Rm9yZWlnbktleXMoKTsKLQotICAgIC8vIFNpbmNlIHdlIGFyZSB1c2luZyBhIHdvcmtlclF1ZXVl
LCB0aGUgc2VxdWVudGlhbCBkaXNwYXRjaCBibG9ja3MgbWF5IGJlIGNhbGxlZCBieSBkaWZmZXJl
bnQgdGhyZWFkcy4KLSAgICBtX2RhdGFiYXNlLmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKICAg
ICAKICAgICBpZiAoIW1fZGF0YWJhc2UudHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCkpCiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjp0dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0gZmFpbGVkLCBl
cnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CkBAIC0zODMsMzQgKzMzMSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNsb3NlKCkKIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKIHsKLSAgICBpZiAoIUZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCkpIHsKLSAgICAgICAgaWYgKCFGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChtX3N0b3Jh
Z2VEaXJlY3RvcnlQYXRoKSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuIGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgZGF0YWJhc2UgcGF0
aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9p
c05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUgPSB0cnVlOwotICAgIH0gZWxz
ZQotICAgICAgICBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSA9IGZh
bHNlOwotCi0gICAgaWYgKCFtX2RhdGFiYXNlLm9wZW4obV9zdG9yYWdlRGlyZWN0b3J5UGF0aCkp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQ
VUJMSUNfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51
dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAg
IAotICAgIGF1dG8gc2V0QnVzeVRpbWVvdXQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQo
IlBSQUdNQSBidXN5X3RpbWVvdXQgPSA1MDAwIl9zKTsKLSAgICBpZiAoIXNldEJ1c3lUaW1lb3V0
IHx8IHNldEJ1c3lUaW1lb3V0LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0QnVzeVRpbWVvdXQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICht
X2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSkgewotICAgICAgICBpZiAo
IWNyZWF0ZVNjaGVtYSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3Jr
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1h
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZGF0YWJhc2Ug
cGF0aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KKyAgICBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSA9IG9wZW5E
YXRhYmFzZSgpID09IENyZWF0ZWROZXdGaWxlOjpZZXM7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zv
ck1pc3NpbmdUYWJsZXNJblNjaGVtYSgpCkBAIC00OTUsMTYgKzQxNiw2IEBAIFRhYmxlQW5kSW5k
ZXhQYWlyIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVB
bmRJbmRleFF1ZXJpCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRp
b25hbDxTdHJpbmc+PihXVEZNb3ZlKGNyZWF0ZVRhYmxlUXVlcnkpLCBXVEZNb3ZlKGluZGV4KSk7
CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5lZWRzVXBk
YXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NoZW1hKCkKLXsKLSAgICBhdXRvIGN1cnJlbnRT
Y2hlbWEgPSBjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMoIkF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCJfcykuZmlyc3Q7Ci0KLSAgICBpZiAoIWN1cnJlbnRTY2hlbWEuaXNFbXB0
eSgpICYmIGN1cnJlbnRTY2hlbWEgIT0gY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQog
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlzc2luZ1VuaXF1ZUlu
ZGljZXMoKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAnaW5k
ZXgnIl9zKTsKQEAgLTUzNyw3ICs0NDgsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpuZWVkc1VwZGF0ZWRTY2hlbWEoKQogewogICAgIC8vIFRoZXJlIGFyZSAz
IGNhc2VzIHdoZXJlIHdlIGV4cGVjdCBwb3RlbnRpYWwgc2NoZW1hIGNoYW5nZXMgZHVlIHRvIHVw
Z3JhZGVzLgogICAgIC8vIEFsbCBvdGhlciB0YWJsZXMgc2hvdWxkIGJlIHVwLXRvLWRhdGUsIHNv
IHdlIHNob3VsZCBBU1NFUlQgdGhhdCB0aGV5IGFyZSBjb3JyZWN0LgotICAgIGlmIChtaXNzaW5n
UmVmZXJlbmNlVG9PYnNlcnZlZERvbWFpbnMoKSB8fCBuZWVkc1VwZGF0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFNjaGVtYSgpIHx8IG1pc3NpbmdVbmlxdWVJbmRpY2VzKCkpCisgICAgaWYgKG1p
c3NpbmdSZWZlcmVuY2VUb09ic2VydmVkRG9tYWlucygpIHx8IG1pc3NpbmdVbmlxdWVJbmRpY2Vz
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChhdXRvJiB0YWJsZSA6IGV4cGVj
dGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5rZXlzKCkpIHsKQEAgLTU2MiwxMiArNDczLDYgQEAg
c3RhdGljIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBpbnNlcnREaXN0aW5jdFZhbHVl
c0luVGFibGVTdGF0ZW1lbnQoU1FMaXQKICAgICBpZiAodGFibGUgPT0gIlRvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbSIpCiAgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KCJJTlNFUlQgSU5UTyBUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20gU0VMRUNUIHRvRG9tYWlu
SUQsIE1BWChsYXN0VXBkYXRlZCksIGZyb21Eb21haW5JRCBGUk9NIF9Ub3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb20gR1JPVVAgQlkgdG9Eb21haW5JRCwgZnJvbURvbWFpbklEIl9zKTsKIAotICAg
IGlmICh0YWJsZSA9PSAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiKQotICAg
ICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VMRUNUIHNvdXJjZVNpdGVEb21haW5JRCwg
ZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNvdXJjZUlELCBNQVgodGltZU9mQWRDbGljayksIHRv
a2VuLCBzaWduYXR1cmUsIGtleUlEIEZST00gX1VuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50IEdST1VQIEJZIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQiX3MpOwotCi0gICAgaWYgKHRhYmxlID09ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQiKQotICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJU
IElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFTEVDVCBzb3VyY2VTaXRl
RG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJRCwgYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSwgcHJpb3JpdHksIE1BWCh0aW1lT2ZBZENsaWNrKSwgZWFybGllc3RUaW1lVG9T
ZW5kVG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUsIGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRU
b0Rlc3RpbmF0aW9uIEZST00gX0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBHUk9V
UCBCWSBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl9zKTsKLQog
ICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJJTlNF
UlQgSU5UTyAiLCB0YWJsZSwgIiBTRUxFQ1QgRElTVElOQ1QgKiBGUk9NIF8iLCB0YWJsZSkpOwog
fQogCkBAIC02NjAsMTUgKzU2NSw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZShTdHJpbmcmJiB0YWJsCiAgICAgfQog
fQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5n
Q29sdW1uc0lmTmVjZXNzYXJ5KCkKLXsKLSAgICBjb25zdCBhdXRvIHVuYXR0cmlidXRlZFRhYmxl
TmFtZSA9ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLSAgICBjb25z
dCBhdXRvIGF0dHJpYnV0ZWRUYWJsZU5hbWUgPSAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50Il9zOwotCi0gICAgYWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKHVuYXR0cmlidXRlZFRh
YmxlTmFtZSwgY29sdW1uc0ZvclRhYmxlKHVuYXR0cmlidXRlZFRhYmxlTmFtZSksIGV4cGVjdGVk
VW5hdHRyaWJ1dGVkQ29sdW1ucygpKTsKLSAgICBhZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUoYXR0
cmlidXRlZFRhYmxlTmFtZSwgY29sdW1uc0ZvclRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUpLCBl
eHBlY3RlZEF0dHJpYnV0ZWRDb2x1bW5zKCkpOwotfQotCiB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1bW5JblRhYmxlKFN0cmluZyYmIHRhYmxlTmFt
ZSwgRXhpc3RpbmdDb2x1bW5OYW1lJiYgZXhpc3RpbmdDb2x1bW5OYW1lLCBFeHBlY3RlZENvbHVt
bk5hbWUmJiBleHBlY3RlZENvbHVtbk5hbWUpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRh
YmxlTmFtZSwgIiBSRU5BTUUgQ09MVU1OICIsIGV4aXN0aW5nQ29sdW1uTmFtZSwgIiBUTyAiLCBl
eHBlY3RlZENvbHVtbk5hbWUpKTsKQEAgLTY4NCwzMCArNTgwLDYgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVuYW1lQ29sdW1uSW5UYWJsZShTdHJpbmcmJiB0
YWJsZU5hbWUKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlbmFtZUNvbHVtbnNJZk5lY2Vzc2FyeSgpCi17Ci0gICAgLy8gQXR0cmlidXRlZCBQ
cml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGNhc2UuCi0gICAgY29uc3QgYXV0byBhdHRyaWJ1dGVk
VGFibGVOYW1lID0gIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLSAgICBj
b25zdCBhdXRvIG9sZEVhcmxpZXN0VGltZVRvU2VuZENvbHVtbiA9ICJlYXJsaWVzdFRpbWVUb1Nl
bmQiX3M7Ci0gICAgY29uc3QgYXV0byBuZXdFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4gPSAiZWFy
bGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UiX3M7Ci0gICAgY29uc3QgYXV0byBvbGRBdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uQ29sdW1uID0gImF0dHJpYnV0ZU9uU2l0ZURvbWFpbklEIl9zOwotICAgIGNv
bnN0IGF1dG8gbmV3QXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbiA9ICJkZXN0aW5hdGlvblNp
dGVEb21haW5JRCJfczsKLSAgICBjb25zdCBhdXRvIGZvdW5kQXR0cmlidXRlZFRhYmxlQ29sdW1u
cyA9IGNvbHVtbnNGb3JUYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lKTsKLQotICAgIGlmIChmb3Vu
ZEF0dHJpYnV0ZWRUYWJsZUNvbHVtbnMuY29udGFpbnMob2xkRWFybGllc3RUaW1lVG9TZW5kQ29s
dW1uKSkKLSAgICAgICAgcmVuYW1lQ29sdW1uSW5UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCBv
bGRFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4sIG5ld0VhcmxpZXN0VGltZVRvU2VuZENvbHVtbik7
Ci0KLSAgICBpZiAoZm91bmRBdHRyaWJ1dGVkVGFibGVDb2x1bW5zLmNvbnRhaW5zKG9sZEF0dHJp
YnV0aW9uRGVzdGluYXRpb25Db2x1bW4pKQotICAgICAgICByZW5hbWVDb2x1bW5JblRhYmxlKGF0
dHJpYnV0ZWRUYWJsZU5hbWUsIG9sZEF0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4sIG5ld0F0
dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4pOwotCi0gICAgLy8gVW5hdHRyaWJ1dGVkIFByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnQgY2FzZS4KLSAgICBhdXRvIHVuYXR0cmlidXRlZFRhYmxlTmFt
ZSA9ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLSAgICBhdXRvIGZv
dW5kVW5hdHRyaWJ1dGVkVGFibGVDb2x1bW5zID0gY29sdW1uc0ZvclRhYmxlKHVuYXR0cmlidXRl
ZFRhYmxlTmFtZSk7Ci0KLSAgICBpZiAoZm91bmRVbmF0dHJpYnV0ZWRUYWJsZUNvbHVtbnMuY29u
dGFpbnMob2xkQXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbikpCi0gICAgICAgIHJlbmFtZUNv
bHVtbkluVGFibGUodW5hdHRyaWJ1dGVkVGFibGVOYW1lLCBvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uQ29sdW1uLCBuZXdBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uKTsKLX0KLQogdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ1RhYmxlc0lmTmVj
ZXNzYXJ5KCkKIHsKICAgICBhdXRvIG1pc3NpbmdUYWJsZXMgPSBjaGVja0Zvck1pc3NpbmdUYWJs
ZXNJblNjaGVtYSgpOwpAQCAtNzQ4LDcgKzYyMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpCiAgICAg
ICAgIGlmIChzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBM
T0dfRVJST1IoIkVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0
aGUgT2JzZXJ2ZWQgRG9tYWlucyB0YWJsZS4iKTsKICAgICAgICAgICAgIGNsb3NlKCk7Ci0gICAg
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOwor
ICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VGaWxlUGF0aCk7CiAg
ICAgICAgICAgICBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNzYyLDMyICs2MzQsMTUgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkKICAgICAvLyBGSVhN
RTogTWlncmF0ZSBvbGQgT2JzZXJ2ZWREb21haW5zIGRhdGEgdG8gbmV3IHRhYmxlIHNjaGVtYS4K
ICAgICBpZiAoY3VycmVudFNjaGVtYSAhPSBPYnNlcnZlZERvbWFpbnNUYWJsZVNjaGVtYVYxKCkg
JiYgY3VycmVudFNjaGVtYSAhPSBPYnNlcnZlZERvbWFpbnNUYWJsZVNjaGVtYVYxQWx0ZXJuYXRl
KCkpIHsKICAgICAgICAgY2xvc2UoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSht
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSht
X3N0b3JhZ2VGaWxlUGF0aCk7CiAgICAgICAgIG9wZW5JVFBEYXRhYmFzZSgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgLy8gUmVuYW1pbmcgYW5kIGFkZGluZyBjb2x1bW5zIHNob3Vs
ZCBiZSBkb25lIGJlZm9yZSBtaWdyYXRpbmcgdG8gYXZvaWQgbWlzbWF0Y2hlZCBvciBtaXNzaW5n
IGNvbHVtbnMuCi0gICAgcmVuYW1lQ29sdW1uc0lmTmVjZXNzYXJ5KCk7Ci0gICAgYWRkTWlzc2lu
Z0NvbHVtbnNJZk5lY2Vzc2FyeSgpOwogICAgIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vz
c2FyeSgpOwogfQogCi1TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIEFTQ0lJTGl0ZXJhbCBxdWVyeSwg
Y29uc3QgU3RyaW5nJiBsb2dTdHJpbmcpIGNvbnN0Ci17Ci0gICAgaWYgKCFzdGF0ZW1lbnQpIHsK
LSAgICAgICAgYXV0byBzdGF0ZW1lbnRPckVycm9yID0gbV9kYXRhYmFzZS5wcmVwYXJlSGVhcFN0
YXRlbWVudChxdWVyeSk7Ci0gICAgICAgIGlmICghc3RhdGVtZW50T3JFcnJvcikgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OiVzIGZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCwgZXJyb3Ig
bWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIGxvZ1N0cmluZy5hc2NpaSgpLmRh
dGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRT
Y29wZSB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50T3JFcnJv
ci52YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0cigpOwotICAgICAgICBBU1NFUlQobV9kYXRhYmFzZS5p
c09wZW4oKSk7Ci0gICAgfQotICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29w
ZSB7IHN0YXRlbWVudC5nZXQoKSB9OwotfQotCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnRlcnJ1cHQoKQogewogICAgIGlmIChtX2RhdGFiYXNlLmlzT3Blbigp
KQpAQCAtODIxLDkgKzY3Niw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNyZWF0ZVVuaXF1ZUluZGljZXMoKQogICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVj
dXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8p
CiAgICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKQogICAgICAgICB8fCAhbV9kYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMpCi0gICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1
ZUluZGV4T3BlcmF0aW5nRGF0ZXMpCi0gICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21t
YW5kKGNyZWF0ZVVuaXF1ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
Ci0gICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgeworICAgICAgICB8fCAhbV9kYXRh
YmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzKSkgewog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlVW5pcXVlSW5kaWNlcyBmYWlsZWQgdG8gZXhlY3V0
ZSwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtODk5LDE2
ICs3NTIsNiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVh
dGVTY2hlbWEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX2Rh
dGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KSkgewotICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwg
bV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNv
bW1hbmQoY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgewotICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50IHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UubGFzdEVycm9y
KCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCiAgICAgaWYgKCFjcmVhdGVVbmlxdWVJbmRpY2VzKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtOTU2LDIxICs3OTksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkZXN0cm95U3RhdGVtZW50cygpCiAgICAgbV91bmlxdWVSZWRpcmVjdEV4
aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CiAgICAgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0
ZW1lbnQgPSBudWxscHRyOwogICAgIG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudCA9IG51bGxwdHI7
Ci0gICAgbV9pbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVu
dCA9IG51bGxwdHI7Ci0gICAgbV9pbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fY2xlYXJVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAg
bV9jbGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCA9IG51bGxw
dHI7Ci0gICAgbV9jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCA9
IG51bGxwdHI7Ci0gICAgbV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uc1N0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9hbGxBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fZmluZFVuYXR0cmli
dXRlZFN0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9maW5kQXR0cmlidXRlZFN0YXRlbWVudCA9
IG51bGxwdHI7CiAgICAgbV91cGRhdGVBdHRyaWJ1dGlvbnNFYXJsaWVzdFRpbWVUb1NlbmRTdGF0
ZW1lbnQgPSBudWxscHRyOwotICAgIG1fcmVtb3ZlVW5hdHRyaWJ1dGVkU3RhdGVtZW50ID0gbnVs
bHB0cjsKLSAgICBtX21hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZVN0YXRlbWVudCA9IG51bGxwdHI7
Ci0gICAgbV9tYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblN0YXRlbWVudCA9IG51bGxwdHI7
Ci0gICAgbV9lYXJsaWVzdFRpbWVzVG9TZW5kU3RhdGVtZW50ID0gbnVsbHB0cjsKIH0KIAogYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21h
aW4oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgbG9hZFN0YXRpc3RpY3MpCkBAIC0yMjg3
LDcgKzIxMTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
bGVhckRhdGFiYXNlQ29udGVudHMoKQogICAgIG1fZGF0YWJhc2UuY2xlYXJBbGxUYWJsZXMoKTsK
IAogICAgIGlmICghY3JlYXRlU2NoZW1hKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
RGF0YWJhc2VDb250ZW50cyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NU
UklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMgZmFpbGVkLCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcgIiwgZGF0YWJhc2UgcGF0aDogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0
b3JhZ2VGaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMTU1LDUxMyArMjk4NCw2IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0
aWNGb3JUZXN0aW5nKGNvbnN0CiAgICAgfQogfQogCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YnVpbGRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqIHN0YXRlbWVudCwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmlidXRpb25UeXBlKQot
ewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5J
RChzdGF0ZW1lbnQtPmNvbHVtbkludCgwKSk7Ci0gICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21h
aW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMSkp
OwotICAgIGF1dG8gc291cmNlSUQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCgyKTsKLSAgICBhdXRv
IHRpbWVPZkFkQ2xpY2sgPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSg1
KSA6IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDMpOwotICAgIGF1dG8gdG9rZW4gPSBhdHRyaWJ1
dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJp
YnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtblRleHQoNykgOiBzdGF0ZW1lbnQtPmNvbHVtblRleHQo
NCk7Ci0gICAgYXV0byBzaWduYXR1cmUgPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVt
blRleHQoOCkgOiBzdGF0ZW1lbnQtPmNvbHVtblRleHQoNSk7Ci0gICAgYXV0byBrZXlJRCA9IGF0
dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6
QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg5KSA6IHN0YXRlbWVudC0+Y29sdW1u
VGV4dCg2KTsKLQotICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGF0dHJpYnV0aW9uKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VJRChzb3VyY2VJRCksIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlKFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc291cmNlU2l0ZURvbWFp
bikpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZyhkZXN0aW5hdGlvblNpdGVEb21haW4pKSwgeyB9LCB7IH0sIFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyh0aW1lT2ZBZENsaWNrKSk7Ci0gICAgCi0gICAgaWYgKGF0dHJpYnV0
aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCkgewotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBzdGF0ZW1lbnQt
PmNvbHVtbkludCgzKTsKLSAgICAgICAgYXV0byBwcmlvcml0eSA9IHN0YXRlbWVudC0+Y29sdW1u
SW50KDQpOwotICAgICAgICBhdXRvIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID0gc3Rh
dGVtZW50LT5jb2x1bW5Eb3VibGUoNik7Ci0gICAgICAgIGF1dG8gZGVzdGluYXRpb25FYXJsaWVz
dFRpbWVUb1NlbmRWYWx1ZSA9IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDEwKTsKLQotICAgICAg
ICBpZiAoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSAhPSAtMSkKLSAgICAgICAgICAgIGF0dHJpYnV0
aW9uLnNldEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UHJpb3JpdHkocHJp
b3JpdHkpIH0pOwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHNvdXJjZUVhcmxp
ZXN0VGltZVRvU2VuZDsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGVzdGluYXRp
b25FYXJsaWVzdFRpbWVUb1NlbmQ7Ci0gICAgICAgIAotICAgICAgICAvLyBBIHZhbHVlIG9mIDAu
MCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8gdGhlIHJlc3BlY3Rp
dmUgc2l0ZS4KLSAgICAgICAgaWYgKHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID4gMC4w
KQotICAgICAgICAgICAgc291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZFZhbHVlKTsKLQotICAgICAgICBpZiAo
ZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA+IDAuMCkKLSAgICAgICAgICAgIGRl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGRl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUpOwotCi0gICAgICAgIGF0dHJpYnV0aW9u
LnNldFRpbWVzVG9TZW5kKHsgc291cmNlRWFybGllc3RUaW1lVG9TZW5kLCBkZXN0aW5hdGlvbkVh
cmxpZXN0VGltZVRvU2VuZCB9KTsKLSAgICB9Ci0KLSAgICBhdHRyaWJ1dGlvbi5zZXRTb3VyY2VT
ZWNyZXRUb2tlbih7IHRva2VuLCBzaWduYXR1cmUsIGtleUlEIH0pOwotCi0gICAgcmV0dXJuIGF0
dHJpYnV0aW9uOwotfQotCi1zdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUp
Ci17Ci0gICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChzb3VyY2VTaXRlLnJl
Z2lzdHJhYmxlRG9tYWluKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9t
YWluSUQoZGVzdGluYXRpb25TaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKLQotICAgIGlmICghc291
cmNlU2l0ZURvbWFpbklEIHx8ICFkZXN0aW5hdGlvblNpdGVEb21haW5JRCkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKLQotICAgIGF1
dG8gZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVu
dChtX2ZpbmRVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQsIGZpbmRVbmF0dHJpYnV0ZWRRdWVyeSwgImZp
bmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7Ci0gICAgaWYgKCFmaW5kVW5hdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQtPmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAg
IHx8IGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9H
X0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRVbmF0dHJpYnV0ZWRRdWVyeSwg
ZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0g
ICAgYXV0byBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRl
bWVudChtX2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCAiZmlu
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKLSAgICBpZiAoIWZpbmRBdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5i
aW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBm
aW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRl
RG9tYWluSUQpICE9IFNRTElURV9PSykgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1Io
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpm
aW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZmluZEF0dHJpYnV0ZWRRdWVyeSwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgc3RkOjpv
cHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gdW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7Ci0gICAgaWYgKGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRT
dGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICB1bmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCA9IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0
YWJhc2UoZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7Ci0KLSAgICBzdGQ6Om9w
dGlvbmFsPEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50OwotICAgIGlmIChmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVu
dC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIGF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCA9IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoZmlu
ZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKLQotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cih1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50KTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGUgYXR0cmlidXRpb25UeXBlKQotewotICAgIGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJlZ2lu
VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwotCi0gICAgYXV0byBzb3VyY2VEYXRhID0gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oYXR0cmlidXRpb24uc291cmNl
U2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBhdXRvIGF0dHJpYnV0aW9uRGVzdGluYXRp
b25EYXRhID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oYXR0
cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotCi0gICAgaWYg
KCFzb3VyY2VEYXRhLnNlY29uZCB8fCAhYXR0cmlidXRpb25EZXN0aW5hdGlvbkRhdGEuc2Vjb25k
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPSBh
dHRyaWJ1dGlvbi5zb3VyY2VVbmxpbmthYmxlVG9rZW4oKTsKLSAgICBpZiAoYXR0cmlidXRpb25U
eXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVk
KSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IGF0dHJpYnV0aW9uLmF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSA/IGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEoKS52YWx1ZSgpLmRhdGEgOiAtMTsKLSAgICAgICAgYXV0byBwcmlvcml0eSA9IGF0dHJpYnV0
aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSA/IGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEoKS52YWx1ZSgpLnByaW9yaXR5IDogLTE7Ci0gICAgICAgIGF1dG8gc291cmNlRWFy
bGllc3RUaW1lVG9TZW5kID0gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5zb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQgPyBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLnNvdXJjZUVhcmxpZXN0VGlt
ZVRvU2VuZC52YWx1ZSgpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSA6IC0xOwotICAgICAg
ICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gYXR0cmlidXRpb24udGltZXNU
b1NlbmQoKS5kZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA/IGF0dHJpYnV0aW9uLnRpbWVz
VG9TZW5kKCkuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQudmFsdWUoKS5zZWNvbmRzU2lu
Y2VFcG9jaCgpLnZhbHVlKCkgOiAtMTsKLQotICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUg
aW5zZXJ0aW5nIGFuIGF0dHJpYnV0ZWQgcHJpdmF0ZSBjbGljayBtZWFzdXJlbWVudCB2YWx1ZSBp
bnRvIHRoZSBkYXRhYmFzZSB3aXRob3V0IHZhbGlkIHJlcG9ydCB0aW1lcy4KLSAgICAgICAgQVNT
RVJUKHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCAhPSAtMSAmJiBkZXN0aW5hdGlvbkVhcmxpZXN0
VGltZVRvU2VuZCAhPSAtMSk7Ci0KLSAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnQoaW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
UXVlcnkpOwotICAgICAgICBpZiAoIXN0YXRlbWVudAotICAgICAgICAgICAgfHwgc3RhdGVtZW50
LT5iaW5kSW50KDEsICpzb3VyY2VEYXRhLnNlY29uZCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAg
ICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmF0dHJpYnV0aW9uRGVzdGluYXRpb25EYXRhLnNl
Y29uZCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMywg
YXR0cmlidXRpb24uc291cmNlSUQoKS5pZCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBz
dGF0ZW1lbnQtPmJpbmRJbnQoNCwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkgIT0gU1FMSVRFX09L
Ci0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoNSwgcHJpb3JpdHkpICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kRG91YmxlKDYsIGF0dHJpYnV0aW9u
LnRpbWVPZkFkQ2xpY2soKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kRG91YmxlKDcsIHNvdXJjZUVhcmxpZXN0
VGltZVRvU2VuZCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRU
ZXh0KDgsIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+dG9r
ZW5CYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IHN0YXRlbWVudC0+YmluZFRleHQoOSwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5s
aW5rYWJsZVRva2VuLT5zaWduYXR1cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTAsIHNvdXJjZVVubGlu
a2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+a2V5SURCYXNlNjRVUkwgOiBlbXB0
eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERv
dWJsZSgxMSwgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpICE9IFNRTElURV9PSwotICAg
ICAgICAgICAgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAg
ICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50IGlu
c2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50KGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkp
OwotICAgIGlmICghc3RhdGVtZW50Ci0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgxLCAq
c291cmNlRGF0YS5zZWNvbmQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJp
bmRJbnQoMiwgKmF0dHJpYnV0aW9uRGVzdGluYXRpb25EYXRhLnNlY29uZCkgIT0gU1FMSVRFX09L
Ci0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgzLCBhdHRyaWJ1dGlvbi5zb3VyY2VJRCgp
LmlkKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kRG91YmxlKDQsIGF0
dHJpYnV0aW9uLnRpbWVPZkFkQ2xpY2soKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDUsIHNvdXJjZVVubGlu
a2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+dG9rZW5CYXNlNjRVUkwgOiBlbXB0
eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg2
LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnNpZ25hdHVy
ZUJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0
ZW1lbnQtPmJpbmRUZXh0KDcsIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2Fi
bGVUb2tlbi0+a2V5SURCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgSVRQ
X1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0VW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKLXsKLSAgICBhdXRvIHNjb3BlZFN0YXRl
bWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3NldFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50LCBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5LCAibWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZyJfcyk7Ci0KLSAgICBpZiAoIXNjb3Bl
ZFN0YXRlbWVudCB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewot
ICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYgYXR0cmlidXRpb24pCi17Ci0gICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBk
b21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotICAg
IGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5kZXN0
aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0KLSAgICBpZiAoIXNvdXJjZVNpdGVE
b21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi0gICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3Jl
bW92ZVVuYXR0cmlidXRlZFN0YXRlbWVudCwgcmVtb3ZlVW5hdHRyaWJ1dGVkUXVlcnksICJyZW1v
dmVVbmF0dHJpYnV0ZWQiX3MpOwotCi0gICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKLSAgICAgICAg
fHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9S
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVtb3ZlVW5hdHRyaWJ1dGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBT
b3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYg
ZGVzdGluYXRpb25TaXRlLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSkKLXsKLSAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGNsZWFyIGV4cGlyZWQgY2xpY2tz
IGZyb20gdGhlIGRhdGFiYXNlIGJlZm9yZSBzY2hlZHVsaW5nIGFuIGF0dHJpYnV0aW9uLgotICAg
IGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0KLSAgICBpZiAoIWF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWShkZWJ1
Z01vZGVFbmFibGVkKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCAiR290IGFuIGludmFsaWQgYXR0cmlidXRpb24uIik7Ci0gICAgICAg
ICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdIEdvdCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9uLiJfcyk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBhdXRvIGRhdGEgPSBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhLmRhdGE7Ci0gICAgYXV0byBwcmlvcml0eSA9IGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEucHJpb3JpdHk7Ci0KLSAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxl
ZCgpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCAiR290IGFuIGF0dHJpYnV0aW9uIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAle3B1
YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dS4iLCBkYXRhLCBwcmlvcml0eSk7Ci0gICAg
ICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBhbiBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRy
aWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwg
IicuIl9zKSk7Ci0gICAgfQotCi0gICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgc2Vjb25kc1VudGlsU2VuZCB7IHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0IH07Ci0KLSAgICBhdXRvIGF0dHJpYnV0aW9uID0gZmluZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KHNvdXJjZVNpdGUsIGRlc3RpbmF0aW9uU2l0ZSk7Ci0gICAgYXV0byYgcHJl
dmlvdXNseVVuYXR0cmlidXRlZCA9IGF0dHJpYnV0aW9uLmZpcnN0OwotICAgIGF1dG8mIHByZXZp
b3VzbHlBdHRyaWJ1dGVkID0gYXR0cmlidXRpb24uc2Vjb25kOwotCi0gICAgaWYgKHByZXZpb3Vz
bHlVbmF0dHJpYnV0ZWQpIHsKLSAgICAgICAgLy8gQWx3YXlzIGNvbnZlcnQgdGhlIHBlbmRpbmcg
YXR0cmlidXRpb24gYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSB1bmF0dHJpYnV0ZWQgbWFwLgotICAg
ICAgICByZW1vdmVVbmF0dHJpYnV0ZWQoKnByZXZpb3VzbHlVbmF0dHJpYnV0ZWQpOwotICAgICAg
ICBzZWNvbmRzVW50aWxTZW5kID0gcHJldmlvdXNseVVuYXR0cmlidXRlZC52YWx1ZSgpLmF0dHJp
YnV0ZUFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpKTsKLQotICAgICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSB2YWxpZCBzZWNvbmRz
VW50aWxTZW5kIHZhbHVlIGZvciBhIHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQgdmFsdWUgYmVjYXVz
ZSB0aGVyZSBjYW4gYmUgbm8gcHJldmlvdXMgYXR0cmlidXRpb24gd2l0aCBhIGhpZ2hlciBwcmlv
cml0eS4KLSAgICAgICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1ZhbGlkU2Vjb25kc1VudGls
U2VuZFZhbHVlcygpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoVU5M
SUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5G
TyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkNvbnZlcnRlZCBhIHN0b3JlZCBhZCBjbGljayB3
aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7
cHVibGljfXUuIiwgZGF0YSwgcHJpb3JpdHkpOwotICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVz
c2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0g
Q29udmVydGVkIGEgc3RvcmVkIGFkIGNsaWNrIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRh
OiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJy4iX3MpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGF0dHJpYnV0
aW9uLCBvciB0aGUgbmV3IGF0dHJpYnV0aW9uIGhhcyBoaWdoZXIgcHJpb3JpdHksIGluc2VydC91
cGRhdGUgdGhlIGRhdGFiYXNlLgotICAgICAgICBpZiAoIXByZXZpb3VzbHlBdHRyaWJ1dGVkIHx8
IHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5oYXNIaWdoZXJQcmlvcml0eVRoYW4oKnBy
ZXZpb3VzbHlBdHRyaWJ1dGVkKSkgewotICAgICAgICAgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoV1RGTW92ZSgqcHJldmlvdXNseVVuYXR0cmlidXRlZCksIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKLQotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiUmVwbGFjZWQgYSBwcmV2aW91c2x5
IGNvbnZlcnRlZCBhZCBjbGljayB3aXRoIGEgbmV3IG9uZSB3aXRoIGF0dHJpYnV0aW9uIGRhdGE6
ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAle3B1YmxpY311IGJlY2F1c2UgaXQgaGFkIGhpZ2hl
ciBwcmlvcml0eS4iLCBkYXRhLCBwcmlvcml0eSk7Ci0gICAgICAgICAgICAgICAgZGVidWdCcm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gUmVwbGFjZWQgYSBwcmV2aW91c2x5IGNvbnZlcnRlZCBhZCBjbGljayB3aXRoIGEgbmV3
IG9uZSB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHBy
aW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicgYmVjYXVzZSBpdCBoYWQgaGlnaGVyIHByaW9yaXR5
LiJfcykpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChwcmV2aW91
c2x5QXR0cmlidXRlZCkgewotICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIG5ldyBhdHRyaWJ1dGlv
biwgcmUtYXR0cmlidXRlIHRoZSBvbGQgb25lIHRvIHJlc3BlY3QgdGhlIG5ldyBwcmlvcml0eSwg
YnV0IG9ubHkgaWYgdGhpcyByZXBvcnQgaGFzCi0gICAgICAgIC8vIG5vdCBiZWVuIHNlbnQgdG8g
dGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBzaXRlIHlldC4KLSAgICAgICAgaWYgKCFwcmV2aW91
c2x5QXR0cmlidXRlZC52YWx1ZSgpLmhhc1ByZXZpb3VzbHlCZWVuUmVwb3J0ZWQoKSkgewotICAg
ICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0gcHJldmlvdXNseUF0dHJpYnV0ZWQudmFs
dWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKSk7Ci0gICAgICAgICAgICBpZiAoIXNlY29uZHNVbnRpbFNlbmQuaGFzVmFs
aWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgICAgICAgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RG
TW92ZSgqcHJldmlvdXNseUF0dHJpYnV0ZWQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7Ci0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShkZWJ1
Z01vZGVFbmFibGVkKCkpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIlJlLWNvbnZlcnRlZCBhbiBhZCBjbGljayB3aXRoIGEgbmV3
IG9uZSB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3Jp
dHk6ICV7cHVibGljfXUgYmVjYXVzZSBpdCBoYWQgaGlnaGVyIHByaW9yaXR5LiIsIGRhdGEsIHBy
aW9yaXR5KTsKLSAgICAgICAgICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkluZm8s
IG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZS1jb252ZXJ0ZWQgYW4g
YWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICci
X3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInJyBiZWNhdXNlIGl0
IGhhZCBoaWdoZXIgcHJpb3JpdHkuIl9zKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAoIXNlY29uZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5k
VmFsdWVzKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gc2Vj
b25kc1VudGlsU2VuZDsKLX0KLQotVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWxsQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KCkKLXsKLSAgICBhdXRvIGF0dHJpYnV0ZWRTY29wZWRTdGF0
ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFF1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyJfcyk7Ci0KLSAgICBpZiAo
IWF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VS
Uk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0g
ICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGlvbnM7
Ci0gICAgd2hpbGUgKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKQotICAgICAgICBhdHRyaWJ1dGlvbnMuYXBwZW5kKGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tRGF0YWJhc2UoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpKTsKLQotICAgIHJl
dHVybiBhdHRyaWJ1dGlvbnM7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdp
c3RyYWJsZURvbWFpbj4gZG9tYWluKQotewotICAgIC8vIERlZmF1bHQgdG8gY2xlYXIgYWxsIGVu
dHJpZXMgaWYgbm8gZG9tYWluIGlzIHNwZWNpZmllZC4KLSAgICBTdHJpbmcgYmluZFBhcmFtZXRl
ciA9ICIlIjsKLSAgICBpZiAoZG9tYWluKSB7Ci0gICAgICAgIGF1dG8gZG9tYWluSURUb01hdGNo
ID0gZG9tYWluSUQoKmRvbWFpbik7Ci0gICAgICAgIGlmICghZG9tYWluSURUb01hdGNoKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGJpbmRQYXJhbWV0ZXIgPSBTdHJpbmc6Om51bWJl
cigqZG9tYWluSURUb01hdGNoKTsKLSAgICB9Ci0KLSAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUg
PSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAgIGF1dG8gY2xlYXJVbmF0dHJp
YnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jbGVhclVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBjbGVhclVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJjbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50Il9zKTsKLQotICAgIGlmICghY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQKLSAg
ICAgICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJp
bmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSwotICAgICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgYXV0byBj
bGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9j
bGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgY2xlYXJBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQiX3MpOwotCi0gICAgaWYgKCFjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQK
LSAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBi
aW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBiaW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6
ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoKQotewotICAgIGF1dG8gZXhwaXJhdGlvblRpbWVGcmFtZSA9IFdhbGxUaW1lOjpu
b3coKSAtIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjptYXhBZ2UoKTsKLSAgICBh
dXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NsZWFyRXhwaXJl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBjbGVhckV4cGlyZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFF1ZXJ5LCAiY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQi
X3MpOwotCi0gICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kRG91YmxlKDEsIGV4cGlyYXRpb25UaW1lRnJhbWUuc2Vjb25kc1NpbmNlRXBvY2go
KS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJF
eHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotU3RyaW5nIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjphdHRyaWJ1dGlvblRvU3RyaW5nKFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCogc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZSBhdHRyaWJ1dGlvblR5cGUpCi17Ci0gICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0RG9t
YWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDApKTsKLSAgICBhdXRv
IGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0
ZW1lbnQtPmNvbHVtbkludCgxKSk7Ci0gICAgYXV0byBzb3VyY2VJRCA9IHN0YXRlbWVudC0+Y29s
dW1uSW50KDIpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKCJTb3VyY2Ugc2l0ZTogIiwgc291cmNlU2l0ZURvbWFpbiwgIlxuQXR0cmlidXRlIG9uIHNp
dGU6ICIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiwgIlxuU291cmNlIElEOiAiLCBzb3VyY2VJRCk7
Ci0KLSAgICBpZiAoYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDMpOwotICAgICAgICBhdXRvIHByaW9yaXR5
ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNCk7Ci0gICAgICAgIGF1dG8gZWFybGllc3RUaW1lVG9T
ZW5kID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNik7Ci0KLSAgICAgICAgaWYgKGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEgIT0gLTEpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbkF0dHJp
YnV0aW9uIHRyaWdnZXIgZGF0YTogIiwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgIlxuQXR0cmli
dXRpb24gcHJpb3JpdHk6ICIsIHByaW9yaXR5LCAiXG5BdHRyaWJ1dGlvbiBlYXJsaWVzdCB0aW1l
IHRvIHNlbmQ6ICIpOwotICAgICAgICAgICAgaWYgKGVhcmxpZXN0VGltZVRvU2VuZCA9PSAtMSkK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiTm90IHNldCIpOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0gV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKGVhcmxpZXN0VGltZVRvU2VuZCkgLSBXYWxsVGltZTo6bm93KCk7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoKHNlY29uZHNVbnRpbFNlbmQgPj0gMjRfaCAm
JiBzZWNvbmRzVW50aWxTZW5kIDw9IDQ4X2gpID8gIldpdGhpbiAyNC00OCBob3VycyIgOiAiT3V0
c2lkZSAyNC00OCBob3VycyIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbk5vIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsK
LSAgICB9IGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuTm8gYXR0cmlidXRpb24gdHJp
Z2dlciBkYXRhLiIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotCi0gICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkKLXsKLSAgICBhdXRv
IHByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cyA9IG1fZGF0YWJhc2UucHJlcGFyZVN0
YXRlbWVudCgiU0VMRUNUIChTRUxFQ1QgQ09VTlQoKikgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCkgYXMgY250MSwgKFNFTEVDVCBDT1VOVCgqKSBGUk9NIEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkgYXMgY250MiJfcyk7Ci0gICAgaWYgKCFwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMgfHwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
RXhpc3RzLT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBS
SVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQot
ICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzLT5jb2x1bW5JbnQoMCkg
JiYgIXByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+Y29sdW1uSW50KDEpKQotICAg
ICAgICByZXR1cm4gIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5c
biJfczsKLQotICAgIGF1dG8gdW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2Nv
cGVkU3RhdGVtZW50KG1fYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvbnNTdGF0ZW1lbnQsIGFsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25zUXVlcnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIl9zKTsK
LQotICAgIGlmICghdW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7Ci0gICAgICAgIElUUF9S
RUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHVuc2ln
bmVkIHVuYXR0cmlidXRlZE51bWJlciA9IDA7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIHdoaWxlICh1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9IHVuYXR0cmlidXRlZE51bWJlciA/
ICIiIDogIlVuYXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50czoiOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZChwcmVmaXgsICJcbldlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50ICIsICsrdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAotICAgICAgICAgICAgYXR0cmlidXRp
b25Ub1N0cmluZyh1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpKTsKLSAgICB9Ci0KLSAg
ICBhdXRvIGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQo
bV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGFsbEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb1N0cmluZyJfcyk7Ci0KLSAgICBpZiAoIWF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQpIHsK
LSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0
cmluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
fQotCi0gICAgdW5zaWduZWQgYXR0cmlidXRlZE51bWJlciA9IDA7Ci0gICAgd2hpbGUgKGF0dHJp
YnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGlm
ICghYXR0cmlidXRlZE51bWJlcikKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVuYXR0cmli
dXRlZE51bWJlciA/ICJcbiIgOiAiIiwgIkF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudHM6Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbldlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50ICIsICsrYXR0cmlidXRlZE51bWJlciArIHVuYXR0cmlidXRlZE51bWJlciwg
J1xuJywKLSAgICAgICAgICAgIGF0dHJpYnV0aW9uVG9TdHJpbmcoYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0
dHJpYnV0ZWQpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQot
c3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1lVG9TZW5kPiwgc3RkOjpv
cHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjplYXJsaWVzdFRpbWVzVG9TZW5kKGNvbnN0IFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50JiBhdHRyaWJ1dGlvbikKLXsKLSAgICBhdXRvIHNvdXJjZVNp
dGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3RyYWJs
ZURvbWFpbik7Ci0gICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0
dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLQotICAgIGlm
ICghc291cmNlU2l0ZURvbWFpbklEIHx8ICFkZXN0aW5hdGlvblNpdGVEb21haW5JRCkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKLQot
ICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZWFybGll
c3RUaW1lc1RvU2VuZFN0YXRlbWVudCwgZWFybGllc3RUaW1lc1RvU2VuZFF1ZXJ5LCAiZWFybGll
c3RUaW1lc1RvU2VuZCJfcyk7Ci0KLSAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAotICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRp
b25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQt
PnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZWFybGllc3RUaW1lc1Rv
U2VuZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAg
ICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9T
ZW5kVG9Tb3VyY2U7Ci0gICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbjsKLSAgICAKLSAgICAvLyBBIHZh
bHVlIG9mIDAuMCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8gdGhl
IHJlc3BlY3RpdmUgc2l0ZS4KLSAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUo
MCkgPiAwLjApCi0gICAgICAgIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gc2NvcGVkU3Rh
dGVtZW50LT5jb2x1bW5Eb3VibGUoMCk7Ci0gICAgCi0gICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+
Y29sdW1uRG91YmxlKDEpID4gMC4wKQotICAgICAgICBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3Rp
bmF0aW9uID0gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMSk7Ci0gICAgCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRp
bWVUb1NlbmRUb0Rlc3RpbmF0aW9uKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWFya1JlcG9ydEFzU2VudFRvU291cmNlKFNvdXJjZURvbWFpbklEIHNv
dXJjZVNpdGVEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCBkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCkKLXsKLSAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVu
dChtX21hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZVN0YXRlbWVudCwgbWFya1JlcG9ydEFzU2VudFRv
U291cmNlUXVlcnksICJtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UiX3MpOwotCi0gICAgaWYgKCFz
Y29wZWRTdGF0ZW1lbnQKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsIHNv
dXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVu
dC0+YmluZEludCgyLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bWFya1JlcG9ydEFzU2VudFRvU291cmNlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJM
SUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oU291cmNlRG9tYWlu
SUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEKQotewotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3Rh
dGVtZW50KG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQsIG1hcmtSZXBv
cnRBc1NlbnRUb0Rlc3RpbmF0aW9uUXVlcnksICJtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlv
biJfcyk7Ci0KLSAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBzY29wZWRTdGF0
ZW1lbnQtPmJpbmRJbnQoMSwgc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlv
biwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0
aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQpCi17ICAgIAotICAgIGF1dG8gdGltZXNUb1NlbmQgPSBlYXJsaWVzdFRp
bWVzVG9TZW5kKGF0dHJpYnV0aW9uKTsKLSAgICBhdXRvIHNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZCA9IHRpbWVzVG9TZW5kLmZpcnN0OwotICAgIGF1dG8gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQgPSB0aW1lc1RvU2VuZC5zZWNvbmQ7Ci0KLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW5J
RCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7
Ci0gICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9u
LmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLQotICAgIGlmICghc291cmNl
U2l0ZURvbWFpbklEIHx8ICFkZXN0aW5hdGlvblNpdGVEb21haW5JRCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgc3dpdGNoIChhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KSB7Ci0gICAgY2FzZSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6U291cmNl
OgotICAgICAgICBpZiAoIXNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkgewotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgbWFya1JlcG9ydEFzU2VudFRvU291cmNlKCpzb3VyY2VTaXRlRG9tYWluSUQsICpkZXN0
aW5hdGlvblNpdGVEb21haW5JRCk7Ci0gICAgICAgIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6RGVzdGluYXRpb246Ci0gICAgICAg
IGlmICghZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKCpzb3VyY2VTaXRlRG9tYWluSUQsICpkZXN0
aW5hdGlvblNpdGVEb21haW5JRCk7Ci0gICAgICAgIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kID0gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIERvbid0IGNsZWFyIHRoZSBhdHRy
aWJ1dGUgZnJvbSB0aGUgZGF0YWJhc2UgdW5sZXNzIGl0IGhhcyBiZWVuIHJlcG9ydGVkIGJvdGgg
dG8gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gc2l0ZS4KLSAgICBpZiAoZGVzdGluYXRpb25F
YXJsaWVzdFRpbWVUb1NlbmQgfHwgc291cmNlRWFybGllc3RUaW1lVG9TZW5kKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBhdXRvIGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudCA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudCgiREVMRVRFIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEID0gPyJfcyk7Ci0gICAgaWYgKCFjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQKLSAgICAg
ICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9t
YWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQt
PmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsK
LSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24gZmFpbGVk
IHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFy
a0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkK
LXsKLSAgICBhdXRvIGV4cGlyZWRUaW1lVG9TZW5kID0gV2FsbFRpbWU6Om5vdygpIC0gMV9oOwot
Ci0gICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5
KCk7Ci0KLSAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9ID8iX3MpOwotICAgIGF1
dG8gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudCA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudCgiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiA9IG51bGwiX3MpOwotCi0gICAg
aWYgKCFlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudAotICAgICAgICB8fCBlYXJs
aWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudC0+YmluZEludCgxLCBleHBpcmVkVGltZVRv
U2VuZC5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9E
T05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgaWYgKCFlYXJsaWVzdFRp
bWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50IHx8IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb25TdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBf
UkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIH0KLX0KLQotU2NvcGVFeGl0PEZ1bmN0aW9uPHZvaWQoKT4+IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3Nhcnko
KQotewotICAgIGlmIChtX3RyYW5zYWN0aW9uLmluUHJvZ3Jlc3MoKSkKLSAgICAgICAgcmV0dXJu
IG1ha2VTY29wZUV4aXQoRnVuY3Rpb248dm9pZCgpPiB7IFtdIHsgfSB9KTsKLQotICAgIG1fdHJh
bnNhY3Rpb24uYmVnaW4oKTsKLSAgICByZXR1cm4gbWFrZVNjb3BlRXhpdChGdW5jdGlvbjx2b2lk
KCk+IHsgW3RoaXNdIHsKLSAgICAgICAgbV90cmFuc2FjdGlvbi5jb21taXQoKTsKLSAgICB9IH0p
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIElUUF9SRUxFQVNFX0xPRwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApp
bmRleCAzNTEyOTg2ODM4NzFjN2ViZDNjYTc5NDliMDU4YjQzODA1MWRlYjExLi4wYWExMjVlMTk3
OGZmYTMzN2NlMDNlMWExMjI0NWNhOWM1Y2ZiYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMjcsMjEgKzI3LDE2IEBACiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCisjaW5jbHVkZSAiRGF0YWJh
c2VVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1l
bnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KLSNpbmNsdWRl
IDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTUUxpdGVEYXRhYmFzZTsKLWNs
YXNzIFNRTGl0ZVN0YXRlbWVudDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOwog
c3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CkBAIC01Niw4ICs1MSw2IEBAIHN0YXRpYyBj
b25zdGV4cHIgc3RkOjphcnJheTx1bnNpZ25lZCwgbnVtYmVyT2ZCdWNrZXRzUGVyU3RhdGlzdGlj
PiBidWNrZXRTaXplcyB7CiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU7
CiBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI7CiAKLXVzaW5nIEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OwotdXNpbmcgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKIHVzaW5nIFNvdXJjZVNpdGUgPSBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZTsKIHVzaW5nIEF0dHJpYnV0aW9uRGVz
dGluYXRpb25TaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uRGVzdGluYXRpb25TaXRlOwogdXNpbmcgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwpAQCAt
NjUsMTUgKzU4LDExIEBAIHVzaW5nIEV4aXN0aW5nQ29sdW1ucyA9IFZlY3RvcjxTdHJpbmc+Owog
dXNpbmcgRXhwZWN0ZWRDb2x1bW5zID0gVmVjdG9yPFN0cmluZz47CiB1c2luZyBFeGlzdGluZ0Nv
bHVtbk5hbWUgPSBTdHJpbmc7CiB1c2luZyBFeHBlY3RlZENvbHVtbk5hbWUgPSBTdHJpbmc7Ci11
c2luZyBTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBkb3VibGU7Ci11c2luZyBEZXN0aW5hdGlv
bkVhcmxpZXN0VGltZVRvU2VuZCA9IGRvdWJsZTsKLXVzaW5nIFNvdXJjZURvbWFpbklEID0gdW5z
aWduZWQ7Ci11c2luZyBEZXN0aW5hdGlvbkRvbWFpbklEID0gdW5zaWduZWQ7CiAKIHR5cGVkZWYg
c3RkOjpwYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFp
cjsKIAogLy8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVkIG9u
IHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVlLgot
Y2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUgZmluYWwgOiBwdWJsaWMg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHsKK2NsYXNzIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSwgcHVibGljIERhdGFiYXNlVXRpbGl0aWVzIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBT
dXNwZW5kYWJsZVdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmlu
ZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB+UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoKTsKQEAgLTE0MiwxNiArMTMxLDYgQEAgcHVibGlj
OgogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wg
aGFzVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgaW50ZXJydXB0KCk7
CiAKLSAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50LgotICAgIHZvaWQgaW5zZXJ0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIG92ZXJyaWRlOwotICAgIHZv
aWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9y
VGVzdGluZygpIG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IGF0dHJpYnV0
ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJikgb3ZlcnJpZGU7Ci0gICAgVmVjdG9y
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4pIG92ZXJyaWRlOwotICAg
IHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSBvdmVycmlkZTsKLSAg
ICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpIG92ZXJyaWRlOwotICAg
IHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0
RW5kcG9pbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0
cmluZz4gY29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgpAQCAtMTY0
LDExICsxNDMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkTWlzc2luZ1RhYmxlc0lmTmVjZXNz
YXJ5KCk7CiAgICAgYm9vbCBtaXNzaW5nVW5pcXVlSW5kaWNlcygpOwogICAgIGJvb2wgbmVlZHNV
cGRhdGVkU2NoZW1hKCk7Ci0gICAgYm9vbCBuZWVkc1VwZGF0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFNjaGVtYSgpOwogICAgIHZvaWQgcmVuYW1lQ29sdW1uSW5UYWJsZShTdHJpbmcmJiwgRXhp
c3RpbmdDb2x1bW5OYW1lJiYsIEV4cGVjdGVkQ29sdW1uTmFtZSYmKTsKICAgICB2b2lkIGFkZE1p
c3NpbmdDb2x1bW5zVG9UYWJsZShTdHJpbmcmJiwgY29uc3QgRXhpc3RpbmdDb2x1bW5zJiwgY29u
c3QgRXhwZWN0ZWRDb2x1bW5zJik7Ci0gICAgdm9pZCBhZGRNaXNzaW5nQ29sdW1uc0lmTmVjZXNz
YXJ5KCk7Ci0gICAgdm9pZCByZW5hbWVDb2x1bW5zSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIHJl
bmFtZUNvbHVtbkluVGFibGUoKTsKICAgICBUYWJsZUFuZEluZGV4UGFpciBjdXJyZW50VGFibGVB
bmRJbmRleFF1ZXJpZXMoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFNjaGVtYUlmTmVjZXNzYXJ5KCk7CkBAIC0xNzYsNyArMTUyLDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1pc3NpbmdSZWZlcmVuY2VUb09ic2VydmVkRG9tYWlucygpOwogICAg
IHZvaWQgbWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBkZXN0
cm95U3RhdGVtZW50cygpOwotICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNj
b3BlIHNjb3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiYsIEFTQ0lJTGl0ZXJhbCwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBib29sIGhh
c1N0b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJGcmFtZURvbWFp
biYpIGNvbnN0OwogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7CkBAIC0yMDEsMTAgKzE3Niw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSgpIGNv
bnN0OwogICAgIEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJlc291cmNlRG9tYWluPiBkb21h
aW5zV2l0aFN0b3JhZ2VBY2Nlc3MoKSBjb25zdDsKIAotICAgIHZvaWQgbWFya1JlcG9ydEFzU2Vu
dFRvRGVzdGluYXRpb24oU291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQpOwotICAg
IHZvaWQgbWFya1JlcG9ydEFzU2VudFRvU291cmNlKFNvdXJjZURvbWFpbklELCBEZXN0aW5hdGlv
bkRvbWFpbklEKTsKLSAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRp
bWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4g
ZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYpOwotCiAgICAgc3RydWN0IERvbWFpbkRhdGEgewogICAgICAgICB1bnNpZ25lZCBkb21haW5J
RDsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW47CkBAIC0yNTMs
MjAgKzIyNCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNEYXRhYmFzZVN0b3JlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBjcmVhdGVVbmlxdWVJbmRpY2VzKCk7
Ci0gICAgYm9vbCBjcmVhdGVTY2hlbWEoKTsKKyAgICBib29sIGNyZWF0ZVNjaGVtYSgpIGZpbmFs
OwogICAgIFN0cmluZyBlbnN1cmVBbmRNYWtlRG9tYWluTGlzdChjb25zdCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lKGNvbnN0IERvbWFpbkRhdGEmKTsKLSAgICAKLSAgICB2b2lkIHJl
bW92ZVVuYXR0cmlidXRlZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOwotICAg
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwotICAgIFN0cmluZyBhdHRyaWJ1dGlvblRvU3Ry
aW5nKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlKTsKLSAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50Pj4gZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJik7Ci0K
LSAgICBTY29wZUV4aXQ8RnVuY3Rpb248dm9pZCgpPj4gV0FSTl9VTlVTRURfUkVUVVJOIGJlZ2lu
VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwogCi0gICAgY29uc3QgU3RyaW5nIG1fc3RvcmFnZURp
cmVjdG9yeVBhdGg7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RhdGFi
YXNlOwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24gbV90cmFuc2FjdGlv
bjsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRlbWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0VG9w
TGV2ZWxEb21haW5TdGF0ZW1lbnQ7CkBAIC0zMDQsMjEgKzI2NSw3IEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3VuaXF1
ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50OwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQ7
CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQ7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pbnNlcnRVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2luc2VydEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX3NldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXNFeHBpcmVkU3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+IG1fY2xlYXJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRl
bWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2Ns
ZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJFeHBpcmVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uc1N0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiBtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRl
bWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2Zp
bmRVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4gbV9maW5kQXR0cmlidXRlZFN0YXRlbWVudDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3VwZGF0ZUF0dHJpYnV0aW9uc0Vhcmxp
ZXN0VGltZVRvU2VuZFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiBtX3JlbW92ZVVuYXR0cmlidXRlZFN0YXRlbWVudDsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX21hcmtSZXBvcnRBc1NlbnRUb1Nv
dXJjZVN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiBtX21hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50OwogCiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9vbCBtX2lzTmV3UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlRmlsZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggYTc3ZTA5ODBhZWEzZDI2NWExNmExODUy
NGI0N2VlY2JjYmIzYzY5Ny4uM2Q3Zjc1YTAxNjA0ZmU2ZTE4NGJkZWUwYTgzYTI5NmEyOGI4MGM0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aApAQCAtMTA3LDE3ICsxMDcsNiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiBhbGxEb21haW5zKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3Rh
dGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVuc2lnbmVkIG51bWJl
ck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgb3Zl
cnJpZGU7CiAKLSAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGlzIG5vdCBpbXBsZW1l
bnRlZCBpbiB0aGUgSVRQIG1lbW9yeSBzdG9yZS4KLSAgICB2b2lkIGluc2VydFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBt
YXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0
aW5nKCkgb3ZlcnJpZGUgeyB9OwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+YXR0cmlidXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSBvdmVycmlkZSB7IHJldHVybiB7IH07
IH07Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH07
Ci0gICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8UmVn
aXN0cmFibGVEb21haW4+KSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBjbGVhckV4cGlyZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlIHsgfTsKLSAgICBTdHJpbmcgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb1N0cmluZygpIG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Owot
ICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVw
b3J0RW5kcG9pbnQpIG92ZXJyaWRlIHsgfTsKLSAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpIG92ZXJyaWRlIHsgfTsKLQog
cHJpdmF0ZToKICAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5
KCkgb3ZlcnJpZGU7CiAgICAgY29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBvcGVyYXRpbmdE
YXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nRGF0ZXM7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAyNDIyZmM4NGY1NGVlN2NkMzBlZTQwZjE0
MjA0MmQ0MWViZjUxYjNmLi5jMWVkZjU2ZDM1YmJiNjczODhiNzczMzU0NGQ0ZTExZmViNjc3MjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yMDIsMTcg
KzIwMiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPcGVyYXRpbmdEYXRlcygp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFz
c2VkLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsLCBib29sKSA9IDA7Ci0gICAgCi0gICAgLy8gUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudC4KLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblR5cGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpID0gMDsK
LSAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IGF0dHJpYnV0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3Vy
Y2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEmJikgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4pID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVw
b3J0RW5kcG9pbnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkgPSAwOwogCiBwcm90ZWN0ZWQ6
CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVJbXBvcnRhbmNlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNjdiMTJlMjBjZjI3ODhmZGJjNTJkYjRmY2VmZGVhZTQz
MmEyMmM1ZS4uZjFlYTg4YThjYzk0MTE3NzdhMmE2YmM2ZTA4M2IzZTdjMmU2ZjU2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE0Mywx
NyArMTQzLDMwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91
bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzCiAgICAgfSk7CiB9CiAKLXN0YXRp
YyBSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+IHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpCitSZWY8
U3VzcGVuZGFibGVXb3JrUXVldWU+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hh
cmVkU3RhdGlzdGljc1F1ZXVlKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFN1
c3BlbmRhYmxlV29ya1F1ZXVlPj4gcXVldWUoU3VzcGVuZGFibGVXb3JrUXVldWU6OmNyZWF0ZSgi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsICBXb3Jr
UXVldWU6OlFPUzo6VXRpbGl0eSkpOwogICAgIHJldHVybiBxdWV1ZS5nZXQoKS5jb3B5UmVmKCk7
CiB9CiAKLVdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1l
cmFsIGlzRXBoZW1lcmFsKQorCitzdGF0aWMgU3RyaW5nIHBjbVN0b3JlRGlyZWN0b3J5KGNvbnN0
IE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5KQoreworICAgIGlmIChzZXNzaW9uLnNlc3Npb25JRCgpLmlzRXBoZW1lcmFs
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4gcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeTsKK30KKworV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtT
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGNv
bnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCBTaG91
bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OklzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKQogICAgIDogbV9uZXR3b3JrU2Vzc2lv
bihtYWtlV2Vha1B0cihuZXR3b3JrU2Vzc2lvbikpCiAgICAgLCBtX3N0YXRpc3RpY3NRdWV1ZShz
aGFyZWRTdGF0aXN0aWNzUXVldWUoKSkKICAgICAsIG1fZGFpbHlUYXNrc1RpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURh
aWx5VGFza3MpCiAgICAgLCBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFsKQorICAgICwgbV9wY21T
dG9yZShzaGFyZWRTdGF0aXN0aWNzUXVldWUoKSwgcGNtU3RvcmVEaXJlY3RvcnkobmV0d29ya1Nl
c3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmFnZURpcmVjdG9yeSkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0xODUsOSArMTk4LDkgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkKICAgICBSRUxFQVNFX0FT
U0VSVCghbV9zdGF0aXN0aWNzU3RvcmUpOwogfQogCi1SZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShOZXR3b3Jr
U2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVt
ZXJhbCkKK1JlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBjb25zdCBTdHJp
bmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgU2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUobmV0d29ya1Nlc3Npb24sIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGlz
RXBoZW1lcmFsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIHNob3VsZEluY2x1
ZGVMb2NhbGhvc3QsIGlzRXBoZW1lcmFsKSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpkaWREZXN0cm95TmV0d29ya1Nlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTQ3MCwxODUgKzE0ODMsNiBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0Zv
clRlc3RpbmcoY29uc3QgUmVnaQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGUgYXR0cmlidXRpb25UeXBlKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcG9z
dFRhc2soW3RoaXMsIGF0dHJpYnV0aW9uID0gV1RGTW92ZShhdHRyaWJ1dGlvbiksIGF0dHJpYnV0
aW9uVHlwZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+aW5zZXJ0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1dGlvbiksIGF0dHJpYnV0aW9uVHlw
ZSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpt
YXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0
aW5nKCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBo
ZW1lcmFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBvc3RUYXNrKFt0aGlzXSgpIHsKLSAg
ICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUs
IGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0
ZSYgZGVzdGluYXRpb25TaXRlLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25U
cmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgcG9zdFRhc2soW3RoaXMsIHNvdXJjZVNpdGUgPSBzb3VyY2VTaXRlLmlzb2xhdGVkQ29w
eSgpLCBkZXN0aW5hdGlvblNpdGUgPSBkZXN0aW5hdGlvblNpdGUuaXNvbGF0ZWRDb3B5KCksIGF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBwb3N0VGFz
a1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9w
dCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGF1dG8gc2Vjb25kcyA9IG1fc3RhdGlzdGljc1N0b3JlLT5hdHRyaWJ1dGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1vdmUoYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSkpOwotICAgICAgICBwb3N0VGFza1JlcGx5KFtzZWNvbmRzLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2Vjb25kcyk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWxsQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkp
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0
b3JlKSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gY29udmVydGVkQXR0cmlidXRpb25zID0gbV9z
dGF0aXN0aWNzU3RvcmUtPmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwot
ICAgICAgICBwb3N0VGFza1JlcGx5KFtjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMgPSBXVEZNb3ZlKGNv
bnZlcnRlZEF0dHJpYnV0aW9ucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbnZlcnRlZEF0dHJpYnV0aW9ucykpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0K
LQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBp
ZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcG9zdFRhc2soW3RoaXNd
KCkgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KHN0ZDo6bnVsbG9wdCk7Ci0gICAgfSk7Ci19Ci0gICAgCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCi17Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclByaXZhdGVD
bGlja01lYXN1cmVtZW50KGRvbWFpbik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgp
Ci17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJh
bCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpc10oKSB7Ci0gICAgICAg
IGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
IlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiJfcyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KCFtX3N0YXRpc3RpY3NTdG9yZSkgewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
c3RhdGlzdGljc1N0b3JlLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCk7Ci0gICAg
ICAgIHBvc3RUYXNrUmVwbHkoW3Jlc3VsdCA9IHJlc3VsdC5pc29sYXRlZENvcHkoKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7Ci0gICAgICAgIH0pOwotICAgIH0p
OwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJTZW50QXR0
cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvblRv
Q2xlYXIsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBw
b3N0VGFzayhbdGhpcywgYXR0cmlidXRpb25Ub0NsZWFyID0gV1RGTW92ZShhdHRyaWJ1dGlvblRv
Q2xlYXIpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50XSgpIG11dGFibGUgewotICAgICAgICBp
ZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1f
c3RhdGlzdGljc1N0b3JlLT5jbGVhclNlbnRBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9u
VG9DbGVhciksIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwotICAgIH0pOwotfQotCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAg
ICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
ZS0+bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKCk7Ci0KLSAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci0gICAgfSk7Ci19Ci0KIFN0cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5Ojp0b1N0cmluZygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkhhcyBiZWVuIGdyYW50ZWQgc3RvcmFnZSBhY2Nlc3Mg
dW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSwgIjogIiwgc3RvcmFnZUFjY2Vzc0dy
YW50ZWQgPyAnMScgOiAnMCcsICI7IEhhcyBiZWVuIHNlZW4gdW5kZXIgIiwgZmlyc3RQYXJ0eURv
bWFpbi5zdHJpbmcoKSwgIiBpbiB0aGUgbGFzdCAyNCBob3VyczogIiwgV2FsbFRpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkgLSB0aW1lTGFzdFVwZGF0ZWQgPCAyNF9oID8gJzEnIDogJzAn
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBm
MzAzMzYyMWFjYzUyY2E1M2RjYzc5MmQ5NjVlZDQ4YzNmNzlkZGE0Li5iMWM0YmFkMDVlNDMyOWI4
NjA0ZDU5MmRkZDJjYzIxZTE5N2MwODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCIKICNpbmNsdWRlICJTdG9yYWdl
QWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgpAQCAtMTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBTdG9yYWdlQWNjZXNzU2NvcGUgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGU7
CiAgICAgdXNpbmcgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgPSBXZWJDb3JlOjpSZXF1ZXN0
U3RvcmFnZUFjY2Vzc1Jlc3VsdDsKIAotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsKTsKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOwogCiAgICAgfldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwogCkBAIC0yMzksMjAgKzI0MCwxMiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFcGhlbWVyYWwgPT0g
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllczsgfTsKICAg
ICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVz
ZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAg
Ly8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4KLSAgICB2b2lkIGluc2VydFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKLSAgICB2b2lkIG1hcmtBbGxVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKLSAgICB2
b2lkIGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYpOwotICAgIHZvaWQgYWxs
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJik7Ci0gICAgdm9p
ZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgdm9pZCBjbGVhclByaXZhdGVD
bGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKTsKLSAgICB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KCk7Ci0gICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7Ci0gICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlv
bihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7Ci0gICAgdm9pZCBtYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBQQ006OlN0b3JlJiBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JlKCkgeyByZXR1cm4gbV9wY21TdG9yZTt9CisgICAgCisgICAgc3RhdGlj
IFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCk7CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdv
cmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOworICAgIGV4cGxpY2l0IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsKTsKIAogICAgIHZvaWQgcG9zdFRhc2soV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RUYXNrUmVwbHkoV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYpOwpAQCAtMjg3LDYgKzI4MCw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2hhc1NjaGVkdWxlZFByb2Nlc3NTdGF0cyB7IGZhbHNlIH07CiAKICAgICBib29sIG1f
Zmlyc3ROZXR3b3JrUHJvY2Vzc0NyZWF0ZWQgeyBmYWxzZSB9OworICAgIAorICAgIFBDTTo6U3Rv
cmUgbV9wY21TdG9yZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iZGY5MmYyMjU0MjRhMjMyZTNmMWM3NGYyZGU3OTc0ZjIzYzMyMzdhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAK
QEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRl
U3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitEYXRhYmFz
ZVV0aWxpdGllczo6RGF0YWJhc2VVdGlsaXRpZXMoU3RyaW5nJiYgc3RvcmFnZUZpbGVQYXRoKQor
ICAgIDogbV9zdG9yYWdlRmlsZVBhdGgoV1RGTW92ZShzdG9yYWdlRmlsZVBhdGgpKQorICAgICwg
bV90cmFuc2FjdGlvbihtX2RhdGFiYXNlKSB7IH0KKworRGF0YWJhc2VVdGlsaXRpZXM6On5EYXRh
YmFzZVV0aWxpdGllcygpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0
b1Jlc2V0U2NvcGUgRGF0YWJhc2VVdGlsaXRpZXM6OnNjb3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBBU0NJSUxpdGVyYWwg
cXVlcnksIEFTQ0lJTGl0ZXJhbCBsb2dTdHJpbmcpIGNvbnN0Cit7CisgICAgaWYgKCFzdGF0ZW1l
bnQpIHsKKyAgICAgICAgYXV0byBzdGF0ZW1lbnRPckVycm9yID0gbV9kYXRhYmFzZS5wcmVwYXJl
SGVhcFN0YXRlbWVudChxdWVyeSk7CisgICAgICAgIGlmICghc3RhdGVtZW50T3JFcnJvcikgewor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIl
cCAtIERhdGFiYXNlVXRpbGl0aWVzOjolcyBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVy
cm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBsb2dTdHJpbmcuY2hhcmFj
dGVycygpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dEF1dG9SZXNldFNjb3BlIHsgfTsKKyAgICAgICAgfQorICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0
ZW1lbnRPckVycm9yLnZhbHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7CisgICAgICAgIEFTU0VSVCht
X2RhdGFiYXNlLmlzT3BlbigpKTsKKyAgICB9CisgICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudEF1dG9SZXNldFNjb3BlIHsgc3RhdGVtZW50LmdldCgpIH07Cit9CisKK1Njb3BlRXhp
dDxGdW5jdGlvbjx2b2lkKCk+PiBEYXRhYmFzZVV0aWxpdGllczo6YmVnaW5UcmFuc2FjdGlvbklm
TmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV90cmFuc2FjdGlvbi5pblByb2dyZXNzKCkpCisgICAg
ICAgIHJldHVybiBtYWtlU2NvcGVFeGl0KEZ1bmN0aW9uPHZvaWQoKT4geyBbXSB7IH0gfSk7CisK
KyAgICBtX3RyYW5zYWN0aW9uLmJlZ2luKCk7CisgICAgcmV0dXJuIG1ha2VTY29wZUV4aXQoRnVu
Y3Rpb248dm9pZCgpPiB7IFt0aGlzXSB7CisgICAgICAgIG1fdHJhbnNhY3Rpb24uY29tbWl0KCk7
CisgICAgfSB9KTsKK30KKworYXV0byBEYXRhYmFzZVV0aWxpdGllczo6b3BlbkRhdGFiYXNlKCkg
LT4gQ3JlYXRlZE5ld0ZpbGUKK3sKKyAgICBDcmVhdGVkTmV3RmlsZSBjcmVhdGVkTmV3RmlsZSA9
IENyZWF0ZWROZXdGaWxlOjpObzsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9z
dG9yYWdlRmlsZVBhdGgpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgobV9zdG9yYWdlRmlsZVBhdGgpKSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAt
IERhdGFiYXNlOjpvcGVuIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogRmFpbGVkIHRvIGNyZWF0ZSBk
aXJlY3RvcnkgZGF0YWJhc2UgcGF0aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fc3Rv
cmFnZUZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlZE5ld0ZpbGU7CisgICAgICAgIH0KKyAg
ICAgICAgY3JlYXRlZE5ld0ZpbGUgPSBDcmVhdGVkTmV3RmlsZTo6WWVzOworICAgIH0KKworICAg
IGlmICghbV9kYXRhYmFzZS5vcGVuKG1fc3RvcmFnZUZpbGVQYXRoKSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Om9w
ZW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORyAiLCBkYXRhYmFz
ZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSwgbV9zdG9yYWdlRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY3JlYXRlZE5ld0ZpbGU7CisgICAgfQorICAg
IAorICAgIC8vIFNpbmNlIHdlIGFyZSB1c2luZyBhIHdvcmtlclF1ZXVlLCB0aGUgc2VxdWVudGlh
bCBkaXNwYXRjaCBibG9ja3MgbWF5IGJlIGNhbGxlZCBieSBkaWZmZXJlbnQgdGhyZWFkcy4KKyAg
ICBtX2RhdGFiYXNlLmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKKworICAgIGF1dG8gc2V0QnVz
eVRpbWVvdXQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBidXN5X3RpbWVv
dXQgPSA1MDAwIl9zKTsKKyAgICBpZiAoIXNldEJ1c3lUaW1lb3V0IHx8IHNldEJ1c3lUaW1lb3V0
LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OnNldEJ1c3lUaW1lb3V0IGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBjcmVhdGVkTmV3RmlsZTsKKyAgICB9CisKKyAgICBpZiAoY3JlYXRlZE5ld0ZpbGUg
PT0gQ3JlYXRlZE5ld0ZpbGU6OlllcykgeworICAgICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
IiVwIC0gRGF0YWJhc2U6OmNyZWF0ZVNjaGVtYSBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBV
QkxJQ19MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VGaWxlUGF0aC51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZWROZXdGaWxlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjcmVh
dGVkTmV3RmlsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkNGVh
MTVmOWM1ZjQxYWViNGM2ZTMwNjgxMzA0NzI0OGRjN2RmNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuaApAQCAtMCwwICsx
LDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NR
TGl0ZURhdGFiYXNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgor
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTUUxp
dGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIERhdGFiYXNlVXRpbGl0aWVzIHsKK3Byb3RlY3RlZDoKKyAgICBEYXRhYmFzZVV0aWxpdGll
cyhTdHJpbmcmJiBzdG9yYWdlRmlsZVBhdGgpOworICAgIH5EYXRhYmFzZVV0aWxpdGllcygpOwor
CisgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgc2NvcGVkU3RhdGVt
ZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+JiwgQVNDSUlMaXRl
cmFsIHF1ZXJ5LCBBU0NJSUxpdGVyYWwgbG9nU3RyaW5nKSBjb25zdDsKKyAgICBTY29wZUV4aXQ8
RnVuY3Rpb248dm9pZCgpPj4gV0FSTl9VTlVTRURfUkVUVVJOIGJlZ2luVHJhbnNhY3Rpb25JZk5l
Y2Vzc2FyeSgpOworICAgIGVudW0gY2xhc3MgQ3JlYXRlZE5ld0ZpbGUgOiBib29sIHsgTm8sIFll
cyB9OworICAgIENyZWF0ZWROZXdGaWxlIG9wZW5EYXRhYmFzZSgpOworICAgIHZpcnR1YWwgYm9v
bCBjcmVhdGVTY2hlbWEoKSA9IDA7CisKKyAgICBjb25zdCBTdHJpbmcgbV9zdG9yYWdlRmlsZVBh
dGg7CisgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOworICAg
IG11dGFibGUgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24gbV90cmFuc2FjdGlvbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDgyZjFlNTMwMTQ0ZmEwZmYy
ZGFiMTFlNjQ0YzA5YjdmNjg2MWEwMDAuLjUyZDM1YmM5YjNhMTYzMTMxZmU4N2M4ZGIyNjk4OTZl
Zjk1YWE2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg2Nyw5ICs4NjcsOSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LAogICAgICsrbV9yZWRpcmVjdENvdW50OwogICAgIG1fcmVkaXJlY3RSZXNwb25z
ZSA9IHJlZGlyZWN0UmVzcG9uc2U7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKSkgewotICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgp
KSkKKyAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpCiAg
ICAgICAgICAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEg
PSByZXN1bHQudmFsdWUoKTsKICAgICAgICAgZWxzZSBpZiAoIXJlc3VsdC5lcnJvcigpLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCByZXN1bHQuZXJyb3IoKSk7
CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBjb250aW51
ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRp
cmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkpOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+JiYgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQordm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKICAgICByZWRpcmVjdFJlcXVlc3Qu
c2V0SXNBcHBJbml0aWF0ZWQocmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA0ZTMwMTYz
YTdiYmMxNjZjNzc1NTQzNTM1NWFhMWI5MWNkYjQwYTVhLi4xM2Q3M2U0NmQ0NjAyMmZiMzIyNDg4
ZjRlZGY2MzdhMTIxMzNlZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmNwcApAQCAtODIsNiArODIsNyBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0
d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3Jr
U2VzcwogICAgIDogbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25l
dHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9y
eShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LmRpcmVjdG9yeSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91
bGRJbmNsdWRlTG9jYWxob3N0OjpObykKICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LmVuYWJsZURlYnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6
OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAtMTE3
LDYgKzExOCw4IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAKICAgICAgICAgaWYgKCFwYXJh
bWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOworICAgICAgICBpZiAoIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShw
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCiAgICAg
bV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCA9IHBhcmFtZXRlcnMuc3RhbGVXaGlsZVJl
dmFsaWRhdGVFbmFibGVkOwpAQCAtMTc5LDcgKzE4Miw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246
OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlKQogICAgIGlmICht
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRl
KCp0aGlzLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIG1fc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgKG1fc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CisgICAgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKnRoaXMs
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0b3JhZ2VEaXJlY3RvcnksIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VM
b2FkU3RhdGlzdGljcywgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNF
cGhlbWVyYWw6Ok5vKSk7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAg
ICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlz
ayhbXSB7IH0pOwogCkBAIC0xOTYsNyArMTk5LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVj
cmVhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCkK
ICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCp0aGlzLCBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdElu
UmVzb3VyY2VMb2FkU3RhdGlzdGljcywgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CisgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCp0aGlzLCBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5LCAgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLCAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6OklzRXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJh
bDo6Tm8pKTsKICAgICAgICAgZm9yd2FyZFJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXR0aW5ncygp
OwogICAgICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgICAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzayhXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKaW5kZXggN2RhOTVlOTcwYmU5NTNjZmJlZWRkYmI3OWQxNDk2NDNl
M2EyZTg4Yi4uYWUyOWZlMTVkN2JkYmFiZjYyYWU2NGE3YzNiMjA3Y2ZhZTgzMGYzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTkwLDYg
KzE5MCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7CiAgICAgV2Vha0hhc2hTZXQ8TmV0d29ya0RhdGFUYXNrPiBtX2RhdGFUYXNrU2V0Owog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgU3RyaW5nIG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIFNob3VsZEluY2x1ZGVM
b2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lZjk3ZWFiYjcyNjRlNDdmNGVjM2YyNTYxMDRjYzQyODIzMjI5NTJhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcApAQCAtMCwwICsx
LDY5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVu
dEF1dG9SZXNldFNjb3BlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NvbnN0ZXhwciBh
dXRvIHNldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkUXVlcnkg
PSAiVVBEQVRFIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCB0aW1lT2ZB
ZENsaWNrID0gLTEuMCJfczsKK2NvbnN0ZXhwciBhdXRvIGluc2VydFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCwgIgorICAgICJzb3VyY2VJRCwgdGltZU9mQWRDbGljaywgdG9rZW4s
IHNpZ25hdHVyZSwga2V5SUQpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPykiX3M7Citjb25z
dGV4cHIgYXV0byBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9
ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCAoc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgorICAgICJz
b3VyY2VJRCwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgcHJpb3JpdHksIHRpbWVPZkFkQ2xpY2ss
IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFy
bGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbikgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/
LCA/LCA/LCA/LCA/KSJfczsKK2NvbnN0ZXhwciBhdXRvIGZpbmRVbmF0dHJpYnV0ZWRRdWVyeSA9
ICJTRUxFQ1QgKiBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJF
IHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJf
czsKK2NvbnN0ZXhwciBhdXRvIGZpbmRBdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICogRlJPTSBB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklE
ID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8g
cmVtb3ZlVW5hdHRyaWJ1dGVkUXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGlu
YXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gYWxsQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiU0VMRUNUICosIE1JTihlYXJsaWVzdFRpbWVU
b1NlbmRUb1NvdXJjZSwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbikgYXMgbWluVmFs
ICIKKyAgICAiRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFy
bGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgSVMgTk9UIE5VTEwgQU5EIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvRGVzdGluYXRpb24gSVMgTk9UIE5VTEwgIgorICAgICJVTklPTiBBTEwgU0VMRUNUICosIGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlIGFzIG1pblZhbCBGUk9NIEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBXSEVSRSBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIElT
IE5VTEwgIgorICAgICJVTklPTiBBTEwgU0VMRUNUICosIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb24gYXMgbWluVmFsIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
IFdIRVJFIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIElTIE5VTEwgT1JERVIgQlkgbWluVmFs
Il9zOworY29uc3RleHByIGF1dG8gYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvbnNRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50Il9zOworY29uc3RleHByIGF1dG8gY2xlYXJBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJERUxFVEUgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEIExJS0UgPyBPUiBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCBMSUtFID8iX3M7Citjb25zdGV4cHIgYXV0byBjbGVhclVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEIExJS0Ug
PyBPUiBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBMSUtFID8iX3M7Citjb25zdGV4cHIgYXV0byBj
bGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIkRFTEVURSBGUk9NIFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFID8gPiB0aW1lT2ZBZENsaWNr
Il9zOworY29uc3RleHByIGF1dG8gbWFya1JlcG9ydEFzU2VudFRvU291cmNlUXVlcnkgPSAiVVBE
QVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9T
ZW5kVG9Tb3VyY2UgPSBudWxsIFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIG1hcmtSZXBvcnRBc1Nl
bnRUb0Rlc3RpbmF0aW9uUXVlcnkgPSAiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiA9IG51bGwgV0hFUkUg
c291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9z
OworY29uc3RleHByIGF1dG8gZWFybGllc3RUaW1lc1RvU2VuZFF1ZXJ5ID0gIlNFTEVDVCBlYXJs
aWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBG
Uk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9t
YWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIg
YXV0byBkb21haW5JREZyb21TdHJpbmdRdWVyeSA9ICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBQQ01P
YnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOworY29uc3RleHBy
IGF1dG8gZG9tYWluU3RyaW5nRnJvbURvbWFpbklEUXVlcnkgPSAiU0VMRUNUIHJlZ2lzdHJhYmxl
RG9tYWluIEZST00gUENNT2JzZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsKK2Nv
bnN0ZXhwciBhdXRvIGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0g
IkNSRUFURSBUQUJMRSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgorICAg
ICJzb3VyY2VTaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQgSU5URUdFUiBOT1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgorICAg
ICJ0aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhU
LCBrZXlJRCBURVhULCBGT1JFSUdOIEtFWShzb3VyY2VTaXRlRG9tYWluSUQpICIKKyAgICAiUkVG
RVJFTkNFUyBQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBG
T1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCisgICAgIlBD
TU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOworY29uc3Rl
eHByIGF1dG8gY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFU
RSBUQUJMRSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCIKKyAgICAic291cmNl
U2l0ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIElO
VEVHRVIgTk9UIE5VTEwsIHNvdXJjZUlEIElOVEVHRVIgTk9UIE5VTEwsICIKKyAgICAiYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSBJTlRFR0VSIE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5PVCBO
VUxMLCB0aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsICIKKyAgICAiZWFybGllc3RUaW1lVG9T
ZW5kVG9Tb3VyY2UgUkVBTCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQs
IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gUkVBTCwgIgorICAgICJGT1JFSUdOIEtF
WShzb3VyY2VTaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgUENNT2JzZXJ2ZWREb21haW5zKGRvbWFp
bklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgRk9SRUlHTiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQpIFJFRkVSRU5DRVMgIgorICAgICJQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERF
TEVURSBDQVNDQURFKSJfczsKK2NvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4VW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBO
T1QgRVhJU1RTIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50X3NvdXJjZVNpdGVE
b21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21haW5JRCBvbiBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQgKSJfczsKK2NvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEIG9uIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAo
IHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgKSJfczsKK2NvbnN0
ZXhwciBhdXRvIGNyZWF0ZVBDTU9ic2VydmVkRG9tYWluID0gIkNSRUFURSBUQUJMRSBQQ01PYnNl
cnZlZERvbWFpbnMgKCIKKyAgICAiZG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgcmVnaXN0
cmFibGVEb21haW4gVEVYVCBOT1QgTlVMTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCkiX3M7Citj
b25zdGV4cHIgYXV0byBpbnNlcnRPYnNlcnZlZERvbWFpblF1ZXJ5ID0gIklOU0VSVCBJTlRPIFBD
TU9ic2VydmVkRG9tYWlucyAocmVnaXN0cmFibGVEb21haW4pIFZBTFVFUyAoPykiX3M7CisKK0Rh
dGFiYXNlOjpEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCisgICAgOiBE
YXRhYmFzZVV0aWxpdGllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgInBjbS5kYiJfcykpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgb3BlbkRhdGFiYXNlKCk7Cit9CisKK0RhdGFiYXNlOjp+RGF0YWJhc2UoKQor
eworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworfQorCitib29sIERhdGFiYXNlOjpj
cmVhdGVTY2hlbWEoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
aWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVBDTU9ic2VydmVkRG9tYWluKSkg
eworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgUENNT2JzZXJ2ZWREb21haW5z
IHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UubGFzdEVycm9yKCksIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBj
cmVhdGUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUgaW4gZGF0YWJh
c2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0
YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50IHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fZGF0
YWJhc2UubGFzdEVycm9yKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KGNyZWF0ZVVuaXF1ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCisg
ICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4QXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgeworICAgICAgICBMT0dfRVJST1IoIkVy
cm9yIGNyZWF0aW5nIGluZGV4ZXMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmlidXRpb25UeXBlKQor
eworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byB0cmFuc2FjdGlv
blNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CisKKyAgICBhdXRvIHNvdXJj
ZUlEID0gZW5zdXJlRG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICBhdXRvIGF0dHJpYnV0aW9uRGVzdGluYXRpb25JRCA9IGVuc3VyZURvbWFp
bklEKGF0dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBpZiAoIXNvdXJjZUlEIHx8ICFhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uSUQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8mIHNvdXJjZVVubGlua2FibGVUb2tlbiA9IGF0dHJpYnV0aW9uLnNv
dXJjZVVubGlua2FibGVUb2tlbigpOworICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKKyAgICAgICAg
YXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCku
ZGF0YSA6IC0xOworICAgICAgICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb24uYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZh
bHVlKCkucHJpb3JpdHkgOiAtMTsKKyAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLnNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA/
IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9TZW5kLnZhbHVl
KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7CisgICAgICAgIGF1dG8gZGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLmRlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5kZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZC52YWx1ZSgpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSA6IC0xOworCisgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBpbnNlcnRpbmcgYW4g
YXR0cmlidXRlZCBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IHZhbHVlIGludG8gdGhlIGRhdGFi
YXNlIHdpdGhvdXQgdmFsaWQgcmVwb3J0IHRpbWVzLgorICAgICAgICBBU1NFUlQoc291cmNlRWFy
bGllc3RUaW1lVG9TZW5kICE9IC0xICYmIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kICE9
IC0xKTsKKworICAgICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudChpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSk7CisgICAg
ICAgIGlmICghc3RhdGVtZW50CisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
KnNvdXJjZUlEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZElu
dCgyLCAqYXR0cmlidXRpb25EZXN0aW5hdGlvbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAg
IHx8IHN0YXRlbWVudC0+YmluZEludCgzLCBhdHRyaWJ1dGlvbi5zb3VyY2VJRCgpLmlkKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCg0LCBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+Ymlu
ZEludCg1LCBwcmlvcml0eSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQt
PmJpbmREb3VibGUoNiwgYXR0cmlidXRpb24udGltZU9mQWRDbGljaygpLnNlY29uZHNTaW5jZUVw
b2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJp
bmREb3VibGUoNywgc291cmNlRWFybGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoOCwgc291cmNlVW5saW5rYWJsZVRva2VuID8g
c291cmNlVW5saW5rYWJsZVRva2VuLT50b2tlbkJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9
IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg5LCBzb3VyY2VV
bmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnNpZ25hdHVyZUJhc2U2NFVS
TCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50
LT5iaW5kVGV4dCgxMCwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRv
a2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAg
ICAgICAgfHwgc3RhdGVtZW50LT5iaW5kRG91YmxlKDExLCBkZXN0aW5hdGlvbkVhcmxpZXN0VGlt
ZVRvU2VuZCkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3Ig
bWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoYXR0cmlidXRpb25UeXBlID09IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOworCisg
ICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoaW5zZXJ0VW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSk7CisgICAgaWYgKCFzdGF0ZW1l
bnQKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VJRCkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgyLCAqYXR0cmlidXRpb25EZXN0aW5h
dGlvbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDMsIGF0
dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1l
bnQtPmJpbmREb3VibGUoNCwgYXR0cmlidXRpb24udGltZU9mQWRDbGljaygpLnNlY29uZHNTaW5j
ZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+Ymlu
ZFRleHQoNSwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT50
b2tlbkJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBz
dGF0ZW1lbnQtPmJpbmRUZXh0KDYsIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlu
a2FibGVUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoNywgc291cmNlVW5saW5rYWJsZVRv
a2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5n
KCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIiVwIC0gRGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50IGluc2VydFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBEYXRhYmFzZTo6
bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVz
dGluZygpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzY29w
ZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9zZXRVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFN0YXRlbWVudCwgc2V0VW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRRdWVyeSwgIm1hcmtBbGxVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmciX3MpOworCisgICAgaWYg
KCFzY29wZWRTdGF0ZW1lbnQgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
ICIlcCAtIERhdGFiYXNlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3N0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPERhdGFiYXNl
OjpVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8RGF0
YWJhc2U6OkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IERhdGFiYXNlOjpmaW5k
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRl
KQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc291cmNlU2l0
ZURvbWFpbklEID0gZG9tYWluSUQoc291cmNlU2l0ZS5yZWdpc3RyYWJsZURvbWFpbik7CisgICAg
YXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGRlc3RpbmF0aW9uU2l0ZS5y
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQpOworCisgICAgYXV0byBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVk
U3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZmluZFVuYXR0cmlidXRlZFN0YXRl
bWVudCwgZmluZFVuYXR0cmlidXRlZFF1ZXJ5LCAiZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50
Il9zKTsKKyAgICBpZiAoIWZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQKKyAgICAgICAg
fHwgZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0
ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgZmluZFVuYXR0cmlidXRlZFNjb3Bl
ZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElU
RV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIiVwIC0gRGF0YWJhc2U6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kVW5hdHRy
aWJ1dGVkUXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKworICAgIGF1dG8gZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlz
LT5zY29wZWRTdGF0ZW1lbnQobV9maW5kQXR0cmlidXRlZFN0YXRlbWVudCwgZmluZEF0dHJpYnV0
ZWRRdWVyeSwgImZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7CisgICAgaWYgKCFmaW5k
QXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBmaW5kQXR0cmlidXRlZFNjb3Bl
ZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRl
c3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpmaW5kUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgZmluZEF0dHJpYnV0ZWRRdWVyeSwgZXJyb3IgbWVzc2FnZTog
JSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25h
bDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gdW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgaWYgKGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQorICAgICAgICB1bmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCA9IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2Uo
ZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OworICAgIGlmIChmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpID09IFNRTElURV9ST1cpCisgICAgICAgIGF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCA9IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoZmluZEF0dHJp
YnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih1bmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KTsKK30KKworc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gRGF0YWJhc2U6OmF0dHJpYnV0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIC8vIFdlIHNob3VsZCBhbHdheXMgY2xlYXIgZXhwaXJlZCBjbGlja3MgZnJvbSB0aGUg
ZGF0YWJhc2UgYmVmb3JlIHNjaGVkdWxpbmcgYW4gYXR0cmlidXRpb24uCisgICAgY2xlYXJFeHBp
cmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICBpZiAoIWF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIC8qCisgICAgICAgICAvLyBGSVhNRTogTWFrZSBh
IHdheSB0byBicm9hZGNhc3QgZGVidWcgaW5mbywgcHJvYmFibHkgdGhyb3VnaCB0aGUgcmV0dXJu
IHZhbHVlLgorICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCBh
biBpbnZhbGlkIGF0dHJpYnV0aW9uLiIpOworICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gaW52YWxp
ZCBhdHRyaWJ1dGlvbi4iX3MpOworICAgICAgICB9CisgICAgICAgICAqLworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICAvKgorICAgICAvLyBGSVhNRTogTWFrZSBhIHdh
eSB0byBicm9hZGNhc3QgZGVidWcgaW5mbywgcHJvYmFibHkgdGhyb3VnaCB0aGUgcmV0dXJuIHZh
bHVlLgorICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7CisgICAgICAgIGF1
dG8gZGF0YSA9IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGF0YTsKKyAgICAgICAgYXV0byBwcmlv
cml0eSA9IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEucHJpb3JpdHk7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3QgYW4gYXR0cmlidXRpb24gd2l0
aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAle3B1
YmxpY311LiIsIGRhdGEsIHByaW9yaXR5KTsKKyAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxl
dmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gR290IGFu
IGF0dHJpYnV0aW9uIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRhLCAi
JyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJy4iX3MpKTsKKyAgICB9CisqLworICAg
IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRh
IHNlY29uZHNVbnRpbFNlbmQgeyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworCisgICAg
YXV0byBhdHRyaWJ1dGlvbiA9IGZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRl
LCBkZXN0aW5hdGlvblNpdGUpOworICAgIGF1dG8mIHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQgPSBh
dHRyaWJ1dGlvbi5maXJzdDsKKyAgICBhdXRvJiBwcmV2aW91c2x5QXR0cmlidXRlZCA9IGF0dHJp
YnV0aW9uLnNlY29uZDsKKworICAgIGlmIChwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKSB7CisgICAg
ICAgIC8vIEFsd2F5cyBjb252ZXJ0IHRoZSBwZW5kaW5nIGF0dHJpYnV0aW9uIGFuZCByZW1vdmUg
aXQgZnJvbSB0aGUgdW5hdHRyaWJ1dGVkIG1hcC4KKyAgICAgICAgcmVtb3ZlVW5hdHRyaWJ1dGVk
KCpwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKTsKKyAgICAgICAgc2Vjb25kc1VudGlsU2VuZCA9IHBy
ZXZpb3VzbHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVU
b1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7CisKKyAgICAgICAgLy8gV2Ug
c2hvdWxkIGFsd2F5cyBoYXZlIGEgdmFsaWQgc2Vjb25kc1VudGlsU2VuZCB2YWx1ZSBmb3IgYSBw
cmV2aW91c2x5VW5hdHRyaWJ1dGVkIHZhbHVlIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG5vIHByZXZp
b3VzIGF0dHJpYnV0aW9uIHdpdGggYSBoaWdoZXIgcHJpb3JpdHkuCisgICAgICAgIGlmICghc2Vj
b25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkgeworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICB9CisvKgorIC8vIEZJWE1FOiBNYWtlIGEgd2F5IHRvIGJyb2FkY2FzdCBk
ZWJ1ZyBpbmZvLCBwcm9iYWJseSB0aHJvdWdoIHRoZSByZXR1cm4gdmFsdWUuCisgICAgICAgIGlm
IChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQ29udmVydGVkIGEgc3RvcmVkIGFkIGNs
aWNrIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0
eTogJXtwdWJsaWN9dS4iLCBkYXRhLCBwcmlvcml0eSk7CisgICAgICAgICAgICBkZWJ1Z0Jyb2Fk
Y2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50XSBDb252ZXJ0ZWQgYSBzdG9yZWQgYWQgY2xpY2sgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2Vy
IGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInLiJf
cykpOworICAgICAgICB9CisgKi8KKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBwcmV2aW91
cyBhdHRyaWJ1dGlvbiwgb3IgdGhlIG5ldyBhdHRyaWJ1dGlvbiBoYXMgaGlnaGVyIHByaW9yaXR5
LCBpbnNlcnQvdXBkYXRlIHRoZSBkYXRhYmFzZS4KKyAgICAgICAgaWYgKCFwcmV2aW91c2x5QXR0
cmlidXRlZCB8fCBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkLnZhbHVlKCkuaGFzSGlnaGVyUHJpb3Jp
dHlUaGFuKCpwcmV2aW91c2x5QXR0cmlidXRlZCkpIHsKKyAgICAgICAgICAgIGluc2VydFByaXZh
dGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoKnByZXZpb3VzbHlVbmF0dHJpYnV0ZWQpLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7CisKKyAgICAg
ICAgICAgIC8qCisgICAgICAgICAgICAgLy8gRklYTUU6IE1ha2UgYSB3YXkgdG8gYnJvYWRjYXN0
IGRlYnVnIGluZm8sIHByb2JhYmx5IHRocm91Z2ggdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIlJlcGxhY2VkIGEgcHJl
dmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlv
biBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dSBiZWNhdXNlIGl0IGhh
ZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOworICAgICAgICAgICAgICAgIGRl
YnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIFJlcGxhY2VkIGEgcHJldmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0
aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICIn
IGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInIGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBw
cmlvcml0eS4iX3MpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAqLworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChwcmV2aW91c2x5QXR0cmlidXRlZCkgeworICAgICAgICAvLyBJZiB3
ZSBoYXZlIG5vIG5ldyBhdHRyaWJ1dGlvbiwgcmUtYXR0cmlidXRlIHRoZSBvbGQgb25lIHRvIHJl
c3BlY3QgdGhlIG5ldyBwcmlvcml0eSwgYnV0IG9ubHkgaWYgdGhpcyByZXBvcnQgaGFzCisgICAg
ICAgIC8vIG5vdCBiZWVuIHNlbnQgdG8gdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBzaXRlIHll
dC4KKyAgICAgICAgaWYgKCFwcmV2aW91c2x5QXR0cmlidXRlZC52YWx1ZSgpLmhhc1ByZXZpb3Vz
bHlCZWVuUmVwb3J0ZWQoKSkgeworICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0g
cHJldmlvdXNseUF0dHJpYnV0ZWQudmFsdWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVU
b1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7CisgICAgICAgICAgICBpZiAo
IXNlY29uZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgaW5zZXJ0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgqcHJldmlvdXNseUF0dHJpYnV0ZWQpLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7CisKKyAgICAg
ICAgICAgIC8qCisgICAgICAgICAgICAgLy8gRklYTUU6IE1ha2UgYSB3YXkgdG8gYnJvYWRjYXN0
IGRlYnVnIGluZm8sIHByb2JhYmx5IHRocm91Z2ggdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIlJlLWNvbnZlcnRlZCBh
biBhZCBjbGljayB3aXRoIGEgbmV3IG9uZSB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTog
JXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUgYmVjYXVzZSBpdCBoYWQgaGlnaGVy
IHByaW9yaXR5LiIsIGRhdGEsIHByaW9yaXR5KTsKKyAgICAgICAgICAgICAgICBkZWJ1Z0Jyb2Fk
Y2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50XSBSZS1jb252ZXJ0ZWQgYW4gYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1
dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJp
b3JpdHksICInJyBiZWNhdXNlIGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIl9zKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgKi8KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghc2Vj
b25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBzZWNvbmRzVW50aWxTZW5kOworfQor
CitXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBEYXRhYmFzZTo6YnVpbGRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqIHN0
YXRlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmlidXRp
b25UeXBlKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc291
cmNlU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNv
bHVtbkludCgwKSk7CisgICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW4gPSBnZXREb21haW5T
dHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMSkpOworICAgIGF1dG8gc291
cmNlSUQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCgyKTsKKyAgICBhdXRvIHRpbWVPZkFkQ2xpY2sg
PSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSg1KSA6IHN0YXRlbWVudC0+
Y29sdW1uRG91YmxlKDMpOworICAgIGF1dG8gdG9rZW4gPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1l
bnQtPmNvbHVtblRleHQoNykgOiBzdGF0ZW1lbnQtPmNvbHVtblRleHQoNCk7CisgICAgYXV0byBz
aWduYXR1cmUgPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtblRleHQoOCkgOiBzdGF0
ZW1lbnQtPmNvbHVtblRleHQoNSk7CisgICAgYXV0byBrZXlJRCA9IGF0dHJpYnV0aW9uVHlwZSA9
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0
YXRlbWVudC0+Y29sdW1uVGV4dCg5KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg2KTsKKworICAg
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IGF0dHJpYnV0aW9uKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VJRChzb3VyY2VJRCksIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc291cmNlU2l0ZURvbWFpbikpLCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNp
dGUoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFp
blN0cmluZyhkZXN0aW5hdGlvblNpdGVEb21haW4pKSwgeyB9LCB7IH0sIFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyh0aW1lT2ZBZENsaWNrKSk7CisgICAgCisgICAgaWYgKGF0dHJpYnV0aW9uVHlw
ZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkg
eworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBzdGF0ZW1lbnQtPmNvbHVt
bkludCgzKTsKKyAgICAgICAgYXV0byBwcmlvcml0eSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDQp
OworICAgICAgICBhdXRvIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID0gc3RhdGVtZW50
LT5jb2x1bW5Eb3VibGUoNik7CisgICAgICAgIGF1dG8gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmRWYWx1ZSA9IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDEwKTsKKworICAgICAgICBpZiAo
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSAhPSAtMSkKKyAgICAgICAgICAgIGF0dHJpYnV0aW9uLnNl
dEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UHJpb3JpdHkocHJpb3JpdHkp
IH0pOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHNvdXJjZUVhcmxpZXN0VGlt
ZVRvU2VuZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGVzdGluYXRpb25FYXJs
aWVzdFRpbWVUb1NlbmQ7CisgICAgICAgIAorICAgICAgICAvLyBBIHZhbHVlIG9mIDAuMCBpbmRp
Y2F0ZXMgdGhhdCB0aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8gdGhlIHJlc3BlY3RpdmUgc2l0
ZS4KKyAgICAgICAgaWYgKHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID4gMC4wKQorICAg
ICAgICAgICAgc291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZFZhbHVlKTsKKworICAgICAgICBpZiAoZGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA+IDAuMCkKKyAgICAgICAgICAgIGRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUpOworCisgICAgICAgIGF0dHJpYnV0aW9uLnNldFRp
bWVzVG9TZW5kKHsgc291cmNlRWFybGllc3RUaW1lVG9TZW5kLCBkZXN0aW5hdGlvbkVhcmxpZXN0
VGltZVRvU2VuZCB9KTsKKyAgICB9CisKKyAgICBhdHRyaWJ1dGlvbi5zZXRTb3VyY2VTZWNyZXRU
b2tlbih7IHRva2VuLCBzaWduYXR1cmUsIGtleUlEIH0pOworCisgICAgcmV0dXJuIGF0dHJpYnV0
aW9uOworfQorCit2b2lkIERhdGFiYXNlOjpyZW1vdmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24u
c291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0
cmFibGVEb21haW4pOworICAgIGlmICghc291cmNlU2l0ZURvbWFpbklEIHx8ICFkZXN0aW5hdGlv
blNpdGVEb21haW5JRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzY29wZWRTdGF0ZW1l
bnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQs
IHJlbW92ZVVuYXR0cmlidXRlZFF1ZXJ5LCAicmVtb3ZlVW5hdHRyaWJ1dGVkIl9zKTsKKworICAg
IGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZElu
dCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAg
LSBEYXRhYmFzZTo6cmVtb3ZlVW5hdHRyaWJ1dGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK1ZlY3RvcjxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4gRGF0YWJhc2U6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBh
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fYWxsQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBhbGxBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJp
bmciX3MpOworCisgICAgaWYgKCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFz
ZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGlvbnM7
CisgICAgd2hpbGUgKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKQorICAgICAgICBhdHRyaWJ1dGlvbnMuYXBwZW5kKGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tRGF0YWJhc2UoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpKTsKKworICAgIHJl
dHVybiBhdHRyaWJ1dGlvbnM7Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6cHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUb1N0cmluZygpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCAoU0VMRUNUIENPVU5UKCopIEZST00gVW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDEsIChTRUxFQ1QgQ09VTlQoKikgRlJPTSBB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDIiX3MpOworICAgIGlmICgh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzIHx8IHByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGF0YUV4aXN0cy0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAg
aWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmNvbHVtbkludCgwKSAmJiAh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzLT5jb2x1bW5JbnQoMSkpCisgICAgICAg
IHJldHVybiAiXG5ObyBzdG9yZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBkYXRhLlxuIl9z
OworCisgICAgYXV0byB1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRT
dGF0ZW1lbnQobV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uc1N0YXRlbWVudCwgYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvbnNRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmciX3MpOworCisg
ICAgaWYgKCF1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB1bmF0dHJpYnV0ZWROdW1iZXIg
PSAwOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICB3aGlsZSAodW5hdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICBjb25zdCBj
aGFyKiBwcmVmaXggPSB1bmF0dHJpYnV0ZWROdW1iZXIgPyAiIiA6ICJVbmF0dHJpYnV0ZWQgUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudHM6IjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4
LCAiXG5XZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAiLCArK3VuYXR0cmlidXRlZE51
bWJlciwgJ1xuJywKKyAgICAgICAgICAgIGF0dHJpYnV0aW9uVG9TdHJpbmcodW5hdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VHlwZTo6VW5hdHRyaWJ1dGVkKSk7CisgICAgfQorCisgICAgYXV0byBhdHRyaWJ1dGVkU2NvcGVk
U3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fYWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmciX3MpOworCisgICAg
aWYgKCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6cHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb1N0cmluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgdW5zaWduZWQgYXR0cmlidXRlZE51bWJlciA9IDA7Cisg
ICAgd2hpbGUgKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KSB7CisgICAgICAgIGlmICghYXR0cmlidXRlZE51bWJlcikKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHVuYXR0cmlidXRlZE51bWJlciA/ICJcbiIgOiAiIiwgIkF0dHJpYnV0ZWQgUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudHM6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbldlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50ICIsICsrYXR0cmlidXRlZE51bWJlciArIHVuYXR0
cmlidXRlZE51bWJlciwgJ1xuJywKKyAgICAgICAgICAgIGF0dHJpYnV0aW9uVG9TdHJpbmcoYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKK30KKworU3RyaW5nIERhdGFiYXNlOjphdHRyaWJ1dGlvblRvU3RyaW5nKFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJv
bURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDApKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9u
U2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNvbHVt
bkludCgxKSk7CisgICAgYXV0byBzb3VyY2VJRCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDIpOwor
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCJTb3VyY2Ug
c2l0ZTogIiwgc291cmNlU2l0ZURvbWFpbiwgIlxuQXR0cmlidXRlIG9uIHNpdGU6ICIsIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbiwgIlxuU291cmNlIElEOiAiLCBzb3VyY2VJRCk7CisKKyAgICBpZiAo
YXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
OjpBdHRyaWJ1dGVkKSB7CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0
YXRlbWVudC0+Y29sdW1uSW50KDMpOworICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGVtZW50
LT5jb2x1bW5JbnQoNCk7CisgICAgICAgIGF1dG8gZWFybGllc3RUaW1lVG9TZW5kID0gc3RhdGVt
ZW50LT5jb2x1bW5JbnQoNik7CisKKyAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEg
IT0gLTEpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbkF0dHJpYnV0aW9uIHRyaWdn
ZXIgZGF0YTogIiwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgIlxuQXR0cmlidXRpb24gcHJpb3Jp
dHk6ICIsIHByaW9yaXR5LCAiXG5BdHRyaWJ1dGlvbiBlYXJsaWVzdCB0aW1lIHRvIHNlbmQ6ICIp
OworICAgICAgICAgICAgaWYgKGVhcmxpZXN0VGltZVRvU2VuZCA9PSAtMSkKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiTm90IHNldCIpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKGVhcmxpZXN0VGltZVRvU2VuZCkgLSBXYWxsVGltZTo6bm93KCk7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKHNlY29uZHNVbnRpbFNlbmQgPj0gMjRfaCAmJiBzZWNvbmRzVW50
aWxTZW5kIDw9IDQ4X2gpID8gIldpdGhpbiAyNC00OCBob3VycyIgOiAiT3V0c2lkZSAyNC00OCBo
b3VycyIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJcbk5vIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuTm8gYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhLiIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKK30KKwordm9pZCBEYXRhYmFzZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBhdXRvIGV4cGlyZWRUaW1lVG9TZW5kID0gV2FsbFRpbWU6Om5vdygpIC0g
MV9oOworCisgICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVj
ZXNzYXJ5KCk7CisKKyAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50
ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9ID8iX3MpOwor
ICAgIGF1dG8gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiA9IG51bGwiX3MpOwor
CisgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudAorICAgICAgICB8
fCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudC0+YmluZEludCgxLCBleHBpcmVk
VGltZVRvU2VuZC5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAoIWVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb25TdGF0ZW1lbnQgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRl
bWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6bWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJh
c2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJs
ZURvbWFpbj4gZG9tYWluKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IC8vIERlZmF1bHQgdG8gY2xlYXIgYWxsIGVudHJpZXMgaWYgbm8gZG9tYWluIGlzIHNwZWNpZmll
ZC4KKyAgICBTdHJpbmcgYmluZFBhcmFtZXRlciA9ICIlIjsKKyAgICBpZiAoZG9tYWluKSB7Cisg
ICAgICAgIGF1dG8gZG9tYWluSURUb01hdGNoID0gZG9tYWluSUQoKmRvbWFpbik7CisgICAgICAg
IGlmICghZG9tYWluSURUb01hdGNoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGJp
bmRQYXJhbWV0ZXIgPSBTdHJpbmc6Om51bWJlcigqZG9tYWluSURUb01hdGNoKTsKKyAgICB9CisK
KyAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3Nhcnko
KTsKKworICAgIGF1dG8gY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5z
Y29wZWRTdGF0ZW1lbnQobV9jbGVhclVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RhdGVtZW50LCBjbGVhclVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnks
ICJjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKworICAgIGlmICghY2xlYXJVbmF0
dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgYmlu
ZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpjbGVhclBy
aXZhdGVDbGlja01lYXN1cmVtZW50IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAg
ICBhdXRvIGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRl
bWVudChtX2NsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBj
bGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAiY2xlYXJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCJfcyk7CisKKyAgICBpZiAoIWNsZWFyQXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudAorICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRU
ZXh0KDEsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSworICAgICAgICB8fCBjbGVhckF0dHJp
YnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
Y2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJhc2U6OmNsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBhdXRvIGV4cGlyYXRpb25UaW1lRnJhbWUgPSBXYWxsVGltZTo6bm93KCkg
LSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6bWF4QWdlKCk7CisgICAgYXV0byBz
Y29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jbGVhckV4cGlyZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRRdWVyeSwgImNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsK
KworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+
YmluZERvdWJsZSgxLCBleHBpcmF0aW9uVGltZUZyYW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01l
YXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KK30KKwordm9pZCBEYXRhYmFzZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkK
K3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHRpbWVzVG9TZW5k
ID0gZWFybGllc3RUaW1lc1RvU2VuZChhdHRyaWJ1dGlvbik7CisgICAgYXV0byBzb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmQgPSB0aW1lc1RvU2VuZC5maXJzdDsKKyAgICBhdXRvIGRlc3RpbmF0aW9u
RWFybGllc3RUaW1lVG9TZW5kID0gdGltZXNUb1NlbmQuc2Vjb25kOworCisgICAgYXV0byBzb3Vy
Y2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0
cmFibGVEb21haW4pOworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5J
RChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisKKyAg
ICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCisg
ICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAoYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkg
eworICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5k
cG9pbnQ6OlNvdXJjZToKKyAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpIHsK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSgqc291cmNlU2l0ZURv
bWFpbklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOworICAgICAgICBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0
aW9uOgorICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSB7CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbigqc291cmNlU2l0ZURv
bWFpbklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOworICAgICAgICBkZXN0aW5hdGlvbkVh
cmxpZXN0VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBEb24ndCBj
bGVhciB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGRhdGFiYXNlIHVubGVzcyBpdCBoYXMgYmVlbiBy
ZXBvcnRlZCBib3RoIHRvIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHNpdGUuCisgICAgaWYg
KGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIHx8IHNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0
aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3MpOworICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU3Rh
dGVtZW50CisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+YmluZEludCgxLCAq
c291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgY2xlYXJBdHRyaWJ1
dGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Y2xlYXJTZW50QXR0cmlidXRpb24gZmFpbGVkIHRvIHN0
ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K30KKwordm9pZCBEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oU291cmNl
RG9tYWluSUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fbWFya1JlcG9y
dEFzU2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQsIG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0
aW9uUXVlcnksICJtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbiJfcyk7CisKKyAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
c291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6
bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19M
T0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50
VG9Tb3VyY2UoU291cmNlRG9tYWluSUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRv
bWFpbklEIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVt
ZW50KG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVtZW50LCBtYXJrUmVwb3J0QXNTZW50
VG9Tb3VyY2VRdWVyeSwgIm1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSJfcyk7CisKKyAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
c291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6
bWFya1JlcG9ydEFzU2VudFRvU291cmNlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NU
UklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KKworc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OlNv
dXJjZUVhcmxpZXN0VGltZVRvU2VuZD4sIHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OkRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gRGF0YWJhc2U6OmVhcmxpZXN0VGltZXNUb1NlbmQoY29u
c3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklE
ID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24u
ZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKCFzb3VyY2VT
aXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQorICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworCisgICAgYXV0byBz
Y29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9lYXJsaWVzdFRpbWVzVG9T
ZW5kU3RhdGVtZW50LCBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnksICJlYXJsaWVzdFRpbWVzVG9T
ZW5kIl9zKTsKKworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsICJEYXRhYmFzZTo6ZWFybGllc3RUaW1lc1RvU2VuZCwgZXJyb3IgbWVzc2FnZTog
JSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJj
ZUVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2U7CisgICAgc3Rk
OjpvcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9T
ZW5kVG9EZXN0aW5hdGlvbjsKKyAgICAKKyAgICAvLyBBIHZhbHVlIG9mIDAuMCBpbmRpY2F0ZXMg
dGhhdCB0aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8gdGhlIHJlc3BlY3RpdmUgc2l0ZS4KKyAg
ICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMCkgPiAwLjApCisgICAgICAgIGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUo
MCk7CisgICAgCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDEpID4gMC4w
KQorICAgICAgICBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gc2NvcGVkU3RhdGVt
ZW50LT5jb2x1bW5Eb3VibGUoMSk7CisgICAgCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9u
KTsKK30KKworc3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6RG9tYWluSUQ+IERhdGFiYXNlOjpkb21h
aW5JRChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0
aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQsIGRvbWFp
bklERnJvbVN0cmluZ1F1ZXJ5LCAiZG9tYWluSUQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVt
ZW50IHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsICIlcCAtIERhdGFiYXNlOjpkb21haW5JREZyb21TdHJpbmcgZmFpbGVkLiBFcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9CisgICAgCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgp
ICE9IFNRTElURV9ST1cpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6
Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERvbWFpbklEIGRvbWFpbklEKQoreworICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gcmVzdWx0ID0gZW1wdHlTdHJpbmco
KTsKKyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVu
dChtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudCwgZG9tYWluU3RyaW5nRnJvbURv
bWFpbklEUXVlcnksICJnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQiX3MpOworICAgIGlmICgh
c2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCBk
b21haW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURv
bWFpbklELiBTdGF0ZW1lbnQgZmFpbGVkIHRvIHByZXBhcmUgb3IgYmluZCwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIAorICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKQorICAgICAgICByZXN1bHQgPSBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVu
dC0+Y29sdW1uVGV4dCgwKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGQ6Om9w
dGlvbmFsPERhdGFiYXNlOjpEb21haW5JRD4gRGF0YWJhc2U6OmVuc3VyZURvbWFpbklEKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAgaWYgKGF1dG8gZXhp
c3RpbmdJRCA9IGRvbWFpbklEKGRvbWFpbikpCisgICAgICAgIHJldHVybiBleGlzdGluZ0lEOwor
CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9pbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudCwgaW5zZXJ0T2JzZXJ2ZWREb21haW5RdWVyeSwgImlu
c2VydE9ic2VydmVkRG9tYWluIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAg
ICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FM
SVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCAiJXAgLSBEYXRhYmFzZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGJpbmQs
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Omluc2VydE9ic2VydmVkRG9tYWluIGZh
aWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1cm4gZG9t
YWluSUQoZG9tYWluKTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmEwZmJmNTkyN2M5ZDk1OWQ2
Yjk3N2NlNDRhZWE1N2ZjNDA2NGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhdGFiYXNlLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRGF0YWJhc2VVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00g
eworCisvLyBUaGlzIGlzIGNyZWF0ZWQsIHVzZWQsIGFuZCBkZXN0cm95ZWQgb24gdGhlIFN0b3Jl
J3MgcXVldWUuCitjbGFzcyBEYXRhYmFzZSA6IHB1YmxpYyBEYXRhYmFzZVV0aWxpdGllcyB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KTsKKyAgICB2aXJ0dWFsIH5EYXRhYmFzZSgpOworICAg
IAorICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGUpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IGF0dHJpYnV0ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VT
aXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEmJik7CisgICAgU3RyaW5nIHByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9TdHJpbmcoKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIHZvaWQgY2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPik7CisgICAgdm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgp
OworICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQpOworCisgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisgICAgdm9pZCBtYXJrQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKKworcHJp
dmF0ZToKKyAgICB1c2luZyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OworICAgIHVzaW5nIEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Owor
ICAgIHVzaW5nIERvbWFpbklEID0gdW5zaWduZWQ7CisgICAgdXNpbmcgU291cmNlRG9tYWluSUQg
PSB1bnNpZ25lZDsKKyAgICB1c2luZyBEZXN0aW5hdGlvbkRvbWFpbklEID0gdW5zaWduZWQ7Cisg
ICAgdXNpbmcgU291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gZG91YmxlOworICAgIHVzaW5nIERl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gZG91YmxlOworCisgICAgYm9vbCBjcmVhdGVT
Y2hlbWEoKSBmaW5hbDsKKyAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50Pj4gZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJik7Cisg
ICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYnVpbGRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CisgICAgdm9pZCByZW1vdmVVbmF0dHJpYnV0
ZWQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmKTsKKyAgICBTdHJpbmcgYXR0cmli
dXRpb25Ub1N0cmluZyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CisgICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9EZXN0
aW5hdGlvbihTb3VyY2VEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCk7CisgICAgdm9pZCBt
YXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWlu
SUQpOworICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZD4sIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ+PiBlYXJsaWVz
dFRpbWVzVG9TZW5kKGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7Cisg
ICAgc3RkOjpvcHRpb25hbDxEb21haW5JRD4gZW5zdXJlRG9tYWluSUQoY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERvbWFpbklEPiBkb21haW5J
RChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIFN0cmluZyBnZXREb21h
aW5TdHJpbmdGcm9tRG9tYWluSUQoRG9tYWluSUQpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFzRXhwaXJlZFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX2ZpbmRVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9maW5kQXR0cmlidXRlZFN0YXRl
bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3Jl
bW92ZVVuYXR0cmlidXRlZFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X2FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVt
ZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xl
YXJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NsZWFyQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4gbV9lYXJsaWVzdFRpbWVzVG9TZW5kU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVt
ZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fbWFy
a1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9kb21haW5T
dHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudD4gbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhlMjExNjY4N2EyMGUzM2U3ZWVmNDgwN2M1ODk1Y2ZlZTJlYjNmNmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCkBAIC0wLDAg
KzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCIKKworI2luY2x1ZGUgIlByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU3VzcGVu
ZGFibGVXb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00g
eworCitTdG9yZTo6U3RvcmUoUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKKyAgICA6IG1fcXVldWUoV1RGTW92ZSh3
b3JrUXVldWUpKQoreworICAgIGlmICghZGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRh
dGFiYXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCldICgpIG11
dGFibGUgeworICAgICAgICAgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8RGF0YWJhc2U+KFdU
Rk1vdmUoZGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCitTdG9y
ZTo6flN0b3JlKCkgPSBkZWZhdWx0OworCisvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHRh
cCBpbnRvIE5ldHdvcmtTZXNzaW9uOjpkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcyBmb3Ig
dGVhcmRvd24uCisvLyBGSVhNRTogTG9vayBpbnRvIFJMUydzIHRyYW5zYWN0aW9uIHRva2Vucy4K
Ky8vIEZJWE1FOiBNaWdyYXRlIGRhdGEgZnJvbSBvbGQgZGF0YWJhc2UuCisKK3ZvaWQgU3RvcmU6
OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQoreworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZSh0YXNrKSk7Cit9CisK
K3ZvaWQgU3RvcmU6OnBvc3RUYXNrUmVwbHkoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcmVwbHkp
Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFdURk1vdmUocmVwbHkpKTsKK30KKwordm9pZCBTdG9yZTo6aW5zZXJ0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRy
aWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmlidXRp
b25UeXBlKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGF0dHJpYnV0aW9uID0gV1RGTW92ZShhdHRyaWJ1dGlvbiksIGF0dHJpYnV0aW9uVHlw
ZV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9k
YXRhYmFzZS0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1dGlv
biksIGF0dHJpYnV0aW9uVHlwZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6Om1hcmtBbGxV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKQor
eworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsK
KyAgICAgICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5tYXJrQWxs
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBz
b3VyY2VTaXRlLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBzb3VyY2VTaXRlID0gc291cmNlU2l0ZS5pc29sYXRlZENvcHko
KSwgZGVzdGluYXRpb25TaXRlID0gZGVzdGluYXRpb25TaXRlLmlzb2xhdGVkQ29weSgpLCBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gc2Vjb25kczsKKyAgICAgICAgaWYgKG1f
ZGF0YWJhc2UpCisgICAgICAgICAgICBzZWNvbmRzID0gbV9kYXRhYmFzZS0+YXR0cmlidXRlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3Zl
KGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgbWlnaHQg
d2FudCB0byBiZSBhbiBpc29sYXRlZENvcHksIHRvbywgaW4gY2FzZSB3ZSBldmVyIGFkZCBhbnl0
aGluZyB0byBBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhIHRoYXQgbmVlZHMgaXQuCisg
ICAgICAgIHBvc3RUYXNrUmVwbHkoW3NlY29uZHMgPSBXVEZNb3ZlKHNlY29uZHMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2Vjb25kcyk7CisgICAgICAgIH0pOworICAgIH0p
OworfQorCit2b2lkIFN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBw
b3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBTdHJpbmcgcmVzdWx0OworICAgICAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAgIG1f
ZGF0YWJhc2UtPnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKTsKKyAgICAgICAgcG9z
dFRhc2tSZXBseShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50PiBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnM7CisgICAgICAgIGlmICht
X2RhdGFiYXNlKQorICAgICAgICAgICAgY29udmVydGVkQXR0cmlidXRpb25zID0gbV9kYXRhYmFz
ZS0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIG5lZWRzIGFuIGlzb2xhdGVkQ29weS4KKyAgICAgICAgcG9zdFRhc2tSZXBseShb
Y29udmVydGVkQXR0cmlidXRpb25zID0gV1RGTW92ZShjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb252ZXJ0ZWRBdHRyaWJ1
dGlvbnMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6Om1hcmtBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1f
ZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5tYXJrQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICAgICAgcG9zdFRhc2tS
ZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKKy8vIEZJWE1F
OiBJIHNob3VsZCBwcm9iYWJseSBhZGQgYSBjb21wbGV0aW9uIGhhbmRsZXIgaGVyZS4KK3ZvaWQg
U3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQoreworICAgIHBvc3RUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgaWYgKG1fZGF0
YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KHN0ZDo6bnVsbG9wdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6OmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNl
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KGRvbWFpbik7CisgICAgfSk7Cit9CisKK3Zv
aWQgU3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKK3sKKyAgICBw
b3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKKyAgICAg
ICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVhckV4cGlyZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbGVh
clNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJp
YnV0aW9uVG9DbGVhciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uUmVwb3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkKK3sKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgaGF2ZSBhbiBpc29sYXRlZENvcHkuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkxMTIgd2Fzbid0IHF1aXRlIGVub3Vn
aC4KKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBh
dHRyaWJ1dGlvblRvQ2xlYXIgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhciksIGF0dHJpYnV0
aW9uUmVwb3J0RW5kcG9pbnRdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQor
ICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShhdHRy
aWJ1dGlvblRvQ2xlYXIpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKKyAgICB9KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZGM1MjQwZDA3YTIyYWQ4ZmJhNjNmYzUyNWIwYjFlNGIwMjE4OTQ3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0g
Y2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgOiBib29sOworCitu
YW1lc3BhY2UgUENNIHsKKworY2xhc3MgRGF0YWJhc2U7CisKK2NsYXNzIFN0b3JlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFN0b3JlPiB7CitwdWJsaWM6CisgICAgU3RvcmUoUmVmPFN1
c3BlbmRhYmxlV29ya1F1ZXVlPiYmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsK
KyAgICB+U3RvcmUoKTsKKworICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViS2l0OjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CisgICAgdm9pZCBhdHRyaWJ1dGVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291
cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YT4pPiYmKTsKKworICAgIC8vIEZJWE1FOiBBZGQgRm9yVGVzdGluZyB0byB0
aGlzIG5hbWUuCisgICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CisgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisgICAgdm9p
ZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKworICAgIHZvaWQgYWxsQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJik7CisgICAgdm9pZCBjbGVhckV4
cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpOworICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7Cisg
ICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCYmIGF0dHJpYnV0aW9uVG9DbGVhciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOworcHJpdmF0ZToKKyAgICB2b2lkIHBvc3RU
YXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0VGFza1JlcGx5KEZ1bmN0aW9u
PHZvaWQoKT4mJik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2U+IG1fZGF0YWJhc2U7
CisgICAgUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuY3BwCmluZGV4IDIxM2NhN2M2YzM1YzA0NjQwY2YxNDE2NGFkY2U4ZTU1ODJhMzVlZjkuLmUx
MjQ1MjY2MTBhZDY0Yjk5ZjE2OTU0ZDI3NDg1ZWE3ZjQ5YjBjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQm
JgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1dGlvbiksIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOworICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuaW5zZXJ0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1dGlvbiksIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOwogI2VuZGlmCiB9CiAKQEAgLTI0
MCw3ICsyNDAsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2ln
bmVkVW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cgogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuaW5zZXJ0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1dGlvbiksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOwogI2VuZGlmCiAgICAgfSk7CiAKQEAgLTI4MSw3
ICsyODEsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRl
KGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbgogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlv
blNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0
YSkgeworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0b3JlKCkuYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwg
ZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvIGF0dHJpYnV0aW9uU2Vjb25kc1Vu
dGlsU2VuZERhdGEpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyU2VudEF0dHJpYnV0aW9uKFByaXZhdGVDbGlj
a01lYXN1cmVtZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
Ci0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyU2VudEF0dHJpYnV0aW9uKFdU
Rk1vdmUoc2VudENvbnZlcnNpb24pLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKKyAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgp
LmNsZWFyU2VudEF0dHJpYnV0aW9uKFdURk1vdmUoc2VudENvbnZlcnNpb24pLCBhdHRyaWJ1dGlv
blJlcG9ydEVuZHBvaW50KTsKICNlbmRpZgogfQogCkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1
ZXN0cygpCiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICByZXR1cm47
CiAKLSAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0byYm
IGF0dHJpYnV0aW9ucykgeworICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmUoKS5hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0byYmIGF0dHJpYnV0aW9u
cykgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBhdXRvIG5leHRUaW1lVG9GaXJlID0gU2Vjb25kczo6aW5maW5pdHkoKTsKQEAgLTQ1NSw3ICs0
NTUsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXIoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1f
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCku
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwogI2VuZGlmCiB9CiAKQEAgLTQ2Niw3ICs0
NjYsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJGb3JSZWdp
c3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbik7Cisg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmUoKS5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oZG9t
YWluKTsKICNlbmRpZgogfQogCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRXhwaXJlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5j
bGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJFeHBpcmVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKICNlbmRpZgogfQogCkBAIC00OTAsNyArNDkwLDcg
QEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJgogICAgIH0KIAogICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKSB7Ci0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9TdHJpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkucHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTUyNyw3ICs1MjcsNyBAQCB2b2lkIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJl
ZEZvclRlc3RpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bWFya0FsbFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkubWFya0Fs
bFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygp
OwogI2VuZGlmCiB9CiAKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcjo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4
cAogICAgIH0KIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNF
eHBpcmVkRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5tYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oCmluZGV4IDQ3M2NlNTM2NjdkZDg4M2RiODFlMmZlNTk5NDI3ZTg1Zjgw
NDYwNGEuLjFjZWFlMTgzMDVhNzY4ODExZWRmM2I2ZjAwZDllMzAyMThkMTY3ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKQogCisjaW5j
bHVkZSAiTGliV2ViUlRDUmVzb2x2ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29y
ay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKaW5kZXggMzA4MDM0Mzg2ZmZj
YjI2OWZlMjliMzE0MDllMTgzMTk4YjJjYWUwMi4uZTE0Zjg3M2I3YzgxN2M3OTdlYzRmM2I1Njgw
YjIxMmUzY2Y2YjlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9z
dEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cgogCiAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CiAgICAgICAgIENGRGF0YVJlZiBkYXRhID0g
KENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRl
eCk7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBJUEFkZHJlc3M6OmZyb21Tb2NrQWRkcklu
NigqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42Kj4oQ0ZEYXRhR2V0
Qnl0ZVB0cihkYXRhKSkpKQorICAgICAgICBpZiAoYXV0byBhZGRyZXNzID0gV2ViQ29yZTo6SVBB
ZGRyZXNzOjpmcm9tU29ja0FkZHJJbjYoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNv
Y2thZGRyX2luNio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpKSkKICAgICAgICAgICAgIGFkZHJl
c3Nlcy51bmNoZWNrZWRBcHBlbmQoKmFkZHJlc3MpOwogICAgIH0KICAgICBpZiAoYWRkcmVzc2Vz
LmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKaW5kZXggOTdkNTE0ODc0ZGQ2MGQ1OTdjZmY3ODM4
Y2Q4MzY5NzJmYTlhZDMyZC4uMjg4YWM3ZDUxYzU2NjAzMTY4MDBmNjZhMTExMWM4MTIxNDZlMGQy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5oCkBAIC0zNyw2ICszNyw4IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgZGlyZWN0b3J5OwogICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgU3RyaW5n
IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOwogICAgIGJvb2wgZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBpc0l0
cFN0YXRlRXhwbGljaXRseVNldCB7IGZhbHNlIH07CiAgICAgYm9vbCBlbmFibGVMb2dUZXN0aW5n
RXZlbnQgeyBmYWxzZSB9OwpAQCAtNTUsNiArNTcsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMgewogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBkaXJlY3Rvcnk7
CiAgICAgICAgIGVuY29kZXIgPDwgZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBl
bmNvZGVyIDw8IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKKyAgICAg
ICAgZW5jb2RlciA8PCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CiAgICAgICAgIGVuY29kZXIgPDwgZW5hYmxlZDsKICAgICAgICAgZW5jb2Rl
ciA8PCBpc0l0cFN0YXRlRXhwbGljaXRseVNldDsKICAgICAgICAgZW5jb2RlciA8PCBlbmFibGVM
b2dUZXN0aW5nRXZlbnQ7CkBAIC04MSw3ICs4NSwxNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICBkZWNvZGVyID4+IGRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKICAgICAgICAgaWYgKCFkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIGRlY29k
ZXIgPj4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworICAgICAgICBp
ZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAorICAgICAgICBzdGQ6Om9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBkZWNvZGVyID4+IHByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICAgICAgaWYgKCFw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gZW5hYmxlZDsKICAgICAgICAgZGVjb2RlciA+PiBlbmFibGVkOwogICAgICAgICBpZiAo
IWVuYWJsZWQpCkBAIC0xNDIsNiArMTU2LDggQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzIHsKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpk
aXJlY3RvcnkpLAogICAgICAgICAgICAgV1RGTW92ZSgqZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KSwKKyAgICAgICAgICAgIFdURk1vdmUoKnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURp
cmVjdG9yeSksCisgICAgICAgICAgICBXVEZNb3ZlKCpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqZW5h
YmxlZCksCiAgICAgICAgICAgICBXVEZNb3ZlKCppc0l0cFN0YXRlRXhwbGljaXRseVNldCksCiAg
ICAgICAgICAgICBXVEZNb3ZlKCplbmFibGVMb2dUZXN0aW5nRXZlbnQpLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggNjZhZWRhNDNjODJkOGJmYjMzNWJiZmVmNjA5NWQwNGVmYWRiODYyMC4uZDUzY2NjNTYyMWVl
MTZjZGIzN2QwMDk0ODM3ZGQ3NWE3MWNkZDU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01Nyw2ICs1Nyw3
IEBAIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKIAor
TmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0
aXZpdHlUcmFja2VyLmNwcApAQCAtOTgsNiArOTksOSBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudC5jcHAKIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuY3BwCiAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcAorCiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAg
QG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGFj
ZDA0ZDg2N2ZkMWEwODAxYmFkYWRjNTYzNTc3ZTI1ZDg3N2NkODAuLjc3ODU5NTllZjU2NjMxYzVh
NTFhNDFhYjgzZTQ5NWVmOTZlZDE0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4x
MyksIGlvcygxMS4wKSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5OikgTlNVUkwgKl93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldENvb2tpZVN0b3JhZ2VGaWxl
OikgTlNVUkwgKl9jb29raWVTdG9yYWdlRmlsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
LCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk6KSBOU1VSTCAqX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
My40KSwgaW9zKDExLjMpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkg
TlNVUkwgKnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OikgTlNVUkwg
Kl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwg
aW9zKDExLjMpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6KSBOU1VSTCAqX3NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDEx
LjMpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9z
KDEzLjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQppbmRleCA2
YTNiNjNjYjY5MDhlYmI5YWU4MzYxZjQzNjgzOWMwM2VkN2Q2MzZkLi42NTlkNmZkMjVmNGIwYmQ2
ZjU4MjRhMTJmZTA2YjljNDhkNTdlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLm1tCkBAIC0xODYsNiArMTg2LDIyIEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMQXJn
dW1lbnQoTlNVUkwgKnVybCkKICAgICBfY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKKy0gKE5TVVJMICopcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5Cit7CisgICAgYXV0byYgZGlyZWN0b3J5ID0gX2Nv
bmZpZ3VyYXRpb24tPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSgpOwor
ICAgIGlmIChkaXJlY3RvcnkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0
dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU107Cit9
CisKKy0gKHZvaWQpc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OihO
U1VSTCAqKXVybAoreworICAgIGlmICghX2NvbmZpZ3VyYXRpb24tPmlzUGVyc2lzdGVudCgpKQor
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiQ2Fubm90IHNldCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnkg
b24gYSBub24tcGVyc2lzdGVudCBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi4iXTsK
KyAgICBjaGVja1VSTEFyZ3VtZW50KHVybCk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSh1cmwucGF0aCk7Cit9CisKIC0gKE5T
VVJMICopX2NhY2hlU3RvcmFnZURpcmVjdG9yeQogewogICAgIHJldHVybiBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOl9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVj
dG9yeTpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAyMWJlMjU4MTBiMzI2YjFiMDAwYTE0Y2Fh
ZWZkZDcyZTgzNzdlNWYxLi40NThkMGM2NGUyNmJkNGMxZWIwYmYzNDJmNDA5N2Q3YzQzZWQ0OTZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjYxLDYgKzI2MSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKQogICAgICAgICBtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkocmVzb2x2
ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1
cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1f
Y29uZmlndXJhdGlvbi0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCku
aXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+cHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJhdGlv
bi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSAmJiBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgp
LmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVj
dG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+amF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5KCkpCkBAIC0xOTY0LDYgKzE5NjYs
NyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKCkKIAogICAgIHJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7CiAKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbG9vayBhdCBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi4KICAgICBhdXRvIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBtX2NvbmZpZ3Vy
YXRpb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZTsKICAg
ICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CkBAIC0x
OTcxLDYgKzE5NzQsMTMgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICB9CiAKKyAgICBhdXRvIHByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0
b3J5SGFuZGxlOworICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0
b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeUhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQorCiAg
ICAgYXV0byBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlZE5ldHdvcmtDYWNoZURpcmVj
dG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0
eSgpKSB7CkBAIC0yMDAwLDYgKzIwMTAsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBX
ZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyA9IHsKICAgICAgICAg
V1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92
ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlKSwKKyAgICAgICAgV1RGTW92
ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpLAorICAgICAgICBXVEZN
b3ZlKHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUhhbmRsZSksCiAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCksCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICAgICAgaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQoKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCBjNzAyZDRhN2EzZWU1
ZWNiZmFhNjkwYjRjM2FkYTBiMjNkNzBmMzk1Li41ZjUxNjZiNzI4ZTNiZGFlZDlkMjU4MzY5NDRi
MWQzZGU4M2EyM2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3Bw
CkBAIC03Niw2ICs3Niw3IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fYWx0
ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSA9IHRoaXMtPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0Rp
cmVjdG9yeTsKICAgICBjb3B5LT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9
IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeTsKKyAgICBjb3B5LT5tX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGly
ZWN0b3J5OwogICAgIGNvcHktPm1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSB0
aGlzLT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIGNvcHktPm1fY29v
a2llU3RvcmFnZUZpbGUgPSB0aGlzLT5tX2Nvb2tpZVN0b3JhZ2VGaWxlOwogICAgIGNvcHktPm1f
c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gdGhpcy0+bV9zb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aAppbmRleCBlZmFhOWM4MGEwYzgyMGRlM2NjYzI2ODE0OWM4NjZhZjAzYTg0NWFlLi5kNjBiNTlm
NGQ5OTJhZDg0ZmEzMTgwYmE0NmIyMjE5MGYwN2FhOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmgKQEAgLTExNyw2ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KIAorICAgIGNv
bnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7IH0K
KyAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShTdHJp
bmcmJiBkaXJlY3RvcnkpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rv
cnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgbmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7IH0K
ICAgICB2b2lkIHNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsg
bV9uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KICAgICAKQEAg
LTIwMSw2ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2FsdGVybmF0aXZlU2Vydmlj
ZXNEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAg
U3RyaW5nIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2Nv
b2tpZVN0b3JhZ2VGaWxlOwogICAgIFN0cmluZyBtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGZlM2QzMmIzMjk1YzJjNDRmZDQ0NDRjZGQ3ZjE0MWYyNDAwNGNhMDIuLmFhZTQ5
NGRiZDgzZTc4ZDI2Nzk3MTRiN2RiYmU4Y2E5YzhlNTZhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3MSw2ICsxMjcxLDggQEAK
IAkJNUM3OTVENzAyMjlGMzczRjAwM0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFMEMzNjky
MjlGMkQ0QTAwMzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNUM3OTVENzEyMjlGMzc1NzAw
M0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTBDMzZBMjI5RjJENEEwMDM2OTVG
MCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm9Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM3RkI0NzAyMUU5N0RDNTAwOUUzMjQx
IC8qIFdlYkNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM3RkI0NkYyMUU5N0MwQzAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5oICovOyB9
OworCQk1QzgyNkQ2QjI2RDQ4MkVGMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4
MjZENjgyNkQ0NkI0NDAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCAq
LzsgfTsKKwkJNUM4MjZENkMyNkQ0ODJGMjAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDODI2RDY5MjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmggKi87IH07CiAJCTVDOEJDNzk3MjE4Q0JCNDgwMDgxMzg4NiAvKiBTYWZlQnJvd3Np
bmcueGNhc3NldHMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDOEJDNzk2MjE4Q0I1OEEwMDgxMzg4NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgKi87
IH07CiAJCTVDOEREMzgwMUZFNDUyMTYwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEREMzdG
MUZFNDUxOTIwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCAqLzsgfTsKIAkJNUM5
QTkxMTEyMjhGNjlDQzAwNUM1QjE3IC8qIFhQQ1NlcnZpY2VNYWluLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MjgzOTYxNkI0N0VDNDAwQTI3OEZF
IC8qIFhQQ1NlcnZpY2VNYWluLm1tICovOyB9OwpAQCAtNDUwOSw2ICs0NTExLDEyIEBACiAJCTVD
N0ZCNDZGMjFFOTdDMEMwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29va2llSmFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDODBCM0RCMjM2OTBEOEQwMDg2RTZERSAvKiBTZXJ2aWNlV29ya2VySW5pdGlhbGl6
YXRpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4
MEIzREQyMzY5MEYxMDAwODZFNkRFIC8qIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2
RDY3MjZENDZCNDMwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzgyNkQ2ODI2RDQ2
QjQ0MDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDY5MjZENDgyRUEwMDhBRUM5MSAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUM4MjZENkEyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDODI2RDZFMjZENThBMTYwMDhBRUM5MSAvKiBEYXRhYmFzZVV0aWxp
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVV0
aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDZGMjZENThB
MTYwMDhBRUM5MSAvKiBEYXRhYmFzZVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEYXRhYmFzZVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Qzg0Q0Y5MDFGOTZBQzRFMDBCNjcwNUEgLyogTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4
NUM3ODYxQzNGMjNDNTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZW5kaW5nRG93bmxvYWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Qzg5REY1NjIxQUY2MUZGMDA0NjQ1RTggLyogTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODY3Miw5ICs4NjgwLDEyIEBACiAJCQkJOTM5Mjg4RTAyMTQw
NERGMDAwRUJCQTMzIC8qIEluZGV4ZWREQiAqLywKIAkJCQkyREE5NDRCQjE4ODUxMUREMDBFRDg2
REIgLyogaW9zICovLAogCQkJCTUxMENDN0RDMTYxMzhFMjkwMEQwM0VEMyAvKiBtYWMgKi8sCisJ
CQkJNUMwMUJDMzUyNkQ0NkFENDAwRkVCNDJGIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50ICov
LAogCQkJCTkzQkEwNEQ5MjE1MUFEQ0QwMDdGNDU1RiAvKiBTZXJ2aWNlV29ya2VyICovLAogCQkJ
CTQxMzA3NTk3MURFODRFRDcwMDM5RUM2OSAvKiB3ZWJydGMgKi8sCiAJCQkJOTNCMjYxNDMyMjdE
MTQzMTAwQjk3QTc2IC8qIFdlYlN0b3JhZ2UgKi8sCisJCQkJNUM4MjZENkUyNkQ1OEExNjAwOEFF
QzkxIC8qIERhdGFiYXNlVXRpbGl0aWVzLmNwcCAqLywKKwkJCQk1QzgyNkQ2RjI2RDU4QTE2MDA4
QUVDOTEgLyogRGF0YWJhc2VVdGlsaXRpZXMuaCAqLywKIAkJCQk1M0YzQ0FBNTIwNkM0NDNFMDA4
NjQ5MEUgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAgKi8sCiAJCQkJNTM1QkNCOTAyMDY5
QzQ5QzAwQ0NDRTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCAqLywKIAkJCQk0NkVFMjg0
QjI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAg
Ki8sCkBAIC05MjQzLDYgKzkyNTQsMTcgQEAKIAkJCXBhdGggPSBTT0F1dGhvcml6YXRpb247CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0
MkYgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTVDODI2RDZBMjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcCAqLywKKwkJCQk1QzgyNkQ2OTI2RDQ4MkVBMDA4
QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oICovLAorCQkJCTVDODI2
RDY3MjZENDZCNDMwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcCAq
LywKKwkJCQk1QzgyNkQ2ODI2RDQ2QjQ0MDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTVDMTQyNkYxMUMyM0Y4MTcwMEQ0
MTE4MyAvKiBEb3dubG9hZHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMTIzMDYsOCArMTIzMjgsMTAgQEAKIAkJCQlDMTVDQkIzNjIzRjM3NzcxMDAzMDBD
QzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUIxNDVFNjIy
M0Y5MzEyMDBFNDg5RDggLyogUHJlZmV0Y2hDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFD
QzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NUM4MjZENkMyNkQ0ODJGMjAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCRDA1ODY1MjIwQ0U4QzIwMDBCRUQ1QyAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkU2ODhD
MjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTVDODI2RDZCMjZENDgyRUYwMDhBRUM5MSAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkY5NTM2NTE4RkY1
OEY1MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
QTdDNTgxMTM2RTE5QzAwRkI3MTY3IC8qIFByb2Nlc3NMYXVuY2hlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMmNkZmJjZjUyN2E5MDgwZjhkNmQwN2M4N2QxMzk3ZDNkNTMyZGE5ZS4u
ZmU0YjI2NGJkYjZjZjk1NmNmMjM3ZmEyNzZjZGVlMzc5NjFhZjNlZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTA4LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgU2VwYXJhdGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZGF0YWJhc2UgZnJvbSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIGRhdGFiYXNlIGFuZCBhZGQgU1BJIHRvIHNldCBpdHMgbG9jYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTUy
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6cnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wOC0yMyAgQ2FtZXJvbiBNY0Nvcm1hY2sg
IDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFByZXNlcnZlIGNvbG9yIHNwYWNlIHdoZW4g
Z2V0dGluZyBjdXJyZW50IGNvbG9yIGluIERpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRB
dHRyaWJ1dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZl
bnRBdHRyaWJ1dGlvbi5tbQppbmRleCBjODBjYTcxNmNjMDIxYTRiODk2MWU4MDM0ZWI0MDA4MDNl
NDhmNTE0Li45YTQzYjc3Yzk2YjI1NWFhNTU0YWRjZWY3NTNlM2U0YzVhMjI4NzA1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRp
b24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0
dHJpYnV0aW9uLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAKICNpZiBIQVZFKFJT
QV9CU1NBKQogCkBAIC03OCw3ICs3OSw3IEBAIHN0YXRpYyBOU1VSTCAqZXhhbXBsZVVSTCgpCiAg
ICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iXTsK
IH0KIAotdm9pZCBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KEZ1bmN0aW9uPHZvaWQoV0tX
ZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXImKT4mJiBhZGRBdHRyaWJ1dGlvblRvV2ViVmlldykK
K3ZvaWQgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKFdLV2ViVmlldyAqLCBjb25zdCBIVFRQU2Vy
dmVyJik+JiYgYWRkQXR0cmlidXRpb25Ub1dlYlZpZXcpCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfcHJldmVudE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkZvclRlc3RpbmddOwogICAgIGJv
b2wgZG9uZSA9IGZhbHNlOwpAQCAtMTEzLDcgKzExNCw3IEBAIHZvaWQgcnVuQmFzaWNFdmVudEF0
dHJpYnV0aW9uVGVzdChGdW5jdGlvbjx2b2lkKFdLV2ViVmlldyAqLCBjb25zdCBIVFRQU2VydmVy
Jik+CiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKICAgICBOU1VSTCAqc2Vy
dmVyVVJMID0gc2VydmVyLnJlcXVlc3QoKS5VUkw7CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgYXV0byAgPSBjb25maWd1cmF0aW9uID8gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pIDogYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIGFkZEF0
dHJpYnV0aW9uVG9XZWJWaWV3KHdlYlZpZXcuZ2V0KCksIHNlcnZlcik7CiAgICAgW1t3ZWJWaWV3
IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkOllFU107CiAgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRh
U3RvcmUgX2FsbG93VExTQ2VydGlmaWNhdGVDaGFpbjpAWyhpZCl0ZXN0Q2VydGlmaWNhdGUoKS5n
ZXQoKV0gZm9ySG9zdDpzZXJ2ZXJVUkwuaG9zdF07CkBAIC0yODIsMTYgKzI4MywzOCBAQCBURVNU
KEV2ZW50QXR0cmlidXRpb24sIEZyYXVkUHJldmVudGlvbikKIAogVEVTVChFdmVudEF0dHJpYnV0
aW9uLCBCYXNpYykKIHsKLSAgICBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KFtdKFdLV2Vi
VmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAgcnVuQmFzaWNF
dmVudEF0dHJpYnV0aW9uVGVzdChuaWwsIFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRU
UFNlcnZlciYgc2VydmVyKSB7CisgICAgICAgIFt3ZWJWaWV3IF9hZGRFdmVudEF0dHJpYnV0aW9u
V2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBzb3VyY2VEZXNjcmlw
dGlvbjpAInRlc3Qgc291cmNlIGRlc2NyaXB0aW9uIiBwdXJjaGFzZXI6QCJ0ZXN0IHB1cmNoYXNl
ciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgb3B0aW9uYWxOb25jZTpuaWxd
OworICAgIH0pOworfQorCitURVNUKEV2ZW50QXR0cmlidXRpb24sIERhdGFiYXNlTG9jYXRpb24p
Cit7CisgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl07CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IkV2ZW50QXR0cmlidXRpb25EYXRhYmFzZUxvY2F0aW9uVGVzdCJdIGlzRGlyZWN0b3J5OllFU107
CisgICAgTlNMb2coQCJURU1QIERJUiAlQCIsIHRlbXBEaXIpOworICAgIGlmIChbZmlsZU1hbmFn
ZXIgZmlsZUV4aXN0c0F0UGF0aDp0ZW1wRGlyLnBhdGhdKQorICAgICAgICBbZmlsZU1hbmFnZXIg
cmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6bmlsXTsKKworICAgIGF1dG8gZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IG5ld10pOworICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkucHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5ID0gdGVtcERpcjsKKyAgICBhdXRvIHZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICB2aWV3
Q29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSkuZ2V0KCk7CisgICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdCh2
aWV3Q29uZmlndXJhdGlvbi5nZXQoKSwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQ
U2VydmVyJiBzZXJ2ZXIpIHsKICAgICAgICAgW3dlYlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25X
aXRoU291cmNlSUQ6NDIgZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0
aW9uOkAidGVzdCBzb3VyY2UgZGVzY3JpcHRpb24iIHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2Vy
IiByZXBvcnRFbmRwb2ludDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBvcHRpb25hbE5vbmNlOm5pbF07
CiAgICAgfSk7CisKKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0
aDp0ZW1wRGlyLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0
c0F0UGF0aDpbdGVtcERpci5wYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInBj
bS5kYiJdXSk7CiB9CiAKKy8vIEZJWE1FOiBXcml0ZSBhIHRlc3QgdGhhdCB2ZXJpZmllcyB0aGF0
IGRhdGEgaXMgbWlncmF0ZWQgZnJvbSBvbGQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBkYXRhYmFz
ZXMgdG8gdGhlIG5ldyBQQ00gZGF0YWJhc2UuCisKICNpZiBIQVZFKFVJX0VWRU5UX0FUVFJJQlVU
SU9OKQogCiBURVNUKEV2ZW50QXR0cmlidXRpb24sIEJhc2ljV2l0aElPU1NQSSkKIHsKLSAgICBy
dW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3Qg
SFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChu
aWwsIFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CiAg
ICAgICAgIGF1dG8gYXR0cmlidXRpb24gPSBhZG9wdE5TKFtbTW9ja0V2ZW50QXR0cmlidXRpb24g
YWxsb2NdIGluaXRXaXRoUmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgZGVzdGlu
YXRpb25VUkw6ZXhhbXBsZVVSTCgpXSk7CiAgICAgICAgIHdlYlZpZXcuX3VpRXZlbnRBdHRyaWJ1
dGlvbiA9IChVSUV2ZW50QXR0cmlidXRpb24gKilhdHRyaWJ1dGlvbi5nZXQoKTsKICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436461</attachid>
            <date>2021-08-25 20:15:42 -0700</date>
            <delta_ts>2021-08-25 22:19:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229527-20210825201541.patch</filename>
            <type>text/plain</type>
            <size>202935</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1MTdjY2I1ZmE3YjNiNTFk
NzQ1N2YwOGZjMTRkZjA0NzZhYmJiY2IuLmZkM2NjYzFhYzIzOGUyOTM0ZGU0MDk0ZjEwNTExY2Y4
OGFiZThkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYzIEBACisyMDIxLTA4LTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJhdGUg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZGF0YWJhc2UgZnJvbSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIGRhdGFiYXNlIGFuZCBhZGQgU1BJIHRvIHNldCBpdHMgbG9jYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTUyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMs
IEkgbW92ZWQgY29tbW9uIGNvZGUgdG8gRGF0YWJhc2VVdGlsaXRpZXMgYW5kIG1vdmVkIHRoZSBQ
Q00gbG9naWMgZnJvbSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZQorICAgICAg
ICB0byBhIG5ldyBjbGFzcy4gIEl0IHB1dHMgdGhlIGRhdGEgaW4gYSBkaWZmZXJlbnQgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkgdW5sZXNzIFNQSSB0ZWxscyBpdCB0byBwdXQgaXQgaW4gYSBk
aWZmZXJlbnQgZGlyZWN0b3J5LgorCisgICAgICAgIFRoZSBiaWdnZXN0IGZ1bmN0aW9uYWwgY2hh
bmdlIEkgbmVlZGVkIHRvIGRvIHdhcyB0byBtYWtlIGEgUENNT2JzZXJ2ZWREb21haW5zIHRhYmxl
IGluIHRoZSBuZXcgREIgaW5zdGVhZCBvZiBhbiBPYnNlcnZlZERvbWFpbnMgdGFibGUsCisgICAg
ICAgIHdoaWNoIGNvbnRhaW5lZCBtb3JlIGluZm9ybWF0aW9uIHRoYW4gSSBuZWVkZWQuICBJIG5l
ZWQganVzdCBhbiBpbmRleCBhbmQgYSBsaXN0IG9mIGRvbWFpbnMuCisKKyAgICAgICAgQW5vdGhl
ciBzbGlnaHQgaW1wbGVtZW50YXRpb24gY2hhbmdlIGlzIHRoYXQgaW5zdGVhZCBvZiBjaGVja2lu
ZyBpc0VwaGVtZXJhbCBpbiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIEkganVzdCBw
YXNzIGFuIGVtcHR5CisgICAgICAgIFN0cmluZyB0byB0aGUgU3RvcmUgaWYgaXQncyBlcGhlbWVy
YWwsIHdoaWNoIGNhdXNlcyBubyBEQiB0byBiZSBjcmVhdGVkLCB3aGljaCBjYXVzZXMgZXF1aXZh
bGVudCBiZWhhdmlvci4KKworICAgICAgICBUaGUgcmVzdCBvZiB0aGlzIHBhdGNoIGp1c3QgbW92
ZXMgY29kZSBmcm9tIG9uZSBsb2NhdGlvbiB0byBhbm90aGVyLgorCisgICAgICAgIEkgc3RpbGwg
bmVlZCB0byBpbXBsZW1lbnQgbWlncmF0aW5nIGRhdGEgZnJvbSB0aGUgb2xkIERCIHRvIHRoZSBu
ZXcgREIsIGRlYnVnIG1lc3NhZ2UgYnJvYWRjYXN0aW5nLCBhbmQgdGVhcmRvd24uCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVl
cmllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuSVRQRGF0YWJhc2Up
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
bmVlZHNVcGRhdGVkU2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6aW5zZXJ0RGlzdGluY3RWYWx1
ZXNJblRhYmxlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVV
bmlxdWVJbmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVtYSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkZXN0cm95U3RhdGVtZW50cyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNl
Q29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpleHBlY3RlZFVuYXR0cmlidXRlZENvbHVtbnMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpleHBlY3RlZEF0dHJpYnV0ZWRDb2x1bW5zKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NoZW1hKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVuYW1lQ29sdW1uc0lmTmVj
ZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNjb3BlZFN0YXRlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpidWlsZFByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JU
ZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlbW92ZVVuYXR0cmlidXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphdHRyaWJ1dGVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
bGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphdHRyaWJ1dGlvblRv
U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
ZWFybGllc3RUaW1lc1RvU2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0
cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2hhcmVkU3RhdGlzdGljc1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6cGNtU3Rv
cmVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6c2hhcmVkU3RhdGlzdGljc1F1ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVk
Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFsbEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9t
YWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0
aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVV0aWxpdGllczo6
RGF0YWJhc2VVdGlsaXRpZXMpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVV0aWxpdGllczo6
c2NvcGVkU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRp
ZXM6OmJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlVXRpbGl0aWVzOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY1N0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjp+
RGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjcmVhdGVTY2hlbWEp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Om1hcmtBbGxVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmJ1aWxkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFi
YXNlOjpyZW1vdmVVbmF0dHJpYnV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNl
OjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpQQ006OkRhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YXR0cmlidXRpb25Ub1N0cmluZyk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006
OkRhdGFiYXNlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmNsZWFyU2VudEF0dHJpYnV0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UENNOjpEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjplYXJsaWVzdFRpbWVzVG9TZW5kKToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6ZG9tYWluSUQpOgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkRhdGFiYXNlOjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjplbnN1cmVEb21haW5JRCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREYXRhYmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OlN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpTdG9yZTo6cG9zdFRhc2spOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpwb3N0VGFz
a1JlcGx5KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjptYXJrQWxsVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6bWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNs
ZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaDog
QWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyOjpzdG9yZVVuYXR0cmlidXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKToKKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjphdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyU2VudEF0dHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKToK
KyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckV4
cGlyZWQpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6bWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6cmVzb2x2ZWROYW1lKToKKyAgICAgICAgKiBTaGFyZWQvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnldKToK
KyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMS0wOC0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBWaXN1YWwgTG9vayBVcCBhbmltYXRlcyBmcm9tIHRo
ZSB3cm9uZyByZWN0IHdoZW4gdGhlIHdlYiB2aWV3IGlzIHNjYWxlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggYmJlOGQy
ZGIzYzc1ZDljYjJkNjg3YjI1YjlhZWJlMDBjMjBjOWZiMy4uYmQzNDg3YjkxZjFmNGZjMzFiNzY2
ZjcxMDkxNzE2OWFiOTMyYWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAi
TmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KQEAgLTg4LDEwICs4OCw2IEBAIGNv
bnN0ZXhwciBhdXRvIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNRdWVyeSA9ICJJTlNFUlQg
T1IgUkVQTEFDRSBpbnRvIFN1YmZyCiBjb25zdGV4cHIgYXV0byB0b3BGcmFtZUxpbmtEZWNvcmF0
aW9uc0Zyb21RdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFRvcEZyYW1lTGlua0RlY29y
YXRpb25zRnJvbSAodG9Eb21haW5JRCwgbGFzdFVwZGF0ZWQsIGZyb21Eb21haW5JRCkgU0VMRUNU
ID8sID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9t
YWluIGluICggIl9zOwogY29uc3RleHByIGF1dG8gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9t
YWluc1F1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyAoc3VicmVzb3VyY2VEb21haW5JRCwgbGFzdFVwZGF0ZWQsIHRvcEZyYW1lRG9t
YWluSUQpIFNFTEVDVCA/LCA/LCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBy
ZWdpc3RyYWJsZURvbWFpbiBpbiAoICJfczsKIGNvbnN0ZXhwciBhdXRvIHN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG9RdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8gKHN1YnJlc291cmNlRG9tYWluSUQsIGxhc3RVcGRhdGVkLCB0b0Rv
bWFpbklEKSBTRUxFQ1QgPywgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUg
cmVnaXN0cmFibGVEb21haW4gaW4gKCAiX3M7Ci1jb25zdGV4cHIgYXV0byBpbnNlcnRVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElO
VE8gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKHNvdXJjZVNpdGVEb21haW5J
RCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsICIKLSAgICAic291cmNlSUQsIHRpbWVPZkFkQ2xp
Y2ssIHRva2VuLCBzaWduYXR1cmUsIGtleUlEKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8p
Il9zOwotY29uc3RleHByIGF1dG8gaW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50UXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgKHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQs
ICIKLSAgICAic291cmNlSUQsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCB0aW1l
T2ZBZENsaWNrLCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwg
a2V5SUQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24pIFZBTFVFUyAoPywgPywgPywg
PywgPywgPywgPywgPywgPywgPywgPykiX3M7CiAKIC8vIEVYSVNUUyBRdWVyaWVzCiBjb25zdGV4
cHIgYXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNRdWVyeSA9ICJTRUxFQ1Qg
RVhJU1RTIChTRUxFQ1QgMSBGUk9NIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUg
c3ViRnJhbWVEb21haW5JRCA9ID8gIgpAQCAtMTE2LDkgKzExMiw2IEBAIGNvbnN0ZXhwciBhdXRv
IHVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFp
bnMgU0VUIGlzCiBjb25zdGV4cHIgYXV0byBjbGVhclByZXZhbGVudFJlc291cmNlUXVlcnkgPSAi
VVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAwLCBpc1ZlcnlQcmV2YWxl
bnQgPSAwIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHVw
ZGF0ZUdyYW5kZmF0aGVyZWRRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBncmFu
ZGZhdGhlcmVkID0gPyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIg
YXV0byB1cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsUXVlcnkgPSAi
VVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbCA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwotY29uc3RleHByIGF1
dG8gc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRRdWVyeSA9
ICJVUERBVEUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIHRpbWVPZkFk
Q2xpY2sgPSAtMS4wIl9zOwotY29uc3RleHByIGF1dG8gbWFya1JlcG9ydEFzU2VudFRvU291cmNl
UXVlcnkgPSAiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgZWFy
bGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSBudWxsIFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9
ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKLWNvbnN0ZXhwciBhdXRvIG1h
cmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uUXVlcnkgPSAiVVBEQVRFIEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiA9
IG51bGwgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQgPSA/Il9zOwogCiAvLyBTRUxFQ1QgUXVlcmllcwogY29uc3RleHByIGF1dG8gZG9tYWlu
SURGcm9tU3RyaW5nUXVlcnkgPSAiU0VMRUNUIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5z
IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKQEAgLTEzNywxNCArMTMwLDYgQEAgY29u
c3RleHByIGF1dG8gZ2V0QWxsRG9tYWluc1F1ZXJ5ID0gIlNFTEVDVCByZWdpc3RyYWJsZURvbWFp
biBGUk9NIE9ic2VydmVkRG9tYWkKIGNvbnN0ZXhwciBhdXRvIGdldEFsbFN1YlN0YXRpc3RpY3NV
bmRlckRvbWFpblF1ZXJ5ID0gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIEZST00gU3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyIKICAgICAiVU5J
T04gQUxMIFNFTEVDVCB0b3BGcmFtZURvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyIKICAgICAiVU5JT04gQUxM
IFNFTEVDVCB0b0RvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVS
RSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKLWNvbnN0ZXhwciBhdXRvIGFsbFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zUXVlcnkgPSAiU0VMRUNUICog
RlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLWNvbnN0ZXhwciBh
dXRvIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIlNFTEVDVCAq
LCBNSU4oZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb24pIGFzIG1pblZhbCAiCi0gICAgIkZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIElTIE5PVCBOVUxMIEFO
RCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIElTIE5PVCBOVUxMICIKLSAgICAiVU5J
T04gQUxMIFNFTEVDVCAqLCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBhcyBtaW5WYWwgRlJP
TSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1lVG9T
ZW5kVG9EZXN0aW5hdGlvbiBJUyBOVUxMICIKLSAgICAiVU5JT04gQUxMIFNFTEVDVCAqLCBlYXJs
aWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIGFzIG1pblZhbCBGUk9NIEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBJUyBO
VUxMIE9SREVSIEJZIG1pblZhbCJfczsKLWNvbnN0ZXhwciBhdXRvIGZpbmRVbmF0dHJpYnV0ZWRR
dWVyeSA9ICJTRUxFQ1QgKiBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
ID0gPyJfczsKLWNvbnN0ZXhwciBhdXRvIGZpbmRBdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICog
RlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURv
bWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOwotY29uc3RleHBy
IGF1dG8gZWFybGllc3RUaW1lc1RvU2VuZFF1ZXJ5ID0gIlNFTEVDVCBlYXJsaWVzdFRpbWVUb1Nl
bmRUb1NvdXJjZSwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBGUk9NIEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFO
RCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7CiAKIC8vIEVYSVNUUyBmb3IgdGVzdGlu
ZyBxdWVyaWVzCiBjb25zdGV4cHIgYXV0byBsaW5rRGVjb3JhdGlvbkV4aXN0c1F1ZXJ5ID0gIlNF
TEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFdI
RVJFIHRvRG9tYWluSUQgPSA/IE9SIGZyb21Eb21haW5JRCA9ID8pIl9zOwpAQCAtMTU2LDEwICsx
NDEsNiBAQCBjb25zdGV4cHIgYXV0byBvYnNlcnZlZERvbWFpbnNFeGlzdHNRdWVyeSA9ICJTRUxF
Q1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIE9ic2VydgogCiAvLyBERUxFVEUgUXVlcmllcwogY29u
c3RleHByIGF1dG8gcmVtb3ZlQWxsRGF0YVF1ZXJ5ID0gIkRFTEVURSBGUk9NIE9ic2VydmVkRG9t
YWlucyBXSEVSRSBkb21haW5JRCA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0byBjbGVhclVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEIExJS0Ug
PyBPUiBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBMSUtFID8iX3M7Ci1jb25zdGV4cHIgYXV0byBj
bGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIkRFTEVURSBGUk9N
IEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWlu
SUQgTElLRSA/IE9SIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIExJS0UgPyJfczsKLWNvbnN0ZXhw
ciBhdXRvIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiREVMRVRF
IEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgPyA+IHRpbWVP
ZkFkQ2xpY2siX3M7Ci1jb25zdGV4cHIgYXV0byByZW1vdmVVbmF0dHJpYnV0ZWRRdWVyeSA9ICJE
RUxFVEUgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3Vy
Y2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7CiAK
IGNvbnN0ZXhwciBhdXRvIGNyZWF0ZU9ic2VydmVkRG9tYWluID0gIkNSRUFURSBUQUJMRSBPYnNl
cnZlZERvbWFpbnMgKCIKICAgICAiZG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgcmVnaXN0
cmFibGVEb21haW4gVEVYVCBOT1QgTlVMTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgbGFzdFNl
ZW4gUkVBTCBOT1QgTlVMTCwgIgpAQCAtMjQwLDE5ICsyMjEsNiBAQCBjb25zdGV4cHIgYXV0byBj
cmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSAiQ1JFQVRFIFRBQkxFIFN1YnJl
c291cmNlVQogY29uc3RleHByIGF1dG8gY3JlYXRlT3BlcmF0aW5nRGF0ZXMgPSAiQ1JFQVRFIFRB
QkxFIE9wZXJhdGluZ0RhdGVzICgiCiAgICAgInllYXIgSU5URUdFUiBOT1QgTlVMTCwgbW9udGgg
SU5URUdFUiBOT1QgTlVMTCwgbW9udGhEYXkgSU5URUdFUiBOT1QgTlVMTCkiX3M7CiAKLWNvbnN0
ZXhwciBhdXRvIGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNS
RUFURSBUQUJMRSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgotICAgICJz
b3VyY2VTaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQgSU5URUdFUiBOT1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgotICAgICJ0
aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBr
ZXlJRCBURVhULCBGT1JFSUdOIEtFWShzb3VyY2VTaXRlRG9tYWluSUQpICIKLSAgICAiUkVGRVJF
TkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JFSUdO
IEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCi0gICAgIk9ic2VydmVk
RG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOwotCi1jb25zdGV4cHIgYXV0
byBjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxF
IEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgotICAgICJzb3VyY2VTaXRlRG9t
YWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgSU5URUdFUiBO
T1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgotICAgICJhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhIElOVEVHRVIgTk9UIE5VTEwsIHByaW9yaXR5IElOVEVHRVIgTk9UIE5VTEwsIHRp
bWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwgIgotICAgICJlYXJsaWVzdFRpbWVUb1NlbmRUb1Nv
dXJjZSBSRUFMLCB0b2tlbiBURVhULCBzaWduYXR1cmUgVEVYVCwga2V5SUQgVEVYVCwgZWFybGll
c3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBSRUFMLCAiCi0gICAgIkZPUkVJR04gS0VZKHNvdXJj
ZVNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERF
TEVURSBDQVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJF
TkNFUyAiCi0gICAgIk9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUp
Il9zOwotCiAvLyBDUkVBVEUgVU5JUVVFIElOREVYIFF1ZXJpZXMuCiBjb25zdGV4cHIgYXV0byBj
cmVhdGVVbmlxdWVJbmRleFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyA9ICJDUkVB
VEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVE
b21haW5zX2RvbWFpbklEX3RvcExldmVsRG9tYWluSUQgb24gU3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVEb21haW5zICggZG9tYWluSUQsIHRvcExldmVsRG9tYWluSUQgKSJfczsKIGNvbnN0ZXhw
ciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVB
VEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb19z
b3VyY2VEb21haW5JRF90b0RvbWFpbklEIG9uIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gKCBz
b3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCApIl9zOwpAQCAtMjY1LDggKzIzMyw2IEBAIGNvbnN0
ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
cyA9ICJDUkVBVEUgVU5JUVVFCiBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG8gPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJ
U1RTIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9fc3VicmVzb3VyY2VEb21haW5JRF90b0Rv
bWFpbklEIG9uIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gKCBzdWJyZXNvdXJjZURvbWFp
bklELCB0b0RvbWFpbklEICkiX3M7CiBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5P
VCBFWElTVFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tX3N1YnJlc291cmNlRG9tYWlu
SURfZnJvbURvbWFpbklEIG9uIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSAoIHN1YnJl
c291cmNlRG9tYWluSUQsIGZyb21Eb21haW5JRCApIl9zOwogY29uc3RleHByIGF1dG8gY3JlYXRl
VW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcyA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBF
WElTVFMgT3BlcmF0aW5nRGF0ZXNfeWVhcl9tb250aF9tb250aERheSBvbiBPcGVyYXRpbmdEYXRl
cyAoIHllYXIsIG1vbnRoLCBtb250aERheSApIl9zOwotY29uc3RleHByIGF1dG8gY3JlYXRlVW5p
cXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5J
UVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEIG9uIFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCApIl9zOwotY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJ
RiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRl
RG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQgb24gQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCApIl9zOwogCiAvLyBBZGQgb25lIHRvIHRoZSBjb3VudCBvZiB0aGUgYWJvdmUgaW5kZXggcXVl
cmllcyB0byBhY2NvdW50IGZvciB0aGUgT2JzZXJ2ZWREb21haW5zIHRhYmxlLCB3aGljaCBoYXMg
YW4gaW5kZXggYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IFNRTGl0ZSBiZWNhdXNlIG9mIGl0cyBw
cmltYXJ5IGtleS4KIGNvbnN0IGludCBleHBlY3RlZEluZGV4Q291bnQgPSAxNDsKQEAgLTI4MSwx
OCArMjQ3LDYgQEAgc3RhdGljIGNvbnN0IFN0cmluZyBPYnNlcnZlZERvbWFpbnNUYWJsZVNjaGVt
YVYxQWx0ZXJuYXRlKCkKICAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIk9ic2VydmVkRG9tYWlu
c1wiIChkb21haW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhU
IE5PVCBOVUxMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBsYXN0U2VlbiBSRUFMIE5PVCBOVUxM
LCBoYWRVc2VySW50ZXJhY3Rpb24gSU5URUdFUiBOT1QgTlVMTCwgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUgUkVBTCBOT1QgTlVMTCwgZ3JhbmRmYXRoZXJlZCBJTlRFR0VSIE5PVCBOVUxM
LCBpc1ByZXZhbGVudCBJTlRFR0VSIE5PVCBOVUxMLCBpc1ZlcnlQcmV2YWxlbnQgSU5URUdFUiBO
T1QgTlVMTCwgZGF0YVJlY29yZHNSZW1vdmVkIElOVEVHRVIgTk9UIE5VTEwsdGltZXNBY2Nlc3Nl
ZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIElOVEVHRVIgTk9UIE5VTEwsIHRpbWVz
QWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgSU5URUdFUiBOT1QgTlVM
TCxpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsIElOVEVHRVIgTk9UIE5VTEwp
Il9zOwogfQogCi1zdGF0aWMgY29uc3QgRXhwZWN0ZWRDb2x1bW5zJiBleHBlY3RlZFVuYXR0cmli
dXRlZENvbHVtbnMoKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNvbHVtbnMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geyAic291cmNlU2l0ZURvbWFpbklEIl9zLCAiZGVz
dGluYXRpb25TaXRlRG9tYWluSUQiX3MsICJzb3VyY2VJRCJfcywgInRpbWVPZkFkQ2xpY2siX3Ms
ICJ0b2tlbiJfcywgInNpZ25hdHVyZSJfcywgImtleUlEIl9zIH0pOwotICAgIHJldHVybiBjb2x1
bW5zLmdldCgpOwotfQotCi1zdGF0aWMgY29uc3QgRXhwZWN0ZWRDb2x1bW5zJiBleHBlY3RlZEF0
dHJpYnV0ZWRDb2x1bW5zKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjb2x1bW5zID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgInNvdXJjZVNpdGVEb21haW5JRCJfcywg
ImRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl9zLCAic291cmNlSUQiX3MsICJhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhIl9zLCAicHJpb3JpdHkiX3MsICJ0aW1lT2ZBZENsaWNrIl9zLCAiZWFybGllc3RU
aW1lVG9TZW5kVG9Tb3VyY2UiX3MsICJ0b2tlbiJfcywgInNpZ25hdHVyZSJfcywgImtleUlEIl9z
LCAiZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiJfcyB9KTsKLSAgICByZXR1cm4gY29s
dW1ucy5nZXQoKTsKLX0KLQogc3RhdGljIGJvb2wgbmVlZHNOZXdDcmVhdGVUYWJsZVNjaGVtYShj
b25zdCBTdHJpbmcmIHNjaGVtYSkKIHsKICAgICByZXR1cm4gc2NoZW1hLmNvbnRhaW5zKCJSRUZF
UkVOQ0VTIFRvcExldmVsRG9tYWlucyIpOwpAQCAtMzE5LDggKzI3Myw2IEBAIHN0YXRpYyBjb25z
dCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFu
ZEluZGV4UGFpcj4mCiAgICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iX3Ms
IHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFs
dWUoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkgfSwKICAg
ICAgICAgeyAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBzdGQ6Om1ha2VfcGFp
cjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNGcm9tLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5p
cXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pKSB9LAogICAgICAgICB7ICJP
cGVyYXRpbmdEYXRlcyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4+KGNyZWF0ZU9wZXJhdGluZ0RhdGVzLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVk
VmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcykpIH0sCi0gICAgICAgIHsgIlVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJp
bmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlx
dWVJbmRleFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgfSwKLSAgICAgICAg
eyAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5p
cXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB9CiAgICAgfSk7CiAg
ICAgCiAgICAgcmV0dXJuIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXM7CkBAIC0zNDksMTcg
KzMwMSwxMyBAQCBIYXNoU2V0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKj4m
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0bwogCiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgU3VzcGVuZGFibGVXb3JrUXVldWUm
IHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0
LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoc3RvcmUsIHdvcmtRdWV1
ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKLSAgICAsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgo
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnlQYXRo
LCAib2JzZXJ2YXRpb25zLmRiIl9zKSkKLSAgICAsIG1fdHJhbnNhY3Rpb24obV9kYXRhYmFzZSkK
KyAgICAsIERhdGFiYXNlVXRpbGl0aWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChzdG9yYWdlRGlyZWN0b3J5UGF0aCwgIm9ic2VydmF0aW9ucy5kYiJfcykpCiAgICAgLCBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKICAgICBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAgICBlbmFibGVGb3Jl
aWduS2V5cygpOwotCi0gICAgLy8gU2luY2Ugd2UgYXJlIHVzaW5nIGEgd29ya2VyUXVldWUsIHRo
ZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBtYXkgYmUgY2FsbGVkIGJ5IGRpZmZlcmVudCB0
aHJlYWRzLgotICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogICAgIAog
ICAgIGlmICghbV9kYXRhYmFzZS50dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKSkKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSBmYWlsZWQsIGVycm9y
IG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKQEAgLTM4MywzNCArMzMxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y2xvc2UoKQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpvcGVuSVRQRGF0YWJhc2UoKQogewotICAgIGlmICghRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKSkgewotICAgICAgICBpZiAoIUZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKG1fc3RvcmFnZURp
cmVjdG9yeVBhdGgpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW4gZmFpbGVkLCBl
cnJvciBtZXNzYWdlOiBGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSBkYXRhYmFzZSBwYXRoOiAl
IiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2lzTmV3
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSA9IHRydWU7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlID0gZmFsc2U7
Ci0KLSAgICBpZiAoIW1fZGF0YWJhc2Uub3BlbihtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJ
Q19MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0Zjgo
KS5kYXRhKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgCi0g
ICAgYXV0byBzZXRCdXN5VGltZW91dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiUFJB
R01BIGJ1c3lfdGltZW91dCA9IDUwMDAiX3MpOwotICAgIGlmICghc2V0QnVzeVRpbWVvdXQgfHwg
c2V0QnVzeVRpbWVvdXQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpzZXRCdXN5VGltZW91dCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1faXNO
ZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlKSB7Ci0gICAgICAgIGlmICghY3Jl
YXRlU2NoZW1hKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hlbWEgZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRo
OiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwg
bV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQor
ICAgIG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlID0gb3BlbkRhdGFi
YXNlKCkgPT0gQ3JlYXRlZE5ld0ZpbGU6OlllczsKIH0KIAogc3RkOjpvcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlz
c2luZ1RhYmxlc0luU2NoZW1hKCkKQEAgLTQ5NSwxNiArNDE2LDYgQEAgVGFibGVBbmRJbmRleFBh
aXIgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZElu
ZGV4UXVlcmkKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4+KFdURk1vdmUoY3JlYXRlVGFibGVRdWVyeSksIFdURk1vdmUoaW5kZXgpKTsKIH0K
IAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bmVlZHNVcGRhdGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTY2hlbWEoKQotewotICAgIGF1dG8gY3VycmVudFNjaGVt
YSA9IGN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcygiQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50Il9zKS5maXJzdDsKLQotICAgIGlmICghY3VycmVudFNjaGVtYS5pc0VtcHR5KCkg
JiYgY3VycmVudFNjaGVtYSAhPSBjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaXNzaW5nVW5pcXVlSW5kaWNl
cygpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQo
IlNFTEVDVCBDT1VOVCgqKSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZSA9ICdpbmRleCci
X3MpOwpAQCAtNTM3LDcgKzQ0OCw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om5lZWRzVXBkYXRlZFNjaGVtYSgpCiB7CiAgICAgLy8gVGhlcmUgYXJlIDMgY2Fz
ZXMgd2hlcmUgd2UgZXhwZWN0IHBvdGVudGlhbCBzY2hlbWEgY2hhbmdlcyBkdWUgdG8gdXBncmFk
ZXMuCiAgICAgLy8gQWxsIG90aGVyIHRhYmxlcyBzaG91bGQgYmUgdXAtdG8tZGF0ZSwgc28gd2Ug
c2hvdWxkIEFTU0VSVCB0aGF0IHRoZXkgYXJlIGNvcnJlY3QuCi0gICAgaWYgKG1pc3NpbmdSZWZl
cmVuY2VUb09ic2VydmVkRG9tYWlucygpIHx8IG5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50U2NoZW1hKCkgfHwgbWlzc2luZ1VuaXF1ZUluZGljZXMoKSkKKyAgICBpZiAobWlzc2lu
Z1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCkgfHwgbWlzc2luZ1VuaXF1ZUluZGljZXMoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3IgKGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRU
YWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkgewpAQCAtNTYyLDEyICs0NzMsNiBAQCBzdGF0
aWMgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IGluc2VydERpc3RpbmN0VmFsdWVzSW5U
YWJsZVN0YXRlbWVudChTUUxpdAogICAgIGlmICh0YWJsZSA9PSAiVG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tIikKICAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklO
U0VSVCBJTlRPIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBTRUxFQ1QgdG9Eb21haW5JRCwg
TUFYKGxhc3RVcGRhdGVkKSwgZnJvbURvbWFpbklEIEZST00gX1RvcEZyYW1lTGlua0RlY29yYXRp
b25zRnJvbSBHUk9VUCBCWSB0b0RvbWFpbklELCBmcm9tRG9tYWluSUQiX3MpOwogCi0gICAgaWYg
KHRhYmxlID09ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpCi0gICAgICAg
IHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxFQ1Qgc291cmNlU2l0ZURvbWFpbklELCBkZXN0
aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQsIE1BWCh0aW1lT2ZBZENsaWNrKSwgdG9rZW4s
IHNpZ25hdHVyZSwga2V5SUQgRlJPTSBfVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgR1JPVVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCJf
cyk7Ci0KLSAgICBpZiAodGFibGUgPT0gIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCIpCi0gICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5U
TyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VMRUNUIHNvdXJjZVNpdGVEb21h
aW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNvdXJjZUlELCBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLCBwcmlvcml0eSwgTUFYKHRpbWVPZkFkQ2xpY2spLCBlYXJsaWVzdFRpbWVUb1NlbmRU
b1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb24gRlJPTSBfQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IEdST1VQIEJZ
IHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQiX3MpOwotCiAgICAg
cmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIklOU0VSVCBJ
TlRPICIsIHRhYmxlLCAiIFNFTEVDVCBESVNUSU5DVCAqIEZST00gXyIsIHRhYmxlKSk7CiB9CiAK
QEAgLTY2MCwxNSArNTY1LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKFN0cmluZyYmIHRhYmwKICAgICB9CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1
bW5zSWZOZWNlc3NhcnkoKQotewotICAgIGNvbnN0IGF1dG8gdW5hdHRyaWJ1dGVkVGFibGVOYW1l
ID0gIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOwotICAgIGNvbnN0IGF1
dG8gYXR0cmlidXRlZFRhYmxlTmFtZSA9ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQiX3M7Ci0KLSAgICBhZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUodW5hdHRyaWJ1dGVkVGFibGVO
YW1lLCBjb2x1bW5zRm9yVGFibGUodW5hdHRyaWJ1dGVkVGFibGVOYW1lKSwgZXhwZWN0ZWRVbmF0
dHJpYnV0ZWRDb2x1bW5zKCkpOwotICAgIGFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZShhdHRyaWJ1
dGVkVGFibGVOYW1lLCBjb2x1bW5zRm9yVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSksIGV4cGVj
dGVkQXR0cmlidXRlZENvbHVtbnMoKSk7Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlbmFtZUNvbHVtbkluVGFibGUoU3RyaW5nJiYgdGFibGVOYW1lLCBF
eGlzdGluZ0NvbHVtbk5hbWUmJiBleGlzdGluZ0NvbHVtbk5hbWUsIEV4cGVjdGVkQ29sdW1uTmFt
ZSYmIGV4cGVjdGVkQ29sdW1uTmFtZSkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGVO
YW1lLCAiIFJFTkFNRSBDT0xVTU4gIiwgZXhpc3RpbmdDb2x1bW5OYW1lLCAiIFRPICIsIGV4cGVj
dGVkQ29sdW1uTmFtZSkpOwpAQCAtNjg0LDMwICs1ODAsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1bW5JblRhYmxlKFN0cmluZyYmIHRhYmxl
TmFtZQogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cmVuYW1lQ29sdW1uc0lmTmVjZXNzYXJ5KCkKLXsKLSAgICAvLyBBdHRyaWJ1dGVkIFByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnQgY2FzZS4KLSAgICBjb25zdCBhdXRvIGF0dHJpYnV0ZWRUYWJs
ZU5hbWUgPSAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOwotICAgIGNvbnN0
IGF1dG8gb2xkRWFybGllc3RUaW1lVG9TZW5kQ29sdW1uID0gImVhcmxpZXN0VGltZVRvU2VuZCJf
czsKLSAgICBjb25zdCBhdXRvIG5ld0VhcmxpZXN0VGltZVRvU2VuZENvbHVtbiA9ICJlYXJsaWVz
dFRpbWVUb1NlbmRUb1NvdXJjZSJfczsKLSAgICBjb25zdCBhdXRvIG9sZEF0dHJpYnV0aW9uRGVz
dGluYXRpb25Db2x1bW4gPSAiYXR0cmlidXRlT25TaXRlRG9tYWluSUQiX3M7Ci0gICAgY29uc3Qg
YXV0byBuZXdBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uID0gImRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEIl9zOwotICAgIGNvbnN0IGF1dG8gZm91bmRBdHRyaWJ1dGVkVGFibGVDb2x1bW5zID0g
Y29sdW1uc0ZvclRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOwotCi0gICAgaWYgKGZvdW5kQXR0
cmlidXRlZFRhYmxlQ29sdW1ucy5jb250YWlucyhvbGRFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4p
KQotICAgICAgICByZW5hbWVDb2x1bW5JblRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsIG9sZEVh
cmxpZXN0VGltZVRvU2VuZENvbHVtbiwgbmV3RWFybGllc3RUaW1lVG9TZW5kQ29sdW1uKTsKLQot
ICAgIGlmIChmb3VuZEF0dHJpYnV0ZWRUYWJsZUNvbHVtbnMuY29udGFpbnMob2xkQXR0cmlidXRp
b25EZXN0aW5hdGlvbkNvbHVtbikpCi0gICAgICAgIHJlbmFtZUNvbHVtbkluVGFibGUoYXR0cmli
dXRlZFRhYmxlTmFtZSwgb2xkQXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbiwgbmV3QXR0cmli
dXRpb25EZXN0aW5hdGlvbkNvbHVtbik7Ci0KLSAgICAvLyBVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudCBjYXNlLgotICAgIGF1dG8gdW5hdHRyaWJ1dGVkVGFibGVOYW1lID0g
IlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOwotICAgIGF1dG8gZm91bmRV
bmF0dHJpYnV0ZWRUYWJsZUNvbHVtbnMgPSBjb2x1bW5zRm9yVGFibGUodW5hdHRyaWJ1dGVkVGFi
bGVOYW1lKTsKLQotICAgIGlmIChmb3VuZFVuYXR0cmlidXRlZFRhYmxlQ29sdW1ucy5jb250YWlu
cyhvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uKSkKLSAgICAgICAgcmVuYW1lQ29sdW1u
SW5UYWJsZSh1bmF0dHJpYnV0ZWRUYWJsZU5hbWUsIG9sZEF0dHJpYnV0aW9uRGVzdGluYXRpb25D
b2x1bW4sIG5ld0F0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4pOwotfQotCiB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nVGFibGVzSWZOZWNlc3Nh
cnkoKQogewogICAgIGF1dG8gbWlzc2luZ1RhYmxlcyA9IGNoZWNrRm9yTWlzc2luZ1RhYmxlc0lu
U2NoZW1hKCk7CkBAIC03NDgsNyArNjIwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkKICAgICAgICAg
aWYgKHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRoZSBP
YnNlcnZlZCBEb21haW5zIHRhYmxlLiIpOwogICAgICAgICAgICAgY2xvc2UoKTsKLSAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7CisgICAg
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3RvcmFnZUZpbGVQYXRoKTsKICAgICAg
ICAgICAgIG9wZW5JVFBEYXRhYmFzZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC03NjIsMzIgKzYzNCwxNSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKQogICAgIC8vIEZJWE1FOiBN
aWdyYXRlIG9sZCBPYnNlcnZlZERvbWFpbnMgZGF0YSB0byBuZXcgdGFibGUgc2NoZW1hLgogICAg
IGlmIChjdXJyZW50U2NoZW1hICE9IE9ic2VydmVkRG9tYWluc1RhYmxlU2NoZW1hVjEoKSAmJiBj
dXJyZW50U2NoZW1hICE9IE9ic2VydmVkRG9tYWluc1RhYmxlU2NoZW1hVjFBbHRlcm5hdGUoKSkg
ewogICAgICAgICBjbG9zZSgpOwotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3Rv
cmFnZURpcmVjdG9yeVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3Rv
cmFnZUZpbGVQYXRoKTsKICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICAvLyBSZW5hbWluZyBhbmQgYWRkaW5nIGNvbHVtbnMgc2hvdWxkIGJl
IGRvbmUgYmVmb3JlIG1pZ3JhdGluZyB0byBhdm9pZCBtaXNtYXRjaGVkIG9yIG1pc3NpbmcgY29s
dW1ucy4KLSAgICByZW5hbWVDb2x1bW5zSWZOZWNlc3NhcnkoKTsKLSAgICBhZGRNaXNzaW5nQ29s
dW1uc0lmTmVjZXNzYXJ5KCk7CiAgICAgbWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5
KCk7CiB9CiAKLVNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpzY29wZWRTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudD4mIHN0YXRlbWVudCwgQVNDSUlMaXRlcmFsIHF1ZXJ5LCBjb25z
dCBTdHJpbmcmIGxvZ1N0cmluZykgY29uc3QKLXsKLSAgICBpZiAoIXN0YXRlbWVudCkgewotICAg
ICAgICBhdXRvIHN0YXRlbWVudE9yRXJyb3IgPSBtX2RhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVt
ZW50KHF1ZXJ5KTsKLSAgICAgICAgaWYgKCFzdGF0ZW1lbnRPckVycm9yKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6JXMgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNz
YWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbG9nU3RyaW5nLmFzY2lpKCkuZGF0YSgp
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
IHsgfTsKLSAgICAgICAgfQotICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRPckVycm9yLnZh
bHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3Bl
bigpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHsg
c3RhdGVtZW50LmdldCgpIH07Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmludGVycnVwdCgpCiB7CiAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCkBA
IC04MjEsOSArNjc2LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y3JlYXRlVW5pcXVlSW5kaWNlcygpCiAgICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykKICAg
ICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pCiAgICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1
dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
cykKLSAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5k
ZXhPcGVyYXRpbmdEYXRlcykKLSAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
Y3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKLSAg
ICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIHx8ICFtX2RhdGFiYXNl
LmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMpKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzIGZhaWxlZCB0byBleGVjdXRlLCBl
cnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04OTksMTYgKzc1
Miw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNj
aGVtYSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFu
ZChjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7Ci0gICAgICAgIExP
R19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KICAgICBpZiAoIWNyZWF0ZVVuaXF1ZUluZGljZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC05NTYsMjEgKzc5OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKICAgICBtX3VuaXF1ZVJlZGlyZWN0RXhpc3Rz
U3RhdGVtZW50ID0gbnVsbHB0cjsKICAgICBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVu
dCA9IG51bGxwdHI7CiAgICAgbV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAg
ICBtX2luc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0g
bnVsbHB0cjsKLSAgICBtX2luc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFzRXhwaXJlZFN0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9jbGVhclVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2Ns
ZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsK
LSAgICBtX2NsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVs
bHB0cjsKLSAgICBtX2FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25zU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9maW5kVW5hdHRyaWJ1dGVk
U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50ID0gbnVs
bHB0cjsKICAgICBtX3VwZGF0ZUF0dHJpYnV0aW9uc0VhcmxpZXN0VGltZVRvU2VuZFN0YXRlbWVu
dCA9IG51bGxwdHI7Ci0gICAgbV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBudWxscHRy
OwotICAgIG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAg
ICBtX21hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAg
ICBtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQgPSBudWxscHRyOwogfQogCiBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbihj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBsb2FkU3RhdGlzdGljcykKQEAgLTIyODcsNyAr
MjExNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
RGF0YWJhc2VDb250ZW50cygpCiAgICAgbV9kYXRhYmFzZS5jbGVhckFsbFRhYmxlcygpOwogCiAg
ICAgaWYgKCFjcmVhdGVTY2hlbWEoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3
b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJEYXRh
YmFzZUNvbnRlbnRzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
ICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyBmYWlsZWQsIGVycm9y
IG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFn
ZUZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMxNTUsNTEzICsyOTg0LDYgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0Zv
clRlc3RpbmcoY29uc3QKICAgICB9CiB9CiAKLVByaXZhdGVDbGlja01lYXN1cmVtZW50IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RnJvbURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCi17Ci0g
ICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0
YXRlbWVudC0+Y29sdW1uSW50KDApKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9
IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNvbHVtbkludCgxKSk7Ci0g
ICAgYXV0byBzb3VyY2VJRCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDIpOwotICAgIGF1dG8gdGlt
ZU9mQWRDbGljayA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDUpIDog
c3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMyk7Ci0gICAgYXV0byB0b2tlbiA9IGF0dHJpYnV0aW9u
VHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRl
ZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg0KTsK
LSAgICBhdXRvIHNpZ25hdHVyZSA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4
dCg4KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg1KTsKLSAgICBhdXRvIGtleUlEID0gYXR0cmli
dXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRy
aWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDkpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDYpOwotCi0gICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24oV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEKHNvdXJjZUlEKSwgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUoUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzb3VyY2VTaXRlRG9tYWluKSks
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZShSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9t
YWluU3RyaW5nKGRlc3RpbmF0aW9uU2l0ZURvbWFpbikpLCB7IH0sIHsgfSwgV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKHRpbWVPZkFkQ2xpY2spKTsKLSAgICAKLSAgICBpZiAoYXR0cmlidXRpb25U
eXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVk
KSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0YXRlbWVudC0+Y29s
dW1uSW50KDMpOwotICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQo
NCk7Ci0gICAgICAgIGF1dG8gc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1l
bnQtPmNvbHVtbkRvdWJsZSg2KTsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGlt
ZVRvU2VuZFZhbHVlID0gc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMTApOwotCi0gICAgICAgIGlm
IChhdHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKQotICAgICAgICAgICAgYXR0cmlidXRpb24u
c2V0QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSksIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eShwcmlvcml0
eSkgfSk7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gc291cmNlRWFybGllc3RU
aW1lVG9TZW5kOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkZXN0aW5hdGlvbkVh
cmxpZXN0VGltZVRvU2VuZDsKLSAgICAgICAgCi0gICAgICAgIC8vIEEgdmFsdWUgb2YgMC4wIGlu
ZGljYXRlcyB0aGF0IHRoZSByZXBvcnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBz
aXRlLgotICAgICAgICBpZiAoc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCi0g
ICAgICAgICAgICBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUpOwotCi0gICAgICAgIGlmIChkZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID4gMC4wKQotICAgICAgICAgICAgZGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSk7Ci0KLSAgICAgICAgYXR0cmlidXRpb24uc2V0
VGltZXNUb1NlbmQoeyBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQsIGRlc3RpbmF0aW9uRWFybGll
c3RUaW1lVG9TZW5kIH0pOwotICAgIH0KLQotICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3Jl
dFRva2VuKHsgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQgfSk7Ci0KLSAgICByZXR1cm4gYXR0cmli
dXRpb247Ci19Ci0KLXN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZmluZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSkKLXsK
LSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW5JRCA9IGRvbWFpbklEKHNvdXJjZVNpdGUucmVnaXN0
cmFibGVEb21haW4pOwotICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5J
RChkZXN0aW5hdGlvblNpdGUucmVnaXN0cmFibGVEb21haW4pOwotCi0gICAgaWYgKCFzb3VyY2VT
aXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwotCi0gICAgYXV0byBm
aW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1f
ZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudCwgZmluZFVuYXR0cmlidXRlZFF1ZXJ5LCAiZmluZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKLSAgICBpZiAoIWZpbmRVbmF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQKLSAgICAgICAgfHwgZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+
YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
ZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25T
aXRlRG9tYWluSUQpICE9IFNRTElURV9PSykgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJS
T1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZmluZFVuYXR0cmlidXRlZFF1ZXJ5LCBlcnJv
ciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBh
dXRvIGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50
KG1fZmluZEF0dHJpYnV0ZWRTdGF0ZW1lbnQsIGZpbmRBdHRyaWJ1dGVkUXVlcnksICJmaW5kUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOwotICAgIGlmICghZmluZEF0dHJpYnV0ZWRTY29wZWRT
dGF0ZW1lbnQKLSAgICAgICAgfHwgZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJ
bnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGZpbmRB
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBzdGQ6Om9wdGlv
bmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiB1bmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDsKLSAgICBpZiAoZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFz
ZShmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKLQotICAgIHN0ZDo6b3B0aW9u
YWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ7Ci0gICAgaWYgKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5z
dGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShmaW5kQXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOwotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBh
dHRyaWJ1dGlvblR5cGUpCi17Ci0gICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFu
c2FjdGlvbklmTmVjZXNzYXJ5KCk7Ci0KLSAgICBhdXRvIHNvdXJjZURhdGEgPSBlbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihhdHRyaWJ1dGlvbi5zb3VyY2VTaXRl
KCkucmVnaXN0cmFibGVEb21haW4pOwotICAgIGF1dG8gYXR0cmlidXRpb25EZXN0aW5hdGlvbkRh
dGEgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihhdHRyaWJ1
dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0KLSAgICBpZiAoIXNv
dXJjZURhdGEuc2Vjb25kIHx8ICFhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uRGF0YS5zZWNvbmQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIHNvdXJjZVVubGlua2FibGVUb2tlbiA9IGF0dHJp
YnV0aW9uLnNvdXJjZVVubGlua2FibGVUb2tlbigpOwotICAgIGlmIChhdHRyaWJ1dGlvblR5cGUg
PT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsK
LSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gYXR0cmlidXRpb24uYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgp
LnZhbHVlKCkuZGF0YSA6IC0xOwotICAgICAgICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb24u
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSgpLnZhbHVlKCkucHJpb3JpdHkgOiAtMTsKLSAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLnNvdXJjZUVhcmxpZXN0VGlt
ZVRvU2VuZCA/IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9T
ZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7Ci0gICAgICAgIGF1
dG8gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2Vu
ZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNUb1Nl
bmQoKS5kZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZC52YWx1ZSgpLnNlY29uZHNTaW5jZUVw
b2NoKCkudmFsdWUoKSA6IC0xOwotCi0gICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBpbnNl
cnRpbmcgYW4gYXR0cmlidXRlZCBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IHZhbHVlIGludG8g
dGhlIGRhdGFiYXNlIHdpdGhvdXQgdmFsaWQgcmVwb3J0IHRpbWVzLgotICAgICAgICBBU1NFUlQo
c291cmNlRWFybGllc3RUaW1lVG9TZW5kICE9IC0xICYmIGRlc3RpbmF0aW9uRWFybGllc3RUaW1l
VG9TZW5kICE9IC0xKTsKLQotICAgICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJl
cGFyZVN0YXRlbWVudChpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVy
eSk7Ci0gICAgICAgIGlmICghc3RhdGVtZW50Ci0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJp
bmRJbnQoMSwgKnNvdXJjZURhdGEuc2Vjb25kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IHN0YXRlbWVudC0+YmluZEludCgyLCAqYXR0cmlidXRpb25EZXN0aW5hdGlvbkRhdGEuc2Vjb25k
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgzLCBhdHRy
aWJ1dGlvbi5zb3VyY2VJRCgpLmlkKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRl
bWVudC0+YmluZEludCg0LCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCg1LCBwcmlvcml0eSkgIT0gU1FMSVRFX09L
Ci0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoNiwgYXR0cmlidXRpb24udGlt
ZU9mQWRDbGljaygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0g
ICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoNywgc291cmNlRWFybGllc3RUaW1l
VG9TZW5kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQo
OCwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT50b2tlbkJh
c2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3Rh
dGVtZW50LT5iaW5kVGV4dCg5LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmth
YmxlVG9rZW4tPnNpZ25hdHVyZUJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCgxMCwgc291cmNlVW5saW5rYWJs
ZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3Ry
aW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kRG91Ymxl
KDExLCBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICAgICAg
SVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0
ZW1lbnQoaW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSk7Ci0g
ICAgaWYgKCFzdGF0ZW1lbnQKLSAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3Vy
Y2VEYXRhLnNlY29uZCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZElu
dCgyLCAqYXR0cmlidXRpb25EZXN0aW5hdGlvbkRhdGEuc2Vjb25kKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDMsIGF0dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoNCwgYXR0cmli
dXRpb24udGltZU9mQWRDbGljaygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoNSwgc291cmNlVW5saW5rYWJs
ZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT50b2tlbkJhc2U2NFVSTCA6IGVtcHR5U3Ry
aW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDYsIHNv
dXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+c2lnbmF0dXJlQmFz
ZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVu
dC0+YmluZFRleHQoNywgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRv
a2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVM
RUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpbnNlcnRVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKQotewotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50
ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQsIHNldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXNFeHBpcmVkUXVlcnksICJtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nIl9zKTsKLQotICAgIGlmICghc2NvcGVkU3Rh
dGVtZW50IHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6cmVtb3ZlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50JiBhdHRyaWJ1dGlvbikKLXsKLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW5JRCA9IGRvbWFp
bklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgYXV0
byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLmRlc3RpbmF0
aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLQotICAgIGlmICghc291cmNlU2l0ZURvbWFp
bklEIHx8ICFkZXN0aW5hdGlvblNpdGVEb21haW5JRCkKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fcmVtb3Zl
VW5hdHRyaWJ1dGVkU3RhdGVtZW50LCByZW1vdmVVbmF0dHJpYnV0ZWRRdWVyeSwgInJlbW92ZVVu
YXR0cmlidXRlZCJfcyk7Ci0KLSAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBz
Y29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25T
aXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1v
dmVVbmF0dHJpYnV0ZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIH0KLX0KLQotc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFNvdXJj
ZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0
aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKQotewotICAgIC8vIFdlIHNob3VsZCBhbHdheXMgY2xlYXIgZXhwaXJlZCBjbGlja3MgZnJv
bSB0aGUgZGF0YWJhc2UgYmVmb3JlIHNjaGVkdWxpbmcgYW4gYXR0cmlidXRpb24uCi0gICAgY2xl
YXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLQotICAgIGlmICghYXR0cmlidXRp
b25UcmlnZ2VyRGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9k
ZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsICJHb3QgYW4gaW52YWxpZCBhdHRyaWJ1dGlvbi4iKTsKLSAgICAgICAgICAg
IGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gR290IGFuIGludmFsaWQgYXR0cmlidXRpb24uIl9zKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gZGF0YSA9IGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEuZGF0YTsKLSAgICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb25Ucmln
Z2VyRGF0YS5wcmlvcml0eTsKLQotICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJH
b3QgYW4gYXR0cmlidXRpb24gd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGlj
fXUgYW5kIHByaW9yaXR5OiAle3B1YmxpY311LiIsIGRhdGEsIHByaW9yaXR5KTsKLSAgICAgICAg
ZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gR290IGFuIGF0dHJpYnV0aW9uIHdpdGggYXR0cmlidXRpb24gdHJpZ2dl
ciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJy4i
X3MpKTsKLSAgICB9Ci0KLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25T
ZWNvbmRzVW50aWxTZW5kRGF0YSBzZWNvbmRzVW50aWxTZW5kIHsgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQgfTsKLQotICAgIGF1dG8gYXR0cmlidXRpb24gPSBmaW5kUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlKTsKLSAgICBhdXRvJiBwcmV2aW91
c2x5VW5hdHRyaWJ1dGVkID0gYXR0cmlidXRpb24uZmlyc3Q7Ci0gICAgYXV0byYgcHJldmlvdXNs
eUF0dHJpYnV0ZWQgPSBhdHRyaWJ1dGlvbi5zZWNvbmQ7Ci0KLSAgICBpZiAocHJldmlvdXNseVVu
YXR0cmlidXRlZCkgewotICAgICAgICAvLyBBbHdheXMgY29udmVydCB0aGUgcGVuZGluZyBhdHRy
aWJ1dGlvbiBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIHVuYXR0cmlidXRlZCBtYXAuCi0gICAgICAg
IHJlbW92ZVVuYXR0cmlidXRlZCgqcHJldmlvdXNseVVuYXR0cmlidXRlZCk7Ci0gICAgICAgIHNl
Y29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkLnZhbHVlKCkuYXR0cmlidXRl
QW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkp
OwotCi0gICAgICAgIC8vIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHZhbGlkIHNlY29uZHNVbnRp
bFNlbmQgdmFsdWUgZm9yIGEgcHJldmlvdXNseVVuYXR0cmlidXRlZCB2YWx1ZSBiZWNhdXNlIHRo
ZXJlIGNhbiBiZSBubyBwcmV2aW91cyBhdHRyaWJ1dGlvbiB3aXRoIGEgaGlnaGVyIHByaW9yaXR5
LgotICAgICAgICBpZiAoIXNlY29uZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5k
VmFsdWVzKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChVTkxJS0VM
WShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCAiQ29udmVydGVkIGEgc3RvcmVkIGFkIGNsaWNrIHdpdGgg
YXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJs
aWN9dS4iLCBkYXRhLCBwcmlvcml0eSk7Ci0gICAgICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdl
TGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252
ZXJ0ZWQgYSBzdG9yZWQgYWQgY2xpY2sgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICci
X3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInLiJfcykpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcHJldmlvdXMgYXR0cmlidXRpb24s
IG9yIHRoZSBuZXcgYXR0cmlidXRpb24gaGFzIGhpZ2hlciBwcmlvcml0eSwgaW5zZXJ0L3VwZGF0
ZSB0aGUgZGF0YWJhc2UuCi0gICAgICAgIGlmICghcHJldmlvdXNseUF0dHJpYnV0ZWQgfHwgcHJl
dmlvdXNseVVuYXR0cmlidXRlZC52YWx1ZSgpLmhhc0hpZ2hlclByaW9yaXR5VGhhbigqcHJldmlv
dXNseUF0dHJpYnV0ZWQpKSB7Ci0gICAgICAgICAgICBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChXVEZNb3ZlKCpwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKSwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOwotCi0gICAgICAgICAgICBpZiAoVU5M
SUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJSZXBsYWNlZCBhIHByZXZpb3VzbHkgY29u
dmVydGVkIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gZGF0YTogJXtw
dWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUgYmVjYXVzZSBpdCBoYWQgaGlnaGVyIHBy
aW9yaXR5LiIsIGRhdGEsIHByaW9yaXR5KTsKLSAgICAgICAgICAgICAgICBkZWJ1Z0Jyb2FkY2Fz
dENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBN
ZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBSZXBsYWNlZCBhIHByZXZpb3VzbHkgY29udmVydGVkIGFkIGNsaWNrIHdpdGggYSBuZXcgb25l
IHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3Jp
dHk6ICciX3MsIHByaW9yaXR5LCAiJyBiZWNhdXNlIGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIl9z
KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHByZXZpb3VzbHlB
dHRyaWJ1dGVkKSB7Ci0gICAgICAgIC8vIElmIHdlIGhhdmUgbm8gbmV3IGF0dHJpYnV0aW9uLCBy
ZS1hdHRyaWJ1dGUgdGhlIG9sZCBvbmUgdG8gcmVzcGVjdCB0aGUgbmV3IHByaW9yaXR5LCBidXQg
b25seSBpZiB0aGlzIHJlcG9ydCBoYXMKLSAgICAgICAgLy8gbm90IGJlZW4gc2VudCB0byB0aGUg
c291cmNlIG9yIGRlc3RpbmF0aW9uIHNpdGUgeWV0LgotICAgICAgICBpZiAoIXByZXZpb3VzbHlB
dHRyaWJ1dGVkLnZhbHVlKCkuaGFzUHJldmlvdXNseUJlZW5SZXBvcnRlZCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5QXR0cmlidXRlZC52YWx1ZSgp
LmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEpKTsKLSAgICAgICAgICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNl
Y29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgICAgICAgICBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3Zl
KCpwcmV2aW91c2x5QXR0cmlidXRlZCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UeXBlOjpBdHRyaWJ1dGVkKTsKLQotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9k
ZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCAiUmUtY29udmVydGVkIGFuIGFkIGNsaWNrIHdpdGggYSBuZXcgb25l
IHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTog
JXtwdWJsaWN9dSBiZWNhdXNlIGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3Jp
dHkpOwotICAgICAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFr
ZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlLWNvbnZlcnRlZCBhbiBhZCBj
bGljayB3aXRoIGEgbmV3IG9uZSB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywg
ZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicnIGJlY2F1c2UgaXQgaGFk
IGhpZ2hlciBwcmlvcml0eS4iX3MpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1
ZXMoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBzZWNvbmRz
VW50aWxTZW5kOwotfQotCi1WZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoKQotewotICAgIGF1dG8gYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVu
dCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0YXRlbWVudCwgYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVl
cnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIl9zKTsKLQotICAgIGlmICghYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1Io
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBW
ZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGF0dHJpYnV0aW9uczsKLSAg
ICB3aGlsZSAoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
Ci0gICAgICAgIGF0dHJpYnV0aW9ucy5hcHBlbmQoYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZyb21EYXRhYmFzZShhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkpOwotCi0gICAgcmV0dXJu
IGF0dHJpYnV0aW9uczsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW4pCi17Ci0gICAgLy8gRGVmYXVsdCB0byBjbGVhciBhbGwgZW50cmll
cyBpZiBubyBkb21haW4gaXMgc3BlY2lmaWVkLgotICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyID0g
IiUiOwotICAgIGlmIChkb21haW4pIHsKLSAgICAgICAgYXV0byBkb21haW5JRFRvTWF0Y2ggPSBk
b21haW5JRCgqZG9tYWluKTsKLSAgICAgICAgaWYgKCFkb21haW5JRFRvTWF0Y2gpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgYmluZFBhcmFtZXRlciA9IFN0cmluZzo6bnVtYmVyKCpk
b21haW5JRFRvTWF0Y2gpOwotICAgIH0KLQotICAgIGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJl
Z2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwotCi0gICAgYXV0byBjbGVhclVuYXR0cmlidXRl
ZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NsZWFyVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGNsZWFyVW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQi
X3MpOwotCi0gICAgaWYgKCFjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAotICAgICAg
ICB8fCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgYmluZFBh
cmFtZXRlcikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVk
U3RhdGVtZW50LT5iaW5kVGV4dCgyLCBiaW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGNsZWFy
QXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NsZWFy
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBjbGVhckF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAiY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCJfcyk7Ci0KLSAgICBpZiAoIWNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAotICAg
ICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJpbmRQ
YXJhbWV0ZXIpICE9IFNRTElURV9PSwotICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRT
dGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9O
RSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpCi17Ci0gICAgYXV0byBleHBpcmF0aW9uVGltZUZyYW1lID0gV2FsbFRpbWU6Om5vdygp
IC0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Om1heEFnZSgpOwotICAgIGF1dG8g
c2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fY2xlYXJFeHBpcmVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50UXVlcnksICJjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7
Ci0KLSAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQt
PmJpbmREb3VibGUoMSwgZXhwaXJhdGlvblRpbWVGcmFtZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGly
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi1TdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50KiBzdGF0ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0
dHJpYnV0aW9uVHlwZSkKLXsKLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW4gPSBnZXREb21haW5T
dHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOwotICAgIGF1dG8gZGVz
dGluYXRpb25TaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVu
dC0+Y29sdW1uSW50KDEpKTsKLSAgICBhdXRvIHNvdXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5J
bnQoMik7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQo
IlNvdXJjZSBzaXRlOiAiLCBzb3VyY2VTaXRlRG9tYWluLCAiXG5BdHRyaWJ1dGUgb24gc2l0ZTog
IiwgZGVzdGluYXRpb25TaXRlRG9tYWluLCAiXG5Tb3VyY2UgSUQ6ICIsIHNvdXJjZUlEKTsKLQot
ICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMyk7Ci0gICAgICAgIGF1dG8gcHJpb3JpdHkgPSBz
dGF0ZW1lbnQtPmNvbHVtbkludCg0KTsKLSAgICAgICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmQg
PSBzdGF0ZW1lbnQtPmNvbHVtbkludCg2KTsKLQotICAgICAgICBpZiAoYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSAhPSAtMSkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuQXR0cmlidXRp
b24gdHJpZ2dlciBkYXRhOiAiLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCAiXG5BdHRyaWJ1dGlv
biBwcmlvcml0eTogIiwgcHJpb3JpdHksICJcbkF0dHJpYnV0aW9uIGVhcmxpZXN0IHRpbWUgdG8g
c2VuZDogIik7Ci0gICAgICAgICAgICBpZiAoZWFybGllc3RUaW1lVG9TZW5kID09IC0xKQotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJOb3Qgc2V0Iik7Ci0gICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoZWFybGllc3RUaW1lVG9TZW5kKSAtIFdhbGxUaW1lOjpub3coKTsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgoc2Vjb25kc1VudGlsU2VuZCA+PSAyNF9oICYmIHNl
Y29uZHNVbnRpbFNlbmQgPD0gNDhfaCkgPyAiV2l0aGluIDI0LTQ4IGhvdXJzIiA6ICJPdXRzaWRl
IDI0LTQ4IGhvdXJzIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIlxuTm8gYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhLiIpOwotICAg
IH0gZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2Vy
IGRhdGEuIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwotfQotCi1TdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKQotewotICAgIGF1dG8gcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJTRUxFQ1QgKFNFTEVDVCBDT1VOVCgqKSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KSBhcyBjbnQxLCAoU0VMRUNUIENPVU5UKCopIEZST00gQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KSBhcyBjbnQyIl9zKTsKLSAgICBpZiAoIXByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YUV4aXN0cyB8fCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlz
dHMtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5l
dHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAg
aWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmNvbHVtbkludCgwKSAmJiAh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzLT5jb2x1bW5JbnQoMSkpCi0gICAgICAg
IHJldHVybiAiXG5ObyBzdG9yZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBkYXRhLlxuIl9z
OwotCi0gICAgYXV0byB1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRT
dGF0ZW1lbnQobV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uc1N0YXRlbWVudCwgYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvbnNRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmciX3MpOwotCi0g
ICAgaWYgKCF1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQpIHsKLSAgICAgICAgSVRQX1JFTEVB
U0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZywgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQg
dW5hdHRyaWJ1dGVkTnVtYmVyID0gMDsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAg
d2hpbGUgKHVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKLSAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0gdW5hdHRyaWJ1dGVkTnVtYmVyID8gIiIg
OiAiVW5hdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOiI7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHByZWZpeCwgIlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
IiwgKyt1bmF0dHJpYnV0ZWROdW1iZXIsICdcbicsCi0gICAgICAgICAgICBhdHRyaWJ1dGlvblRv
U3RyaW5nKHVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCkpOwotICAgIH0KLQotICAgIGF1
dG8gYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2Fs
bEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgYWxsQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nIl9zKTsKLQotICAgIGlmICghYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgewotICAg
ICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5n
LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0K
LSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVkTnVtYmVyID0gMDsKLSAgICB3aGlsZSAoYXR0cmlidXRl
ZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaWYgKCFh
dHRyaWJ1dGVkTnVtYmVyKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodW5hdHRyaWJ1dGVk
TnVtYmVyID8gIlxuIiA6ICIiLCAiQXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
czoiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgIiwgKythdHRyaWJ1dGVkTnVtYmVyICsgdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4n
LAotICAgICAgICAgICAgYXR0cmlidXRpb25Ub1N0cmluZyhhdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCkpOwotICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1zdGQ6
OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlv
bmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQotewotICAgIGF1dG8gc291cmNlU2l0ZURv
bWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9t
YWluKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmli
dXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotCi0gICAgaWYgKCFz
b3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwotCi0gICAg
YXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9lYXJsaWVzdFRp
bWVzVG9TZW5kU3RhdGVtZW50LCBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnksICJlYXJsaWVzdFRp
bWVzVG9TZW5kIl9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNj
b3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNp
dGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplYXJsaWVzdFRpbWVzVG9TZW5k
LCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHN0
ZDo6b3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1lVG9TZW5kPiBlYXJsaWVzdFRpbWVUb1NlbmRU
b1NvdXJjZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5k
PiBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uOwotICAgIAotICAgIC8vIEEgdmFsdWUg
b2YgMC4wIGluZGljYXRlcyB0aGF0IHRoZSByZXBvcnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVz
cGVjdGl2ZSBzaXRlLgotICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgwKSA+
IDAuMCkKLSAgICAgICAgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSBzY29wZWRTdGF0ZW1l
bnQtPmNvbHVtbkRvdWJsZSgwKTsKLSAgICAKLSAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1
bW5Eb3VibGUoMSkgPiAwLjApCi0gICAgICAgIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRp
b24gPSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxKTsKLSAgICAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRv
U2VuZFRvRGVzdGluYXRpb24pOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9tYWluSUQgc291cmNl
U2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
KQotewotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1f
bWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVtZW50LCBtYXJrUmVwb3J0QXNTZW50VG9Tb3Vy
Y2VRdWVyeSwgIm1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSJfcyk7Ci0KLSAgICBpZiAoIXNjb3Bl
ZFN0YXRlbWVudAotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgc291cmNl
U2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5i
aW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
fHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19M
T0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjptYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCBz
b3VyY2VTaXRlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQpCi17Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1l
bnQobV9tYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblN0YXRlbWVudCwgbWFya1JlcG9ydEFz
U2VudFRvRGVzdGluYXRpb25RdWVyeSwgIm1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uIl9z
KTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVu
dC0+YmluZEludCgxLCBzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uLCBl
cnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24o
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBv
cnRFbmRwb2ludCkKLXsgICAgCi0gICAgYXV0byB0aW1lc1RvU2VuZCA9IGVhcmxpZXN0VGltZXNU
b1NlbmQoYXR0cmlidXRpb24pOwotICAgIGF1dG8gc291cmNlRWFybGllc3RUaW1lVG9TZW5kID0g
dGltZXNUb1NlbmQuZmlyc3Q7Ci0gICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZCA9IHRpbWVzVG9TZW5kLnNlY29uZDsKLQotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0g
ZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLSAg
ICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVz
dGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotCi0gICAgaWYgKCFzb3VyY2VTaXRl
RG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBzd2l0Y2ggKGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpIHsKLSAgICBjYXNlIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50OjpTb3VyY2U6Ci0g
ICAgICAgIGlmICghc291cmNlRWFybGllc3RUaW1lVG9TZW5kKSB7Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoKnNvdXJjZVNpdGVEb21haW5JRCwgKmRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKTsKLSAgICAgICAgc291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gc3Rk
OjpudWxsb3B0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50OjpEZXN0aW5hdGlvbjoKLSAgICAgICAgaWYg
KCFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkgewotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbWFy
a1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oKnNvdXJjZVNpdGVEb21haW5JRCwgKmRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKTsKLSAgICAgICAgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQg
PSBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgY2xlYXIgdGhlIGF0dHJpYnV0
ZSBmcm9tIHRoZSBkYXRhYmFzZSB1bmxlc3MgaXQgaGFzIGJlZW4gcmVwb3J0ZWQgYm90aCB0byB0
aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBzaXRlLgotICAgIGlmIChkZXN0aW5hdGlvbkVhcmxp
ZXN0VGltZVRvU2VuZCB8fCBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGF1dG8gY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KCJERUxFVEUgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQgPSA/Il9zKTsKLSAgICBpZiAoIWNsZWFyQXR0cmlidXRlZFN0YXRlbWVudAotICAgICAgICB8
fCBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5J
RCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+Ymlu
ZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAg
ICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbiBmYWlsZWQgdG8g
c3RlcCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
fQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKQotewot
ICAgIGF1dG8gZXhwaXJlZFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6bm93KCkgLSAxX2g7Ci0KLSAg
ICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsK
LQotICAgIGF1dG8gZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnQoIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgU0VUIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gPyJfcyk7Ci0gICAgYXV0byBl
YXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KCJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNF
VCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gbnVsbCJfcyk7Ci0KLSAgICBpZiAo
IWVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50Ci0gICAgICAgIHx8IGVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50LT5iaW5kSW50KDEsIGV4cGlyZWRUaW1lVG9TZW5k
LnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUp
IHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWVhcmxpZXN0VGltZVRv
U2VuZFRvRGVzdGluYXRpb25TdGF0ZW1lbnQgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5h
dGlvblN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxF
QVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBp
cmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfQotfQotCi1TY29wZUV4aXQ8RnVuY3Rpb248dm9pZCgpPj4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpCi17
Ci0gICAgaWYgKG1fdHJhbnNhY3Rpb24uaW5Qcm9ncmVzcygpKQotICAgICAgICByZXR1cm4gbWFr
ZVNjb3BlRXhpdChGdW5jdGlvbjx2b2lkKCk+IHsgW10geyB9IH0pOwotCi0gICAgbV90cmFuc2Fj
dGlvbi5iZWdpbigpOwotICAgIHJldHVybiBtYWtlU2NvcGVFeGl0KEZ1bmN0aW9uPHZvaWQoKT4g
eyBbdGhpc10gewotICAgICAgICBtX3RyYW5zYWN0aW9uLmNvbW1pdCgpOwotICAgIH0gfSk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgSVRQX1JFTEVBU0VfTE9HCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4
IDM1MTI5ODY4Mzg3MWM3ZWJkM2NhNzk0OWIwNThiNDM4MDUxZGViMTEuLjBhYTEyNWUxOTc4ZmZh
MzM3Y2UwM2UxYTEyMjQ1Y2E5YzVjZmJhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0yNywyMSArMjcsMTYgQEAKIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKKyNpbmNsdWRlICJEYXRhYmFzZVV0
aWxpdGllcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2luY2x1ZGUgPHd0
Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNRTGl0ZURhdGFiYXNlOwotY2xhc3Mg
U1FMaXRlU3RhdGVtZW50OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24g
OiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBzdHJ1
Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKQEAgLTU2LDggKzUxLDYgQEAgc3RhdGljIGNvbnN0
ZXhwciBzdGQ6OmFycmF5PHVuc2lnbmVkLCBudW1iZXJPZkJ1Y2tldHNQZXJTdGF0aXN0aWM+IGJ1
Y2tldFNpemVzIHsKIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTsKIGNs
YXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjsKIAotdXNpbmcgQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7
Ci11c2luZyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OwogdXNpbmcgU291cmNlU2l0ZSA9IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOwogdXNpbmcgQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25E
ZXN0aW5hdGlvblNpdGU7CiB1c2luZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CkBAIC02NSwx
NSArNTgsMTEgQEAgdXNpbmcgRXhpc3RpbmdDb2x1bW5zID0gVmVjdG9yPFN0cmluZz47CiB1c2lu
ZyBFeHBlY3RlZENvbHVtbnMgPSBWZWN0b3I8U3RyaW5nPjsKIHVzaW5nIEV4aXN0aW5nQ29sdW1u
TmFtZSA9IFN0cmluZzsKIHVzaW5nIEV4cGVjdGVkQ29sdW1uTmFtZSA9IFN0cmluZzsKLXVzaW5n
IFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IGRvdWJsZTsKLXVzaW5nIERlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG9TZW5kID0gZG91YmxlOwotdXNpbmcgU291cmNlRG9tYWluSUQgPSB1bnNpZ25l
ZDsKLXVzaW5nIERlc3RpbmF0aW9uRG9tYWluSUQgPSB1bnNpZ25lZDsKIAogdHlwZWRlZiBzdGQ6
OnBhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+IFRhYmxlQW5kSW5kZXhQYWlyOwog
CiAvLyBUaGlzIGlzIGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQgb24gdGhl
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3MgcXVldWUuCi1jbGFz
cyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSBmaW5hbCA6IHB1YmxpYyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgeworY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBw
dWJsaWMgRGF0YWJhc2VVdGlsaXRpZXMgewogcHVibGljOgogICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFN1c3Bl
bmRhYmxlV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5nJiBz
dG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQpOwogICAgIH5SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZSgpOwpAQCAtMTQyLDE2ICsxMzEsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYXNV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bCwgYm9vbCBpc1ByZXZhbGVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnRlcnJ1cHQoKTsKIAot
ICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQuCi0gICAgdm9pZCBpbnNlcnRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBt
YXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0
aW5nKCkgb3ZlcnJpZGU7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gYXR0cmlidXRlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8V2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlOwotICAgIFN0
cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
LCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRw
b2ludCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBjb2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CkBAIC0xNjQsMTEg
KzE0Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRNaXNzaW5nVGFibGVzSWZOZWNlc3Nhcnko
KTsKICAgICBib29sIG1pc3NpbmdVbmlxdWVJbmRpY2VzKCk7CiAgICAgYm9vbCBuZWVkc1VwZGF0
ZWRTY2hlbWEoKTsKLSAgICBib29sIG5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
U2NoZW1hKCk7CiAgICAgdm9pZCByZW5hbWVDb2x1bW5JblRhYmxlKFN0cmluZyYmLCBFeGlzdGlu
Z0NvbHVtbk5hbWUmJiwgRXhwZWN0ZWRDb2x1bW5OYW1lJiYpOwogICAgIHZvaWQgYWRkTWlzc2lu
Z0NvbHVtbnNUb1RhYmxlKFN0cmluZyYmLCBjb25zdCBFeGlzdGluZ0NvbHVtbnMmLCBjb25zdCBF
eHBlY3RlZENvbHVtbnMmKTsKLSAgICB2b2lkIGFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3Nhcnko
KTsKLSAgICB2b2lkIHJlbmFtZUNvbHVtbnNJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgcmVuYW1l
Q29sdW1uSW5UYWJsZSgpOwogICAgIFRhYmxlQW5kSW5kZXhQYWlyIGN1cnJlbnRUYWJsZUFuZElu
ZGV4UXVlcmllcyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50U2NoZW1hSWZOZWNlc3NhcnkoKTsKQEAgLTE3Niw3ICsxNTIsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCk7CiAgICAgdm9p
ZCBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIGRlc3Ryb3lT
dGF0ZW1lbnRzKCk7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUg
c2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
JiwgQVNDSUlMaXRlcmFsLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YkZyYW1lRG9tYWluJikg
Y29uc3Q7CiAgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQ
YXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBj
b25zdDsKQEAgLTIwMSwxMCArMTc2LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KCkgY29uc3Q7
CiAgICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+IGRvbWFpbnNX
aXRoU3RvcmFnZUFjY2VzcygpIGNvbnN0OwogCi0gICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9E
ZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCk7Ci0gICAgdm9p
ZCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9t
YWluSUQpOwotICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRv
U2VuZD4sIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ+PiBlYXJs
aWVzdFRpbWVzVG9TZW5kKGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7
Ci0KICAgICBzdHJ1Y3QgRG9tYWluRGF0YSB7CiAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEOwog
ICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbjsKQEAgLTI1MywyMCAr
MjI0LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0RhdGFiYXNlU3RvcmUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGNyZWF0ZVVuaXF1ZUluZGljZXMoKTsKLSAg
ICBib29sIGNyZWF0ZVNjaGVtYSgpOworICAgIGJvb2wgY3JlYXRlU2NoZW1hKCkgZmluYWw7CiAg
ICAgU3RyaW5nIGVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+Jik7CiAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUoY29uc3QgRG9tYWluRGF0YSYpOwotICAgIAotICAgIHZvaWQgcmVtb3Zl
VW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7Ci0gICAgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7Ci0gICAgU3RyaW5nIGF0dHJpYnV0aW9uVG9TdHJpbmco
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGUpOwotICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+PiBmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmKTsKLQotICAg
IFNjb3BlRXhpdDxGdW5jdGlvbjx2b2lkKCk+PiBXQVJOX1VOVVNFRF9SRVRVUk4gYmVnaW5UcmFu
c2FjdGlvbklmTmVjZXNzYXJ5KCk7CiAKLSAgICBjb25zdCBTdHJpbmcgbV9zdG9yYWdlRGlyZWN0
b3J5UGF0aDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7
Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiBtX3RyYW5zYWN0aW9uOwog
ICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9v
YnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pbnNlcnRUb3BMZXZl
bERvbWFpblN0YXRlbWVudDsKQEAgLTMwNCwyMSArMjY1LDcgQEAgcHJpdmF0ZToKICAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdW5pcXVlUmVk
aXJlY3RFeGlzdHNTdGF0ZW1lbnQ7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50PiBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudDsKICAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVt
b3ZlQWxsRGF0YVN0YXRlbWVudDsKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZWFybGllc3RUaW1lc1RvU2VuZFN0YXRlbWVudDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2luc2VydFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQ+IG1fc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4
cGlyZWRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4gbV9jbGVhclVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jbGVhckV4cGlyZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiBtX2FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25zU3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+IG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZmluZFVu
YXR0cmlidXRlZFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlQXR0cmlidXRpb25zRWFybGllc3RU
aW1lVG9TZW5kU3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+IG1fcmVtb3ZlVW5hdHRyaWJ1dGVkU3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNl
U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQ7CiAKICAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VGaWxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCBhNzdlMDk4MGFlYTNkMjY1YTE2YTE4NTI0YjQ3
ZWVjYmNiYjNjNjk3Li4zZDdmNzVhMDE2MDRmZTZlMTg0YmRlZTBhODNhMjk2YTI4YjgwYzQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBA
IC0xMDcsMTcgKzEwNyw2IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
IGFsbERvbWFpbnMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0
aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZP
cGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVk
dWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVycmlk
ZTsKIAotICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgaXMgbm90IGltcGxlbWVudGVk
IGluIHRoZSBJVFAgbWVtb3J5IHN0b3JlLgotICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIG92ZXJyaWRlIHsgfTsKLSAgICB2b2lkIG1hcmtB
bGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3Rpbmco
KSBvdmVycmlkZSB7IH07Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT5hdHRyaWJ1dGVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpB
dHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpIG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsK
LSAgICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsKLSAg
ICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdpc3Ry
YWJsZURvbWFpbj4pIG92ZXJyaWRlIHsgfTsKLSAgICB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGUgeyB9OwotICAgIFN0cmluZyBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRvU3RyaW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH07Ci0gICAg
dm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRF
bmRwb2ludCkgb3ZlcnJpZGUgeyB9OwotICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkgb3ZlcnJpZGUgeyB9OwotCiBwcml2
YXRlOgogICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKSBv
dmVycmlkZTsKICAgICBjb25zdCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mIG9wZXJhdGluZ0RhdGVz
KCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdEYXRlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDI0MjJmYzg0ZjU0ZWU3Y2QzMGVlNDBmMTQyMDQy
ZDQxZWJmNTFiM2YuLmMxZWRmNTZkMzViYmI2NzM4OGI3NzMzNTQ0ZDRlMTFmZWI2NzcyMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTIwMiwxNyArMjAy
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9wZXJhdGluZ0RhdGVzKCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQs
IGJvb2wgaGFzVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwsIGJvb2wpID0gMDsKLSAgICAKLSAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50LgotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkgPSAwOwotICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25E
ZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25UcmlnZ2VyRGF0YSYmKSA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8V2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChz
dGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBj
bGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpID0gMDsKLSAgICB2aXJ0dWFsIFN0
cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRF
bmRwb2ludCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUltcG9ydGFuY2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAppbmRleCA0ZGI4MDdhN2Q5ZDcwNTQwMWVkNTlhNmNlZWUyYWQ3YjI0MDY3
NzQwLi40MTQ0ZThmZDdmMjI2NjFhZTE5ZDA3YTY5NmViNTQ5MTIxMTc4MWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTUwLDExICsx
NTAsMjQgQEAgc3RhdGljIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGlj
c1F1ZXVlKCkKICAgICByZXR1cm4gcXVldWUuZ2V0KCkuY29weVJlZigpOwogfQogCi1XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShO
ZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJh
bCkKKworc3RhdGljIFN0cmluZyBwY21TdG9yZURpcmVjdG9yeShjb25zdCBOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
LCBjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSkK
K3sKKyAgICBpZiAoc2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgaWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yYWdlRGlyZWN0b3J5OworCisgICAgcmV0dXJuIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3Rvcnk7Cit9CisKK1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0Vw
aGVtZXJhbCBpc0VwaGVtZXJhbCkKICAgICA6IG1fbmV0d29ya1Nlc3Npb24obWFrZVdlYWtQdHIo
bmV0d29ya1Nlc3Npb24pKQogICAgICwgbV9zdGF0aXN0aWNzUXVldWUoc2hhcmVkU3RhdGlzdGlj
c1F1ZXVlKCkpCiAgICAgLCBtX2RhaWx5VGFza3NUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKQogICAg
ICwgbV9pc0VwaGVtZXJhbChpc0VwaGVtZXJhbCkKKyAgICAsIG1fcGNtU3RvcmUoc2hhcmVkU3Rh
dGlzdGljc1F1ZXVlKCksIHBjbVN0b3JlRGlyZWN0b3J5KG5ldHdvcmtTZXNzaW9uLCByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VE
aXJlY3RvcnkpKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApA
QCAtMTg2LDkgKzE5OSw5IEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGlz
dGljc1N0b3JlKTsKIH0KIAotUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoTmV0d29ya1Nlc3Npb24mIG5ldHdv
cmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnks
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCitSZWY8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNF
cGhlbWVyYWwgaXNFcGhlbWVyYWwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBpc0VwaGVtZXJhbCkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShu
ZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBp
c0VwaGVtZXJhbCkpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
ZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTE0NzEsMTkxICsxNDg0LDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0
IFJlZ2kKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYg
YXR0cmlidXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJp
YnV0aW9uVHlwZSkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYg
KGlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBvc3RUYXNrKFt0aGlzLCBh
dHRyaWJ1dGlvbiA9IFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGVdKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmluc2VydFByaXZhdGVDbGlja01lYXN1
cmVtZW50KFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGUpOwotICAgIH0pOwot
fQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0FsbFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpCi17Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpc10oKSB7Ci0gICAgICAgIGlmICghbV9z
dGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9zdGF0aXN0
aWNzU3RvcmUtPm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhw
aXJlZEZvclRlc3RpbmcoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9u
U2l0ZSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmIGVwaGVtZXJhbE1lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vj
b25kc1VudGlsU2VuZERhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBv
c3RUYXNrKFt0aGlzLCBzb3VyY2VTaXRlID0gc291cmNlU2l0ZS5pc29sYXRlZENvcHkoKSwgZGVz
dGluYXRpb25TaXRlID0gZGVzdGluYXRpb25TaXRlLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgZXBoZW1lcmFs
TWVhc3VyZW1lbnQgPSBXVEZNb3ZlKGVwaGVtZXJhbE1lYXN1cmVtZW50KSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJ
bnNlcnQgZXBoZW1lcmFsIG1lYXN1cmVtZW50IHJpZ2h0IGJlZm9yZSBhdHRyaWJ1dGlvbi4KLSAg
ICAgICAgaWYgKGVwaGVtZXJhbE1lYXN1cmVtZW50KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChlcGhlbWVyYWxNZWFzdXJlbWVudC0+aXNFcGhlbWVyYWwoKSk7Ci0gICAgICAgICAgICBt
X3N0YXRpc3RpY3NTdG9yZS0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgq
ZXBoZW1lcmFsTWVhc3VyZW1lbnQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VHlwZTo6VW5hdHRyaWJ1dGVkKTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gc2Vjb25kcyA9
IG1fc3RhdGlzdGljc1N0b3JlLT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3Vy
Y2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkp
OwotICAgICAgICBwb3N0VGFza1JlcGx5KFtzZWNvbmRzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc2Vjb25kcyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBvc3RUYXNrKFt0
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBw
b3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGF1dG8gY29udmVydGVkQXR0cmlidXRpb25zID0gbV9zdGF0aXN0aWNzU3RvcmUtPmFsbEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotICAgICAgICBwb3N0VGFza1JlcGx5
KFtjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMgPSBXVEZNb3ZlKGNvbnZlcnRlZEF0dHJpYnV0aW9ucyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbnZlcnRlZEF0dHJp
YnV0aW9ucykpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQotewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcG9zdFRhc2soW3RoaXNdKCkgewotICAgICAgICBpZiAoIW1f
c3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlz
dGljc1N0b3JlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgfSk7Ci19Ci0gICAgCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4pCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
LQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFz
ayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAg
ICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KGRvbWFp
bik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpj
bGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCi17Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBwb3N0VGFzayhbdGhpc10oKSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3Rv
cmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNs
ZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1l
cmFsKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIlxuTm8gc3RvcmVkIFByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiJfcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkg
ewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fc3RhdGlzdGljc1N0b3JlLT5wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCk7Ci0gICAgICAgIHBvc3RUYXNrUmVwbHkoW3Jl
c3VsdCA9IHJlc3VsdC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJlc3VsdCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvblRvQ2xlYXIsIFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0RW5k
cG9pbnQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0Vw
aGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgYXR0cmli
dXRpb25Ub0NsZWFyID0gV1RGTW92ZShhdHRyaWJ1dGlvblRvQ2xlYXIpLCBhdHRyaWJ1dGlvblJl
cG9ydEVuZHBvaW50XSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3Jl
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVh
clNlbnRBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhciksIGF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQpOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGly
ZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1l
cmFsKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAobV9zdGF0aXN0aWNz
U3RvcmUpCi0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+bWFya0F0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7Ci0KLSAgICAgICAgcG9z
dFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7Ci19Ci0KIFN0
cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5Ojp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIkhhcyBiZWVuIGdyYW50ZWQgc3RvcmFnZSBhY2Nlc3MgdW5kZXIgIiwgZmlyc3RQYXJ0eURv
bWFpbi5zdHJpbmcoKSwgIjogIiwgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPyAnMScgOiAnMCcsICI7
IEhhcyBiZWVuIHNlZW4gdW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSwgIiBpbiB0
aGUgbGFzdCAyNCBob3VyczogIiwgV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkg
LSB0aW1lTGFzdFVwZGF0ZWQgPCAyNF9oID8gJzEnIDogJzAnKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBiMzQ4ZTMxNmIwODEyMTg2MTEyMWRi
NTQ3NjNkMWI5ODY5M2E1YjUxLi5hNDQwNDkyMjQ2ODI0MDdiY2EyYzMxMzZjZTA3NWQ0YjRkNmM2
MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmUuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlw
ZS5oIgpAQCAtMTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBTdG9yYWdlQWNjZXNz
U2NvcGUgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGU7CiAgICAgdXNpbmcgUmVxdWVzdFN0
b3JhZ2VBY2Nlc3NSZXN1bHQgPSBXZWJDb3JlOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdDsK
IAotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUo
TmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Oklz
RXBoZW1lcmFsKTsKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZT4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmFnZURpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6SXNFcGhlbWVyYWwpOwogCiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSgpOwogCkBAIC0yMzksMjAgKzI0MCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRXBoZW1lcmFs
KCkgY29uc3QgeyByZXR1cm4gbV9pc0VwaGVtZXJhbCA9PSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzOyB9OwogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0
YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1i
ZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50LgotICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGUpOwotICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOwotICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNv
dXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50PiYmIGVwaGVtZXJhbE1lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+KT4mJik7Ci0gICAgdm9pZCBhbGxBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpPiYmKTsKLSAgICB2b2lkIGNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYpOwotICAgIHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsK
LSAgICB2b2lkIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcpPiYmKTsKLSAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKLSAgICB2b2lkIG1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotCisgICAgUENNOjpTdG9yZSYgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yZSgpIHsgcmV0dXJuIG1fcGNtU3RvcmU7fQogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBT
dHJpbmcmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpJc0VwaGVtZXJhbCk7CisgICAgZXhwbGljaXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
U2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
SXNFcGhlbWVyYWwpOwogCiAgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
Jik7CiAgICAgc3RhdGljIHZvaWQgcG9zdFRhc2tSZXBseShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
Jik7CkBAIC0yODcsNiArMjc3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU2NoZWR1bGVk
UHJvY2Vzc1N0YXRzIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9maXJzdE5ldHdvcmtQcm9jZXNz
Q3JlYXRlZCB7IGZhbHNlIH07CisgICAgCisgICAgUENNOjpTdG9yZSBtX3BjbVN0b3JlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkZjkyZjIyNTQyNGEyMzJl
M2YxYzc0ZjJkZTc5NzRmMjNjMzIzN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApAQCAtMCwwICsxLDEwNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVV0aWxp
dGllcy5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRl
U3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRT
Y29wZS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0RhdGFiYXNlVXRpbGl0aWVzOjpEYXRhYmFz
ZVV0aWxpdGllcyhTdHJpbmcmJiBzdG9yYWdlRmlsZVBhdGgpCisgICAgOiBtX3N0b3JhZ2VGaWxl
UGF0aChXVEZNb3ZlKHN0b3JhZ2VGaWxlUGF0aCkpCisgICAgLCBtX3RyYW5zYWN0aW9uKG1fZGF0
YWJhc2UpIHsgfQorCitEYXRhYmFzZVV0aWxpdGllczo6fkRhdGFiYXNlVXRpbGl0aWVzKCkgPSBk
ZWZhdWx0OworCitXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBEYXRhYmFz
ZVV0aWxpdGllczo6c2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIEFTQ0lJTGl0ZXJhbCBxdWVyeSwgQVNDSUlMaXRlcmFs
IGxvZ1N0cmluZykgY29uc3QKK3sKKyAgICBpZiAoIXN0YXRlbWVudCkgeworICAgICAgICBhdXRv
IHN0YXRlbWVudE9yRXJyb3IgPSBtX2RhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50KHF1ZXJ5
KTsKKyAgICAgICAgaWYgKCFzdGF0ZW1lbnRPckVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRp
ZXM6OiVzIGZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIgUFVC
TElDX0xPR19TVFJJTkcsIHRoaXMsIGxvZ1N0cmluZy5jaGFyYWN0ZXJzKCksIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgeyB9
OworICAgICAgICB9CisgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudE9yRXJyb3IudmFsdWUo
KS5tb3ZlVG9VbmlxdWVQdHIoKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkp
OworICAgIH0KKyAgICByZXR1cm4gV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2Nv
cGUgeyBzdGF0ZW1lbnQuZ2V0KCkgfTsKK30KKworU2NvcGVFeGl0PEZ1bmN0aW9uPHZvaWQoKT4+
IERhdGFiYXNlVXRpbGl0aWVzOjpiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKQoreworICAg
IGlmIChtX3RyYW5zYWN0aW9uLmluUHJvZ3Jlc3MoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTY29w
ZUV4aXQoRnVuY3Rpb248dm9pZCgpPiB7IFtdIHsgfSB9KTsKKworICAgIG1fdHJhbnNhY3Rpb24u
YmVnaW4oKTsKKyAgICByZXR1cm4gbWFrZVNjb3BlRXhpdChGdW5jdGlvbjx2b2lkKCk+IHsgW3Ro
aXNdIHsKKyAgICAgICAgbV90cmFuc2FjdGlvbi5jb21taXQoKTsKKyAgICB9IH0pOworfQorCith
dXRvIERhdGFiYXNlVXRpbGl0aWVzOjpvcGVuRGF0YWJhc2UoKSAtPiBDcmVhdGVkTmV3RmlsZQor
eworICAgIENyZWF0ZWROZXdGaWxlIGNyZWF0ZWROZXdGaWxlID0gQ3JlYXRlZE5ld0ZpbGU6Ok5v
OworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3N0b3JhZ2VGaWxlUGF0aCkpIHsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6
cGFyZW50UGF0aChtX3N0b3JhZ2VGaWxlUGF0aCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Om9wZW4gZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiBGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSBkYXRhYmFzZSBw
YXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9zdG9yYWdlRmlsZVBhdGgudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IHJldHVybiBjcmVhdGVkTmV3RmlsZTsKKyAgICAgICAgfQorICAgICAgICBjcmVhdGVkTmV3Rmls
ZSA9IENyZWF0ZWROZXdGaWxlOjpZZXM7CisgICAgfQorCisgICAgaWYgKCFtX2RhdGFiYXNlLm9w
ZW4obV9zdG9yYWdlRmlsZVBhdGgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6b3BlbiBmYWlsZWQsIGVycm9yIG1l
c3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VGaWxl
UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBjcmVhdGVkTmV3RmlsZTsKKyAgICB9CisgICAgCisgICAgLy8gU2luY2Ugd2Ug
YXJlIHVzaW5nIGEgd29ya2VyUXVldWUsIHRoZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBt
YXkgYmUgY2FsbGVkIGJ5IGRpZmZlcmVudCB0aHJlYWRzLgorICAgIG1fZGF0YWJhc2UuZGlzYWJs
ZVRocmVhZGluZ0NoZWNrcygpOworCisgICAgYXV0byBzZXRCdXN5VGltZW91dCA9IG1fZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIGJ1c3lfdGltZW91dCA9IDUwMDAiX3MpOworICAg
IGlmICghc2V0QnVzeVRpbWVvdXQgfHwgc2V0QnVzeVRpbWVvdXQtPnN0ZXAoKSAhPSBTUUxJVEVf
Uk9XKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCAiJXAgLSBEYXRhYmFzZTo6c2V0QnVzeVRpbWVvdXQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZWROZXdG
aWxlOworICAgIH0KKworICAgIGlmIChjcmVhdGVkTmV3RmlsZSA9PSBDcmVhdGVkTmV3RmlsZTo6
WWVzKSB7CisgICAgICAgIGlmICghY3JlYXRlU2NoZW1hKCkpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Y3Jl
YXRlU2NoZW1hIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcgIiwg
ZGF0YWJhc2UgcGF0aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCksIG1fc3RvcmFnZUZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlZE5ld0Zp
bGU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZWROZXdGaWxlOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RGF0YWJhc2VVdGlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWQ0ZWExNWY5YzVmNDFhZWI0YzZlMzA2
ODEzMDQ3MjQ4ZGM3ZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1Njb3Bl
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNl
dFNjb3BlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRGF0YWJhc2VVdGlsaXRp
ZXMgeworcHJvdGVjdGVkOgorICAgIERhdGFiYXNlVXRpbGl0aWVzKFN0cmluZyYmIHN0b3JhZ2VG
aWxlUGF0aCk7CisgICAgfkRhdGFiYXNlVXRpbGl0aWVzKCk7CisKKyAgICBXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBzY29wZWRTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4mLCBBU0NJSUxpdGVyYWwgcXVlcnksIEFTQ0lJTGl0
ZXJhbCBsb2dTdHJpbmcpIGNvbnN0OworICAgIFNjb3BlRXhpdDxGdW5jdGlvbjx2b2lkKCk+PiBX
QVJOX1VOVVNFRF9SRVRVUk4gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CisgICAgZW51
bSBjbGFzcyBDcmVhdGVkTmV3RmlsZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgQ3JlYXRlZE5l
d0ZpbGUgb3BlbkRhdGFiYXNlKCk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZVNjaGVtYSgpID0g
MDsKKworICAgIGNvbnN0IFN0cmluZyBtX3N0b3JhZ2VGaWxlUGF0aDsKKyAgICBtdXRhYmxlIFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7CisgICAgbXV0YWJsZSBXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbiBtX3RyYW5zYWN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggODJmMWU1MzAxNDRmYTBmZjJkYWIxMWU2NDRjMDliN2Y2ODYx
YTAwMC4uNTJkMzViYzliM2ExNjMxMzFmZTg3YzhkYjI2OTg5NmVmOTVhYTY4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtODY3LDkgKzg2Nyw5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgKytt
X3JlZGlyZWN0Q291bnQ7CiAgICAgbV9yZWRpcmVjdFJlc3BvbnNlID0gcmVkaXJlY3RSZXNwb25z
ZTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE+IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0
dHJpYnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QudXJsKCkpKQorICAgICAgICBpZiAoYXV0
byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1
dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKICAgICAgICAgICAgIHByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHJlc3VsdC52YWx1ZSgpOwog
ICAgICAgICBlbHNlIGlmICghcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAg
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIHJlc3VsdC5lcnJvcigpKTsKQEAgLTkzMCw3ICs5MzAsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIGNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1v
dmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4mJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uVHJpZ2dlckRhdGE+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKQogewogICAgIHJlZGlyZWN0UmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChy
ZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDMzNDg4ZTY5ZWZlYmQ3MWI2ZDMwYmQyYmM3
YzhmYzUyYTcyODMyN2QuLjcyZWUwMjAzNTBiODU2YjhjMTgyNDMzMDhjMWI4MmU3MmY0NGRhM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
CkBAIC04Miw2ICs4Miw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgOiBtX3Nlc3Np
b25JRChwYXJhbWV0ZXJzLnNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29y
a1Byb2Nlc3MpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAsIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KHBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdl
RGlyZWN0b3J5KQogICAgICwgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZGlyZWN0b3J5KQogICAgICwg
bV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCA/IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6
Ok5vKQogICAgICwgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlRGVidWdNb2RlID8g
RW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTo6WWVzIDogRW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTo6Tm8pCkBAIC0xMTcsNiArMTE4LDggQEAgTmV0d29y
a1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
Y29uc3QgTmV0d29ya1Nlc3MKIAogICAgICAgICBpZiAoIXBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuZGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAg
IGlmICghcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICB9CiAKICAgICBtX2lzU3RhbGVXaGlsZVJldmFs
aWRhdGVFbmFibGVkID0gcGFyYW1ldGVycy5zdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQ7CkBA
IC0xNzksNyArMTgyLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUpCiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKnRoaXMsIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLCAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJ
c0VwaGVtZXJhbDo6Tm8pKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9y
eSwgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAobV9z
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1l
cmFsOjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6Tm8pKTsKICAg
ICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKFtdIHsgfSk7CiAKQEAgLTE5
Niw3ICsxOTksNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0
YXRpc3RpY1N0b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKQogICAgIGRlc3Ryb3lSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoKTsKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKnRoaXMsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSwgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLCAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OklzRXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6
Tm8pKTsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKnRoaXMsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksICBtX3No
b3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25J
RC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6Olll
cyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwogICAgICAgICBm
b3J3YXJkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldHRpbmdzKCk7CiAgICAgICAgIGlmICghbV9z
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApp
bmRleCBhNDk3MThkZWZkYTIzOTQ4NDZhZTg1YzRjNzg1MmFkYTE1NjQxMzQ5Li5hZDI3MTAwMzM5
M2VmMDQxNzJjY2MwZjhjODM1NjE3YjFkNDdmNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xOTEsNiArMTkxLDcgQEAgcHJvdGVjdGVk
OgogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKICAgICBXZWFrSGFz
aFNldDxOZXR3b3JrRGF0YVRhc2s+IG1fZGF0YVRhc2tTZXQ7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBTdHJpbmcgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeTsKICAgICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZElu
Y2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyBTaG91bGRJbmNsdWRlTG9j
YWxob3N0OjpZZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmOTdlYWJi
NzI2NGU0N2Y0ZWMzZjI1NjEwNGNjNDI4MjMyMjk1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC0wLDAgKzEsNjk3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
RGF0YWJhc2UuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCituYW1lc3BhY2UgUENNIHsKKworY29uc3RleHByIGF1dG8gc2V0VW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRRdWVyeSA9ICJVUERBVEUgVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIHRpbWVPZkFkQ2xpY2sgPSAtMS4wIl9zOwor
Y29uc3RleHByIGF1dG8gaW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRR
dWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAi
CisgICAgInNvdXJjZUlELCB0aW1lT2ZBZENsaWNrLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCkg
VkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/KSJfczsKK2NvbnN0ZXhwciBhdXRvIGluc2VydEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNF
IElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWlu
SUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCisgICAgInNvdXJjZUlELCBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLCBwcmlvcml0eSwgdGltZU9mQWRDbGljaywgZWFybGllc3RUaW1lVG9TZW5k
VG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUsIGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zOwor
Y29uc3RleHByIGF1dG8gZmluZFVuYXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklE
ID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8g
ZmluZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byByZW1vdmVVbmF0dHJpYnV0ZWRR
dWVyeSA9ICJERUxFVEUgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBX
SEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9
ID8iX3M7Citjb25zdGV4cHIgYXV0byBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRRdWVyeSA9ICJTRUxFQ1QgKiwgTUlOKGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJs
aWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKSBhcyBtaW5WYWwgIgorICAgICJGUk9NIEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBlYXJsaWVzdFRpbWVUb1NlbmRUb1Nv
dXJjZSBJUyBOT1QgTlVMTCBBTkQgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBJUyBO
T1QgTlVMTCAiCisgICAgIlVOSU9OIEFMTCBTRUxFQ1QgKiwgZWFybGllc3RUaW1lVG9TZW5kVG9T
b3VyY2UgYXMgbWluVmFsIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdI
RVJFIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gSVMgTlVMTCAiCisgICAgIlVOSU9O
IEFMTCBTRUxFQ1QgKiwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBhcyBtaW5WYWwg
RlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1l
VG9TZW5kVG9Tb3VyY2UgSVMgTlVMTCBPUkRFUiBCWSBtaW5WYWwiX3M7Citjb25zdGV4cHIgYXV0
byBhbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5
ID0gIlNFTEVDVCAqIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7
Citjb25zdGV4cHIgYXV0byBjbGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1
ZXJ5ID0gIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVS
RSBzb3VyY2VTaXRlRG9tYWluSUQgTElLRSA/IE9SIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIExJ
S0UgPyJfczsKK2NvbnN0ZXhwciBhdXRvIGNsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRRdWVyeSA9ICJERUxFVEUgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgTElLRSA/IE9SIGRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEIExJS0UgPyJfczsKK2NvbnN0ZXhwciBhdXRvIGNsZWFyRXhwaXJlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50UXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgV0hFUkUgPyA+IHRpbWVPZkFkQ2xpY2siX3M7Citjb25zdGV4cHIgYXV0
byBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VRdWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9IG51bGwg
V0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQg
PSA/Il9zOworY29uc3RleHByIGF1dG8gbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25RdWVy
eSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVz
dFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gbnVsbCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQg
PSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBl
YXJsaWVzdFRpbWVzVG9TZW5kUXVlcnkgPSAiU0VMRUNUIGVhcmxpZXN0VGltZVRvU2VuZFRvU291
cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIEZST00gQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIGRvbWFpbklERnJvbVN0
cmluZ1F1ZXJ5ID0gIlNFTEVDVCBkb21haW5JRCBGUk9NIFBDTU9ic2VydmVkRG9tYWlucyBXSEVS
RSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBkb21haW5TdHJpbmdG
cm9tRG9tYWluSURRdWVyeSA9ICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBQQ01PYnNl
cnZlZERvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gY3JlYXRl
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICgiCisgICAgInNvdXJjZVNpdGVEb21haW5J
RCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBO
VUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBOVUxMLCAiCisgICAgInRpbWVPZkFkQ2xpY2sgUkVB
TCBOT1QgTlVMTCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIEZPUkVJ
R04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgIgorICAgICJSRUZFUkVOQ0VTIFBDTU9ic2VydmVk
RG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUsIEZPUkVJR04gS0VZKGRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VTICIKKyAgICAiUENNT2JzZXJ2ZWREb21haW5zKGRv
bWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSkiX3M7Citjb25zdGV4cHIgYXV0byBjcmVhdGVBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgorICAgICJzb3VyY2VTaXRlRG9tYWluSUQgSU5URUdF
UiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgc291
cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgorICAgICJhdHRyaWJ1dGlvblRyaWdnZXJEYXRhIElO
VEVHRVIgTk9UIE5VTEwsIHByaW9yaXR5IElOVEVHRVIgTk9UIE5VTEwsIHRpbWVPZkFkQ2xpY2sg
UkVBTCBOT1QgTlVMTCwgIgorICAgICJlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBSRUFMLCB0
b2tlbiBURVhULCBzaWduYXR1cmUgVEVYVCwga2V5SUQgVEVYVCwgZWFybGllc3RUaW1lVG9TZW5k
VG9EZXN0aW5hdGlvbiBSRUFMLCAiCisgICAgIkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5J
RCkgUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVND
QURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCisg
ICAgIlBDTU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOwor
Y29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9u
U2l0ZURvbWFpbklEIG9uIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291
cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOworY29uc3RleHBy
IGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
PSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQg
b24gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklE
LCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlUENN
T2JzZXJ2ZWREb21haW4gPSAiQ1JFQVRFIFRBQkxFIFBDTU9ic2VydmVkRG9tYWlucyAoIgorICAg
ICJkb21haW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5P
VCBOVUxMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMKSJfczsKK2NvbnN0ZXhwciBhdXRvIGluc2Vy
dE9ic2VydmVkRG9tYWluUXVlcnkgPSAiSU5TRVJUIElOVE8gUENNT2JzZXJ2ZWREb21haW5zIChy
ZWdpc3RyYWJsZURvbWFpbikgVkFMVUVTICg/KSJfczsKKworRGF0YWJhc2U6OkRhdGFiYXNlKGNv
bnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKKyAgICA6IERhdGFiYXNlVXRpbGl0aWVzKEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAicGNt
LmRiIl9zKSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBvcGVuRGF0
YWJhc2UoKTsKK30KKworRGF0YWJhc2U6On5EYXRhYmFzZSgpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7Cit9CisKK2Jvb2wgRGF0YWJhc2U6OmNyZWF0ZVNjaGVtYSgpCit7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhl
Y3V0ZUNvbW1hbmQoY3JlYXRlUENNT2JzZXJ2ZWREb21haW4pKSB7CisgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBQQ01PYnNlcnZlZERvbWFpbnMgdGFibGUgaW4gZGF0YWJhc2Ug
KCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFu
ZChjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExP
R19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKKyAgICAgICAgfHwgIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExPR19FUlJPUigiRXJyb3IgY3JlYXRpbmcgaW5kZXhl
cyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIERhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5z
YWN0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8gc291cmNlSUQgPSBlbnN1cmVEb21haW5J
RChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8g
YXR0cmlidXRpb25EZXN0aW5hdGlvbklEID0gZW5zdXJlRG9tYWluSUQoYXR0cmlidXRpb24uZGVz
dGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghc291cmNlSUQgfHwg
IWF0dHJpYnV0aW9uRGVzdGluYXRpb25JRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYg
c291cmNlVW5saW5rYWJsZVRva2VuID0gYXR0cmlidXRpb24uc291cmNlVW5saW5rYWJsZVRva2Vu
KCk7CisgICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgeworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEgPSBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1
dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkudmFsdWUoKS5kYXRhIDogLTE7CisgICAgICAg
IGF1dG8gcHJpb3JpdHkgPSBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBh
dHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkudmFsdWUoKS5wcmlvcml0eSA6IC0x
OworICAgICAgICBhdXRvIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRp
bWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNU
b1NlbmQoKS5zb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCkgOiAtMTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQgPyBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1l
VG9TZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7CisKKyAgICAg
ICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGluc2VydGluZyBhbiBhdHRyaWJ1dGVkIHByaXZhdGUg
Y2xpY2sgbWVhc3VyZW1lbnQgdmFsdWUgaW50byB0aGUgZGF0YWJhc2Ugd2l0aG91dCB2YWxpZCBy
ZXBvcnQgdGltZXMuCisgICAgICAgIEFTU0VSVChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgIT0g
LTEgJiYgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEpOworCisgICAgICAgIGF1
dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KGluc2VydEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5KTsKKyAgICAgICAgaWYgKCFzdGF0ZW1lbnQK
KyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlSUQpICE9IFNRTElU
RV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uSUQpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5k
SW50KDMsIGF0dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQpICE9IFNRTElURV9PSworICAgICAgICAg
ICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDQsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpICE9IFNR
TElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDUsIHByaW9yaXR5KSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg2LCBhdHRy
aWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg3LCBzb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmQpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50
LT5iaW5kVGV4dCg4LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9r
ZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAg
ICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDksIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNv
dXJjZVVubGlua2FibGVUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEwLCBzb3Vy
Y2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJM
IDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQt
PmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVf
T0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVw
IC0gRGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50IGluc2VydEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7CisKKyAgICBhdXRvIHN0YXRlbWVudCA9
IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFF1ZXJ5KTsKKyAgICBpZiAoIXN0YXRlbWVudAorICAgICAgICB8fCBzdGF0
ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZUlEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3Rh
dGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9uSUQpICE9IFNRTElURV9P
SworICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMywgYXR0cmlidXRpb24uc291cmNlSUQo
KS5pZCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg0LCBh
dHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg1LCBzb3VyY2VVbmxp
bmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1w
dHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQo
Niwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT5zaWduYXR1
cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3Rh
dGVtZW50LT5iaW5kVGV4dCg3LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmth
YmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6
aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNlOjptYXJrQWxsVW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMt
PnNjb3BlZFN0YXRlbWVudChtX3NldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXNFeHBpcmVkU3RhdGVtZW50LCBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEFzRXhwaXJlZFF1ZXJ5LCAibWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXNFeHBpcmVkRm9yVGVzdGluZyJfcyk7CisKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudCB8
fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Om1h
cmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3Rp
bmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K30KKworc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OlVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6QXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Pj4gRGF0YWJhc2U6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYg
c291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUpCit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5J
RChzb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEID0gZG9tYWluSUQoZGVzdGluYXRpb25TaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQp
CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCk7CisKKyAgICBhdXRvIGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5z
Y29wZWRTdGF0ZW1lbnQobV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kVW5hdHRyaWJ1
dGVkUXVlcnksICJmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOworICAgIGlmICghZmlu
ZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50
KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6
ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRVbmF0dHJpYnV0ZWRRdWVyeSwgZXJyb3Ig
bWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgYXV0
byBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudCht
X2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCAiZmluZFByaXZh
dGVDbGlja01lYXN1cmVtZW50Il9zKTsKKyAgICBpZiAoIWZpbmRBdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50CisgICAgICAgIHx8IGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50
KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBmaW5kQXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50PiB1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsK
KyAgICBpZiAoZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElU
RV9ST1cpCisgICAgICAgIHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gYnVp
bGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShmaW5kVW5hdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZTo6VW5hdHRyaWJ1dGVkKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAg
aWYgKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykK
KyAgICAgICAgYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gYnVpbGRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVu
dC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0
ZWQpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOworfQorCitz
dGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNV
bnRpbFNlbmREYXRhPiBEYXRhYmFzZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
Y29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJj
ZVNpdGUsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgLy8gV2Ugc2hvdWxk
IGFsd2F5cyBjbGVhciBleHBpcmVkIGNsaWNrcyBmcm9tIHRoZSBkYXRhYmFzZSBiZWZvcmUgc2No
ZWR1bGluZyBhbiBhdHRyaWJ1dGlvbi4KKyAgICBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCgpOworICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgLyoKKyAgICAgICAgIC8vIEZJWE1FOiBNYWtlIGEgd2F5IHRvIGJyb2FkY2FzdCBk
ZWJ1ZyBpbmZvLCBwcm9iYWJseSB0aHJvdWdoIHRoZSByZXR1cm4gdmFsdWUuCisgICAgICAgIGlm
IChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IGFuIGludmFsaWQgYXR0cmlidXRp
b24uIik7CisgICAgICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1By
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9uLiJfcyk7
CisgICAgICAgIH0KKyAgICAgICAgICovCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgfQorICAgIC8qCisgICAgIC8vIEZJWE1FOiBNYWtlIGEgd2F5IHRvIGJyb2FkY2FzdCBkZWJ1
ZyBpbmZvLCBwcm9iYWJseSB0aHJvdWdoIHRoZSByZXR1cm4gdmFsdWUuCisgICAgaWYgKFVOTElL
RUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKKyAgICAgICAgYXV0byBkYXRhID0gYXR0cmlidXRp
b25UcmlnZ2VyRGF0YS5kYXRhOworICAgICAgICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb25U
cmlnZ2VyRGF0YS5wcmlvcml0eTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIkdvdCBhbiBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRyaWdn
ZXIgZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUuIiwgZGF0YSwgcHJp
b3JpdHkpOworICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJp
bmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gYXR0cmlidXRpb24gd2l0aCBh
dHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJf
cywgcHJpb3JpdHksICInLiJfcykpOworICAgIH0KKyovCisgICAgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgc2Vjb25kc1VudGlsU2VuZCB7
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CisKKyAgICBhdXRvIGF0dHJpYnV0aW9uID0g
ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KHNvdXJjZVNpdGUsIGRlc3RpbmF0aW9uU2l0ZSk7
CisgICAgYXV0byYgcHJldmlvdXNseVVuYXR0cmlidXRlZCA9IGF0dHJpYnV0aW9uLmZpcnN0Owor
ICAgIGF1dG8mIHByZXZpb3VzbHlBdHRyaWJ1dGVkID0gYXR0cmlidXRpb24uc2Vjb25kOworCisg
ICAgaWYgKHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQpIHsKKyAgICAgICAgLy8gQWx3YXlzIGNvbnZl
cnQgdGhlIHBlbmRpbmcgYXR0cmlidXRpb24gYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSB1bmF0dHJp
YnV0ZWQgbWFwLgorICAgICAgICByZW1vdmVVbmF0dHJpYnV0ZWQoKnByZXZpb3VzbHlVbmF0dHJp
YnV0ZWQpOworICAgICAgICBzZWNvbmRzVW50aWxTZW5kID0gcHJldmlvdXNseVVuYXR0cmlidXRl
ZC52YWx1ZSgpLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEpKTsKKworICAgICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGhhdmUg
YSB2YWxpZCBzZWNvbmRzVW50aWxTZW5kIHZhbHVlIGZvciBhIHByZXZpb3VzbHlVbmF0dHJpYnV0
ZWQgdmFsdWUgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbm8gcHJldmlvdXMgYXR0cmlidXRpb24gd2l0
aCBhIGhpZ2hlciBwcmlvcml0eS4KKyAgICAgICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1Zh
bGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKy8q
CisgLy8gRklYTUU6IE1ha2UgYSB3YXkgdG8gYnJvYWRjYXN0IGRlYnVnIGluZm8sIHByb2JhYmx5
IHRocm91Z2ggdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9k
ZUVuYWJsZWQoKSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsICJDb252ZXJ0ZWQgYSBzdG9yZWQgYWQgY2xpY2sgd2l0aCBhdHRyaWJ1dGlv
biB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAle3B1YmxpY311LiIsIGRh
dGEsIHByaW9yaXR5KTsKKyAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5m
bywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnRlZCBhIHN0
b3JlZCBhZCBjbGljayB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwg
IicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicuIl9zKSk7CisgICAgICAgIH0KKyAq
LworCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uLCBvciB0
aGUgbmV3IGF0dHJpYnV0aW9uIGhhcyBoaWdoZXIgcHJpb3JpdHksIGluc2VydC91cGRhdGUgdGhl
IGRhdGFiYXNlLgorICAgICAgICBpZiAoIXByZXZpb3VzbHlBdHRyaWJ1dGVkIHx8IHByZXZpb3Vz
bHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5oYXNIaWdoZXJQcmlvcml0eVRoYW4oKnByZXZpb3VzbHlB
dHRyaWJ1dGVkKSkgeworICAgICAgICAgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
V1RGTW92ZSgqcHJldmlvdXNseVVuYXR0cmlidXRlZCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAg
ICAgICAvLyBGSVhNRTogTWFrZSBhIHdheSB0byBicm9hZGNhc3QgZGVidWcgaW5mbywgcHJvYmFi
bHkgdGhyb3VnaCB0aGUgcmV0dXJuIHZhbHVlLgorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGRl
YnVnTW9kZUVuYWJsZWQoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCAiUmVwbGFjZWQgYSBwcmV2aW91c2x5IGNvbnZlcnRlZCBh
ZCBjbGljayB3aXRoIGEgbmV3IG9uZSB3aXRoIGF0dHJpYnV0aW9uIGRhdGE6ICV7cHVibGljfXUg
YW5kIHByaW9yaXR5OiAle3B1YmxpY311IGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4i
LCBkYXRhLCBwcmlvcml0eSk7CisgICAgICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxl
dmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gUmVwbGFj
ZWQgYSBwcmV2aW91c2x5IGNvbnZlcnRlZCBhZCBjbGljayB3aXRoIGEgbmV3IG9uZSB3aXRoIGF0
dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9z
LCBwcmlvcml0eSwgIicgYmVjYXVzZSBpdCBoYWQgaGlnaGVyIHByaW9yaXR5LiJfcykpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICovCisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHBy
ZXZpb3VzbHlBdHRyaWJ1dGVkKSB7CisgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gbmV3IGF0dHJp
YnV0aW9uLCByZS1hdHRyaWJ1dGUgdGhlIG9sZCBvbmUgdG8gcmVzcGVjdCB0aGUgbmV3IHByaW9y
aXR5LCBidXQgb25seSBpZiB0aGlzIHJlcG9ydCBoYXMKKyAgICAgICAgLy8gbm90IGJlZW4gc2Vu
dCB0byB0aGUgc291cmNlIG9yIGRlc3RpbmF0aW9uIHNpdGUgeWV0LgorICAgICAgICBpZiAoIXBy
ZXZpb3VzbHlBdHRyaWJ1dGVkLnZhbHVlKCkuaGFzUHJldmlvdXNseUJlZW5SZXBvcnRlZCgpKSB7
CisgICAgICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5QXR0cmlidXRl
ZC52YWx1ZSgpLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEpKTsKKyAgICAgICAgICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5o
YXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgICAgICAgICBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChXVEZNb3ZlKCpwcmV2aW91c2x5QXR0cmlidXRlZCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAg
ICAgICAvLyBGSVhNRTogTWFrZSBhIHdheSB0byBicm9hZGNhc3QgZGVidWcgaW5mbywgcHJvYmFi
bHkgdGhyb3VnaCB0aGUgcmV0dXJuIHZhbHVlLgorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGRl
YnVnTW9kZUVuYWJsZWQoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCAiUmUtY29udmVydGVkIGFuIGFkIGNsaWNrIHdpdGggYSBu
ZXcgb25lIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlv
cml0eTogJXtwdWJsaWN9dSBiZWNhdXNlIGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwg
cHJpb3JpdHkpOworICAgICAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5m
bywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlLWNvbnZlcnRlZCBh
biBhZCBjbGljayB3aXRoIGEgbmV3IG9uZSB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTog
JyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicnIGJlY2F1c2Ug
aXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iX3MpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAqLworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1Zh
bGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHNlY29uZHNVbnRpbFNlbmQ7Cit9CisKK1dlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50IERhdGFiYXNlOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJv
bURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCit7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0
RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDApKTsKKyAgICBh
dXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChz
dGF0ZW1lbnQtPmNvbHVtbkludCgxKSk7CisgICAgYXV0byBzb3VyY2VJRCA9IHN0YXRlbWVudC0+
Y29sdW1uSW50KDIpOworICAgIGF1dG8gdGltZU9mQWRDbGljayA9IGF0dHJpYnV0aW9uVHlwZSA9
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0
YXRlbWVudC0+Y29sdW1uRG91YmxlKDUpIDogc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMyk7Cisg
ICAgYXV0byB0b2tlbiA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KSA6
IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg0KTsKKyAgICBhdXRvIHNpZ25hdHVyZSA9IGF0dHJpYnV0
aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg4KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg1
KTsKKyAgICBhdXRvIGtleUlEID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDkpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDYpOworCisgICAgV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlNvdXJjZUlEKHNvdXJjZUlEKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVNpdGUoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3Ry
YWJsZURvbWFpblN0cmluZyhzb3VyY2VTaXRlRG9tYWluKSksIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZShSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKGRlc3RpbmF0aW9u
U2l0ZURvbWFpbikpLCB7IH0sIHsgfSwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWVPZkFk
Q2xpY2spKTsKKyAgICAKKyAgICBpZiAoYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSB7CisgICAgICAgIGF1dG8gYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDMpOworICAgICAgICBh
dXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNCk7CisgICAgICAgIGF1dG8gc291
cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSg2KTsK
KyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID0gc3RhdGVt
ZW50LT5jb2x1bW5Eb3VibGUoMTApOworCisgICAgICAgIGlmIChhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhICE9IC0xKQorICAgICAgICAgICAgYXR0cmlidXRpb24uc2V0QXR0cmlidXRpb24oV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgeyBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eShwcmlvcml0eSkgfSk7CisKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxXYWxsVGltZT4gc291cmNlRWFybGllc3RUaW1lVG9TZW5kOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKKyAg
ICAgICAgCisgICAgICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRlcyB0aGF0IHRoZSByZXBv
cnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgorICAgICAgICBpZiAoc291
cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCisgICAgICAgICAgICBzb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc291cmNlRWFybGllc3RU
aW1lVG9TZW5kVmFsdWUpOworCisgICAgICAgIGlmIChkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZFZhbHVlID4gMC4wKQorICAgICAgICAgICAgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1Nl
bmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1Nl
bmRWYWx1ZSk7CisKKyAgICAgICAgYXR0cmlidXRpb24uc2V0VGltZXNUb1NlbmQoeyBzb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmQsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIH0pOworICAg
IH0KKworICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsgdG9rZW4sIHNpZ25h
dHVyZSwga2V5SUQgfSk7CisKKyAgICByZXR1cm4gYXR0cmlidXRpb247Cit9CisKK3ZvaWQgRGF0
YWJhc2U6OnJlbW92ZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmli
dXRpb24pCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzb3Vy
Y2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0
cmFibGVEb21haW4pOworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5J
RChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisgICAg
aWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0
YXRlbWVudChtX3JlbW92ZVVuYXR0cmlidXRlZFN0YXRlbWVudCwgcmVtb3ZlVW5hdHRyaWJ1dGVk
UXVlcnksICJyZW1vdmVVbmF0dHJpYnV0ZWQiX3MpOworCisgICAgaWYgKCFzY29wZWRTdGF0ZW1l
bnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9t
YWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQo
MiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2Nv
cGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpyZW1vdmVV
bmF0dHJpYnV0ZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KK30KKworVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBE
YXRhYmFzZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKK3sKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIGF0dHJpYnV0ZWRTY29wZWRTdGF0
ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFF1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyJfcyk7CisKKyAgICBpZiAo
IWF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGF0dHJpYnV0aW9uczsKKyAgICB3aGlsZSAoYXR0cmli
dXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIGF0dHJp
YnV0aW9ucy5hcHBlbmQoYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShh
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkpOworCisgICAgcmV0dXJuIGF0dHJpYnV0aW9uczsK
K30KKworU3RyaW5nIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkK
K3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YUV4aXN0cyA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VM
RUNUIChTRUxFQ1QgQ09VTlQoKikgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCkgYXMgY250MSwgKFNFTEVDVCBDT1VOVCgqKSBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCkgYXMgY250MiJfcyk7CisgICAgaWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhdGFFeGlzdHMgfHwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzLT5zdGVw
KCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9T
dHJpbmcgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBpZiAoIXByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YUV4aXN0cy0+Y29sdW1uSW50KDApICYmICFwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhdGFFeGlzdHMtPmNvbHVtbkludCgxKSkKKyAgICAgICAgcmV0dXJuICJcbk5vIHN0b3Jl
ZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGRhdGEuXG4iX3M7CisKKyAgICBhdXRvIHVuYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50LCBhbGxV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5LCAicHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyJfcyk7CisKKyAgICBpZiAoIXVuYXR0cmlidXRl
ZFNjb3BlZFN0YXRlbWVudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9T
dHJpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKworICAgIHVuc2lnbmVkIHVuYXR0cmlidXRlZE51bWJlciA9IDA7CisgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworICAgIHdoaWxlICh1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9IHVuYXR0
cmlidXRlZE51bWJlciA/ICIiIDogIlVuYXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50czoiOworICAgICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXgsICJcbldlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50ICIsICsrdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAorICAgICAg
ICAgICAgYXR0cmlidXRpb25Ub1N0cmluZyh1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0
KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQp
KTsKKyAgICB9CisKKyAgICBhdXRvIGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5z
Y29wZWRTdGF0ZW1lbnQobV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0
ZW1lbnQsIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAicHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyJfcyk7CisKKyAgICBpZiAoIWF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5n
LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVkTnVtYmVyID0gMDsKKyAgICB3aGlsZSAoYXR0cmlidXRl
ZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgaWYgKCFh
dHRyaWJ1dGVkTnVtYmVyKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodW5hdHRyaWJ1dGVk
TnVtYmVyID8gIlxuIiA6ICIiLCAiQXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
czoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgIiwgKythdHRyaWJ1dGVkTnVtYmVyICsgdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4n
LAorICAgICAgICAgICAgYXR0cmlidXRpb25Ub1N0cmluZyhhdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCkpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJp
bmcgRGF0YWJhc2U6OmF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
KiBzdGF0ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJp
YnV0aW9uVHlwZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRv
IHNvdXJjZVNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50
LT5jb2x1bW5JbnQoMCkpOworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluID0gZ2V0RG9t
YWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDEpKTsKKyAgICBhdXRv
IHNvdXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMik7CisKKyAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoIlNvdXJjZSBzaXRlOiAiLCBzb3VyY2VTaXRl
RG9tYWluLCAiXG5BdHRyaWJ1dGUgb24gc2l0ZTogIiwgZGVzdGluYXRpb25TaXRlRG9tYWluLCAi
XG5Tb3VyY2UgSUQ6ICIsIHNvdXJjZUlEKTsKKworICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKKyAg
ICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gc3RhdGVtZW50LT5jb2x1bW5JbnQo
Myk7CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCg0KTsKKyAg
ICAgICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCg2KTsK
KworICAgICAgICBpZiAoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSAhPSAtMSkgeworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIlxuQXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAiLCBhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhLCAiXG5BdHRyaWJ1dGlvbiBwcmlvcml0eTogIiwgcHJpb3JpdHksICJc
bkF0dHJpYnV0aW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogIik7CisgICAgICAgICAgICBpZiAo
ZWFybGllc3RUaW1lVG9TZW5kID09IC0xKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJOb3Qgc2V0Iik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIHNl
Y29uZHNVbnRpbFNlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZWFybGllc3RUaW1lVG9T
ZW5kKSAtIFdhbGxUaW1lOjpub3coKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgo
c2Vjb25kc1VudGlsU2VuZCA+PSAyNF9oICYmIHNlY29uZHNVbnRpbFNlbmQgPD0gNDhfaCkgPyAi
V2l0aGluIDI0LTQ4IGhvdXJzIiA6ICJPdXRzaWRlIDI0LTQ4IGhvdXJzIik7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuTm8gYXR0
cmlidXRpb24gdHJpZ2dlciBkYXRhLiIpOworICAgIH0gZWxzZQorICAgICAgICBidWlsZGVyLmFw
cGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7CisgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit2b2lkIERh
dGFiYXNlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmcoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8g
ZXhwaXJlZFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6bm93KCkgLSAxX2g7CisKKyAgICBhdXRvIHRy
YW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgIGF1
dG8gZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VU
IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gPyJfcyk7CisgICAgYXV0byBlYXJsaWVzdFRp
bWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVz
dFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gbnVsbCJfcyk7CisKKyAgICBpZiAoIWVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50CisgICAgICAgIHx8IGVhcmxpZXN0VGltZVRvU2Vu
ZFRvU291cmNlU3RhdGVtZW50LT5iaW5kSW50KDEsIGV4cGlyZWRUaW1lVG9TZW5kLnNlY29uZHNT
aW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGVhcmxpZXN0VGlt
ZVRvU2VuZFRvU291cmNlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFi
YXNlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRl
c3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKworICAgIGlmICghZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudCB8
fCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsICIlcCAtIERhdGFiYXNlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBEYXRhYmFzZTo6Y2xlYXJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW4pCit7
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgLy8gRGVmYXVsdCB0byBjbGVh
ciBhbGwgZW50cmllcyBpZiBubyBkb21haW4gaXMgc3BlY2lmaWVkLgorICAgIFN0cmluZyBiaW5k
UGFyYW1ldGVyID0gIiUiOworICAgIGlmIChkb21haW4pIHsKKyAgICAgICAgYXV0byBkb21haW5J
RFRvTWF0Y2ggPSBkb21haW5JRCgqZG9tYWluKTsKKyAgICAgICAgaWYgKCFkb21haW5JRFRvTWF0
Y2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYmluZFBhcmFtZXRlciA9IFN0cmlu
Zzo6bnVtYmVyKCpkb21haW5JRFRvTWF0Y2gpOworICAgIH0KKworICAgIGF1dG8gdHJhbnNhY3Rp
b25TY29wZSA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOworCisgICAgYXV0byBjbGVh
clVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2Ns
ZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGNsZWFyVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQiX3MpOworCisgICAgaWYgKCFjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudAorICAgICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRl
eHQoMSwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGNsZWFyVW5hdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBiaW5kUGFyYW1ldGVyKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBS
SVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGF1dG8gY2xlYXJBdHRyaWJ1
dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fY2xlYXJBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGNsZWFyQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50UXVlcnksICJjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Il9z
KTsKKworICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8
IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgYmluZFBhcmFtZXRl
cikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVu
dC0+YmluZFRleHQoMiwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGNs
ZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjbGVhckF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KK30KKwordm9pZCBEYXRhYmFzZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8g
ZXhwaXJhdGlvblRpbWVGcmFtZSA9IFdhbGxUaW1lOjpub3coKSAtIFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjptYXhBZ2UoKTsKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRo
aXMtPnNjb3BlZFN0YXRlbWVudChtX2NsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RhdGVtZW50LCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAiY2xl
YXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOworCisgICAgaWYgKCFzY29wZWRT
dGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kRG91YmxlKDEsIGV4cGly
YXRpb25UaW1lRnJhbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERh
dGFiYXNlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERhdGFi
YXNlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBv
cnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KQoreworICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gdGltZXNUb1NlbmQgPSBlYXJsaWVzdFRpbWVzVG9T
ZW5kKGF0dHJpYnV0aW9uKTsKKyAgICBhdXRvIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IHRp
bWVzVG9TZW5kLmZpcnN0OworICAgIGF1dG8gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQg
PSB0aW1lc1RvU2VuZC5zZWNvbmQ7CisKKyAgICBhdXRvIHNvdXJjZVNpdGVEb21haW5JRCA9IGRv
bWFpbklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisgICAg
YXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLmRlc3Rp
bmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgIGlmICghc291cmNlU2l0ZURv
bWFpbklEIHx8ICFkZXN0aW5hdGlvblNpdGVEb21haW5JRCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc3dpdGNoIChhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KSB7CisgICAgY2FzZSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6U291cmNlOgorICAg
ICAgICBpZiAoIXNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkgeworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
bWFya1JlcG9ydEFzU2VudFRvU291cmNlKCpzb3VyY2VTaXRlRG9tYWluSUQsICpkZXN0aW5hdGlv
blNpdGVEb21haW5JRCk7CisgICAgICAgIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6RGVzdGluYXRpb246CisgICAgICAgIGlmICgh
ZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1hcmtS
ZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKCpzb3VyY2VTaXRlRG9tYWluSUQsICpkZXN0aW5hdGlv
blNpdGVEb21haW5JRCk7CisgICAgICAgIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0g
c3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIERvbid0IGNsZWFyIHRoZSBhdHRyaWJ1dGUg
ZnJvbSB0aGUgZGF0YWJhc2UgdW5sZXNzIGl0IGhhcyBiZWVuIHJlcG9ydGVkIGJvdGggdG8gdGhl
IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gc2l0ZS4KKyAgICBpZiAoZGVzdGluYXRpb25FYXJsaWVz
dFRpbWVUb1NlbmQgfHwgc291cmNlRWFybGllc3RUaW1lVG9TZW5kKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFy
ZVN0YXRlbWVudCgiREVMRVRFIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
ID0gPyJfcyk7CisgICAgaWYgKCFjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwg
Y2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQp
ICE9IFNRTElURV9PSworICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQtPmJpbmRJ
bnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
Y2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFi
YXNlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbiBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTog
JSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNl
OjptYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCBzb3VyY2VTaXRl
RG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCit7
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1l
bnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9tYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlv
blN0YXRlbWVudCwgbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25RdWVyeSwgIm1hcmtSZXBv
cnRBc1NlbnRUb0Rlc3RpbmF0aW9uIl9zKTsKKworICAgIGlmICghc2NvcGVkU3RhdGVtZW50Cisg
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCBzb3VyY2VTaXRlRG9tYWluSUQp
ICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgZGVz
dGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0
ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkRhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9E
ZXN0aW5hdGlvbiwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgRGF0YWJhc2U6Om1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZShTb3VyY2VEb21h
aW5JRCBzb3VyY2VTaXRlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQgZGVzdGluYXRpb25T
aXRlRG9tYWluSUQpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0
byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9tYXJrUmVwb3J0QXNT
ZW50VG9Tb3VyY2VTdGF0ZW1lbnQsIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZVF1ZXJ5LCAibWFy
a1JlcG9ydEFzU2VudFRvU291cmNlIl9zKTsKKworICAgIGlmICghc2NvcGVkU3RhdGVtZW50Cisg
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCBzb3VyY2VTaXRlRG9tYWluSUQp
ICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgZGVz
dGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0
ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkRhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9T
b3VyY2UsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQor
CitzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6U291cmNlRWFybGllc3RUaW1lVG9T
ZW5kPiwgc3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1Nl
bmQ+PiBEYXRhYmFzZTo6ZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRpb24pCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1
dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8gZGVzdGluYXRp
b25TaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5y
ZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVz
dGluYXRpb25TaXRlRG9tYWluSUQpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRo
aXMtPnNjb3BlZFN0YXRlbWVudChtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQsIGVhcmxp
ZXN0VGltZXNUb1NlbmRRdWVyeSwgImVhcmxpZXN0VGltZXNUb1NlbmQiX3MpOworCisgICAgaWYg
KCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEs
ICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0
ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkRhdGFiYXNl
OjplYXJsaWVzdFRpbWVzVG9TZW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklO
RywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1lVG9TZW5k
PiBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kPiBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uOwor
ICAgIAorICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRlcyB0aGF0IHRoZSByZXBvcnQgaGFz
IGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgorICAgIGlmIChzY29wZWRTdGF0ZW1l
bnQtPmNvbHVtbkRvdWJsZSgwKSA+IDAuMCkKKyAgICAgICAgZWFybGllc3RUaW1lVG9TZW5kVG9T
b3VyY2UgPSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgwKTsKKyAgICAKKyAgICBpZiAo
c2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMSkgPiAwLjApCisgICAgICAgIGVhcmxpZXN0
VGltZVRvU2VuZFRvRGVzdGluYXRpb24gPSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgx
KTsKKyAgICAKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZWFybGllc3RUaW1lVG9TZW5kVG9T
b3VyY2UsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24pOworfQorCitzdGQ6Om9wdGlv
bmFsPERhdGFiYXNlOjpEb21haW5JRD4gRGF0YWJhc2U6OmRvbWFpbklEKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CisKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVu
dChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudCwgZG9tYWluSURGcm9tU3RyaW5nUXVlcnks
ICJkb21haW5JRCJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSykgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJh
c2U6OmRvbWFpbklERnJvbVN0cmluZyBmYWlsZWQuIEVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0K
KyAgICAKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBzY29wZWRTdGF0ZW1lbnQt
PmNvbHVtbkludCgwKTsKK30KKworU3RyaW5nIERhdGFiYXNlOjpnZXREb21haW5TdHJpbmdGcm9t
RG9tYWluSUQoRG9tYWluSUQgZG9tYWluSUQpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgYXV0byByZXN1bHQgPSBlbXB0eVN0cmluZygpOworICAgIAorICAgIGF1dG8g
c2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZG9tYWluU3RyaW5nRnJv
bURvbWFpbklEU3RhdGVtZW50LCBkb21haW5TdHJpbmdGcm9tRG9tYWluSURRdWVyeSwgImdldERv
bWFpblN0cmluZ0Zyb21Eb21haW5JRCJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVf
T0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
ICIlcCAtIERhdGFiYXNlOjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQuIFN0YXRlbWVudCBm
YWlsZWQgdG8gcHJlcGFyZSBvciBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAg
aWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIHJlc3Vs
dCA9IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50LT5jb2x1bW5UZXh0KDApOwor
ICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OkRv
bWFpbklEPiBEYXRhYmFzZTo6ZW5zdXJlRG9tYWluSUQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikKK3sKKyAgICBpZiAoYXV0byBleGlzdGluZ0lEID0gZG9tYWluSUQo
ZG9tYWluKSkKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nSUQ7CisKKyAgICBhdXRvIHNjb3BlZFN0
YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2luc2VydE9ic2VydmVkRG9tYWluU3Rh
dGVtZW50LCBpbnNlcnRPYnNlcnZlZERvbWFpblF1ZXJ5LCAiaW5zZXJ0T2JzZXJ2ZWREb21haW4i
X3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVu
dC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNl
OjppbnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgfQorCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05F
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAi
JXAgLSBEYXRhYmFzZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGNvbW1pdCwgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIHJldHVybiBkb21haW5JRChkb21haW4pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM2YTBmYmY1OTI3YzlkOTU5ZDZiOTc3Y2U0NGFlYTU3ZmM0MDY0
ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaApAQCAt
MCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEYXRh
YmFzZVV0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKKy8vIFRoaXMgaXMgY3Jl
YXRlZCwgdXNlZCwgYW5kIGRlc3Ryb3llZCBvbiB0aGUgU3RvcmUncyBxdWV1ZS4KK2NsYXNzIERh
dGFiYXNlIDogcHVibGljIERhdGFiYXNlVXRpbGl0aWVzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJl
Y3RvcnkpOworICAgIHZpcnR1YWwgfkRhdGFiYXNlKCk7CisgICAgCisgICAgdm9pZCBpbnNlcnRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YT4gYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYm
KTsKKyAgICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpOworICAgIFZl
Y3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+KTsKKyAgICB2b2lk
IGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgdm9pZCBjbGVhclNl
bnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CisK
KyAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhw
aXJlZEZvclRlc3RpbmcoKTsKKyAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOworCitwcml2YXRlOgorICAgIHVzaW5nIFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ7CisgICAgdXNpbmcgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgdXNpbmcgRG9tYWluSUQg
PSB1bnNpZ25lZDsKKyAgICB1c2luZyBTb3VyY2VEb21haW5JRCA9IHVuc2lnbmVkOworICAgIHVz
aW5nIERlc3RpbmF0aW9uRG9tYWluSUQgPSB1bnNpZ25lZDsKKyAgICB1c2luZyBTb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmQgPSBkb3VibGU7CisgICAgdXNpbmcgRGVzdGluYXRpb25FYXJsaWVzdFRp
bWVUb1NlbmQgPSBkb3VibGU7CisKKyAgICBib29sIGNyZWF0ZVNjaGVtYSgpIGZpbmFsOworICAg
IHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Piwgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBm
aW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmKTsKKyAgICBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNl
KFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UeXBlKTsKKyAgICB2b2lkIHJlbW92ZVVuYXR0cmlidXRlZChXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYpOworICAgIFN0cmluZyBhdHRyaWJ1dGlvblRvU3RyaW5nKFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCosIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlKTsKKyAgICB2b2lkIG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKFNvdXJjZURvbWFp
bklELCBEZXN0aW5hdGlvbkRvbWFpbklEKTsKKyAgICB2b2lkIG1hcmtSZXBvcnRBc1NlbnRUb1Nv
dXJjZShTb3VyY2VEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCk7CisgICAgc3RkOjpwYWly
PHN0ZDo6b3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1lVG9TZW5kPiwgc3RkOjpvcHRpb25hbDxE
ZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4+IGVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERv
bWFpbklEPiBlbnN1cmVEb21haW5JRChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYp
OworICAgIHN0ZDo6b3B0aW9uYWw8RG9tYWluSUQ+IGRvbWFpbklEKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJik7CisgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5J
RChEb21haW5JRCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiBtX3NldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3Rh
dGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
ZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVtb3ZlVW5hdHRyaWJ1dGVkU3Rh
dGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fYWxsVW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jbGVhclVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4gbV9jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2VhcmxpZXN0VGltZXNU
b1NlbmRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4gbV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9tYXJrUmVwb3J0QXNTZW50VG9EZXN0
aW5hdGlvblN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PiBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0
YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgUENN
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRl
MzQyZGRlMmVmZWNkNGM3Y2I4OWM3NzJhMjFlZDZkOWE5MWU3YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yZS5oIgorCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5o
IgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK1N0b3JlOjpTdG9yZShSZWY8U3VzcGVuZGFi
bGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5
KQorICAgIDogbV9xdWV1ZShXVEZNb3ZlKHdvcmtRdWV1ZSkpCit7CisgICAgaWYgKCFkYXRhYmFz
ZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VEaXJlY3RvcnkgPSBkYXRhYmFzZURpcmVj
dG9yeS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX2RhdGFiYXNl
ID0gbWFrZVVuaXF1ZTxEYXRhYmFzZT4oV1RGTW92ZShkYXRhYmFzZURpcmVjdG9yeSkpOworICAg
ICAgICB9KTsKKyAgICB9Cit9CisKK1N0b3JlOjp+U3RvcmUoKSA9IGRlZmF1bHQ7CisKKy8vIEZJ
WE1FOiBXZSBzaG91bGQgcHJvYmFibHkgdGFwIGludG8gTmV0d29ya1Nlc3Npb246OmRlc3Ryb3lS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGZvciB0ZWFyZG93bi4KKy8vIEZJWE1FOiBMb29rIGludG8g
UkxTJ3MgdHJhbnNhY3Rpb24gdG9rZW5zLgorLy8gRklYTUU6IE1pZ3JhdGUgZGF0YSBmcm9tIG9s
ZCBkYXRhYmFzZS4KKwordm9pZCBTdG9yZTo6cG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRh
c2spCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3F1ZXVlLT5kaXNw
YXRjaChXVEZNb3ZlKHRhc2spKTsKK30KKwordm9pZCBTdG9yZTo6cG9zdFRhc2tSZXBseShXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiByZXBseSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShyZXBseSkpOworfQor
Cit2b2lkIFN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCit7CisgICAgcG9zdFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXR0cmlidXRpb24gPSBXVEZNb3ZlKGF0
dHJpYnV0aW9uKSwgYXR0cmlidXRpb25UeXBlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1f
ZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRpb25UeXBlKTsKKyAgICB9KTsK
K30KKwordm9pZCBTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXNFeHBpcmVkRm9yVGVzdGluZygpCit7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAg
ICAgICAgIG1fZGF0YWJhc2UtPm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yZTo6YXR0
cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRp
b25TaXRlLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25Ucmln
Z2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgZXBoZW1lcmFsTWVhc3VyZW1lbnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIC8vIEZJWE1FOiBlcGhlbWVyYWxNZWFzdXJlbWVudCBuZWVkcyBhbiBpc29s
YXRlZENvcHkuCisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgc291cmNlU2l0ZSA9IHNvdXJjZVNpdGUuaXNvbGF0ZWRDb3B5KCksIGRlc3RpbmF0aW9u
U2l0ZSA9IGRlc3RpbmF0aW9uU2l0ZS5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSA9IFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIGVwaGVtZXJhbE1lYXN1cmVt
ZW50ID0gV1RGTW92ZShlcGhlbWVyYWxNZWFzdXJlbWVudCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25k
c1VudGlsU2VuZERhdGE+IHNlY29uZHM7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKSB7CisgICAg
ICAgICAgICAvLyBJbnNlcnQgZXBoZW1lcmFsIG1lYXN1cmVtZW50IHJpZ2h0IGJlZm9yZSBhdHRy
aWJ1dGlvbi4KKyAgICAgICAgICAgIGlmIChlcGhlbWVyYWxNZWFzdXJlbWVudCkgeworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVwaGVtZXJhbE1lYXN1cmVtZW50LT5pc0VwaGVtZXJh
bCgpKTsKKyAgICAgICAgICAgICAgICBtX2RhdGFiYXNlLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChXVEZNb3ZlKCplcGhlbWVyYWxNZWFzdXJlbWVudCksIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgc2Vjb25kcyA9IG1fZGF0YWJhc2UtPmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1
cmVtZW50KHNvdXJjZVNpdGUsIGRlc3RpbmF0aW9uU2l0ZSwgV1RGTW92ZShhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgd2Fu
dCB0byBiZSBhbiBpc29sYXRlZENvcHksIHRvbywgaW4gY2FzZSB3ZSBldmVyIGFkZCBhbnl0aGlu
ZyB0byBBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhIHRoYXQgbmVlZHMgaXQuCisgICAg
ICAgIHBvc3RUYXNrUmVwbHkoW3NlY29uZHMgPSBXVEZNb3ZlKHNlY29uZHMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2Vjb25kcyk7CisgICAgICAgIH0pOworICAgIH0pOwor
fQorCit2b2lkIFN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBwb3N0
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBT
dHJpbmcgcmVzdWx0OworICAgICAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAgIG1fZGF0
YWJhc2UtPnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKTsKKyAgICAgICAgcG9zdFRh
c2tSZXBseShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50PiBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnM7CisgICAgICAgIGlmIChtX2Rh
dGFiYXNlKQorICAgICAgICAgICAgY29udmVydGVkQXR0cmlidXRpb25zID0gbV9kYXRhYmFzZS0+
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgICAgIC8vIEZJWE1F
OiBUaGlzIG5lZWRzIGFuIGlzb2xhdGVkQ29weS4KKyAgICAgICAgcG9zdFRhc2tSZXBseShbY29u
dmVydGVkQXR0cmlidXRpb25zID0gV1RGTW92ZShjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb252ZXJ0ZWRBdHRyaWJ1dGlv
bnMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6Om1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fZGF0
YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5tYXJrQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICAgICAgcG9zdFRhc2tSZXBs
eShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKKy8vIEZJWE1FOiBJ
IHNob3VsZCBwcm9iYWJseSBhZGQgYSBjb21wbGV0aW9uIGhhbmRsZXIgaGVyZS4KK3ZvaWQgU3Rv
cmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQoreworICAgIHBvc3RUYXNrKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgaWYgKG1fZGF0YWJh
c2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
KHN0ZDo6bnVsbG9wdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6OmNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5j
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KGRvbWFpbik7CisgICAgfSk7Cit9CisKK3ZvaWQg
U3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKK3sKKyAgICBwb3N0
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKKyAgICAgICAg
aWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVhckV4cGlyZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbGVhclNl
bnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0
aW9uVG9DbGVhciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkKK3sKKyAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgcHJvYmFibHkgaGF2ZSBhbiBpc29sYXRlZENvcHkuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkxMTIgd2Fzbid0IHF1aXRlIGVub3VnaC4K
KyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhdHRy
aWJ1dGlvblRvQ2xlYXIgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhciksIGF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnRdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAg
ICAgICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShhdHRyaWJ1
dGlvblRvQ2xlYXIpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKKyAgICB9KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MmU4ZDMxMmQ4M2Q2NDZhNDBjNjYwOTA5YzdmNWNhMDhjNDg4NTE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xh
c3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgOiBib29sOworCituYW1l
c3BhY2UgUENNIHsKKworY2xhc3MgRGF0YWJhc2U7CisKK2NsYXNzIFN0b3JlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFN0b3JlPiB7CitwdWJsaWM6CisgICAgU3RvcmUoUmVmPFN1c3Bl
bmRhYmxlV29ya1F1ZXVlPiYmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAg
ICB+U3RvcmUoKTsKKworICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CisgICAgdm9pZCBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
U2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+JiYgZXBoZW1lcmFsTWVhc3VyZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmKTsKKworICAgIC8vIEZJWE1FOiBBZGQgRm9y
VGVzdGluZyB0byB0aGlzIG5hbWUuCisgICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CisgICAgdm9pZCBtYXJr
QWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5n
KCk7CisgICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
aXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKworICAgIHZvaWQg
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJik7CisgICAg
dm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIHZvaWQgY2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJik7CisgICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uVG9DbGVhciwgV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOworcHJpdmF0ZToKKyAg
ICB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0VGFza1Jl
cGx5KEZ1bmN0aW9uPHZvaWQoKT4mJik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2U+
IG1fZGF0YWJhc2U7CisgICAgUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IDZhNjM1ZDg5ZDc3MzA4MDg1MmMzYTFkZmYxYThkZTg3
NmVhZTYwNzMuLmVmYzg5OWMzYjVjOGEwNDkwNTA2ZDk4YzRkMmYwOWNjZWZkZjk5ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
UHJpdmF0ZUNsaWNrTQogICAgIH0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUobWVhc3Vy
ZW1lbnQpLCB0eXBlKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChX
VEZNb3ZlKG1lYXN1cmVtZW50KSwgdHlwZSk7CiAjZW5kaWYKIH0KIApAQCAtMjk3LDcgKzI5Nyw3
IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjphdHRyaWJ1dGUoY29uc3Qg
U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uCiAgICAgfQogICAgICAgICAKICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hdHRyaWJ1
dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdU
Rk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIHN0ZDo6ZXhjaGFuZ2UobV9lcGhlbWVyYWxN
ZWFzdXJlbWVudCwgc3RkOjpudWxsb3B0KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXSAoYXV0byBhdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhKSB7CisgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5h
dHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNp
dGUsIFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIHN0ZDo6ZXhjaGFuZ2UobV9lcGhl
bWVyYWxNZWFzdXJlbWVudCwgc3RkOjpudWxsb3B0KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSAoYXV0byBhdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhKSB7CiAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpjbGVhclNlbnRBdHRyaWJ1dGlvbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVuCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9u
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5jbGVhclNlbnRBdHRyaWJ1dGlvbihXVEZNb3ZlKHNlbnRDb252ZXJz
aW9uKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CisgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5jbGVhclNlbnRBdHRyaWJ1
dGlvbihXVEZNb3ZlKHNlbnRDb252ZXJzaW9uKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7
CiAjZW5kaWYKIH0KIApAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKQogICAgIGlmICgh
cmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8mJiBhdHRyaWJ1dGlvbnMpIHsK
KyAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
KCkuYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8mJiBhdHRyaWJ1dGlvbnMpIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBuZXh0VGltZVRv
RmlyZSA9IFNlY29uZHM6OmluZmluaXR5KCk7CkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoKTsKICNlbmRpZgogfQogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgUmVnaXN0cmFibGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCi0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOworICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbik7CiAjZW5kaWYKIH0K
IApAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpjbGVhckV4cGlyZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJFeHBpcmVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KCk7CiAjZW5kaWYKIH0KIApAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjp0b1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyk+JiYKICAgICB9CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLnByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9TdHJpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBt
X25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICNlbmRpZgogfQogCkBA
IC01NzUsNyArNTc1LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1h
cmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHAKICAgICB9CiAKICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5t
YXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmco
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkubWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApp
bmRleCA0NzNjZTUzNjY3ZGQ4ODNkYjgxZTJmZTU5OTQyN2U4NWY4MDQ2MDRhLi4xY2VhZTE4MzA1
YTc2ODgxMWVkZjNiNmYwMGQ5ZTMwMjE4ZDE2N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAorI2luY2x1ZGUgIkxpYldlYlJUQ1Jl
c29sdmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ROUy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwCmluZGV4IDMwODAzNDM4NmZmY2IyNjlmZTI5YjMxNDA5ZTE4
MzE5OGIyY2FlMDIuLmUxNGY4NzNiN2M4MTdjNzk3ZWM0ZjNiNTY4MGIyMTJlM2NmNmI5ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIHZv
aWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5m
bywgY29uc3QgQ0ZTdHIKIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3Vu
dDsgKytpbmRleCkgewogICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJh
eUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBpZiAo
YXV0byBhZGRyZXNzID0gSVBBZGRyZXNzOjpmcm9tU29ja0FkZHJJbjYoKnJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luNio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpKSkK
KyAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IFdlYkNvcmU6OklQQWRkcmVzczo6ZnJvbVNvY2tB
ZGRySW42KCpyZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbjYqPihDRkRh
dGFHZXRCeXRlUHRyKGRhdGEpKSkpCiAgICAgICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBw
ZW5kKCphZGRyZXNzKTsKICAgICB9CiAgICAgaWYgKGFkZHJlc3Nlcy5pc0VtcHR5KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5oCmluZGV4IDk3ZDUxNDg3NGRkNjBkNTk3Y2ZmNzgzOGNkODM2OTcyZmE5YWQzMmQu
LjI4OGFjN2Q1MWM1NjYwMzE2ODAwZjY2YTExMTFjODEyMTQ2ZTBkMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
aApAQCAtMzcsNiArMzcsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMgewogCiAgICAgU3RyaW5nIGRpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIFN0cmluZyBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAg
ICBib29sIGVuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNJdHBTdGF0ZUV4cGxpY2l0bHlT
ZXQgeyBmYWxzZSB9OwogICAgIGJvb2wgZW5hYmxlTG9nVGVzdGluZ0V2ZW50IHsgZmFsc2UgfTsK
QEAgLTU1LDYgKzU3LDggQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
IHsKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgZGlyZWN0b3J5OwogICAgICAgICBlbmNvZGVy
IDw8IGRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICAgICAgZW5jb2RlciA8PCBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIGVuY29kZXIgPDwgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAg
ICAgICBlbmNvZGVyIDw8IGVuYWJsZWQ7CiAgICAgICAgIGVuY29kZXIgPDwgaXNJdHBTdGF0ZUV4
cGxpY2l0bHlTZXQ7CiAgICAgICAgIGVuY29kZXIgPDwgZW5hYmxlTG9nVGVzdGluZ0V2ZW50OwpA
QCAtODEsNyArODUsMTcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
IHsKICAgICAgICAgZGVjb2RlciA+PiBkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgICAg
IGlmICghZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworICAgICAgICBkZWNvZGVyID4+IHByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgaWYgKCFwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyAgICAgICAgZGVjb2RlciA+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKwogICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKICAgICAgICAgaWYgKCFlbmFibGVkKQpAQCAtMTQy
LDYgKzE1Niw4IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAg
ICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqZGlyZWN0b3J5KSwKICAgICAg
ICAgICAgIFdURk1vdmUoKmRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCisgICAgICAgICAgICBX
VEZNb3ZlKCpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpLAorICAgICAg
ICAgICAgV1RGTW92ZSgqcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgICAgIFdURk1vdmUoKmVuYWJsZWQpLAogICAgICAgICAg
ICAgV1RGTW92ZSgqaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQpLAogICAgICAgICAgICAgV1RGTW92
ZSgqZW5hYmxlTG9nVGVzdGluZ0V2ZW50KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY2YWVkYTQzYzgyZDhi
ZmIzMzViYmZlZjYwOTVkMDRlZmFkYjg2MjAuLmQ1M2NjYzU2MjFlZTE2Y2RiMzdkMDA5NDgzN2Rk
NzVhNzFjZGQ1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTcsNiArNTcsNyBAQCBHUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiAKK05ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAK
QEAgLTk4LDYgKzk5LDkgQEAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5jcHAKIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAogCitOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKKwogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCBhY2QwNGQ4NjdmZDFhMDgwMWJh
ZGFkYzU2MzU3N2UyNWQ4NzdjZDgwLi43Nzg1OTU5ZWY1NjYzMWM1YTUxYTQxYWI4M2U0OTVlZjk2
ZWQxNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApAQCAtNjAs
NiArNjAsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRXZWJTUUxEYXRhYmFzZURpcmVj
dG9yeTopIE5TVVJMICpfd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSwgc2V0dGVyPV9zZXRDb29raWVTdG9yYWdlRmlsZTopIE5TVVJMICpfY29va2ll
U3RvcmFnZUZpbGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OikgTlNVUkwgKl9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TVVJMICpwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBz
ZXR0ZXI9X3NldENhY2hlU3RvcmFnZURpcmVjdG9yeTopIE5TVVJMICpfY2FjaGVTdG9yYWdlRGly
ZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5OikgTlNVUkwgKl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiBAcHJvcGVydHkg
KG5vbmF0b21pYykgQk9PTCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFi
bGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KaW5kZXggNmEzYjYzY2I2OTA4ZWJiOWFl
ODM2MWY0MzY4MzljMDNlZDdkNjM2ZC4uNjU5ZDZmZDI1ZjRiMGJkNmY1ODI0YTEyZmUwNmI5YzQ4
ZDU3ZTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQpAQCAt
MTg2LDYgKzE4NiwyMiBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTEFyZ3VtZW50KE5TVVJMICp1cmwp
CiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
dXJsLnBhdGgpOwogfQogCistIChOU1VSTCAqKXByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFn
ZURpcmVjdG9yeQoreworICAgIGF1dG8mIGRpcmVjdG9yeSA9IF9jb25maWd1cmF0aW9uLT5wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBpZiAoZGlyZWN0b3J5
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOmRpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNdOworfQorCistICh2b2lkKXNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTooTlNVUkwgKil1cmwKK3sKKyAg
ICBpZiAoIV9jb25maWd1cmF0aW9uLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkNhbm5vdCBzZXQg
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5IG9uIGEgbm9uLXBlcnNpc3Rl
bnQgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uIl07CisgICAgY2hlY2tVUkxBcmd1
bWVudCh1cmwpOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOworfQorCiAtIChOU1VSTCAqKV9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkKIHsKICAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmln
dXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKaW5kZXggMjFiZTI1ODEwYjMyNmIxYjAwMGExNGNhYWVmZGQ3MmU4Mzc3ZTVmMS4u
NDU4ZDBjNjRlMjZiZDRjMWViMGJmMzQyZjQwOTdkN2M0M2VkNDk2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKQEAgLTI2MSw2ICsyNjEsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJl
Y3Rvcmllc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNl
dE5ldHdvcmtDYWNoZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5
Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKSk7CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoKS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3Jp
dGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPnBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmFnZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFn
ZURpcmVjdG9yeSgpKSk7CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5KCkgJiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0
ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpKSk7CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KCkuaXNFbXB0eSgpKQpAQCAtMTk2NCw2ICsxOTY2LDcgQEAgV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAKICAgICByZXNv
bHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwogCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IGxvb2sgYXQgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uCiAgICAgYXV0byByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGU7CiAgICAgaWYgKCFyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkgewpAQCAtMTk3MSw2ICsxOTc0LDEzIEBA
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMo
KQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CiAgICAgfQogCisgICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+cHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUhhbmRsZTsKKyAgICBp
ZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVj
dG9yeSkpCisgICAgICAgICAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rv
cnlIYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KKwogICAgIGF1dG8gbmV0d29ya0Nh
Y2hlRGlyZWN0b3J5ID0gcmVzb2x2ZWROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewpAQCAtMjAwMCw2
ICsyMDEwLDggQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6
cGFyYW1ldGVycygpCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgPSB7CiAgICAgICAgIFdURk1vdmUocmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUocmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeUhhbmRsZSksCisgICAgICAgIFdURk1vdmUocHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSwKKyAgICAgICAgV1RGTW92ZShwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUpLAogICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCgpLAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgICAgIGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0KCksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggYzcwMmQ0YTdhM2VlNWVjYmZhYTY5MGI0YzNhZGEw
YjIzZDcwZjM5NS4uNWY1MTY2YjcyOGUzYmRhZWQ5ZDI1ODM2OTQ0YjFkM2RlODNhMjNhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNzYsNiArNzYsNyBA
QCBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBjb3B5LT5tX2FsdGVybmF0aXZlU2VydmljZXNE
aXJlY3RvcnkgPSB0aGlzLT5tX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7CiAgICAgY29w
eS0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2RldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSB0aGlzLT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
CisgICAgY29weS0+bV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgPSB0
aGlzLT5tX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5
LT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+bV9qYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKICAgICBjb3B5LT5tX2Nvb2tpZVN0b3JhZ2VGaWxlID0g
dGhpcy0+bV9jb29raWVTdG9yYWdlRmlsZTsKICAgICBjb3B5LT5tX3NvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllciA9IHRoaXMtPm1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggZWZhYTljODBh
MGM4MjBkZTNjY2MyNjgxNDljODY2YWYwM2E4NDVhZS4uZDYwYjU5ZjRkOTkyYWQ4NGZhMzE4MGJh
NDZiMjIxOTBmMDdhYTlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
CkBAIC0xMTcsNiArMTE3LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAKKyAgICBjb25zdCBTdHJpbmcmIHByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7
IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJl
Y3RvcnkpOyB9CisKICAgICBjb25zdCBTdHJpbmcmIG5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbmV0d29ya0NhY2hlRGly
ZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAgICAgCkBAIC0yMDEsNiArMjA0LDcgQEAg
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5OwogICAg
IFN0cmluZyBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OworICAgIFN0cmluZyBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9qYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9jb29raWVTdG9yYWdlRmlsZTsK
ICAgICBTdHJpbmcgbV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZTNkMzJi
MzI5NWMyYzQ0ZmQ0NDQ0Y2RkN2YxNDFmMjQwMDRjYTAyLi5hYWU0OTRkYmQ4M2U3OGQyNjc5NzE0
YjdkYmJlOGNhOWM4ZTU2YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzEsNiArMTI3MSw4IEBACiAJCTVDNzk1RDcwMjI5RjM3
M0YwMDNGRjFDNCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTBDMzY5MjI5RjJENEEwMDM2OTVGMCAv
KiBXS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CiAJCTVDNzk1RDcxMjI5RjM3NTcwMDNGRjFDNCAvKiBXS0NvbnRl
eHRNZW51RWxlbWVudEluZm9Qcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0UwQzM2QTIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVu
dUVsZW1lbnRJbmZvUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTVDN0ZCNDcwMjFFOTdEQzUwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0ZCNDZG
MjFFOTdDMEMwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuaCAqLzsgfTsKKwkJNUM4MjZENkIyNkQ0
ODJFRjAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDODI2RDY4MjZENDZCNDQwMDhB
RUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmggKi87IH07CisJCTVDODI2RDZD
MjZENDgyRjIwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzgyNkQ2OTI2RDQ4
MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oICovOyB9Owog
CQk1QzhCQzc5NzIxOENCQjQ4MDA4MTM4ODYgLyogU2FmZUJyb3dzaW5nLnhjYXNzZXRzIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzhCQzc5NjIxOENC
NThBMDA4MTM4ODYgLyogU2FmZUJyb3dzaW5nLnhjYXNzZXRzICovOyB9OwogCQk1QzhERDM4MDFG
RTQ1MjE2MDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzhERDM3RjFGRTQ1MTkyMDBGMkE1NTYg
LyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggKi87IH07CiAJCTVDOUE5MTExMjI4RjY5Q0MwMDVD
NUIxNyAvKiBYUENTZXJ2aWNlTWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDODI4Mzk2MTZCNDdFQzQwMEEyNzhGRSAvKiBYUENTZXJ2aWNlTWFp
bi5tbSAqLzsgfTsKQEAgLTQ1MDksNiArNDUxMSwxMiBAQAogCQk1QzdGQjQ2RjIxRTk3QzBDMDA5
RTMyNDEgLyogV2ViQ29va2llSmFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvb2tpZUphci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzgwQjNEQjIz
NjkwRDhEMDA4NkU2REUgLyogU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25E
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODBCM0REMjM2OTBGMTAwMDg2
RTZERSAvKiBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzgyNkQ2NzI2RDQ2QjQzMDA4QUVD
OTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM4MjZENjgyNkQ0NkI0NDAwOEFFQzkxIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QzgyNkQ2OTI2RDQ4MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDODI2RDZBMjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
QzgyNkQ2RTI2RDU4QTE2MDA4QUVDOTEgLyogRGF0YWJhc2VVdGlsaXRpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzgyNkQ2RjI2RDU4QTE2MDA4QUVDOTEgLyogRGF0
YWJhc2VVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJh
c2VVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4NENGOTAxRjk2
QUM0RTAwQjY3MDVBIC8qIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODVDNzg2MUMzRjIzQzUwMDYx
QTRGQSAvKiBQZW5kaW5nRG93bmxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGVuZGluZ0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM4OURGNTYyMUFGNjFGRjAwNDY0NUU4IC8qIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTg2NzIsOSArODY4MCwxMiBAQAogCQkJCTkzOTI4OEUwMjE0MDRERjAwMEVCQkEzMyAvKiBJ
bmRleGVkREIgKi8sCiAJCQkJMkRBOTQ0QkIxODg1MTFERDAwRUQ4NkRCIC8qIGlvcyAqLywKIAkJ
CQk1MTBDQzdEQzE2MTM4RTI5MDBEMDNFRDMgLyogbWFjICovLAorCQkJCTVDMDFCQzM1MjZENDZB
RDQwMEZFQjQyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLywKIAkJCQk5M0JBMDREOTIx
NTFBRENEMDA3RjQ1NUYgLyogU2VydmljZVdvcmtlciAqLywKIAkJCQk0MTMwNzU5NzFERTg0RUQ3
MDAzOUVDNjkgLyogd2VicnRjICovLAogCQkJCTkzQjI2MTQzMjI3RDE0MzEwMEI5N0E3NiAvKiBX
ZWJTdG9yYWdlICovLAorCQkJCTVDODI2RDZFMjZENThBMTYwMDhBRUM5MSAvKiBEYXRhYmFzZVV0
aWxpdGllcy5jcHAgKi8sCisJCQkJNUM4MjZENkYyNkQ1OEExNjAwOEFFQzkxIC8qIERhdGFiYXNl
VXRpbGl0aWVzLmggKi8sCiAJCQkJNTNGM0NBQTUyMDZDNDQzRTAwODY0OTBFIC8qIE5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXIuY3BwICovLAogCQkJCTUzNUJDQjkwMjA2OUM0OUMwMENDQ0UwMiAvKiBO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyLmggKi8sCiAJCQkJNDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFC
IC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwICovLApAQCAtOTI0Myw2ICs5
MjU0LDE3IEBACiAJCQlwYXRoID0gU09BdXRob3JpemF0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKKwkJNUMwMUJDMzUyNkQ0NkFENDAwRkVCNDJGIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk1QzgyNkQ2QTI2RDQ4MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YXRhYmFzZS5jcHAgKi8sCisJCQkJNUM4MjZENjkyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCAqLywKKwkJCQk1QzgyNkQ2NzI2RDQ2QjQzMDA4QUVD
OTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgKi8sCisJCQkJNUM4MjZENjgy
NkQ0NkI0NDAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OwogCQk1QzE0MjZGMTFDMjNGODE3MDBENDExODMgLyogRG93bmxvYWRz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEyMzA2LDgg
KzEyMzI4LDEwIEBACiAJCQkJQzE1Q0JCMzYyM0YzNzc3MTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFCMTQ1RTYyMjNGOTMxMjAwRTQ4OUQ4IC8q
IFByZWZldGNoQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQ0MxQjkwMTJEN0VBREYwMDYy
NTgzOCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTVDODI2RDZDMjZENDgyRjIw
MDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2QkQwNTg2NTIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZFNjg4QzI2MEFCQjNEMDBCRjQ1RTQg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1QzgyNkQ2QjI2RDQ4MkVGMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFBy
b2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4MTEzNkUxOUMwMEZC
NzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2M0ZENDgyMUVC
OTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY3
YzBmMjViOWFjODQ0MzljYjdmNTAzOWQ2MjdhYTkxODI2Y2U1M2UuLmRkMjM5N2Q3MmZkNmM5MzYw
ZTQ2Yjc1YTAwNDEyMjdjNTU3ZWEyOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOC0yNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFNlcGFyYXRlIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50IGRhdGFiYXNlIGZyb20gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyBkYXRhYmFzZSBhbmQgYWRkIFNQSSB0byBzZXQgaXRzIGxvY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk1MjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMjEtMDgtMjUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtnaXQtd2Via2l0XSBVc2UgUHl0aG9uIDMgaW4gQ0kKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlv
bi5tbQppbmRleCBjODBjYTcxNmNjMDIxYTRiODk2MWU4MDM0ZWI0MDA4MDNlNDhmNTE0Li43OTIz
OWNhYjk5NmVhOTQ1NGEzZThlYjI5ODViZjUzMTE4NDM5ODdhIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1t
CkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAKICNpZiBIQVZFKFJTQV9CU1NBKQogCkBA
IC03OCw3ICs3OSw3IEBAIHN0YXRpYyBOU1VSTCAqZXhhbXBsZVVSTCgpCiAgICAgcmV0dXJuIFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iXTsKIH0KIAotdm9pZCBy
dW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KEZ1bmN0aW9uPHZvaWQoV0tXZWJWaWV3ICosIGNv
bnN0IEhUVFBTZXJ2ZXImKT4mJiBhZGRBdHRyaWJ1dGlvblRvV2ViVmlldykKK3ZvaWQgcnVuQmFz
aWNFdmVudEF0dHJpYnV0aW9uVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uLCBGdW5jdGlvbjx2b2lkKFdLV2ViVmlldyAqLCBjb25zdCBIVFRQU2VydmVyJik+JiYgYWRk
QXR0cmlidXRpb25Ub1dlYlZpZXcpCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfcHJldmVu
dE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkZvclRlc3RpbmddOwogICAgIGJvb2wgZG9uZSA9IGZh
bHNlOwpAQCAtMTEzLDcgKzExNCw3IEBAIHZvaWQgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVz
dChGdW5jdGlvbjx2b2lkKFdLV2ViVmlldyAqLCBjb25zdCBIVFRQU2VydmVyJik+CiAgICAgfSwg
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKICAgICBOU1VSTCAqc2VydmVyVVJMID0gc2Vy
dmVyLnJlcXVlc3QoKS5VUkw7CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZp
ZXcgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gY29uZmlndXJhdGlvbiA/IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb25dKSA6IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBhZGRBdHRyaWJ1
dGlvblRvV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBzZXJ2ZXIpOwogICAgIFtbd2ViVmlldyBjb25m
aWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDpZRVNdOwogICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3Jl
IF9hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW46QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCld
IGZvckhvc3Q6c2VydmVyVVJMLmhvc3RdOwpAQCAtMjgyLDE2ICsyODMsMzcgQEAgVEVTVChFdmVu
dEF0dHJpYnV0aW9uLCBGcmF1ZFByZXZlbnRpb24pCiAKIFRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwg
QmFzaWMpCiB7Ci0gICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChbXShXS1dlYlZpZXcg
KndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgeworICAgIHJ1bkJhc2ljRXZlbnRB
dHRyaWJ1dGlvblRlc3QobmlsLCBbXShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2
ZXImIHNlcnZlcikgeworICAgICAgICBbd2ViVmlldyBfYWRkRXZlbnRBdHRyaWJ1dGlvbldpdGhT
b3VyY2VJRDo0MiBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMKCkgc291cmNlRGVzY3JpcHRpb246
QCJ0ZXN0IHNvdXJjZSBkZXNjcmlwdGlvbiIgcHVyY2hhc2VyOkAidGVzdCBwdXJjaGFzZXIiIHJl
cG9ydEVuZHBvaW50OnNlcnZlci5yZXF1ZXN0KCkuVVJMIG9wdGlvbmFsTm9uY2U6bmlsXTsKKyAg
ICB9KTsKK30KKworVEVTVChFdmVudEF0dHJpYnV0aW9uLCBEYXRhYmFzZUxvY2F0aW9uKQorewor
ICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdOworICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNU
ZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJFdmVu
dEF0dHJpYnV0aW9uRGF0YWJhc2VMb2NhdGlvblRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworICAg
IGlmIChbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDp0ZW1wRGlyLnBhdGhdKQorICAgICAg
ICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6bmlsXTsKKworICAg
IGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIG5ld10pOworICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCku
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5ID0gdGVtcERpcjsKKyAgICBh
dXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBu
ZXddKTsKKyAgICB2aWV3Q29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpk
YXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuZ2V0KCk7CisgICAgcnVuQmFzaWNFdmVudEF0
dHJpYnV0aW9uVGVzdCh2aWV3Q29uZmlndXJhdGlvbi5nZXQoKSwgW10oV0tXZWJWaWV3ICp3ZWJW
aWV3LCBjb25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIpIHsKICAgICAgICAgW3dlYlZpZXcgX2FkZEV2
ZW50QXR0cmlidXRpb25XaXRoU291cmNlSUQ6NDIgZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgp
IHNvdXJjZURlc2NyaXB0aW9uOkAidGVzdCBzb3VyY2UgZGVzY3JpcHRpb24iIHB1cmNoYXNlcjpA
InRlc3QgcHVyY2hhc2VyIiByZXBvcnRFbmRwb2ludDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBvcHRp
b25hbE5vbmNlOm5pbF07CiAgICAgfSk7CisKKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIg
ZmlsZUV4aXN0c0F0UGF0aDp0ZW1wRGlyLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1h
bmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpbdGVtcERpci5wYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAInBjbS5kYiJdXSk7CiB9CiAKKy8vIEZJWE1FOiBXcml0ZSBhIHRlc3QgdGhh
dCB2ZXJpZmllcyB0aGF0IGRhdGEgaXMgbWlncmF0ZWQgZnJvbSBvbGQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyBkYXRhYmFzZXMgdG8gdGhlIG5ldyBQQ00gZGF0YWJhc2UuCisKICNpZiBIQVZFKFVJ
X0VWRU5UX0FUVFJJQlVUSU9OKQogCiBURVNUKEV2ZW50QXR0cmlidXRpb24sIEJhc2ljV2l0aElP
U1NQSSkKIHsKLSAgICBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KFtdKFdLV2ViVmlldyAq
d2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAgcnVuQmFzaWNFdmVudEF0
dHJpYnV0aW9uVGVzdChuaWwsIFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZl
ciYgc2VydmVyKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRpb24gPSBhZG9wdE5TKFtbTW9ja0V2
ZW50QXR0cmlidXRpb24gYWxsb2NdIGluaXRXaXRoUmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVl
c3QoKS5VUkwgZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpXSk7CiAgICAgICAgIHdlYlZpZXcu
X3VpRXZlbnRBdHRyaWJ1dGlvbiA9IChVSUV2ZW50QXR0cmlidXRpb24gKilhdHRyaWJ1dGlvbi5n
ZXQoKTsKICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436473</attachid>
            <date>2021-08-25 22:19:40 -0700</date>
            <delta_ts>2021-08-26 11:41:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229527-20210825221939.patch</filename>
            <type>text/plain</type>
            <size>206285</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1MTdjY2I1ZmE3YjNiNTFk
NzQ1N2YwOGZjMTRkZjA0NzZhYmJiY2IuLjE5YmM4N2E2ZGY4OTc0YzNkMmU0MzdlMzFiYjdmNGM5
ZGZiZjk4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDIxLTA4LTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJhdGUg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZGF0YWJhc2UgZnJvbSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIGRhdGFiYXNlIGFuZCBhZGQgU1BJIHRvIHNldCBpdHMgbG9jYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTUyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMs
IEkgbW92ZWQgY29tbW9uIGNvZGUgdG8gRGF0YWJhc2VVdGlsaXRpZXMgYW5kIG1vdmVkIHRoZSBQ
Q00gbG9naWMgZnJvbSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZQorICAgICAg
ICB0byBhIG5ldyBjbGFzcy4gIEl0IHB1dHMgdGhlIGRhdGEgaW4gYSBkaWZmZXJlbnQgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkgdW5sZXNzIFNQSSB0ZWxscyBpdCB0byBwdXQgaXQgaW4gYSBk
aWZmZXJlbnQgZGlyZWN0b3J5LgorCisgICAgICAgIFRoZSBiaWdnZXN0IGZ1bmN0aW9uYWwgY2hh
bmdlIEkgbmVlZGVkIHRvIGRvIHdhcyB0byBtYWtlIGEgUENNT2JzZXJ2ZWREb21haW5zIHRhYmxl
IGluIHRoZSBuZXcgREIgaW5zdGVhZCBvZiBhbiBPYnNlcnZlZERvbWFpbnMgdGFibGUsCisgICAg
ICAgIHdoaWNoIGNvbnRhaW5lZCBtb3JlIGluZm9ybWF0aW9uIHRoYW4gSSBuZWVkZWQuICBJIG5l
ZWQganVzdCBhbiBpbmRleCBhbmQgYSBsaXN0IG9mIGRvbWFpbnMuCisKKyAgICAgICAgQW5vdGhl
ciBzbGlnaHQgaW1wbGVtZW50YXRpb24gY2hhbmdlIGlzIHRoYXQgaW5zdGVhZCBvZiBjaGVja2lu
ZyBpc0VwaGVtZXJhbCBpbiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIEkganVzdCBw
YXNzIGFuIGVtcHR5CisgICAgICAgIFN0cmluZyB0byB0aGUgU3RvcmUgaWYgaXQncyBlcGhlbWVy
YWwsIHdoaWNoIGNhdXNlcyBubyBEQiB0byBiZSBjcmVhdGVkLCB3aGljaCBjYXVzZXMgZXF1aXZh
bGVudCBiZWhhdmlvci4KKworICAgICAgICBBbiBldmVuIHNtYWxsZXIgY2hhbmdlIGlzIEkgYWRk
ZWQgYSAiRm9yVGVzdGluZyIgc3VmZml4IG9uIHNvbWUgZnVuY3Rpb24gbmFtZXMgb2YgZnVuY3Rp
b25zIHRoYXQgYXJlIG9ubHkgdXNlZCBpbiB0ZXN0cy4KKworICAgICAgICBUaGUgcmVzdCBvZiB0
aGlzIHBhdGNoIGp1c3QgbW92ZXMgY29kZSBmcm9tIG9uZSBsb2NhdGlvbiB0byBhbm90aGVyLgor
CisgICAgICAgIEkgc3RpbGwgbmVlZCB0byBpbXBsZW1lbnQgbWlncmF0aW5nIGRhdGEgZnJvbSB0
aGUgb2xkIERCIHRvIHRoZSBuZXcgREIsIGRlYnVnIG1lc3NhZ2UgYnJvYWRjYXN0aW5nLCBhbmQg
dGVhcmRvd24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhwZWN0
ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpvcGVuSVRQRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bmVlZHNVcGRhdGVkU2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6
aW5zZXJ0RGlzdGluY3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVtYSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkZXN0cm95U3RhdGVt
ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpleHBlY3RlZFVu
YXR0cmlidXRlZENvbHVtbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpleHBlY3RlZEF0
dHJpYnV0ZWRDb2x1bW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50U2NoZW1hKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVuYW1lQ29sdW1uc0lmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNjb3BlZFN0YXRlbWVudCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZVVuYXR0cmlidXRlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjphdHRyaWJ1dGlvblRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6ZWFybGllc3RUaW1lc1RvU2VuZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrUmVwb3J0
QXNTZW50VG9Tb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmJlZ2luVHJhbnNh
Y3Rpb25JZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hhcmVkU3RhdGlzdGljc1F1ZXVlKToKKyAgICAg
ICAgKFdlYktpdDo6cGNtU3RvcmVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6c2hhcmVkU3RhdGlzdGljc1F1ZXVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbnNlcnRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZvclJlZ2lzdHJhYmxlRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJTZW50QXR0
cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBp
cmVkRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpE
YXRhYmFzZVV0aWxpdGllczo6RGF0YWJhc2VVdGlsaXRpZXMpOgorICAgICAgICAoV2ViS2l0OjpE
YXRhYmFzZVV0aWxpdGllczo6c2NvcGVkU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6RGF0YWJhc2VVdGlsaXRpZXM6OmJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0
ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpQQ006OkRhdGFiYXNlOjp+RGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFi
YXNlOjpjcmVhdGVTY2hlbWEpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjppbnNl
cnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZv
clRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpmaW5kUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjphdHRyaWJ1
dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UpOgorICAgICAgICAo
V2ViS2l0OjpQQ006OkRhdGFiYXNlOjpyZW1vdmVVbmF0dHJpYnV0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkRhdGFiYXNlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRvU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YXR0cmlidXRpb25U
b1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Om1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmNsZWFyU2VudEF0dHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2Vu
dFRvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjptYXJrUmVw
b3J0QXNTZW50VG9Tb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjplYXJs
aWVzdFRpbWVzVG9TZW5kKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6ZG9tYWlu
SUQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpnZXREb21haW5TdHJpbmdGcm9t
RG9tYWluSUQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjplbnN1cmVEb21haW5J
RCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OlN0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6cG9zdFRhc2spOgorICAgICAgICAoV2ViS2l0OjpQ
Q006OlN0b3JlOjpwb3N0VGFza1JlcGx5KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6
aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0
b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YXR0cmlidXRlUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
UENNOjpTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGly
ZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6Y2xlYXJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJL
aXQ6OlBDTTo6U3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24pOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmUuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZCk6CisgICAgICAgIChXZWJL
aXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRv
a2VuKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjph
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmNsZWFyU2VudEF0dHJpYnV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMpOgorICAg
ICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyKToKKyAg
ICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckZvclJl
Z2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjpjbGVhckV4cGlyZWQpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVk
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlcjo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVzb2x2ZWROYW1lKToKKyAgICAgICAgKiBT
aGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5Ol0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3Nh
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wOC0yNSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBWaXN1YWwgTG9vayBV
cCBhbmltYXRlcyBmcm9tIHRoZSB3cm9uZyByZWN0IHdoZW4gdGhlIHdlYiB2aWV3IGlzIHNjYWxl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKaW5kZXggOTVkOGE5NjZmZmRkM2U0NDNmZTJiNWQ2ZDY1NGY0ZmEx
ZTEwZjg2ZS4uYjRmMTk4M2IyMThlYzU0MThmMjBjZjkyY2UwNjMwOWJmZTE5ZGMyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CkBAIC0yMyw2ICsyMyw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0Rvd25sb2FkcyIKICAgICAi
JHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJIgogICAgICIke1dFQktJVF9ESVJ9
L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQiIKKyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FjaGUiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCBiYmU4ZDJkYjNjNzVkOWNiMmQ2ODdiMjViOWFlYmUwMGMyMGM5ZmIzLi5iZDM0ODdi
OTFmMWY0ZmMzMWI3NjZmNzEwOTE3MTY5YWI5MzJhYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTMyLDcgKzMyLDYg
QEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNr
QWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgpAQCAtODgs
MTAgKzg4LDYgQEAgY29uc3RleHByIGF1dG8gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc1F1
ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIGludG8gU3ViZnIKIGNvbnN0ZXhwciBhdXRvIHRvcEZy
YW1lTGlua0RlY29yYXRpb25zRnJvbVF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gVG9w
RnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tICh0b0RvbWFpbklELCBsYXN0VXBkYXRlZCwgZnJvbURv
bWFpbklEKSBTRUxFQ1QgPywgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUg
cmVnaXN0cmFibGVEb21haW4gaW4gKCAiX3M7CiBjb25zdGV4cHIgYXV0byBzdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBTdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIChzdWJyZXNvdXJjZURvbWFpbklELCBsYXN0VXBkYXRl
ZCwgdG9wRnJhbWVEb21haW5JRCkgU0VMRUNUID8sID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWRE
b21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluIGluICggIl9zOwogY29uc3RleHByIGF1dG8g
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb1F1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElO
VE8gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyAoc3VicmVzb3VyY2VEb21haW5JRCwgbGFz
dFVwZGF0ZWQsIHRvRG9tYWluSUQpIFNFTEVDVCA/LCA/LCBkb21haW5JRCBGUk9NIE9ic2VydmVk
RG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBpbiAoICJfczsKLWNvbnN0ZXhwciBhdXRv
IGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiSU5TRVJU
IE9SIFJFUExBQ0UgSU5UTyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291
cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgotICAgICJzb3VyY2VJ
RCwgdGltZU9mQWRDbGljaywgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQpIFZBTFVFUyAoPywgPywg
PywgPywgPywgPywgPykiX3M7Ci1jb25zdGV4cHIgYXV0byBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCwgIgotICAgICJzb3VyY2VJRCwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwg
cHJpb3JpdHksIHRpbWVPZkFkQ2xpY2ssIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCB0b2tl
biwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbikgVkFM
VUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfczsKIAogLy8gRVhJU1RTIFF1
ZXJpZXMKIGNvbnN0ZXhwciBhdXRvIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1F1
ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gU3ViZnJhbWVVbmRlclRvcEZyYW1l
RG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyAiCkBAIC0xMTYsOSArMTEyLDYgQEAg
Y29uc3RleHByIGF1dG8gdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlUXVlcnkgPSAiVVBEQVRF
IE9ic2VydmVkRG9tYWlucyBTRVQgaXMKIGNvbnN0ZXhwciBhdXRvIGNsZWFyUHJldmFsZW50UmVz
b3VyY2VRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVudCA9IDAs
IGlzVmVyeVByZXZhbGVudCA9IDAgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29u
c3RleHByIGF1dG8gdXBkYXRlR3JhbmRmYXRoZXJlZFF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERv
bWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJf
czsKIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWxRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsID0gPyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7
Ci1jb25zdGV4cHIgYXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFz
RXhwaXJlZFF1ZXJ5ID0gIlVQREFURSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBTRVQgdGltZU9mQWRDbGljayA9IC0xLjAiX3M7Ci1jb25zdGV4cHIgYXV0byBtYXJrUmVwb3J0
QXNTZW50VG9Tb3VyY2VRdWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9IG51bGwgV0hFUkUgc291cmNl
U2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOwotY29u
c3RleHByIGF1dG8gbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25RdWVyeSA9ICJVUERBVEUg
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRU
b0Rlc3RpbmF0aW9uID0gbnVsbCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0
aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7CiAKIC8vIFNFTEVDVCBRdWVyaWVzCiBjb25zdGV4
cHIgYXV0byBkb21haW5JREZyb21TdHJpbmdRdWVyeSA9ICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBP
YnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwpAQCAtMTM3LDE0
ICsxMzAsNiBAQCBjb25zdGV4cHIgYXV0byBnZXRBbGxEb21haW5zUXVlcnkgPSAiU0VMRUNUIHJl
Z2lzdHJhYmxlRG9tYWluIEZST00gT2JzZXJ2ZWREb21haQogY29uc3RleHByIGF1dG8gZ2V0QWxs
U3ViU3RhdGlzdGljc1VuZGVyRG9tYWluUXVlcnkgPSAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQg
RlJPTSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9tYWluSUQg
PSA/IgogICAgICJVTklPTiBBTEwgU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBTdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Igog
ICAgICJVTklPTiBBTEwgU0VMRUNUIHRvRG9tYWluSUQgRlJPTSBTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwotY29uc3RleHByIGF1
dG8gYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNRdWVy
eSA9ICJTRUxFQ1QgKiBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9z
OwotY29uc3RleHByIGF1dG8gYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVl
cnkgPSAiU0VMRUNUICosIE1JTihlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgZWFybGllc3RU
aW1lVG9TZW5kVG9EZXN0aW5hdGlvbikgYXMgbWluVmFsICIKLSAgICAiRlJPTSBBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2Ug
SVMgTk9UIE5VTEwgQU5EIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gSVMgTk9UIE5V
TEwgIgotICAgICJVTklPTiBBTEwgU0VMRUNUICosIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNl
IGFzIG1pblZhbCBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBl
YXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIElTIE5VTEwgIgotICAgICJVTklPTiBBTEwg
U0VMRUNUICosIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gYXMgbWluVmFsIEZST00g
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvU291cmNlIElTIE5VTEwgT1JERVIgQlkgbWluVmFsIl9zOwotY29uc3RleHByIGF1dG8gZmlu
ZFVuYXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRp
b25TaXRlRG9tYWluSUQgPSA/Il9zOwotY29uc3RleHByIGF1dG8gZmluZEF0dHJpYnV0ZWRRdWVy
eSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVS
RSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8i
X3M7Ci1jb25zdGV4cHIgYXV0byBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnkgPSAiU0VMRUNUIGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9u
IEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVE
b21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKIAogLy8gRVhJ
U1RTIGZvciB0ZXN0aW5nIHF1ZXJpZXMKIGNvbnN0ZXhwciBhdXRvIGxpbmtEZWNvcmF0aW9uRXhp
c3RzUXVlcnkgPSAiU0VMRUNUIEVYSVNUUyAoU0VMRUNUICogRlJPTSBUb3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb20gV0hFUkUgdG9Eb21haW5JRCA9ID8gT1IgZnJvbURvbWFpbklEID0gPykiX3M7
CkBAIC0xNTYsMTAgKzE0MSw2IEBAIGNvbnN0ZXhwciBhdXRvIG9ic2VydmVkRG9tYWluc0V4aXN0
c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gT2JzZXJ2CiAKIC8vIERFTEVU
RSBRdWVyaWVzCiBjb25zdGV4cHIgYXV0byByZW1vdmVBbGxEYXRhUXVlcnkgPSAiREVMRVRFIEZS
T00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsKLWNvbnN0ZXhwciBhdXRv
IGNsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJERUxFVEUg
RlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRl
RG9tYWluSUQgTElLRSA/IE9SIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIExJS0UgPyJfczsKLWNv
bnN0ZXhwciBhdXRvIGNsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkg
PSAiREVMRVRFIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNv
dXJjZVNpdGVEb21haW5JRCBMSUtFID8gT1IgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgTElLRSA/
Il9zOwotY29uc3RleHByIGF1dG8gY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRR
dWVyeSA9ICJERUxFVEUgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBX
SEVSRSA/ID4gdGltZU9mQWRDbGljayJfczsKLWNvbnN0ZXhwciBhdXRvIHJlbW92ZVVuYXR0cmli
dXRlZFF1ZXJ5ID0gIkRFTEVURSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEID0gPyJfczsKIAogY29uc3RleHByIGF1dG8gY3JlYXRlT2JzZXJ2ZWREb21haW4gPSAiQ1JF
QVRFIFRBQkxFIE9ic2VydmVkRG9tYWlucyAoIgogICAgICJkb21haW5JRCBJTlRFR0VSIFBSSU1B
UlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBPTiBDT05GTElD
VCBGQUlMLCBsYXN0U2VlbiBSRUFMIE5PVCBOVUxMLCAiCkBAIC0yNDAsMTkgKzIyMSw2IEBAIGNv
bnN0ZXhwciBhdXRvIGNyZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVB
VEUgVEFCTEUgU3VicmVzb3VyY2VVCiBjb25zdGV4cHIgYXV0byBjcmVhdGVPcGVyYXRpbmdEYXRl
cyA9ICJDUkVBVEUgVEFCTEUgT3BlcmF0aW5nRGF0ZXMgKCIKICAgICAieWVhciBJTlRFR0VSIE5P
VCBOVUxMLCBtb250aCBJTlRFR0VSIE5PVCBOVUxMLCBtb250aERheSBJTlRFR0VSIE5PVCBOVUxM
KSJfczsKIAotY29uc3RleHByIGF1dG8gY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50ICgiCi0gICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBO
VUxMLCAiCi0gICAgInRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwgdG9rZW4gVEVYVCwgc2ln
bmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIEZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkg
IgotICAgICJSRUZFUkVOQ0VTIE9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENB
U0NBREUsIEZPUkVJR04gS0VZKGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VTICIK
LSAgICAiT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSkiX3M7Ci0K
LWNvbnN0ZXhwciBhdXRvIGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9
ICJDUkVBVEUgVEFCTEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICgiCi0gICAg
InNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBOVUxMLCAiCi0gICAg
ImF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgSU5URUdFUiBOT1QgTlVMTCwgcHJpb3JpdHkgSU5URUdF
UiBOT1QgTlVMTCwgdGltZU9mQWRDbGljayBSRUFMIE5PVCBOVUxMLCAiCi0gICAgImVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlIFJFQUwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJ
RCBURVhULCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIFJFQUwsICIKLSAgICAiRk9S
RUlHTiBLRVkoc291cmNlU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VTIE9ic2VydmVkRG9tYWlucyhk
b21haW5JRCkgT04gREVMRVRFIENBU0NBREUsIEZPUkVJR04gS0VZKGRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEKSBSRUZFUkVOQ0VTICIKLSAgICAiT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBE
RUxFVEUgQ0FTQ0FERSkiX3M7Ci0KIC8vIENSRUFURSBVTklRVUUgSU5ERVggUXVlcmllcy4KIGNv
bnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVE
b21haW5zID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBTdG9yYWdlQWNjZXNz
VW5kZXJUb3BGcmFtZURvbWFpbnNfZG9tYWluSURfdG9wTGV2ZWxEb21haW5JRCBvbiBTdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgKCBkb21haW5JRCwgdG9wTGV2ZWxEb21haW5JRCAp
Il9zOwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvX3NvdXJjZURvbWFpbklEX3RvRG9tYWluSUQgb24gVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyAoIHNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEICkiX3M7CkBAIC0yNjUsOCAr
MjMzLDYgQEAgY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5zID0gIkNSRUFURSBVTklRVUUKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVu
aXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVBVEUgVU5JUVVFIElO
REVYIElGIE5PVCBFWElTVFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb19zdWJyZXNvdXJj
ZURvbWFpbklEX3RvRG9tYWluSUQgb24gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyAoIHN1
YnJlc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQgKSJfczsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0
ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tID0gIkNSRUFURSBVTklR
VUUgSU5ERVggSUYgTk9UIEVYSVNUUyBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21fc3Vi
cmVzb3VyY2VEb21haW5JRF9mcm9tRG9tYWluSUQgb24gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNGcm9tICggc3VicmVzb3VyY2VEb21haW5JRCwgZnJvbURvbWFpbklEICkiX3M7CiBjb25zdGV4
cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzID0gIkNSRUFURSBVTklRVUUg
SU5ERVggSUYgTk9UIEVYSVNUUyBPcGVyYXRpbmdEYXRlc195ZWFyX21vbnRoX21vbnRoRGF5IG9u
IE9wZXJhdGluZ0RhdGVzICggeWVhciwgbW9udGgsIG1vbnRoRGF5ICkiX3M7Ci1jb25zdGV4cHIg
YXV0byBjcmVhdGVVbmlxdWVJbmRleFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
ID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQgb24gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9t
YWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEICkiX3M7Ci1jb25zdGV4cHIgYXV0byBjcmVh
dGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUg
VU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50X3NvdXJjZVNpdGVEb21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21haW5JRCBvbiBBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEICkiX3M7CiAKIC8vIEFkZCBvbmUgdG8gdGhlIGNvdW50IG9mIHRoZSBh
Ym92ZSBpbmRleCBxdWVyaWVzIHRvIGFjY291bnQgZm9yIHRoZSBPYnNlcnZlZERvbWFpbnMgdGFi
bGUsIHdoaWNoIGhhcyBhbiBpbmRleCBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgU1FMaXRlIGJl
Y2F1c2Ugb2YgaXRzIHByaW1hcnkga2V5LgogY29uc3QgaW50IGV4cGVjdGVkSW5kZXhDb3VudCA9
IDE0OwpAQCAtMjgxLDE4ICsyNDcsNiBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIE9ic2VydmVkRG9t
YWluc1RhYmxlU2NoZW1hVjFBbHRlcm5hdGUoKQogICAgIHJldHVybiAiQ1JFQVRFIFRBQkxFIFwi
T2JzZXJ2ZWREb21haW5zXCIgKGRvbWFpbklEIElOVEVHRVIgUFJJTUFSWSBLRVksIHJlZ2lzdHJh
YmxlRG9tYWluIFRFWFQgTk9UIE5VTEwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIGxhc3RTZWVu
IFJFQUwgTk9UIE5VTEwsIGhhZFVzZXJJbnRlcmFjdGlvbiBJTlRFR0VSIE5PVCBOVUxMLCBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBSRUFMIE5PVCBOVUxMLCBncmFuZGZhdGhlcmVkIElO
VEVHRVIgTk9UIE5VTEwsIGlzUHJldmFsZW50IElOVEVHRVIgTk9UIE5VTEwsIGlzVmVyeVByZXZh
bGVudCBJTlRFR0VSIE5PVCBOVUxMLCBkYXRhUmVjb3Jkc1JlbW92ZWQgSU5URUdFUiBOT1QgTlVM
TCx0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24gSU5URUdFUiBO
T1QgTlVMTCwgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSBJ
TlRFR0VSIE5PVCBOVUxMLGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwgSU5U
RUdFUiBOT1QgTlVMTCkiX3M7CiB9CiAKLXN0YXRpYyBjb25zdCBFeHBlY3RlZENvbHVtbnMmIGV4
cGVjdGVkVW5hdHRyaWJ1dGVkQ29sdW1ucygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY29s
dW1ucyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7ICJzb3VyY2VTaXRlRG9t
YWluSUQiX3MsICJkZXN0aW5hdGlvblNpdGVEb21haW5JRCJfcywgInNvdXJjZUlEIl9zLCAidGlt
ZU9mQWRDbGljayJfcywgInRva2VuIl9zLCAic2lnbmF0dXJlIl9zLCAia2V5SUQiX3MgfSk7Ci0g
ICAgcmV0dXJuIGNvbHVtbnMuZ2V0KCk7Ci19Ci0KLXN0YXRpYyBjb25zdCBFeHBlY3RlZENvbHVt
bnMmIGV4cGVjdGVkQXR0cmlidXRlZENvbHVtbnMoKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRv
IGNvbHVtbnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geyAic291cmNlU2l0
ZURvbWFpbklEIl9zLCAiZGVzdGluYXRpb25TaXRlRG9tYWluSUQiX3MsICJzb3VyY2VJRCJfcywg
ImF0dHJpYnV0aW9uVHJpZ2dlckRhdGEiX3MsICJwcmlvcml0eSJfcywgInRpbWVPZkFkQ2xpY2si
X3MsICJlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSJfcywgInRva2VuIl9zLCAic2lnbmF0dXJl
Il9zLCAia2V5SUQiX3MsICJlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIl9zIH0pOwot
ICAgIHJldHVybiBjb2x1bW5zLmdldCgpOwotfQotCiBzdGF0aWMgYm9vbCBuZWVkc05ld0NyZWF0
ZVRhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgc2NoZW1hKQogewogICAgIHJldHVybiBzY2hlbWEu
Y29udGFpbnMoIlJFRkVSRU5DRVMgVG9wTGV2ZWxEb21haW5zIik7CkBAIC0zMTksOCArMjczLDYg
QEAgc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxT
dHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYKICAgICAgICAgeyAiU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUbyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4+KGNyZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIHN0cmlwSW5kZXhRdWVyeVRv
TWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8pKSB9LAogICAgICAgICB7ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3Ms
IHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRW
YWx1ZShjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkpIH0s
CiAgICAgICAgIHsgIk9wZXJhdGluZ0RhdGVzIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlT3BlcmF0aW5nRGF0ZXMsIHN0cmlwSW5kZXhRdWVy
eVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzKSkgfSwK
LSAgICAgICAgeyAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsIHN0ZDo6
bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZh
bHVlKGNyZWF0ZVVuaXF1ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
KSB9LAotICAgICAgICB7ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsIHN0
ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRW
YWx1ZShjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkp
IH0KICAgICB9KTsKICAgICAKICAgICByZXR1cm4gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmll
czsKQEAgLTM0OSwxNyArMzAxLDEzIEBAIEhhc2hTZXQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUqPiYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvCiAKIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBTdXNwZW5k
YWJsZVdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShz
dG9yZSwgd29ya1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQotICAgICwgbV9zdG9yYWdl
RGlyZWN0b3J5UGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFn
ZURpcmVjdG9yeVBhdGgsICJvYnNlcnZhdGlvbnMuZGIiX3MpKQotICAgICwgbV90cmFuc2FjdGlv
bihtX2RhdGFiYXNlKQorICAgICwgRGF0YWJhc2VVdGlsaXRpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCAib2JzZXJ2YXRpb25zLmRi
Il9zKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAogICAgIG9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpOwog
ICAgIGVuYWJsZUZvcmVpZ25LZXlzKCk7Ci0KLSAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3
b3JrZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQg
YnkgZGlmZmVyZW50IHRocmVhZHMuCi0gICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hl
Y2tzKCk7CiAgICAgCiAgICAgaWYgKCFtX2RhdGFiYXNlLnR1cm5PbkluY3JlbWVudGFsQXV0b1Zh
Y3V1bSgpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVt
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwpAQCAtMzgzLDM0ICszMzEsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbG9zZSgpCiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW5JVFBEYXRhYmFzZSgpCiB7Ci0gICAgaWYgKCFG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpKSB7Ci0gICAgICAg
IGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBh
dGgobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6IEZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5IGRh
dGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX3N0b3JhZ2VEaXJlY3Rv
cnlQYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlID0gdHJ1ZTsK
LSAgICB9IGVsc2UKLSAgICAgICAgbV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZUZpbGUgPSBmYWxzZTsKLQotICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKG1fc3RvcmFnZURpcmVj
dG9yeVBhdGgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuIGZhaWxlZCwgZXJyb3IgbWVz
c2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZGF0YWJhc2UgcGF0aDogJSIgUFVCTElDX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVj
dG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KLSAgICAKLSAgICBhdXRvIHNldEJ1c3lUaW1lb3V0ID0gbV9kYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50KCJQUkFHTUEgYnVzeV90aW1lb3V0ID0gNTAwMCJfcyk7Ci0gICAgaWYgKCFzZXRC
dXN5VGltZW91dCB8fCBzZXRCdXN5VGltZW91dC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnNldEJ1c3lUaW1lb3V0IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTog
JSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAobV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUpIHsKLSAg
ICAgICAgaWYgKCFjcmVhdGVTY2hlbWEoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNy
ZWF0ZVNjaGVtYSBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIs
IGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9CisgICAgbV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZp
bGUgPSBvcGVuRGF0YWJhc2UoKSA9PSBDcmVhdGVkTmV3RmlsZTo6WWVzOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEoKQpAQCAtNDk1LDE2ICs0MTYsNiBAQCBU
YWJsZUFuZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3Vy
cmVudFRhYmxlQW5kSW5kZXhRdWVyaQogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oV1RGTW92ZShjcmVhdGVUYWJsZVF1ZXJ5KSwgV1RGTW92
ZShpbmRleCkpOwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpuZWVkc1VwZGF0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFNjaGVtYSgpCi17Ci0gICAgYXV0
byBjdXJyZW50U2NoZW1hID0gY3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKCJBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpLmZpcnN0OwotCi0gICAgaWYgKCFjdXJyZW50U2No
ZW1hLmlzRW1wdHkoKSAmJiBjdXJyZW50U2NoZW1hICE9IGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pc3Np
bmdVbmlxdWVJbmRpY2VzKCkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJl
cGFyZVN0YXRlbWVudCgiU0VMRUNUIENPVU5UKCopIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0
eXBlID0gJ2luZGV4JyJfcyk7CkBAIC01MzcsNyArNDQ4LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bmVlZHNVcGRhdGVkU2NoZW1hKCkKIHsKICAgICAvLyBU
aGVyZSBhcmUgMyBjYXNlcyB3aGVyZSB3ZSBleHBlY3QgcG90ZW50aWFsIHNjaGVtYSBjaGFuZ2Vz
IGR1ZSB0byB1cGdyYWRlcy4KICAgICAvLyBBbGwgb3RoZXIgdGFibGVzIHNob3VsZCBiZSB1cC10
by1kYXRlLCBzbyB3ZSBzaG91bGQgQVNTRVJUIHRoYXQgdGhleSBhcmUgY29ycmVjdC4KLSAgICBp
ZiAobWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCkgfHwgbmVlZHNVcGRhdGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTY2hlbWEoKSB8fCBtaXNzaW5nVW5pcXVlSW5kaWNlcygpKQor
ICAgIGlmIChtaXNzaW5nUmVmZXJlbmNlVG9PYnNlcnZlZERvbWFpbnMoKSB8fCBtaXNzaW5nVW5p
cXVlSW5kaWNlcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgdGFi
bGUgOiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7CkBAIC01NjIsMTIg
KzQ3Myw2IEBAIHN0YXRpYyBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gaW5zZXJ0RGlz
dGluY3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KFNRTGl0CiAgICAgaWYgKHRhYmxlID09ICJUb3BG
cmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQogICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFy
ZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFNFTEVD
VCB0b0RvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWluSUQgRlJPTSBfVG9wRnJh
bWVMaW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQsIGZyb21Eb21haW5JRCJf
cyk7CiAKLSAgICBpZiAodGFibGUgPT0gIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IikKLSAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJ
TlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFTEVDVCBzb3VyY2VTaXRl
RG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJRCwgTUFYKHRpbWVPZkFk
Q2xpY2spLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCBGUk9NIF9VbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBHUk9VUCBCWSBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9u
U2l0ZURvbWFpbklEIl9zKTsKLQotICAgIGlmICh0YWJsZSA9PSAiQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50IikKLSAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQoIklOU0VSVCBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxFQ1Qg
c291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQsIGF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCBNQVgodGltZU9mQWRDbGljayksIGVhcmxp
ZXN0VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RU
aW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBGUk9NIF9BdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgR1JPVVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCJfcyk7Ci0KICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0
cmluZygiSU5TRVJUIElOVE8gIiwgdGFibGUsICIgU0VMRUNUIERJU1RJTkNUICogRlJPTSBfIiwg
dGFibGUpKTsKIH0KIApAQCAtNjYwLDE1ICs1NjUsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUoU3RyaW5nJiYgdGFi
bAogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YWRkTWlzc2luZ0NvbHVtbnNJZk5lY2Vzc2FyeSgpCi17Ci0gICAgY29uc3QgYXV0byB1bmF0dHJp
YnV0ZWRUYWJsZU5hbWUgPSAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7
Ci0gICAgY29uc3QgYXV0byBhdHRyaWJ1dGVkVGFibGVOYW1lID0gIkF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCJfczsKLQotICAgIGFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSh1bmF0
dHJpYnV0ZWRUYWJsZU5hbWUsIGNvbHVtbnNGb3JUYWJsZSh1bmF0dHJpYnV0ZWRUYWJsZU5hbWUp
LCBleHBlY3RlZFVuYXR0cmlidXRlZENvbHVtbnMoKSk7Ci0gICAgYWRkTWlzc2luZ0NvbHVtbnNU
b1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsIGNvbHVtbnNGb3JUYWJsZShhdHRyaWJ1dGVkVGFi
bGVOYW1lKSwgZXhwZWN0ZWRBdHRyaWJ1dGVkQ29sdW1ucygpKTsKLX0KLQogdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVuYW1lQ29sdW1uSW5UYWJsZShTdHJpbmcm
JiB0YWJsZU5hbWUsIEV4aXN0aW5nQ29sdW1uTmFtZSYmIGV4aXN0aW5nQ29sdW1uTmFtZSwgRXhw
ZWN0ZWRDb2x1bW5OYW1lJiYgZXhwZWN0ZWRDb2x1bW5OYW1lKQogewogICAgIGF1dG8gc3RhdGVt
ZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBU
QUJMRSAiLCB0YWJsZU5hbWUsICIgUkVOQU1FIENPTFVNTiAiLCBleGlzdGluZ0NvbHVtbk5hbWUs
ICIgVE8gIiwgZXhwZWN0ZWRDb2x1bW5OYW1lKSk7CkBAIC02ODQsMzAgKzU4MCw2IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbmFtZUNvbHVtbkluVGFibGUo
U3RyaW5nJiYgdGFibGVOYW1lCiAgICAgfQogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1bW5zSWZOZWNlc3NhcnkoKQotewotICAgIC8vIEF0
dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBjYXNlLgotICAgIGNvbnN0IGF1dG8g
YXR0cmlidXRlZFRhYmxlTmFtZSA9ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQi
X3M7Ci0gICAgY29uc3QgYXV0byBvbGRFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4gPSAiZWFybGll
c3RUaW1lVG9TZW5kIl9zOwotICAgIGNvbnN0IGF1dG8gbmV3RWFybGllc3RUaW1lVG9TZW5kQ29s
dW1uID0gImVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIl9zOwotICAgIGNvbnN0IGF1dG8gb2xk
QXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbiA9ICJhdHRyaWJ1dGVPblNpdGVEb21haW5JRCJf
czsKLSAgICBjb25zdCBhdXRvIG5ld0F0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4gPSAiZGVz
dGluYXRpb25TaXRlRG9tYWluSUQiX3M7Ci0gICAgY29uc3QgYXV0byBmb3VuZEF0dHJpYnV0ZWRU
YWJsZUNvbHVtbnMgPSBjb2x1bW5zRm9yVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSk7Ci0KLSAg
ICBpZiAoZm91bmRBdHRyaWJ1dGVkVGFibGVDb2x1bW5zLmNvbnRhaW5zKG9sZEVhcmxpZXN0VGlt
ZVRvU2VuZENvbHVtbikpCi0gICAgICAgIHJlbmFtZUNvbHVtbkluVGFibGUoYXR0cmlidXRlZFRh
YmxlTmFtZSwgb2xkRWFybGllc3RUaW1lVG9TZW5kQ29sdW1uLCBuZXdFYXJsaWVzdFRpbWVUb1Nl
bmRDb2x1bW4pOwotCi0gICAgaWYgKGZvdW5kQXR0cmlidXRlZFRhYmxlQ29sdW1ucy5jb250YWlu
cyhvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uKSkKLSAgICAgICAgcmVuYW1lQ29sdW1u
SW5UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCBvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29s
dW1uLCBuZXdBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uKTsKLQotICAgIC8vIFVuYXR0cmli
dXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGNhc2UuCi0gICAgYXV0byB1bmF0dHJpYnV0
ZWRUYWJsZU5hbWUgPSAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci0g
ICAgYXV0byBmb3VuZFVuYXR0cmlidXRlZFRhYmxlQ29sdW1ucyA9IGNvbHVtbnNGb3JUYWJsZSh1
bmF0dHJpYnV0ZWRUYWJsZU5hbWUpOwotCi0gICAgaWYgKGZvdW5kVW5hdHRyaWJ1dGVkVGFibGVD
b2x1bW5zLmNvbnRhaW5zKG9sZEF0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4pKQotICAgICAg
ICByZW5hbWVDb2x1bW5JblRhYmxlKHVuYXR0cmlidXRlZFRhYmxlTmFtZSwgb2xkQXR0cmlidXRp
b25EZXN0aW5hdGlvbkNvbHVtbiwgbmV3QXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbik7Ci19
Ci0KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdU
YWJsZXNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgYXV0byBtaXNzaW5nVGFibGVzID0gY2hlY2tGb3JN
aXNzaW5nVGFibGVzSW5TY2hlbWEoKTsKQEAgLTc0OCw3ICs2MjAsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3Nh
cnkoKQogICAgICAgICBpZiAoc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHNj
aGVtYSBmb3IgdGhlIE9ic2VydmVkIERvbWFpbnMgdGFibGUuIik7CiAgICAgICAgICAgICBjbG9z
ZSgpOwotICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VEaXJlY3Rv
cnlQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRmls
ZVBhdGgpOwogICAgICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTc2MiwzMiArNjM0LDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpCiAg
ICAgLy8gRklYTUU6IE1pZ3JhdGUgb2xkIE9ic2VydmVkRG9tYWlucyBkYXRhIHRvIG5ldyB0YWJs
ZSBzY2hlbWEuCiAgICAgaWYgKGN1cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVT
Y2hlbWFWMSgpICYmIGN1cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFW
MUFsdGVybmF0ZSgpKSB7CiAgICAgICAgIGNsb3NlKCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV9zdG9yYWdlRmlsZVBhdGgpOwogICAgICAgICBvcGVuSVRQRGF0YWJhc2UoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFJlbmFtaW5nIGFuZCBhZGRpbmcgY29s
dW1ucyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgbWlncmF0aW5nIHRvIGF2b2lkIG1pc21hdGNoZWQg
b3IgbWlzc2luZyBjb2x1bW5zLgotICAgIHJlbmFtZUNvbHVtbnNJZk5lY2Vzc2FyeSgpOwotICAg
IGFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkoKTsKICAgICBtaWdyYXRlRGF0YVRvTmV3VGFi
bGVzSWZOZWNlc3NhcnkoKTsKIH0KIAotU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNjb3BlZFN0YXRlbWVudChzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBBU0NJSUxpdGVy
YWwgcXVlcnksIGNvbnN0IFN0cmluZyYgbG9nU3RyaW5nKSBjb25zdAotewotICAgIGlmICghc3Rh
dGVtZW50KSB7Ci0gICAgICAgIGF1dG8gc3RhdGVtZW50T3JFcnJvciA9IG1fZGF0YWJhc2UucHJl
cGFyZUhlYXBTdGF0ZW1lbnQocXVlcnkpOwotICAgICAgICBpZiAoIXN0YXRlbWVudE9yRXJyb3Ip
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjolcyBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1l
bnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBsb2dTdHJpbmcu
YXNjaWkoKS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50
QXV0b1Jlc2V0U2NvcGUgeyB9OwotICAgICAgICB9Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0YXRl
bWVudE9yRXJyb3IudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgQVNTRVJUKG1f
ZGF0YWJhc2UuaXNPcGVuKCkpOwotICAgIH0KLSAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0
b1Jlc2V0U2NvcGUgeyBzdGF0ZW1lbnQuZ2V0KCkgfTsKLX0KLQogdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW50ZXJydXB0KCkKIHsKICAgICBpZiAobV9kYXRhYmFz
ZS5pc09wZW4oKSkKQEAgLTgyMSw5ICs2NzYsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKCkKICAgICAgICAgfHwgIW1fZGF0
YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvKQogICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVV
bmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkKICAgICAgICAgfHwgIW1f
ZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5zKQotICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChj
cmVhdGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzKQotICAgICAgICB8fCAhbV9kYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRleFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KQotICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVV
bmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIHsKKyAgICAgICAg
fHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdE
YXRlcykpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVVuaXF1ZUluZGljZXMgZmFpbGVk
IHRvIGV4ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
QEAgLTg5OSwxNiArNzUyLDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y3JlYXRlU2NoZW1hKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IHRhYmxlIGluIGRhdGFiYXNlICgl
aSkgLSAlcyIsIG1fZGF0YWJhc2UubGFzdEVycm9yKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFtX2RhdGFiYXNl
LmV4ZWN1dGVDb21tYW5kKGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQogICAgIGlmICghY3JlYXRlVW5pcXVlSW5kaWNlcygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTk1NiwyMSArNzk5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZGVzdHJveVN0YXRlbWVudHMoKQogICAgIG1fdW5pcXVl
UmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOwogICAgIG1fb2JzZXJ2ZWREb21haW5z
RXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKICAgICBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQg
PSBudWxscHRyOwotICAgIG1faW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1faW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX3NldFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBt
X2NsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxs
cHRyOwotICAgIG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1l
bnQgPSBudWxscHRyOwotICAgIG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fYWxsQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2Zp
bmRVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fZmluZEF0dHJpYnV0ZWRT
dGF0ZW1lbnQgPSBudWxscHRyOwogICAgIG1fdXBkYXRlQXR0cmlidXRpb25zRWFybGllc3RUaW1l
VG9TZW5kU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX3JlbW92ZVVuYXR0cmlidXRlZFN0YXRl
bWVudCA9IG51bGxwdHI7Ci0gICAgbV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQg
PSBudWxscHRyOwotICAgIG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQg
PSBudWxscHRyOwotICAgIG1fZWFybGllc3RUaW1lc1RvU2VuZFN0YXRlbWVudCA9IG51bGxwdHI7
CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9i
c2VydmVkRG9tYWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGxvYWRTdGF0aXN0aWNz
KQpAQCAtMjI4Nyw3ICsyMTE2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRzKCkKICAgICBtX2RhdGFiYXNlLmNsZWFyQWxs
VGFibGVzKCk7CiAKICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcgIiwgZGF0YWJhc2UgcGF0aDogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRz
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HICIsIGRhdGFiYXNl
IHBhdGg6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSwgbV9zdG9yYWdlRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzE1NSw1MTMgKzI5ODQs
NiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRFeHBp
cmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdAogICAgIH0KIH0KIAotUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmJ1aWxkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBz
dGF0ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0
aW9uVHlwZSkKLXsKLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdG
cm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOwotICAgIGF1dG8gZGVzdGluYXRp
b25TaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29s
dW1uSW50KDEpKTsKLSAgICBhdXRvIHNvdXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMik7
Ci0gICAgYXV0byB0aW1lT2ZBZENsaWNrID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1
bW5Eb3VibGUoNSkgOiBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgzKTsKLSAgICBhdXRvIHRva2Vu
ID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpIDogc3RhdGVtZW50LT5j
b2x1bW5UZXh0KDQpOwotICAgIGF1dG8gc2lnbmF0dXJlID0gYXR0cmlidXRpb25UeXBlID09IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVt
ZW50LT5jb2x1bW5UZXh0KDgpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDUpOwotICAgIGF1dG8g
a2V5SUQgPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtblRleHQoOSkgOiBzdGF0ZW1l
bnQtPmNvbHVtblRleHQoNik7Ci0KLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1
dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoc291cmNlSUQp
LCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZShSZWdpc3RyYWJs
ZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHNvdXJj
ZVNpdGVEb21haW4pKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uRGVzdGluYXRpb25TaXRlKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcoZGVzdGluYXRpb25TaXRlRG9tYWluKSksIHsgfSwgeyB9
LCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZU9mQWRDbGljaykpOwotICAgIAotICAgIGlm
IChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGU6OkF0dHJpYnV0ZWQpIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0g
c3RhdGVtZW50LT5jb2x1bW5JbnQoMyk7Ci0gICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0ZW1l
bnQtPmNvbHVtbkludCg0KTsKLSAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRW
YWx1ZSA9IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDYpOwotICAgICAgICBhdXRvIGRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxMCk7
Ci0KLSAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEpCi0gICAgICAgICAg
ICBhdHRyaWJ1dGlvbi5zZXRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBy
aW9yaXR5KHByaW9yaXR5KSB9KTsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBz
b3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+
IGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kOwotICAgICAgICAKLSAgICAgICAgLy8gQSB2
YWx1ZSBvZiAwLjAgaW5kaWNhdGVzIHRoYXQgdGhlIHJlcG9ydCBoYXMgYmVlbiBzZW50IHRvIHRo
ZSByZXNwZWN0aXZlIHNpdGUuCi0gICAgICAgIGlmIChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRW
YWx1ZSA+IDAuMCkKLSAgICAgICAgICAgIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSk7Ci0KLSAg
ICAgICAgaWYgKGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCi0gICAg
ICAgICAgICBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcyhkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlKTsKLQotICAgICAgICBh
dHRyaWJ1dGlvbi5zZXRUaW1lc1RvU2VuZCh7IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCwgZGVz
dGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgfSk7Ci0gICAgfQotCi0gICAgYXR0cmlidXRpb24u
c2V0U291cmNlU2VjcmV0VG9rZW4oeyB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCB9KTsKLQotICAg
IHJldHVybiBhdHRyaWJ1dGlvbjsKLX0KLQotc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8VW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+LCBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGlu
YXRpb25TaXRlKQotewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoc291
cmNlU2l0ZS5yZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCA9IGRvbWFpbklEKGRlc3RpbmF0aW9uU2l0ZS5yZWdpc3RyYWJsZURvbWFpbik7Ci0KLSAg
ICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7
Ci0KLSAgICBhdXRvIGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29w
ZWRTdGF0ZW1lbnQobV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kVW5hdHRyaWJ1dGVk
UXVlcnksICJmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOwotICAgIGlmICghZmluZFVu
YXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIs
ICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIElUUF9S
RUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kVW5hdHRyaWJ1
dGVkUXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KLQotICAgIGF1dG8gZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5z
Y29wZWRTdGF0ZW1lbnQobV9maW5kQXR0cmlidXRlZFN0YXRlbWVudCwgZmluZEF0dHJpYnV0ZWRR
dWVyeSwgImZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7Ci0gICAgaWYgKCFmaW5kQXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBmaW5kQXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgSVRQX1JFTEVBU0Vf
TE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRBdHRyaWJ1dGVkUXVlcnks
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQot
ICAgIHN0ZDo6b3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50OwotICAgIGlmIChmaW5kVW5hdHRyaWJ1
dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgdW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RnJvbURhdGFiYXNlKGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOwotCi0g
ICAgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKLSAgICBpZiAoZmluZEF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBhdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURh
dGFiYXNlKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7Ci0KLSAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIodW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIGF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKLXsKLSAgICBhdXRvIHRyYW5zYWN0aW9uU2Nv
cGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAgIGF1dG8gc291cmNlRGF0
YSA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGF0dHJpYnV0
aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgYXV0byBhdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uRGF0YSA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKGF0dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsK
LQotICAgIGlmICghc291cmNlRGF0YS5zZWNvbmQgfHwgIWF0dHJpYnV0aW9uRGVzdGluYXRpb25E
YXRhLnNlY29uZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgc291cmNlVW5saW5rYWJs
ZVRva2VuID0gYXR0cmlidXRpb24uc291cmNlVW5saW5rYWJsZVRva2VuKCk7Ci0gICAgaWYgKGF0
dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6
QXR0cmlidXRlZCkgewotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBhdHRy
aWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKCkudmFsdWUoKS5kYXRhIDogLTE7Ci0gICAgICAgIGF1dG8gcHJpb3JpdHkg
PSBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKCkudmFsdWUoKS5wcmlvcml0eSA6IC0xOwotICAgICAgICBhdXRv
IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291
cmNlRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5zb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmQudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgOiAt
MTsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0
aW9uLnRpbWVzVG9TZW5kKCkuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPyBhdHRyaWJ1
dGlvbi50aW1lc1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kLnZhbHVlKCku
c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7Ci0KLSAgICAgICAgLy8gV2Ugc2hvdWxk
IG5ldmVyIGJlIGluc2VydGluZyBhbiBhdHRyaWJ1dGVkIHByaXZhdGUgY2xpY2sgbWVhc3VyZW1l
bnQgdmFsdWUgaW50byB0aGUgZGF0YWJhc2Ugd2l0aG91dCB2YWxpZCByZXBvcnQgdGltZXMuCi0g
ICAgICAgIEFTU0VSVChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEgJiYgZGVzdGluYXRp
b25FYXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEpOwotCi0gICAgICAgIGF1dG8gc3RhdGVtZW50ID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFF1ZXJ5KTsKLSAgICAgICAgaWYgKCFzdGF0ZW1lbnQKLSAgICAgICAgICAgIHx8
IHN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlRGF0YS5zZWNvbmQpICE9IFNRTElURV9PSwot
ICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uRGF0YS5zZWNvbmQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5i
aW5kSW50KDMsIGF0dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQpICE9IFNRTElURV9PSwotICAgICAg
ICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDQsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpICE9
IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDUsIHByaW9yaXR5
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg2LCBh
dHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg3LCBzb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVt
ZW50LT5iaW5kVGV4dCg4LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxl
VG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAg
ICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDksIHNvdXJjZVVubGlua2FibGVUb2tlbiA/
IHNvdXJjZVVubGlua2FibGVUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMIDogZW1wdHlTdHJpbmco
KSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEwLCBz
b3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0
VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1l
bnQtPmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7
Ci0gICAgICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudChpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFF1ZXJ5KTsKLSAgICBpZiAoIXN0YXRlbWVudAotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJp
bmRJbnQoMSwgKnNvdXJjZURhdGEuc2Vjb25kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3Rh
dGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9uRGF0YS5zZWNvbmQpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMywgYXR0cmlidXRpb24u
c291cmNlSUQoKS5pZCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERv
dWJsZSg0LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52
YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg1LCBz
b3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnRva2VuQmFzZTY0
VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+
YmluZFRleHQoNiwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2Vu
LT5zaWduYXR1cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg3LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3Vy
Y2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0g
ICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50
IGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpCi17Ci0gICAgYXV0byBz
Y29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9zZXRVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFN0YXRlbWVudCwgc2V0VW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRRdWVyeSwgIm1hcmtBbGxVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmciX3MpOwotCi0gICAg
aWYgKCFzY29wZWRTdGF0ZW1lbnQgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVVbmF0dHJpYnV0ZWQoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQotewotICAgIGF1dG8gc291cmNlU2l0ZURv
bWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9t
YWluKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmli
dXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotCi0gICAgaWYgKCFz
b3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQsIHJlbW92ZVVuYXR0cmlidXRlZFF1
ZXJ5LCAicmVtb3ZlVW5hdHRyaWJ1dGVkIl9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50
Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFp
bklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIs
ICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNF
X0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnJlbW92ZVVuYXR0cmlidXRlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoY29uc3QgU291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEpCi17Ci0gICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBjbGVhciBleHBp
cmVkIGNsaWNrcyBmcm9tIHRoZSBkYXRhYmFzZSBiZWZvcmUgc2NoZWR1bGluZyBhbiBhdHRyaWJ1
dGlvbi4KLSAgICBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotCi0gICAg
aWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmlzVmFsaWQoKSkgewotICAgICAgICBpZiAoVU5M
SUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5G
TyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9uLiIp
OwotICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gaW52YWxpZCBhdHRyaWJ1dGlvbi4iX3MpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgYXV0byBk
YXRhID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kYXRhOwotICAgIGF1dG8gcHJpb3JpdHkgPSBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhLnByaW9yaXR5OwotCi0gICAgaWYgKFVOTElLRUxZKGRlYnVn
TW9kZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgIkdvdCBhbiBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIg
ZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUuIiwgZGF0YSwgcHJpb3Jp
dHkpOwotICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmco
IltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gYXR0cmlidXRpb24gd2l0aCBhdHRy
aWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywg
cHJpb3JpdHksICInLiJfcykpOwotICAgIH0KLQotICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhIHNlY29uZHNVbnRpbFNlbmQgeyBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwotCi0gICAgYXV0byBhdHRyaWJ1dGlvbiA9IGZpbmRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUpOwotICAg
IGF1dG8mIHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQgPSBhdHRyaWJ1dGlvbi5maXJzdDsKLSAgICBh
dXRvJiBwcmV2aW91c2x5QXR0cmlidXRlZCA9IGF0dHJpYnV0aW9uLnNlY29uZDsKLQotICAgIGlm
IChwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKSB7Ci0gICAgICAgIC8vIEFsd2F5cyBjb252ZXJ0IHRo
ZSBwZW5kaW5nIGF0dHJpYnV0aW9uIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgdW5hdHRyaWJ1dGVk
IG1hcC4KLSAgICAgICAgcmVtb3ZlVW5hdHRyaWJ1dGVkKCpwcmV2aW91c2x5VW5hdHRyaWJ1dGVk
KTsKLSAgICAgICAgc2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQudmFs
dWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKSk7Ci0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgdmFs
aWQgc2Vjb25kc1VudGlsU2VuZCB2YWx1ZSBmb3IgYSBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkIHZh
bHVlIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uIHdpdGggYSBo
aWdoZXIgcHJpb3JpdHkuCi0gICAgICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNl
Y29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJDb252ZXJ0ZWQgYSBzdG9yZWQg
YWQgY2xpY2sgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHBy
aW9yaXR5OiAle3B1YmxpY311LiIsIGRhdGEsIHByaW9yaXR5KTsKLSAgICAgICAgICAgIGRlYnVn
QnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdIENvbnZlcnRlZCBhIHN0b3JlZCBhZCBjbGljayB3aXRoIGF0dHJpYnV0aW9uIHRy
aWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwg
IicuIl9zKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBwcmV2aW91
cyBhdHRyaWJ1dGlvbiwgb3IgdGhlIG5ldyBhdHRyaWJ1dGlvbiBoYXMgaGlnaGVyIHByaW9yaXR5
LCBpbnNlcnQvdXBkYXRlIHRoZSBkYXRhYmFzZS4KLSAgICAgICAgaWYgKCFwcmV2aW91c2x5QXR0
cmlidXRlZCB8fCBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkLnZhbHVlKCkuaGFzSGlnaGVyUHJpb3Jp
dHlUaGFuKCpwcmV2aW91c2x5QXR0cmlidXRlZCkpIHsKLSAgICAgICAgICAgIGluc2VydFByaXZh
dGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoKnByZXZpb3VzbHlVbmF0dHJpYnV0ZWQpLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7Ci0KLSAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIlJlcGxhY2VkIGEg
cHJldmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1
dGlvbiBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dSBiZWNhdXNlIGl0
IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOwotICAgICAgICAgICAgICAg
IGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRdIFJlcGxhY2VkIGEgcHJldmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sg
d2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEs
ICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInIGJlY2F1c2UgaXQgaGFkIGhpZ2hl
ciBwcmlvcml0eS4iX3MpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSBp
ZiAocHJldmlvdXNseUF0dHJpYnV0ZWQpIHsKLSAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBuZXcg
YXR0cmlidXRpb24sIHJlLWF0dHJpYnV0ZSB0aGUgb2xkIG9uZSB0byByZXNwZWN0IHRoZSBuZXcg
cHJpb3JpdHksIGJ1dCBvbmx5IGlmIHRoaXMgcmVwb3J0IGhhcwotICAgICAgICAvLyBub3QgYmVl
biBzZW50IHRvIHRoZSBzb3VyY2Ugb3IgZGVzdGluYXRpb24gc2l0ZSB5ZXQuCi0gICAgICAgIGlm
ICghcHJldmlvdXNseUF0dHJpYnV0ZWQudmFsdWUoKS5oYXNQcmV2aW91c2x5QmVlblJlcG9ydGVk
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gc2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3VzbHlBdHRy
aWJ1dGVkLnZhbHVlKCkuYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdURk1vdmUo
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSkpOwotICAgICAgICAgICAgaWYgKCFzZWNvbmRzVW50aWxT
ZW5kLmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgICAgIGluc2VydFByaXZhdGVDbGlja01lYXN1
cmVtZW50KFdURk1vdmUoKnByZXZpb3VzbHlBdHRyaWJ1dGVkKSwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOwotCi0gICAgICAgICAgICBpZiAoVU5M
SUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJSZS1jb252ZXJ0ZWQgYW4gYWQgY2xpY2sg
d2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUg
YW5kIHByaW9yaXR5OiAle3B1YmxpY311IGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4i
LCBkYXRhLCBwcmlvcml0eSk7Ci0gICAgICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxl
dmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gUmUtY29u
dmVydGVkIGFuIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gdHJpZ2dl
ciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJycg
YmVjYXVzZSBpdCBoYWQgaGlnaGVyIHByaW9yaXR5LiJfcykpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1ZhbGlkU2Vjb25k
c1VudGlsU2VuZFZhbHVlcygpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
cmV0dXJuIHNlY29uZHNVbnRpbFNlbmQ7Ci19Ci0KLVZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFsbEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCi17Ci0gICAgYXV0byBhdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fYWxsQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmciX3MpOwot
Ci0gICAgaWYgKCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7Ci0gICAgICAgIElUUF9SRUxF
QVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4geyB9Owot
ICAgIH0KLQotICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYXR0
cmlidXRpb25zOwotICAgIHdoaWxlIChhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
PT0gU1FMSVRFX1JPVykKLSAgICAgICAgYXR0cmlidXRpb25zLmFwcGVuZChidWlsZFByaXZhdGVD
bGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0
KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSk7
Ci0KLSAgICByZXR1cm4gYXR0cmlidXRpb25zOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0
aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbikKLXsKLSAgICAvLyBEZWZhdWx0IHRvIGNs
ZWFyIGFsbCBlbnRyaWVzIGlmIG5vIGRvbWFpbiBpcyBzcGVjaWZpZWQuCi0gICAgU3RyaW5nIGJp
bmRQYXJhbWV0ZXIgPSAiJSI7Ci0gICAgaWYgKGRvbWFpbikgewotICAgICAgICBhdXRvIGRvbWFp
bklEVG9NYXRjaCA9IGRvbWFpbklEKCpkb21haW4pOwotICAgICAgICBpZiAoIWRvbWFpbklEVG9N
YXRjaCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBiaW5kUGFyYW1ldGVyID0gU3Ry
aW5nOjpudW1iZXIoKmRvbWFpbklEVG9NYXRjaCk7Ci0gICAgfQotCi0gICAgYXV0byB0cmFuc2Fj
dGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7Ci0KLSAgICBhdXRvIGNs
ZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1f
Y2xlYXJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgY2xlYXJV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAiY2xlYXJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCJfcyk7Ci0KLSAgICBpZiAoIWNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50Ci0gICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5k
VGV4dCgxLCBiaW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgY2xlYXJVbmF0
dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGJpbmRQYXJhbWV0ZXIpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQs
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQot
ICAgIGF1dG8gY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3Rh
dGVtZW50KG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQs
IGNsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJjbGVhclByaXZh
dGVDbGlja01lYXN1cmVtZW50Il9zKTsKLQotICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU2NvcGVk
U3RhdGVtZW50Ci0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+Ymlu
ZFRleHQoMSwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGNsZWFyQXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgYmluZFBhcmFtZXRlcikgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgp
ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBlcnJv
ciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRXhwaXJlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KCkKLXsKLSAgICBhdXRvIGV4cGlyYXRpb25UaW1lRnJhbWUgPSBX
YWxsVGltZTo6bm93KCkgLSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6bWF4QWdl
KCk7Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9j
bGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgY2xlYXJFeHBpcmVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50Il9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNj
b3BlZFN0YXRlbWVudC0+YmluZERvdWJsZSgxLCBleHBpcmF0aW9uVGltZUZyYW1lLnNlY29uZHNT
aW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRl
bWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19F
UlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRpb25Ub1N0cmluZyhXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQqIHN0YXRlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGUgYXR0cmlidXRpb25UeXBlKQotewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFp
biA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNvbHVtbkludCgwKSk7
Ci0gICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9t
YWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMSkpOwotICAgIGF1dG8gc291cmNlSUQgPSBzdGF0
ZW1lbnQtPmNvbHVtbkludCgyKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBi
dWlsZGVyLmFwcGVuZCgiU291cmNlIHNpdGU6ICIsIHNvdXJjZVNpdGVEb21haW4sICJcbkF0dHJp
YnV0ZSBvbiBzaXRlOiAiLCBkZXN0aW5hdGlvblNpdGVEb21haW4sICJcblNvdXJjZSBJRDogIiwg
c291cmNlSUQpOwotCi0gICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgewotICAgICAgICBhdXRvIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCgzKTsKLSAgICAgICAgYXV0
byBwcmlvcml0eSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDQpOwotICAgICAgICBhdXRvIGVhcmxp
ZXN0VGltZVRvU2VuZCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDYpOwotCi0gICAgICAgIGlmIChh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiXG5BdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICIsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEs
ICJcbkF0dHJpYnV0aW9uIHByaW9yaXR5OiAiLCBwcmlvcml0eSwgIlxuQXR0cmlidXRpb24gZWFy
bGllc3QgdGltZSB0byBzZW5kOiAiKTsKLSAgICAgICAgICAgIGlmIChlYXJsaWVzdFRpbWVUb1Nl
bmQgPT0gLTEpCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIk5vdCBzZXQiKTsKLSAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8gc2Vjb25kc1VudGlsU2VuZCA9
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhlYXJsaWVzdFRpbWVUb1NlbmQpIC0gV2FsbFRpbWU6
Om5vdygpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChzZWNvbmRzVW50aWxTZW5k
ID49IDI0X2ggJiYgc2Vjb25kc1VudGlsU2VuZCA8PSA0OF9oKSA/ICJXaXRoaW4gMjQtNDggaG91
cnMiIDogIk91dHNpZGUgMjQtNDggaG91cnMiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2Vy
IGRhdGEuIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbk5vIGF0dHJp
YnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpCi17
Ci0gICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCAoU0VMRUNUIENPVU5UKCopIEZST00gVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDEsIChTRUxFQ1QgQ09VTlQoKikgRlJP
TSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDIiX3MpOwotICAgIGlm
ICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzIHx8IHByaXZhdGVDbGlja01lYXN1
cmVtZW50RGF0YUV4aXN0cy0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcgZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9Ci0KLSAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+Y29s
dW1uSW50KDApICYmICFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmNvbHVtbklu
dCgxKSkKLSAgICAgICAgcmV0dXJuICJcbk5vIHN0b3JlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50IGRhdGEuXG4iX3M7Ci0KLSAgICBhdXRvIHVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9
IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50LCBhbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0
cmluZyJfcyk7Ci0KLSAgICBpZiAoIXVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgewotICAg
ICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5n
LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0K
LSAgICB1bnNpZ25lZCB1bmF0dHJpYnV0ZWROdW1iZXIgPSAwOwotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICB3aGlsZSAodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
PT0gU1FMSVRFX1JPVykgewotICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSB1bmF0dHJpYnV0
ZWROdW1iZXIgPyAiIiA6ICJVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6
IjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4LCAiXG5XZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCAiLCArK3VuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKLSAgICAgICAgICAg
IGF0dHJpYnV0aW9uVG9TdHJpbmcodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKSk7Ci0g
ICAgfQotCi0gICAgYXV0byBhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVk
U3RhdGVtZW50KG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50
LCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgInByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9TdHJpbmciX3MpOwotCi0gICAgaWYgKCFhdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50KSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9TdHJpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZWROdW1iZXIgPSAwOwotICAgIHdo
aWxlIChhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewot
ICAgICAgICBpZiAoIWF0dHJpYnV0ZWROdW1iZXIpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCh1bmF0dHJpYnV0ZWROdW1iZXIgPyAiXG4iIDogIiIsICJBdHRyaWJ1dGVkIFByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRzOiIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5XZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCAiLCArK2F0dHJpYnV0ZWROdW1iZXIgKyB1bmF0dHJpYnV0
ZWROdW1iZXIsICdcbicsCi0gICAgICAgICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nKGF0dHJpYnV0
ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UeXBlOjpBdHRyaWJ1dGVkKSk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7Ci19Ci0KLXN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZD4sIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ+PiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRpb24pCi17Ci0gICAgYXV0
byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCku
cmVnaXN0cmFibGVEb21haW4pOwotICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBk
b21haW5JRChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7
Ci0KLSAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCk7Ci0KLSAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVu
dChtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQsIGVhcmxpZXN0VGltZXNUb1NlbmRRdWVy
eSwgImVhcmxpZXN0VGltZXNUb1NlbmQiX3MpOwotCi0gICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQK
LSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWlu
SUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwg
KmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVhcmxp
ZXN0VGltZXNUb1NlbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgfQotCi0gICAgc3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+IGVhcmxp
ZXN0VGltZVRvU2VuZFRvU291cmNlOwotICAgIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25FYXJs
aWVzdFRpbWVUb1NlbmQ+IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb247Ci0gICAgCi0g
ICAgLy8gQSB2YWx1ZSBvZiAwLjAgaW5kaWNhdGVzIHRoYXQgdGhlIHJlcG9ydCBoYXMgYmVlbiBz
ZW50IHRvIHRoZSByZXNwZWN0aXZlIHNpdGUuCi0gICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+Y29s
dW1uRG91YmxlKDApID4gMC4wKQotICAgICAgICBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9
IHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDApOwotICAgIAotICAgIGlmIChzY29wZWRT
dGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxKSA+IDAuMCkKLSAgICAgICAgZWFybGllc3RUaW1lVG9T
ZW5kVG9EZXN0aW5hdGlvbiA9IHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDEpOwotICAg
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwg
ZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbik7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZShTb3VyY2VE
b21haW5JRCBzb3VyY2VTaXRlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQgZGVzdGluYXRp
b25TaXRlRG9tYWluSUQpCi17Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29w
ZWRTdGF0ZW1lbnQobV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQsIG1hcmtSZXBv
cnRBc1NlbnRUb1NvdXJjZVF1ZXJ5LCAibWFya1JlcG9ydEFzU2VudFRvU291cmNlIl9zKTsKLQot
ICAgIGlmICghc2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+Ymlu
ZEludCgxLCBzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKFNv
dXJjZURvbWFpbklEIHNvdXJjZVNpdGVEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCBkZXN0
aW5hdGlvblNpdGVEb21haW5JRCkKLXsKLSAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMt
PnNjb3BlZFN0YXRlbWVudChtX21hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50
LCBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblF1ZXJ5LCAibWFya1JlcG9ydEFzU2VudFRv
RGVzdGluYXRpb24iX3MpOwotCi0gICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKLSAgICAgICAgfHwg
c2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsIHNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCBkZXN0aW5hdGlvblNp
dGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya1JlcG9ydEFzU2VudFRv
RGVzdGluYXRpb24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
fQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclNl
bnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0
aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCBh
dHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KQoteyAgICAKLSAgICBhdXRvIHRpbWVzVG9TZW5kID0g
ZWFybGllc3RUaW1lc1RvU2VuZChhdHRyaWJ1dGlvbik7Ci0gICAgYXV0byBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQgPSB0aW1lc1RvU2VuZC5maXJzdDsKLSAgICBhdXRvIGRlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG9TZW5kID0gdGltZXNUb1NlbmQuc2Vjb25kOwotCi0gICAgYXV0byBzb3VyY2VT
aXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFi
bGVEb21haW4pOwotICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChh
dHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0KLSAgICBp
ZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHN3aXRjaCAoYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkgewot
ICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQ6OlNvdXJjZToKLSAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpIHsKLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSgqc291cmNlU2l0ZURvbWFp
bklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOwotICAgICAgICBzb3VyY2VFYXJsaWVzdFRp
bWVUb1NlbmQgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0aW9u
OgotICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSB7Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbigqc291cmNlU2l0ZURvbWFp
bklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOwotICAgICAgICBkZXN0aW5hdGlvbkVhcmxp
ZXN0VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCBjbGVh
ciB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGRhdGFiYXNlIHVubGVzcyBpdCBoYXMgYmVlbiByZXBv
cnRlZCBib3RoIHRvIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHNpdGUuCi0gICAgaWYgKGRl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIHx8IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBt
X2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCA9ID8iX3MpOwotICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU3RhdGVt
ZW50Ci0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291
cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVk
U3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElU
RV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0
aW9uIGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZygpCi17Ci0gICAgYXV0byBleHBpcmVkVGltZVRvU2VuZCA9IFdhbGxUaW1lOjpub3co
KSAtIDFfaDsKLQotICAgIGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJlZ2luVHJhbnNhY3Rpb25J
Zk5lY2Vzc2FyeSgpOwotCi0gICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRl
bWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiVVBEQVRFIEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSA/Il9z
KTsKLSAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb25TdGF0ZW1lbnQgPSBt
X2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgU0VUIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gPSBudWxsIl9z
KTsKLQotICAgIGlmICghZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQKLSAgICAg
ICAgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZXhw
aXJlZFRpbWVUb1NlbmQuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGlmICgh
ZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudCB8fCBlYXJsaWVzdFRpbWVU
b1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAg
ICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLVNjb3BlRXhpdDxGdW5jdGlvbjx2b2lkKCk+
PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbklm
TmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAobV90cmFuc2FjdGlvbi5pblByb2dyZXNzKCkpCi0gICAg
ICAgIHJldHVybiBtYWtlU2NvcGVFeGl0KEZ1bmN0aW9uPHZvaWQoKT4geyBbXSB7IH0gfSk7Ci0K
LSAgICBtX3RyYW5zYWN0aW9uLmJlZ2luKCk7Ci0gICAgcmV0dXJuIG1ha2VTY29wZUV4aXQoRnVu
Y3Rpb248dm9pZCgpPiB7IFt0aGlzXSB7Ci0gICAgICAgIG1fdHJhbnNhY3Rpb24uY29tbWl0KCk7
Ci0gICAgfSB9KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBJVFBfUkVM
RUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmgKaW5kZXggMzUxMjk4NjgzODcxYzdlYmQzY2E3OTQ5YjA1OGI0MzgwNTFkZWIxMS4u
MGFhMTI1ZTE5NzhmZmEzMzdjZTAzZTFhMTIyNDVjYTljNWNmYmEwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTI3LDIxICsy
NywxNiBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAorI2luY2x1
ZGUgIkRhdGFiYXNlVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlU3RhdGVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVz
ZXRTY29wZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
Ci0jaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU1FMaXRlRGF0
YWJhc2U7Ci1jbGFzcyBTUUxpdGVTdGF0ZW1lbnQ7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IDogYm9vbDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNTYsOCArNTEsNiBA
QCBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8dW5zaWduZWQsIG51bWJlck9mQnVja2V0c1Bl
clN0YXRpc3RpYz4gYnVja2V0U2l6ZXMgewogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOwogY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOwogCi11c2lu
ZyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDsKLXVzaW5nIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiB1c2luZyBTb3VyY2VTaXRlID0g
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7CiB1c2luZyBBdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZTsKIHVzaW5nIEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YTsKQEAgLTY1LDE1ICs1OCwxMSBAQCB1c2luZyBFeGlzdGluZ0NvbHVtbnMgPSBWZWN0b3I8
U3RyaW5nPjsKIHVzaW5nIEV4cGVjdGVkQ29sdW1ucyA9IFZlY3RvcjxTdHJpbmc+OwogdXNpbmcg
RXhpc3RpbmdDb2x1bW5OYW1lID0gU3RyaW5nOwogdXNpbmcgRXhwZWN0ZWRDb2x1bW5OYW1lID0g
U3RyaW5nOwotdXNpbmcgU291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gZG91YmxlOwotdXNpbmcg
RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBkb3VibGU7Ci11c2luZyBTb3VyY2VEb21h
aW5JRCA9IHVuc2lnbmVkOwotdXNpbmcgRGVzdGluYXRpb25Eb21haW5JRCA9IHVuc2lnbmVkOwog
CiB0eXBlZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4gVGFibGVB
bmRJbmRleFBhaXI7CiAKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRl
c3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGlj
cyBxdWV1ZS4KLWNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGZpbmFs
IDogcHVibGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSB7CitjbGFzcyBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUsIHB1YmxpYyBEYXRhYmFzZVV0aWxpdGllcyB7CiBwdWJsaWM6CiAgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJiwgU3VzcGVuZGFibGVXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBj
b25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNlc3Npb25JRCk7CiAgICAg
flJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKCk7CkBAIC0xNDIsMTYgKzEzMSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFz
c2VkLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGlu
dGVycnVwdCgpOwogCi0gICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4KLSAgICB2b2lk
IGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBvdmVycmlk
ZTsKLSAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFz
RXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRh
PiBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpIG92ZXJyaWRlOwot
ICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYWxsQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhclByaXZh
dGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3Zl
cnJpZGU7Ci0gICAgU3RyaW5nIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblJlcG9ydEVuZHBvaW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpIG92ZXJyaWRlOwogICAg
IFZlY3RvcjxTdHJpbmc+IGNvbHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0
ZToKQEAgLTE2NCwxMSArMTQzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZE1pc3NpbmdUYWJs
ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgbWlzc2luZ1VuaXF1ZUluZGljZXMoKTsKICAgICBi
b29sIG5lZWRzVXBkYXRlZFNjaGVtYSgpOwotICAgIGJvb2wgbmVlZHNVcGRhdGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTY2hlbWEoKTsKICAgICB2b2lkIHJlbmFtZUNvbHVtbkluVGFibGUoU3Ry
aW5nJiYsIEV4aXN0aW5nQ29sdW1uTmFtZSYmLCBFeHBlY3RlZENvbHVtbk5hbWUmJik7CiAgICAg
dm9pZCBhZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUoU3RyaW5nJiYsIGNvbnN0IEV4aXN0aW5nQ29s
dW1ucyYsIGNvbnN0IEV4cGVjdGVkQ29sdW1ucyYpOwotICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVt
bnNJZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgcmVuYW1lQ29sdW1uc0lmTmVjZXNzYXJ5KCk7CiAg
ICAgdm9pZCByZW5hbWVDb2x1bW5JblRhYmxlKCk7CiAgICAgVGFibGVBbmRJbmRleFBhaXIgY3Vy
cmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTY2hlbWFJZk5lY2Vzc2FyeSgpOwpAQCAtMTc2LDcgKzE1
Miw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtaXNzaW5nUmVmZXJlbmNlVG9PYnNlcnZlZERvbWFp
bnMoKTsKICAgICB2b2lkIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpOwogICAg
IHZvaWQgZGVzdHJveVN0YXRlbWVudHMoKTsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRB
dXRvUmVzZXRTY29wZSBzY29wZWRTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4mLCBBU0NJSUxpdGVyYWwsIGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAg
ICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgU3Vi
RnJhbWVEb21haW4mKSBjb25zdDsKICAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2lnbmVkLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwpAQCAtMjAxLDEwICsxNzYsNiBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0
UGFydHkoKSBjb25zdDsKICAgICBIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBTdWJSZXNvdXJjZURv
bWFpbj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKCkgY29uc3Q7CiAKLSAgICB2b2lkIG1hcmtS
ZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKFNvdXJjZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFp
bklEKTsKLSAgICB2b2lkIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZShTb3VyY2VEb21haW5JRCwg
RGVzdGluYXRpb25Eb21haW5JRCk7Ci0gICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U291cmNl
RWFybGllc3RUaW1lVG9TZW5kPiwgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGlt
ZVRvU2VuZD4+IGVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmKTsKLQogICAgIHN0cnVjdCBEb21haW5EYXRhIHsKICAgICAgICAgdW5zaWdu
ZWQgZG9tYWluSUQ7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWlu
OwpAQCAtMjUzLDIwICsyMjQsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRGF0YWJhc2VTdG9y
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgY3JlYXRlVW5pcXVl
SW5kaWNlcygpOwotICAgIGJvb2wgY3JlYXRlU2NoZW1hKCk7CisgICAgYm9vbCBjcmVhdGVTY2hl
bWEoKSBmaW5hbDsKICAgICBTdHJpbmcgZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QoY29uc3QgSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZShjb25zdCBEb21haW5EYXRhJik7Ci0gICAgCi0g
ICAgdm9pZCByZW1vdmVVbmF0dHJpYnV0ZWQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmKTsKLSAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBidWlsZFByaXZhdGVD
bGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKLSAgICBTdHJpbmcgYXR0cmli
dXRpb25Ub1N0cmluZyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7Ci0gICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8VW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+LCBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IGZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChj
b25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSYpOwotCi0gICAgU2NvcGVFeGl0PEZ1bmN0aW9uPHZvaWQoKT4+IFdBUk5fVU5VU0VEX1JF
VFVSTiBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKIAotICAgIGNvbnN0IFN0cmluZyBt
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoOwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2UgbV9kYXRhYmFzZTsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uIG1f
dHJhbnNhY3Rpb247CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1lbnQ7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0
YXRlbWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50OwpAQCAtMzA0LDIxICsyNjUsNyBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4gbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudDsKICAgICBtdXRhYmxlIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fb2JzZXJ2ZWREb21haW5zRXhpc3Rz
U3RhdGVtZW50OwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4gbV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50OwotICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9lYXJsaWVzdFRpbWVzVG9TZW5kU3Rh
dGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
aW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pbnNlcnRBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEFzRXhwaXJlZFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4gbV9jbGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4gbV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZmluZEF0dHJpYnV0ZWRTdGF0ZW1lbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV91cGRhdGVBdHRyaWJ1
dGlvbnNFYXJsaWVzdFRpbWVUb1NlbmRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQ7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9tYXJrUmVwb3J0
QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4gbV9tYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblN0YXRlbWVudDsK
IAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIGJvb2wgbV9pc05ld1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IGE3N2UwOTgwYWVhM2Qy
NjVhMTZhMTg1MjRiNDdlZWNiY2JiM2M2OTcuLjNkN2Y3NWEwMTYwNGZlNmUxODRiZGVlMGE4M2Ey
OTZhMjhiODBjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmgKQEAgLTEwNywxNyArMTA3LDYgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4gYWxsRG9tYWlucygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgaW5zZXJ0
RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNp
Z25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFzVXNlckludGVyYWN0aW9u
LCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2
YWxlbnQpIG92ZXJyaWRlOwogCi0gICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBpcyBu
b3QgaW1wbGVtZW50ZWQgaW4gdGhlIElUUCBtZW1vcnkgc3RvcmUuCi0gICAgdm9pZCBpbnNlcnRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgb3ZlcnJpZGUgeyB9Owot
ICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBp
cmVkRm9yVGVzdGluZygpIG92ZXJyaWRlIHsgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRh
PmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJikgb3ZlcnJpZGUgeyBy
ZXR1cm4geyB9OyB9OwotICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dD4gYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGUgeyByZXR1
cm4geyB9OyB9OwotICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9w
dGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPikgb3ZlcnJpZGUgeyB9OwotICAgIHZvaWQgY2xlYXJF
eHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSBvdmVycmlkZSB7IH07Ci0gICAgU3RyaW5n
IHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKSBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfTsKLSAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblJlcG9ydEVuZHBvaW50KSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBtYXJrQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlk
ZSB7IH07Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJ
Zk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYg
b3BlcmF0aW5nRGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0RhdGVzOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMjQyMmZjODRmNTRlZTdj
ZDMwZWU0MGYxNDIwNDJkNDFlYmY1MWIzZi4uYzFlZGY1NmQzNWJiYjY3Mzg4Yjc3MzM1NDRkNGUx
MWZlYjY3NzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApA
QCAtMjAyLDE3ICsyMDIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT3BlcmF0
aW5nRGF0ZXMoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdh
bGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRv
dykgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9y
VGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0
aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCkgPSAwOwotICAgIAotICAgIC8vIFByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnQuCi0gICAgdmlydHVhbCB2b2lkIGluc2VydFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG1h
cmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3Rp
bmcoKSA9IDA7Ci0gICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBhdHRyaWJ1dGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpID0gMDsKLSAgICB2aXJ0dWFsIFZlY3Rv
cjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclByaXZhdGVDbGlj
a01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgPSAwOwot
ICAgIHZpcnR1YWwgU3RyaW5nIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblJlcG9ydEVuZHBvaW50KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpID0gMDsKIAog
cHJvdGVjdGVkOgogICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSW1wb3J0YW5jZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDRkYjgwN2E3ZDlkNzA1NDAxZWQ1OWE2
Y2VlZTJhZDdiMjQwNjc3NDAuLjQxNDRlOGZkN2YyMjY2MWFlMTlkMDdhNjk2ZWI1NDkxMjExNzgx
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CkBAIC0xNTAsMTEgKzE1MCwyNCBAQCBzdGF0aWMgUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBz
aGFyZWRTdGF0aXN0aWNzUXVldWUoKQogICAgIHJldHVybiBxdWV1ZS5nZXQoKS5jb3B5UmVmKCk7
CiB9CiAKLVdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1l
cmFsIGlzRXBoZW1lcmFsKQorCitzdGF0aWMgU3RyaW5nIHBjbVN0b3JlRGlyZWN0b3J5KGNvbnN0
IE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5KQoreworICAgIGlmIChzZXNzaW9uLnNlc3Npb25JRCgpLmlzRXBoZW1lcmFs
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4gcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeTsKK30KKworV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtT
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGNv
bnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCBTaG91
bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OklzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKQogICAgIDogbV9uZXR3b3JrU2Vzc2lv
bihtYWtlV2Vha1B0cihuZXR3b3JrU2Vzc2lvbikpCiAgICAgLCBtX3N0YXRpc3RpY3NRdWV1ZShz
aGFyZWRTdGF0aXN0aWNzUXVldWUoKSkKICAgICAsIG1fZGFpbHlUYXNrc1RpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURh
aWx5VGFza3MpCiAgICAgLCBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFsKQorICAgICwgbV9wY21T
dG9yZShzaGFyZWRTdGF0aXN0aWNzUXVldWUoKSwgcGNtU3RvcmVEaXJlY3RvcnkobmV0d29ya1Nl
c3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmFnZURpcmVjdG9yeSkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0xODYsOSArMTk5LDkgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkKICAgICBSRUxFQVNFX0FT
U0VSVCghbV9zdGF0aXN0aWNzU3RvcmUpOwogfQogCi1SZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShOZXR3b3Jr
U2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVt
ZXJhbCkKK1JlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBjb25zdCBTdHJp
bmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgU2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUobmV0d29ya1Nlc3Npb24sIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGlz
RXBoZW1lcmFsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIHNob3VsZEluY2x1
ZGVMb2NhbGhvc3QsIGlzRXBoZW1lcmFsKSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpkaWREZXN0cm95TmV0d29ya1Nlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTQ3MSwxOTEgKzE0ODQsNiBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0Zv
clRlc3RpbmcoY29uc3QgUmVnaQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGUgYXR0cmlidXRpb25UeXBlKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcG9z
dFRhc2soW3RoaXMsIGF0dHJpYnV0aW9uID0gV1RGTW92ZShhdHRyaWJ1dGlvbiksIGF0dHJpYnV0
aW9uVHlwZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+aW5zZXJ0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1dGlvbiksIGF0dHJpYnV0aW9uVHlw
ZSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpt
YXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0
aW5nKCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBo
ZW1lcmFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBvc3RUYXNrKFt0aGlzXSgpIHsKLSAg
ICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUs
IGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0
ZSYgZGVzdGluYXRpb25TaXRlLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25U
cmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgZXBoZW1lcmFsTWVhc3VyZW1lbnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwo
KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgcG9zdFRhc2soW3RoaXMsIHNvdXJjZVNpdGUgPSBzb3VyY2VTaXRlLmlzb2xh
dGVkQ29weSgpLCBkZXN0aW5hdGlvblNpdGUgPSBkZXN0aW5hdGlvblNpdGUuaXNvbGF0ZWRDb3B5
KCksIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpLCBlcGhlbWVyYWxNZWFzdXJlbWVudCA9IFdURk1vdmUoZXBoZW1lcmFsTWVhc3VyZW1lbnQp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBwb3N0
VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIEluc2VydCBlcGhlbWVyYWwgbWVhc3VyZW1lbnQgcmlnaHQgYmVmb3JlIGF0
dHJpYnV0aW9uLgotICAgICAgICBpZiAoZXBoZW1lcmFsTWVhc3VyZW1lbnQpIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGVwaGVtZXJhbE1lYXN1cmVtZW50LT5pc0VwaGVtZXJhbCgpKTsK
LSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChXVEZNb3ZlKCplcGhlbWVyYWxNZWFzdXJlbWVudCksIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
YXV0byBzZWNvbmRzID0gbV9zdGF0aXN0aWNzU3RvcmUtPmF0dHJpYnV0ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50KHNvdXJjZVNpdGUsIGRlc3RpbmF0aW9uU2l0ZSwgV1RGTW92ZShhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKSk7Ci0gICAgICAgIHBvc3RUYXNrUmVwbHkoW3NlY29uZHMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZWNvbmRzKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphbGxBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsK
LSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgYXV0byBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMgPSBtX3N0YXRpc3Rp
Y3NTdG9yZS0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgICAg
IHBvc3RUYXNrUmVwbHkoW2NvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IFdURk1vdmUoY29udmVydGVk
QXR0cmlidXRpb25zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29udmVydGVkQXR0cmlidXRpb25zKSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0Vw
aGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpc10oKSB7Ci0g
ICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3Rk
OjpudWxsb3B0KTsKLSAgICB9KTsKLX0KLSAgICAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21h
aW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKLXsKLSAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoZG9tYWluKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKLXsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHBvc3RUYXNrKFt0aGlzXSgpIHsKLSAgICAgICAgaWYgKCFt
X3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3N0YXRp
c3RpY3NTdG9yZS0+Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9TdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAg
ICBpZiAoaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigiXG5ObyBz
dG9yZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBkYXRhLlxuIl9zKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3Rh
dGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9zdGF0aXN0
aWNzU3RvcmUtPnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKTsKLSAgICAgICAgcG9z
dFRhc2tSZXBseShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlv
bihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uVG9DbGVhciwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgYXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgaWYgKGlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBvc3RUYXNr
KFt0aGlzLCBhdHRyaWJ1dGlvblRvQ2xlYXIgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhciks
IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9z
dGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9zdGF0aXN0
aWNzU3RvcmUtPmNsZWFyU2VudEF0dHJpYnV0aW9uKFdURk1vdmUoYXR0cmlidXRpb25Ub0NsZWFy
KSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAg
ICBpZiAoaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlm
IChtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5tYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsK
LQotICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICB9KTsKLX0KLQogU3RyaW5nIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQ
YXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbWFrZVN0cmluZygiSGFzIGJlZW4gZ3JhbnRlZCBzdG9yYWdlIGFjY2VzcyB1bmRlciAi
LCBmaXJzdFBhcnR5RG9tYWluLnN0cmluZygpLCAiOiAiLCBzdG9yYWdlQWNjZXNzR3JhbnRlZCA/
ICcxJyA6ICcwJywgIjsgSGFzIGJlZW4gc2VlbiB1bmRlciAiLCBmaXJzdFBhcnR5RG9tYWluLnN0
cmluZygpLCAiIGluIHRoZSBsYXN0IDI0IGhvdXJzOiAiLCBXYWxsVGltZTo6bm93KCkuc2Vjb25k
c1NpbmNlRXBvY2goKSAtIHRpbWVMYXN0VXBkYXRlZCA8IDI0X2ggPyAnMScgOiAnMCcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGIzNDhlMzE2
YjA4MTIxODYxMTIxZGI1NDc2M2QxYjk4NjkzYTViNTEuLmE0NDA0OTIyNDY4MjQwN2JjYTJjMzEz
NmNlMDc1ZDRiNGQ2YzYxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NT
dGF0dXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFUeXBlLmgiCkBAIC0xMDgsNyArMTA5LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IFN0b3JhZ2VBY2Nlc3NTY29wZSA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZTsKICAgICB1
c2luZyBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCA9IFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdl
QWNjZXNzUmVzdWx0OwogCi0gICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOworICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCk7CiAKICAgICB+V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKCk7CiAKQEAgLTIzOSwyMCArMjQwLDkgQEAgcHVibGljOgogICAgIGJv
b2wgaXNFcGhlbWVyYWwoKSBjb25zdCB7IHJldHVybiBtX2lzRXBoZW1lcmFsID09IFdlYkNvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXM7IH07CiAgICAgdm9pZCBp
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBp
c1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIC8vIFByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnQuCi0gICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7Ci0gICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7Ci0gICAgdm9pZCBhdHRy
aWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgZXBoZW1lcmFsTWVhc3VyZW1lbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmKTsKLSAgICB2
b2lkIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJik+JiYpOwot
ICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotICAgIHZvaWQgY2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJik7Ci0gICAgdm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpOwotICAgIHZvaWQgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwotICAgIHZvaWQgY2xlYXJTZW50QXR0
cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwotICAgIHZv
aWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0KKyAgICBQQ006OlN0b3JlJiBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkgeyByZXR1cm4gbV9wY21TdG9yZTt9CiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vz
c2lvbiYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsKTsKKyAgICBleHBsaWNpdCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCk7CiAKICAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0VGFza1JlcGx5KFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmKTsKQEAgLTI4Nyw2ICsyNzcsOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9oYXNTY2hlZHVsZWRQcm9jZXNzU3RhdHMgeyBmYWxzZSB9OwogCiAgICAgYm9vbCBtX2ZpcnN0
TmV0d29ya1Byb2Nlc3NDcmVhdGVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICBQQ006OlN0b3JlIG1f
cGNtU3RvcmU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmRm
OTJmMjI1NDI0YTIzMmUzZjFjNzRmMmRlNzk3NGYyM2MzMjM3YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCkBAIC0w
LDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRhdGFiYXNlVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRl
bWVudEF1dG9SZXNldFNjb3BlLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRGF0YWJhc2VVdGls
aXRpZXM6OkRhdGFiYXNlVXRpbGl0aWVzKFN0cmluZyYmIHN0b3JhZ2VGaWxlUGF0aCkKKyAgICA6
IG1fc3RvcmFnZUZpbGVQYXRoKFdURk1vdmUoc3RvcmFnZUZpbGVQYXRoKSkKKyAgICAsIG1fdHJh
bnNhY3Rpb24obV9kYXRhYmFzZSkgeyB9CisKK0RhdGFiYXNlVXRpbGl0aWVzOjp+RGF0YWJhc2VV
dGlsaXRpZXMoKSA9IGRlZmF1bHQ7CisKK1dlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNl
dFNjb3BlIERhdGFiYXNlVXRpbGl0aWVzOjpzY29wZWRTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4mIHN0YXRlbWVudCwgQVNDSUlMaXRlcmFsIHF1ZXJ5
LCBBU0NJSUxpdGVyYWwgbG9nU3RyaW5nKSBjb25zdAoreworICAgIGlmICghc3RhdGVtZW50KSB7
CisgICAgICAgIGF1dG8gc3RhdGVtZW50T3JFcnJvciA9IG1fZGF0YWJhc2UucHJlcGFyZUhlYXBT
dGF0ZW1lbnQocXVlcnkpOworICAgICAgICBpZiAoIXN0YXRlbWVudE9yRXJyb3IpIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZVV0aWxpdGllczo6JXMgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBt
ZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbG9nU3RyaW5nLmNoYXJhY3RlcnMo
KSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRv
UmVzZXRTY29wZSB7IH07CisgICAgICAgIH0KKyAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50
T3JFcnJvci52YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0cigpOworICAgICAgICBBU1NFUlQobV9kYXRh
YmFzZS5pc09wZW4oKSk7CisgICAgfQorICAgIHJldHVybiBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnRBdXRvUmVzZXRTY29wZSB7IHN0YXRlbWVudC5nZXQoKSB9OworfQorCitTY29wZUV4aXQ8RnVu
Y3Rpb248dm9pZCgpPj4gRGF0YWJhc2VVdGlsaXRpZXM6OmJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vz
c2FyeSgpCit7CisgICAgaWYgKG1fdHJhbnNhY3Rpb24uaW5Qcm9ncmVzcygpKQorICAgICAgICBy
ZXR1cm4gbWFrZVNjb3BlRXhpdChGdW5jdGlvbjx2b2lkKCk+IHsgW10geyB9IH0pOworCisgICAg
bV90cmFuc2FjdGlvbi5iZWdpbigpOworICAgIHJldHVybiBtYWtlU2NvcGVFeGl0KEZ1bmN0aW9u
PHZvaWQoKT4geyBbdGhpc10geworICAgICAgICBtX3RyYW5zYWN0aW9uLmNvbW1pdCgpOworICAg
IH0gfSk7Cit9CisKK2F1dG8gRGF0YWJhc2VVdGlsaXRpZXM6Om9wZW5EYXRhYmFzZSgpIC0+IENy
ZWF0ZWROZXdGaWxlCit7CisgICAgQ3JlYXRlZE5ld0ZpbGUgY3JlYXRlZE5ld0ZpbGUgPSBDcmVh
dGVkTmV3RmlsZTo6Tm87CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fc3RvcmFn
ZUZpbGVQYXRoKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKG1fc3RvcmFnZUZpbGVQYXRoKSkpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRh
YmFzZTo6b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6IEZhaWxlZCB0byBjcmVhdGUgZGlyZWN0
b3J5IGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX3N0b3JhZ2VG
aWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZWROZXdGaWxlOworICAgICAgICB9CisgICAgICAg
IGNyZWF0ZWROZXdGaWxlID0gQ3JlYXRlZE5ld0ZpbGU6OlllczsKKyAgICB9CisKKyAgICBpZiAo
IW1fZGF0YWJhc2Uub3BlbihtX3N0b3JhZ2VGaWxlUGF0aCkpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpvcGVuIGZh
aWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZGF0YWJhc2UgcGF0
aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCks
IG1fc3RvcmFnZUZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZWROZXdGaWxlOworICAgIH0KKyAgICAKKyAg
ICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwgZGlz
cGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVyZW50IHRocmVhZHMuCisgICAgbV9k
YXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CisKKyAgICBhdXRvIHNldEJ1c3lUaW1l
b3V0ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgYnVzeV90aW1lb3V0ID0g
NTAwMCJfcyk7CisgICAgaWYgKCFzZXRCdXN5VGltZW91dCB8fCBzZXRCdXN5VGltZW91dC0+c3Rl
cCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpzZXRCdXN5VGltZW91dCBmYWlsZWQsIGVy
cm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gY3JlYXRlZE5ld0ZpbGU7CisgICAgfQorCisgICAgaWYgKGNyZWF0ZWROZXdGaWxlID09IENy
ZWF0ZWROZXdGaWxlOjpZZXMpIHsKKyAgICAgICAgaWYgKCFjcmVhdGVTY2hlbWEoKSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAt
IERhdGFiYXNlOjpjcmVhdGVTY2hlbWEgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNf
TE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRmlsZVBhdGgudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBjcmVhdGVkTmV3RmlsZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY3JlYXRlZE5l
d0ZpbGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZDRlYTE1Zjlj
NWY0MWFlYjRjNmUzMDY4MTMwNDcyNDhkYzdkZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVE
YXRhYmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBE
YXRhYmFzZVV0aWxpdGllcyB7Citwcm90ZWN0ZWQ6CisgICAgRGF0YWJhc2VVdGlsaXRpZXMoU3Ry
aW5nJiYgc3RvcmFnZUZpbGVQYXRoKTsKKyAgICB+RGF0YWJhc2VVdGlsaXRpZXMoKTsKKworICAg
IFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHNjb3BlZFN0YXRlbWVudChz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiYsIEFTQ0lJTGl0ZXJhbCBx
dWVyeSwgQVNDSUlMaXRlcmFsIGxvZ1N0cmluZykgY29uc3Q7CisgICAgU2NvcGVFeGl0PEZ1bmN0
aW9uPHZvaWQoKT4+IFdBUk5fVU5VU0VEX1JFVFVSTiBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3Nh
cnkoKTsKKyAgICBlbnVtIGNsYXNzIENyZWF0ZWROZXdGaWxlIDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICBDcmVhdGVkTmV3RmlsZSBvcGVuRGF0YWJhc2UoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3Jl
YXRlU2NoZW1hKCkgPSAwOworCisgICAgY29uc3QgU3RyaW5nIG1fc3RvcmFnZUZpbGVQYXRoOwor
ICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKKyAgICBtdXRh
YmxlIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uIG1fdHJhbnNhY3Rpb247Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA4MmYxZTUzMDE0NGZhMGZmMmRhYjEx
ZTY0NGMwOWI3ZjY4NjFhMDAwLi41MmQzNWJjOWIzYTE2MzEzMWZlODdjOGRiMjY5ODk2ZWY5NWFh
NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NjcsOSArODY3LDkgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKICAgICBtX3JlZGlyZWN0UmVzcG9uc2UgPSBy
ZWRpcmVjdFJlc3BvbnNlOwogCi0gICAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IHByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpCisg
ICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QudXJsKCkpKQogICAgICAg
ICAgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gcmVz
dWx0LnZhbHVlKCk7CiAgICAgICAgIGVsc2UgaWYgKCFyZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgcmVzdWx0LmVycm9yKCkpOwpAQCAt
OTMwLDcgKzkzMCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgY29udGludWVXaWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RS
ZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4mJiBwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpCiB7CiAgICAgcmVkaXJlY3RSZXF1ZXN0LnNldElz
QXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMzM0ODhlNjllZmVi
ZDcxYjZkMzBiZDJiYzdjOGZjNTJhNzI4MzI3ZC4uNjA2ZWMzOTI0ZWMzOWYwY2M0OWVjNTVkNmJk
NzhiNDAzYTlkYjY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKQEAgLTgyLDYgKzgyLDcgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtT
ZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MK
ICAgICA6IG1fc2Vzc2lvbklEKHBhcmFtZXRlcnMuc2Vzc2lvbklEKQogICAgICwgbV9uZXR3b3Jr
UHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgICwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkocGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJl
Y3RvcnkpCiAgICAgLCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRp
c3RpY3MocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zaG91bGRJ
bmNsdWRlTG9jYWxob3N0ID8gU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIDogU2hvdWxkSW5j
bHVkZUxvY2FsaG9zdDo6Tm8pCiAgICAgLCBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGUocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFi
bGVEZWJ1Z01vZGUgPyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOjpZZXMg
OiBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOjpObykKQEAgLTExNyw2ICsx
MTgsOCBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogCiAgICAgICAgIGlmICghcGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnkuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
CisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIH0KIAogICAgIG1faXNT
dGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgPSBwYXJhbWV0ZXJzLnN0YWxlV2hpbGVSZXZhbGlk
YXRlRW5hYmxlZDsKQEAgLTE3OSw3ICsxODIsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZSkKICAgICBpZiAobV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhp
cywgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2Nh
bGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgp
ID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCp0aGlzLCBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yYWdlRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0
YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1l
cmFsOjpObykpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2soW10g
eyB9KTsKIApAQCAtMTk2LDcgKzE5OSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlY3JlYXRl
UmVzb3VyY2VMb2FkU3RhdGlzdGljU3RvcmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpCiAgICAg
ZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291
cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OklzRXBoZW1lcmFsOjpObykpOworICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURp
cmVjdG9yeSwgIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cywgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJ
c0VwaGVtZXJhbDo6WWVzIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6Ok5v
KSk7CiAgICAgICAgIGZvcndhcmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0dGluZ3MoKTsKICAg
ICAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICAgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5wb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2soV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMzE4LDcgKzMyMSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Np
b246OmhhbmRsZVByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvbihQcml2YXRlQ2xpY2tN
ZWFzdXJlCiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS50b1N0cmluZyhXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS50b1N0cmluZ0ZvclRl
c3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNz
aW9uOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBhNDk3MThkZWZkYTIzOTQ4NDZhZTg1
YzRjNzg1MmFkYTE1NjQxMzQ5Li5hZDI3MTAwMzM5M2VmMDQxNzJjY2MwZjhjODM1NjE3YjFkNDdm
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CkBAIC0xOTEsNiArMTkxLDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4g
bV9uZXR3b3JrUHJvY2VzczsKICAgICBXZWFrSGFzaFNldDxOZXR3b3JrRGF0YVRhc2s+IG1fZGF0
YVRhc2tTZXQ7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBTdHJp
bmcgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5n
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBSZWZQdHI8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgU2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgeyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0
YWJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0YzI1MDdiNmNkNjM4YWY5MzMzMGU1OGI4OTY4N2E4ZTg1
ZTI0ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3Bw
CkBAIC0wLDAgKzEsNjk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCIKKworI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRy
YW5zYWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwor
Y29uc3RleHByIGF1dG8gc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4
cGlyZWRRdWVyeSA9ICJVUERBVEUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
U0VUIHRpbWVPZkFkQ2xpY2sgPSAtMS4wIl9zOworY29uc3RleHByIGF1dG8gaW5zZXJ0VW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJ
TlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWlu
SUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCisgICAgInNvdXJjZUlELCB0aW1lT2ZBZENs
aWNrLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCkgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/
KSJfczsKK2NvbnN0ZXhwciBhdXRvIGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
LCAiCisgICAgInNvdXJjZUlELCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwgdGlt
ZU9mQWRDbGljaywgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUs
IGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKSBWQUxVRVMgKD8sID8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8pIl9zOworY29uc3RleHByIGF1dG8gZmluZFVuYXR0cmli
dXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gZmluZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxF
Q1QgKiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VT
aXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Citjb25z
dGV4cHIgYXV0byByZW1vdmVVbmF0dHJpYnV0ZWRRdWVyeSA9ICJERUxFVEUgRlJPTSBVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/
IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBhbGxB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJTRUxFQ1QgKiwgTUlOKGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9u
KSBhcyBtaW5WYWwgIgorICAgICJGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBXSEVSRSBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBJUyBOT1QgTlVMTCBBTkQgZWFybGll
c3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBJUyBOT1QgTlVMTCAiCisgICAgIlVOSU9OIEFMTCBT
RUxFQ1QgKiwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgYXMgbWluVmFsIEZST00gQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb24gSVMgTlVMTCAiCisgICAgIlVOSU9OIEFMTCBTRUxFQ1QgKiwgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbiBhcyBtaW5WYWwgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgSVMgTlVMTCBPUkRF
UiBCWSBtaW5WYWwiX3M7Citjb25zdGV4cHIgYXV0byBhbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Citjb25zdGV4cHIgYXV0byBjbGVhckF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIkRFTEVURSBGUk9NIEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgTElLRSA/
IE9SIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIExJS0UgPyJfczsKK2NvbnN0ZXhwciBhdXRvIGNs
ZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJERUxFVEUgRlJP
TSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9t
YWluSUQgTElLRSA/IE9SIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIExJS0UgPyJfczsKK2NvbnN0
ZXhwciBhdXRvIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiREVM
RVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgPyA+IHRp
bWVPZkFkQ2xpY2siX3M7Citjb25zdGV4cHIgYXV0byBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VR
dWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJs
aWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9IG51bGwgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0g
PyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gbWFy
a1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25RdWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0g
bnVsbCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnkgPSAi
U0VMRUNUIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNv
dXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsK
K2NvbnN0ZXhwciBhdXRvIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5ID0gIlNFTEVDVCBkb21haW5J
RCBGUk9NIFBDTU9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7
Citjb25zdGV4cHIgYXV0byBkb21haW5TdHJpbmdGcm9tRG9tYWluSURRdWVyeSA9ICJTRUxFQ1Qg
cmVnaXN0cmFibGVEb21haW4gRlJPTSBQQ01PYnNlcnZlZERvbWFpbnMgV0hFUkUgZG9tYWluSUQg
PSA/Il9zOworY29uc3RleHByIGF1dG8gY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50ICgiCisgICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBO
VUxMLCAiCisgICAgInRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwgdG9rZW4gVEVYVCwgc2ln
bmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIEZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkg
IgorICAgICJSRUZFUkVOQ0VTIFBDTU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRF
IENBU0NBREUsIEZPUkVJR04gS0VZKGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VT
ICIKKyAgICAiUENNT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSki
X3M7Citjb25zdGV4cHIgYXV0byBjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgPSAiQ1JFQVRFIFRBQkxFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgor
ICAgICJzb3VyY2VTaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRl
RG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgor
ICAgICJhdHRyaWJ1dGlvblRyaWdnZXJEYXRhIElOVEVHRVIgTk9UIE5VTEwsIHByaW9yaXR5IElO
VEVHRVIgTk9UIE5VTEwsIHRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwgIgorICAgICJlYXJs
aWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBSRUFMLCB0b2tlbiBURVhULCBzaWduYXR1cmUgVEVYVCwg
a2V5SUQgVEVYVCwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBSRUFMLCAiCisgICAg
IkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERv
bWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlv
blNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCisgICAgIlBDTU9ic2VydmVkRG9tYWlucyhkb21h
aW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVl
SW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVF
IElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRf
c291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEIG9uIFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBO
T1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9t
YWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQgb24gQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCAp
Il9zOworY29uc3RleHByIGF1dG8gY3JlYXRlUENNT2JzZXJ2ZWREb21haW4gPSAiQ1JFQVRFIFRB
QkxFIFBDTU9ic2VydmVkRG9tYWlucyAoIgorICAgICJkb21haW5JRCBJTlRFR0VSIFBSSU1BUlkg
S0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBPTiBDT05GTElDVCBG
QUlMKSJfczsKK2NvbnN0ZXhwciBhdXRvIGluc2VydE9ic2VydmVkRG9tYWluUXVlcnkgPSAiSU5T
RVJUIElOVE8gUENNT2JzZXJ2ZWREb21haW5zIChyZWdpc3RyYWJsZURvbWFpbikgVkFMVUVTICg/
KSJfczsKKworRGF0YWJhc2U6OkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9y
eSkKKyAgICA6IERhdGFiYXNlVXRpbGl0aWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAicGNtLmRiIl9zKSkKK3sKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBvcGVuRGF0YWJhc2UoKTsKK30KKworRGF0YWJhc2U6On5E
YXRhYmFzZSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cit9CisKK2Jvb2wg
RGF0YWJhc2U6OmNyZWF0ZVNjaGVtYSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlUENNT2JzZXJ2
ZWREb21haW4pKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBQQ01PYnNl
cnZlZERvbWFpbnMgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0
RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IGNyZWF0ZSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCB0YWJs
ZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAt
ICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhl
Y3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkKKyAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5p
cXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExP
R19FUlJPUigiRXJyb3IgY3JlYXRpbmcgaW5kZXhlcyIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERhdGFiYXNlOjppbnNlcnRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0
dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1
dGlvblR5cGUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRv
IHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKKworICAg
IGF1dG8gc291cmNlSUQgPSBlbnN1cmVEb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCku
cmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8gYXR0cmlidXRpb25EZXN0aW5hdGlvbklEID0g
ZW5zdXJlRG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVE
b21haW4pOworICAgIGlmICghc291cmNlSUQgfHwgIWF0dHJpYnV0aW9uRGVzdGluYXRpb25JRCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgc291cmNlVW5saW5rYWJsZVRva2VuID0gYXR0
cmlidXRpb24uc291cmNlVW5saW5rYWJsZVRva2VuKCk7CisgICAgaWYgKGF0dHJpYnV0aW9uVHlw
ZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkg
eworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBhdHRyaWJ1dGlvbi5hdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRh
KCkudmFsdWUoKS5kYXRhIDogLTE7CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBhdHRyaWJ1dGlv
bi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKCkudmFsdWUoKS5wcmlvcml0eSA6IC0xOworICAgICAgICBhdXRvIHNvdXJjZUVhcmxp
ZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RU
aW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5zb3VyY2VFYXJsaWVzdFRpbWVU
b1NlbmQudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgOiAtMTsKKyAgICAgICAg
YXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9T
ZW5kKCkuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPyBhdHRyaWJ1dGlvbi50aW1lc1Rv
U2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNl
RXBvY2goKS52YWx1ZSgpIDogLTE7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGlu
c2VydGluZyBhbiBhdHRyaWJ1dGVkIHByaXZhdGUgY2xpY2sgbWVhc3VyZW1lbnQgdmFsdWUgaW50
byB0aGUgZGF0YWJhc2Ugd2l0aG91dCB2YWxpZCByZXBvcnQgdGltZXMuCisgICAgICAgIEFTU0VS
VChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEgJiYgZGVzdGluYXRpb25FYXJsaWVzdFRp
bWVUb1NlbmQgIT0gLTEpOworCisgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50KGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1
ZXJ5KTsKKyAgICAgICAgaWYgKCFzdGF0ZW1lbnQKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+
YmluZEludCgxLCAqc291cmNlSUQpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVt
ZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9uSUQpICE9IFNRTElURV9PSwor
ICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDMsIGF0dHJpYnV0aW9uLnNvdXJjZUlE
KCkuaWQpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDQs
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3Rh
dGVtZW50LT5iaW5kSW50KDUsIHByaW9yaXR5KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8
IHN0YXRlbWVudC0+YmluZERvdWJsZSg2LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0
YXRlbWVudC0+YmluZERvdWJsZSg3LCBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpICE9IFNRTElU
RV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg4LCBzb3VyY2VVbmxpbmth
YmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlT
dHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0
KDksIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+c2lnbmF0
dXJlQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8
fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEwLCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VV
bmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRF
X09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9u
RWFybGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVu
dC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Omluc2VydFByaXZhdGVD
bGlja01lYXN1cmVtZW50IGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1
ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChhdHRyaWJ1dGlv
blR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmli
dXRlZCk7CisKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dChpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5KTsKKyAgICBp
ZiAoIXN0YXRlbWVudAorICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZUlE
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1
dGlvbkRlc3RpbmF0aW9uSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPmJp
bmRJbnQoMywgYXR0cmlidXRpb24uc291cmNlSUQoKS5pZCkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg0LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCku
c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3Rh
dGVtZW50LT5iaW5kVGV4dCg1LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmth
YmxlVG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoNiwgc291cmNlVW5saW5rYWJsZVRva2VuID8g
c291cmNlVW5saW5rYWJsZVRva2VuLT5zaWduYXR1cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg3LCBzb3VyY2VV
bmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDog
ZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgaW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3Ig
bWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lk
IERhdGFiYXNlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4
cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3NldFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50LCBzZXRVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5LCAibWFya0FsbFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZyJfcyk7
CisKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudCB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZB
VEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworc3RkOjpwYWlyPHN0ZDo6b3B0aW9u
YWw8RGF0YWJhc2U6OlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpv
cHRpb25hbDxEYXRhYmFzZTo6QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gRGF0
YWJhc2U6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0
aW5hdGlvblNpdGUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0
byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChzb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9t
YWluKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoZGVzdGlu
YXRpb25TaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5J
RCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRvIGZpbmRVbmF0dHJp
YnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9maW5kVW5hdHRy
aWJ1dGVkU3RhdGVtZW50LCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnksICJmaW5kUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQiX3MpOworICAgIGlmICghZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVu
dAorICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEs
ICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBmaW5kVW5hdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5J
RCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50
IGZpbmRVbmF0dHJpYnV0ZWRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgYXV0byBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50LCBm
aW5kQXR0cmlidXRlZFF1ZXJ5LCAiZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKyAg
ICBpZiAoIWZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IGZpbmRBdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9
IFNRTElURV9PSworICAgICAgICB8fCBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+Ymlu
ZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJh
c2U6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCBlcnJv
ciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBz
dGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiB1bmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICBpZiAoZmluZFVuYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIHVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZy
b21EYXRhYmFzZShmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKKworICAgIHN0
ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgaWYgKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFz
ZShmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOworCisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBhdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQpOworfQorCitzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBEYXRhYmFzZTo6YXR0
cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRp
b25TaXRlLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25Ucmln
Z2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpCit7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBjbGVhciBleHBpcmVkIGNsaWNr
cyBmcm9tIHRoZSBkYXRhYmFzZSBiZWZvcmUgc2NoZWR1bGluZyBhbiBhdHRyaWJ1dGlvbi4KKyAg
ICBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIGlmICghYXR0cmli
dXRpb25UcmlnZ2VyRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgIC8vIEZJ
WE1FOiBNYWtlIGEgd2F5IHRvIGJyb2FkY2FzdCBkZWJ1ZyBpbmZvLCBwcm9iYWJseSB0aHJvdWdo
IHRoZSByZXR1cm4gdmFsdWUuCisgICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVk
KCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCAiR290IGFuIGludmFsaWQgYXR0cmlidXRpb24uIik7CisgICAgICAgICAgICBkZWJ1Z0Jy
b2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdv
dCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9uLiJfcyk7CisgICAgICAgIH0KKyAgICAgICAgICovCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIC8qCisgICAgIC8vIEZJWE1F
OiBNYWtlIGEgd2F5IHRvIGJyb2FkY2FzdCBkZWJ1ZyBpbmZvLCBwcm9iYWJseSB0aHJvdWdoIHRo
ZSByZXR1cm4gdmFsdWUuCisgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsK
KyAgICAgICAgYXV0byBkYXRhID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kYXRhOworICAgICAg
ICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5wcmlvcml0eTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCBhbiBhdHRy
aWJ1dGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJp
b3JpdHk6ICV7cHVibGljfXUuIiwgZGF0YSwgcHJpb3JpdHkpOworICAgICAgICBkZWJ1Z0Jyb2Fk
Y2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50XSBHb3QgYW4gYXR0cmlidXRpb24gd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICci
X3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInLiJfcykpOworICAg
IH0KKyovCisgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1Vu
dGlsU2VuZERhdGEgc2Vjb25kc1VudGlsU2VuZCB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
IH07CisKKyAgICBhdXRvIGF0dHJpYnV0aW9uID0gZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50
KHNvdXJjZVNpdGUsIGRlc3RpbmF0aW9uU2l0ZSk7CisgICAgYXV0byYgcHJldmlvdXNseVVuYXR0
cmlidXRlZCA9IGF0dHJpYnV0aW9uLmZpcnN0OworICAgIGF1dG8mIHByZXZpb3VzbHlBdHRyaWJ1
dGVkID0gYXR0cmlidXRpb24uc2Vjb25kOworCisgICAgaWYgKHByZXZpb3VzbHlVbmF0dHJpYnV0
ZWQpIHsKKyAgICAgICAgLy8gQWx3YXlzIGNvbnZlcnQgdGhlIHBlbmRpbmcgYXR0cmlidXRpb24g
YW5kIHJlbW92ZSBpdCBmcm9tIHRoZSB1bmF0dHJpYnV0ZWQgbWFwLgorICAgICAgICByZW1vdmVV
bmF0dHJpYnV0ZWQoKnByZXZpb3VzbHlVbmF0dHJpYnV0ZWQpOworICAgICAgICBzZWNvbmRzVW50
aWxTZW5kID0gcHJldmlvdXNseVVuYXR0cmlidXRlZC52YWx1ZSgpLmF0dHJpYnV0ZUFuZEdldEVh
cmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKKworICAg
ICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSB2YWxpZCBzZWNvbmRzVW50aWxTZW5kIHZh
bHVlIGZvciBhIHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQgdmFsdWUgYmVjYXVzZSB0aGVyZSBjYW4g
YmUgbm8gcHJldmlvdXMgYXR0cmlidXRpb24gd2l0aCBhIGhpZ2hlciBwcmlvcml0eS4KKyAgICAg
ICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygp
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKy8qCisgLy8gRklYTUU6IE1ha2UgYSB3YXkgdG8g
YnJvYWRjYXN0IGRlYnVnIGluZm8sIHByb2JhYmx5IHRocm91Z2ggdGhlIHJldHVybiB2YWx1ZS4K
KyAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJDb252ZXJ0ZWQgYSBz
dG9yZWQgYWQgY2xpY2sgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUg
YW5kIHByaW9yaXR5OiAle3B1YmxpY311LiIsIGRhdGEsIHByaW9yaXR5KTsKKyAgICAgICAgICAg
IGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRdIENvbnZlcnRlZCBhIHN0b3JlZCBhZCBjbGljayB3aXRoIGF0dHJpYnV0
aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlv
cml0eSwgIicuIl9zKSk7CisgICAgICAgIH0KKyAqLworCisgICAgICAgIC8vIElmIHRoZXJlIGlz
IG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uLCBvciB0aGUgbmV3IGF0dHJpYnV0aW9uIGhhcyBoaWdo
ZXIgcHJpb3JpdHksIGluc2VydC91cGRhdGUgdGhlIGRhdGFiYXNlLgorICAgICAgICBpZiAoIXBy
ZXZpb3VzbHlBdHRyaWJ1dGVkIHx8IHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5oYXNI
aWdoZXJQcmlvcml0eVRoYW4oKnByZXZpb3VzbHlBdHRyaWJ1dGVkKSkgeworICAgICAgICAgICAg
aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgqcHJldmlvdXNseVVuYXR0cmli
dXRlZCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVk
KTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAvLyBGSVhNRTogTWFrZSBhIHdheSB0
byBicm9hZGNhc3QgZGVidWcgaW5mbywgcHJvYmFibHkgdGhyb3VnaCB0aGUgcmV0dXJuIHZhbHVl
LgorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiUmVw
bGFjZWQgYSBwcmV2aW91c2x5IGNvbnZlcnRlZCBhZCBjbGljayB3aXRoIGEgbmV3IG9uZSB3aXRo
IGF0dHJpYnV0aW9uIGRhdGE6ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAle3B1YmxpY311IGJl
Y2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iLCBkYXRhLCBwcmlvcml0eSk7CisgICAgICAg
ICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudF0gUmVwbGFjZWQgYSBwcmV2aW91c2x5IGNvbnZlcnRlZCBh
ZCBjbGljayB3aXRoIGEgbmV3IG9uZSB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJf
cywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicgYmVjYXVzZSBpdCBo
YWQgaGlnaGVyIHByaW9yaXR5LiJfcykpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICov
CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHByZXZpb3VzbHlBdHRyaWJ1dGVkKSB7CisgICAg
ICAgIC8vIElmIHdlIGhhdmUgbm8gbmV3IGF0dHJpYnV0aW9uLCByZS1hdHRyaWJ1dGUgdGhlIG9s
ZCBvbmUgdG8gcmVzcGVjdCB0aGUgbmV3IHByaW9yaXR5LCBidXQgb25seSBpZiB0aGlzIHJlcG9y
dCBoYXMKKyAgICAgICAgLy8gbm90IGJlZW4gc2VudCB0byB0aGUgc291cmNlIG9yIGRlc3RpbmF0
aW9uIHNpdGUgeWV0LgorICAgICAgICBpZiAoIXByZXZpb3VzbHlBdHRyaWJ1dGVkLnZhbHVlKCku
aGFzUHJldmlvdXNseUJlZW5SZXBvcnRlZCgpKSB7CisgICAgICAgICAgICBhdXRvIHNlY29uZHNV
bnRpbFNlbmQgPSBwcmV2aW91c2x5QXR0cmlidXRlZC52YWx1ZSgpLmF0dHJpYnV0ZUFuZEdldEVh
cmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKKyAgICAg
ICAgICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1
ZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAg
ICBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKCpwcmV2aW91c2x5QXR0cmli
dXRlZCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVk
KTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAvLyBGSVhNRTogTWFrZSBhIHdheSB0
byBicm9hZGNhc3QgZGVidWcgaW5mbywgcHJvYmFibHkgdGhyb3VnaCB0aGUgcmV0dXJuIHZhbHVl
LgorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiUmUt
Y29udmVydGVkIGFuIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gdHJp
Z2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dSBiZWNhdXNlIGl0
IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOworICAgICAgICAgICAgICAg
IGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRdIFJlLWNvbnZlcnRlZCBhbiBhZCBjbGljayB3aXRoIGEgbmV3IG9uZSB3
aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5
OiAnIl9zLCBwcmlvcml0eSwgIicnIGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iX3Mp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAqLworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHNlY29uZHNVbnRp
bFNlbmQ7Cit9CisKK1dlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IERhdGFiYXNlOjpi
dWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCogc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZSBhdHRyaWJ1dGlvblR5cGUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0
YXRlbWVudC0+Y29sdW1uSW50KDApKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9
IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNvbHVtbkludCgxKSk7Cisg
ICAgYXV0byBzb3VyY2VJRCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDIpOworICAgIGF1dG8gdGlt
ZU9mQWRDbGljayA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDUpIDog
c3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMyk7CisgICAgYXV0byB0b2tlbiA9IGF0dHJpYnV0aW9u
VHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRl
ZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg0KTsK
KyAgICBhdXRvIHNpZ25hdHVyZSA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4
dCg4KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg1KTsKKyAgICBhdXRvIGtleUlEID0gYXR0cmli
dXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRy
aWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDkpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDYpOworCisgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24o
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEKHNvdXJjZUlEKSwgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUoUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzb3VyY2VTaXRl
RG9tYWluKSksIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uU2l0ZShSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lz
dHJhYmxlRG9tYWluU3RyaW5nKGRlc3RpbmF0aW9uU2l0ZURvbWFpbikpLCB7IH0sIHsgfSwgV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWVPZkFkQ2xpY2spKTsKKyAgICAKKyAgICBpZiAoYXR0
cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpB
dHRyaWJ1dGVkKSB7CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0YXRl
bWVudC0+Y29sdW1uSW50KDMpOworICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LT5j
b2x1bW5JbnQoNCk7CisgICAgICAgIGF1dG8gc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUg
PSBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSg2KTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVh
cmxpZXN0VGltZVRvU2VuZFZhbHVlID0gc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMTApOworCisg
ICAgICAgIGlmIChhdHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKQorICAgICAgICAgICAgYXR0
cmlidXRpb24uc2V0QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSksIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0
eShwcmlvcml0eSkgfSk7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gc291cmNl
RWFybGllc3RUaW1lVG9TZW5kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKKyAgICAgICAgCisgICAgICAgIC8vIEEgdmFsdWUg
b2YgMC4wIGluZGljYXRlcyB0aGF0IHRoZSByZXBvcnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVz
cGVjdGl2ZSBzaXRlLgorICAgICAgICBpZiAoc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUg
PiAwLjApCisgICAgICAgICAgICBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUpOworCisgICAgICAg
IGlmIChkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID4gMC4wKQorICAgICAgICAg
ICAgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHMoZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSk7CisKKyAgICAgICAgYXR0cmli
dXRpb24uc2V0VGltZXNUb1NlbmQoeyBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQsIGRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kIH0pOworICAgIH0KKworICAgIGF0dHJpYnV0aW9uLnNldFNv
dXJjZVNlY3JldFRva2VuKHsgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQgfSk7CisKKyAgICByZXR1
cm4gYXR0cmlidXRpb247Cit9CisKK3ZvaWQgRGF0YWJhc2U6OnJlbW92ZVVuYXR0cmlidXRlZChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRpb24pCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChh
dHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8gZGVz
dGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNp
dGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwg
IWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNj
b3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3JlbW92ZVVuYXR0cmlidXRl
ZFN0YXRlbWVudCwgcmVtb3ZlVW5hdHRyaWJ1dGVkUXVlcnksICJyZW1vdmVVbmF0dHJpYnV0ZWQi
X3MpOworCisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAg
ICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsICIlcCAtIERhdGFiYXNlOjpyZW1vdmVVbmF0dHJpYnV0ZWQsIGVycm9yIG1lc3NhZ2U6
ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworVmVjdG9yPFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBEYXRhYmFzZTo6YWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBhdXRvIGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1l
bnQobV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGFsbEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAiYWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50Il9zKTsKKworICAgIGlmICghYXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIiVwIC0gRGF0YWJhc2U6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
ZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorCisgICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50PiBhdHRyaWJ1dGlvbnM7CisgICAgd2hpbGUgKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQorICAgICAgICBhdHRyaWJ1dGlvbnMuYXBwZW5kKGJ1
aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0
dHJpYnV0ZWQpKTsKKworICAgIHJldHVybiBhdHRyaWJ1dGlvbnM7Cit9CisKK1N0cmluZyBEYXRh
YmFzZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYXRhRXhpc3RzID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgKFNF
TEVDVCBDT1VOVCgqKSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSBh
cyBjbnQxLCAoU0VMRUNUIENPVU5UKCopIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KSBhcyBjbnQyIl9zKTsKKyAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0
YUV4aXN0cyB8fCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPnN0ZXAoKSAhPSBT
UUxJVEVfUk9XKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0Zv
clRlc3RpbmcgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBpZiAoIXByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YUV4aXN0cy0+Y29sdW1uSW50KDApICYmICFwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhdGFFeGlzdHMtPmNvbHVtbkludCgxKSkKKyAgICAgICAgcmV0dXJuICJcbk5vIHN0
b3JlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGRhdGEuXG4iX3M7CisKKyAgICBhdXRvIHVu
YXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50LCBh
bGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5LCAi
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmciX3MpOworCisgICAgaWYg
KCF1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdW5zaWduZWQgdW5hdHRyaWJ1dGVkTnVt
YmVyID0gMDsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgd2hpbGUgKHVuYXR0cmli
dXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgY29u
c3QgY2hhciogcHJlZml4ID0gdW5hdHRyaWJ1dGVkTnVtYmVyID8gIiIgOiAiVW5hdHRyaWJ1dGVk
IFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOiI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBy
ZWZpeCwgIlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKyt1bmF0dHJpYnV0
ZWROdW1iZXIsICdcbicsCisgICAgICAgICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nKHVuYXR0cmli
dXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGU6OlVuYXR0cmlidXRlZCkpOworICAgIH0KKworICAgIGF1dG8gYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50UXVlcnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGlu
ZyJfcyk7CisKKyAgICBpZiAoIWF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNl
Ojpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZywgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdW5zaWduZWQg
YXR0cmlidXRlZE51bWJlciA9IDA7CisgICAgd2hpbGUgKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIGlmICghYXR0cmlidXRlZE51bWJl
cikKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVuYXR0cmlidXRlZE51bWJlciA/ICJcbiIg
OiAiIiwgIkF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6Iik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJcbldlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50ICIsICsr
YXR0cmlidXRlZE51bWJlciArIHVuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKKyAgICAgICAgICAg
IGF0dHJpYnV0aW9uVG9TdHJpbmcoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpKTsKKyAgICB9
CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIERhdGFiYXNlOjph
dHRyaWJ1dGlvblRvU3RyaW5nKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCit7
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9t
YWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDAp
KTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21E
b21haW5JRChzdGF0ZW1lbnQtPmNvbHVtbkludCgxKSk7CisgICAgYXV0byBzb3VyY2VJRCA9IHN0
YXRlbWVudC0+Y29sdW1uSW50KDIpOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKCJTb3VyY2Ugc2l0ZTogIiwgc291cmNlU2l0ZURvbWFpbiwgIlxuQXR0
cmlidXRlIG9uIHNpdGU6ICIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiwgIlxuU291cmNlIElEOiAi
LCBzb3VyY2VJRCk7CisKKyAgICBpZiAoYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSB7CisgICAgICAgIGF1dG8gYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDMpOworICAgICAgICBh
dXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNCk7CisgICAgICAgIGF1dG8gZWFy
bGllc3RUaW1lVG9TZW5kID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNik7CisKKyAgICAgICAgaWYg
KGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJcbkF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogIiwgYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSwgIlxuQXR0cmlidXRpb24gcHJpb3JpdHk6ICIsIHByaW9yaXR5LCAiXG5BdHRyaWJ1dGlvbiBl
YXJsaWVzdCB0aW1lIHRvIHNlbmQ6ICIpOworICAgICAgICAgICAgaWYgKGVhcmxpZXN0VGltZVRv
U2VuZCA9PSAtMSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiTm90IHNldCIpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5k
ID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGVhcmxpZXN0VGltZVRvU2VuZCkgLSBXYWxsVGlt
ZTo6bm93KCk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoKHNlY29uZHNVbnRpbFNl
bmQgPj0gMjRfaCAmJiBzZWNvbmRzVW50aWxTZW5kIDw9IDQ4X2gpID8gIldpdGhpbiAyNC00OCBo
b3VycyIgOiAiT3V0c2lkZSAyNC00OCBob3VycyIpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbk5vIGF0dHJpYnV0aW9uIHRyaWdn
ZXIgZGF0YS4iKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuTm8gYXR0
cmlidXRpb24gdHJpZ2dlciBkYXRhLiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworCisg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwordm9pZCBEYXRhYmFzZTo6bWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIGV4cGlyZWRUaW1lVG9T
ZW5kID0gV2FsbFRpbWU6Om5vdygpIC0gMV9oOworCisgICAgYXV0byB0cmFuc2FjdGlvblNjb3Bl
ID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CisKKyAgICBhdXRvIGVhcmxpZXN0VGlt
ZVRvU2VuZFRvU291cmNlU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJV
UERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVU
b1NlbmRUb1NvdXJjZSA9ID8iX3MpOworICAgIGF1dG8gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0
aW5hdGlvblN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiVVBEQVRFIEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9E
ZXN0aW5hdGlvbiA9IG51bGwiX3MpOworCisgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmRUb1Nv
dXJjZVN0YXRlbWVudAorICAgICAgICB8fCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRl
bWVudC0+YmluZEludCgxLCBleHBpcmVkVGltZVRvU2VuZC5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJj
ZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6bWFya0F0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAo
IWVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb25TdGF0ZW1lbnQgfHwgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9Cit9CisKK3ZvaWQgRGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
c3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluKQoreworICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIC8vIERlZmF1bHQgdG8gY2xlYXIgYWxsIGVudHJpZXMg
aWYgbm8gZG9tYWluIGlzIHNwZWNpZmllZC4KKyAgICBTdHJpbmcgYmluZFBhcmFtZXRlciA9ICIl
IjsKKyAgICBpZiAoZG9tYWluKSB7CisgICAgICAgIGF1dG8gZG9tYWluSURUb01hdGNoID0gZG9t
YWluSUQoKmRvbWFpbik7CisgICAgICAgIGlmICghZG9tYWluSURUb01hdGNoKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGJpbmRQYXJhbWV0ZXIgPSBTdHJpbmc6Om51bWJlcigqZG9t
YWluSURUb01hdGNoKTsKKyAgICB9CisKKyAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdp
blRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8gY2xlYXJVbmF0dHJpYnV0ZWRT
Y29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jbGVhclVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBjbGVhclVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50UXVlcnksICJjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Il9z
KTsKKworICAgIGlmICghY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQKKyAgICAgICAg
fHwgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJpbmRQYXJh
bWV0ZXIpICE9IFNRTElURV9PSworICAgICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudC0+YmluZFRleHQoMiwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
ICIlcCAtIERhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50IGNsZWFyVW5hdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBhdXRvIGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RhdGVtZW50LCBjbGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFF1ZXJ5LCAiY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7CisKKyAgICBpZiAo
IWNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBjbGVhckF0dHJpYnV0
ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9P
SworICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIs
IGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSworICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRT
Y29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisK
K3ZvaWQgRGF0YWJhc2U6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIGV4cGlyYXRpb25UaW1l
RnJhbWUgPSBXYWxsVGltZTo6bm93KCkgLSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6bWF4QWdlKCk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgY2xl
YXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyRXhwaXJlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50Il9zKTsKKworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZERvdWJsZSgxLCBleHBpcmF0aW9uVGltZUZyYW1l
LnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNj
b3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Y2xlYXJF
eHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBEYXRhYmFzZTo6Y2xlYXJTZW50
QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlv
biwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgYXR0
cmlidXRpb25SZXBvcnRFbmRwb2ludCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICBhdXRvIHRpbWVzVG9TZW5kID0gZWFybGllc3RUaW1lc1RvU2VuZChhdHRyaWJ1dGlv
bik7CisgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSB0aW1lc1RvU2VuZC5maXJz
dDsKKyAgICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gdGltZXNUb1NlbmQu
c2Vjb25kOworCisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1
dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8gZGVzdGluYXRp
b25TaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5y
ZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVz
dGluYXRpb25TaXRlRG9tYWluSUQpCisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAoYXR0
cmlidXRpb25SZXBvcnRFbmRwb2ludCkgeworICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OlNvdXJjZToKKyAgICAgICAgaWYgKCFzb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmQpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1hcmtSZXBvcnRBc1Nl
bnRUb1NvdXJjZSgqc291cmNlU2l0ZURvbWFpbklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQp
OworICAgICAgICBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0aW9uOgorICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG9TZW5kKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtYXJrUmVwb3J0QXNTZW50VG9E
ZXN0aW5hdGlvbigqc291cmNlU2l0ZURvbWFpbklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQp
OworICAgICAgICBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisKKyAgICAvLyBEb24ndCBjbGVhciB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGRhdGFi
YXNlIHVubGVzcyBpdCBoYXMgYmVlbiByZXBvcnRlZCBib3RoIHRvIHRoZSBzb3VyY2UgYW5kIGRl
c3RpbmF0aW9uIHNpdGUuCisgICAgaWYgKGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIHx8
IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBj
bGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIkRF
TEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VT
aXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3MpOworICAg
IGlmICghY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50CisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRl
ZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5h
dGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRl
ZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Y2xlYXJTZW50
QXR0cmlidXRpb24gZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBEYXRhYmFzZTo6bWFya1JlcG9ydEFz
U2VudFRvRGVzdGluYXRpb24oU291cmNlRG9tYWluSUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0
aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQoreworICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2Nv
cGVkU3RhdGVtZW50KG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQsIG1h
cmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uUXVlcnksICJtYXJrUmVwb3J0QXNTZW50VG9EZXN0
aW5hdGlvbiJfcyk7CisKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24sIGVy
cm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERh
dGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9tYWluSUQgc291cmNlU2l0
ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQor
eworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc2NvcGVkU3RhdGVt
ZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNlU3Rh
dGVtZW50LCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VRdWVyeSwgIm1hcmtSZXBvcnRBc1NlbnRU
b1NvdXJjZSJfcyk7CisKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRvU291cmNlLCBlcnJvciBt
ZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworc3RkOjpwYWlyPHN0
ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OlNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4sIHN0ZDo6b3B0
aW9uYWw8RGF0YWJhc2U6OkRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gRGF0YWJhc2U6
OmVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmIGF0dHJpYnV0aW9uKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0
ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
ID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21h
aW4pOworCisgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQpOworCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9lYXJsaWVzdFRpbWVzVG9TZW5kU3RhdGVtZW50LCBlYXJsaWVzdFRpbWVzVG9TZW5k
UXVlcnksICJlYXJsaWVzdFRpbWVzVG9TZW5kIl9zKTsKKworICAgIGlmICghc2NvcGVkU3RhdGVt
ZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURv
bWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50
KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNj
b3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6ZWFybGllc3RUaW1l
c1RvU2VuZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1l
VG9TZW5kVG9Tb3VyY2U7CisgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGlt
ZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbjsKKyAgICAKKyAgICAvLyBB
IHZhbHVlIG9mIDAuMCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8g
dGhlIHJlc3BlY3RpdmUgc2l0ZS4KKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3Vi
bGUoMCkgPiAwLjApCisgICAgICAgIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gc2NvcGVk
U3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMCk7CisgICAgCisgICAgaWYgKHNjb3BlZFN0YXRlbWVu
dC0+Y29sdW1uRG91YmxlKDEpID4gMC4wKQorICAgICAgICBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uID0gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMSk7CisgICAgCisgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVz
dFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKTsKK30KKworc3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6
RG9tYWluSUQ+IERhdGFiYXNlOjpkb21haW5JRChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
YXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9kb21haW5JREZy
b21TdHJpbmdTdGF0ZW1lbnQsIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5LCAiZG9tYWluSUQiX3Mp
OworICAgIGlmICghc2NvcGVkU3RhdGVtZW50IHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQo
MSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpkb21haW5JREZy
b21TdHJpbmcgZmFpbGVkLiBFcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisgICAgCisgICAgaWYg
KHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7
Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERvbWFp
bklEIGRvbWFpbklEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1
dG8gcmVzdWx0ID0gZW1wdHlTdHJpbmcoKTsKKyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVu
dCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRl
bWVudCwgZG9tYWluU3RyaW5nRnJvbURvbWFpbklEUXVlcnksICJnZXREb21haW5TdHJpbmdGcm9t
RG9tYWluSUQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFz
ZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklELiBTdGF0ZW1lbnQgZmFpbGVkIHRvIHByZXBh
cmUgb3IgYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzY29wZWRTdGF0
ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQorICAgICAgICByZXN1bHQgPSBtX2RvbWFpblN0
cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsKKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitzdGQ6Om9wdGlvbmFsPERhdGFiYXNlOjpEb21haW5JRD4gRGF0YWJh
c2U6OmVuc3VyZURvbWFpbklEKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4pCit7CisgICAgaWYgKGF1dG8gZXhpc3RpbmdJRCA9IGRvbWFpbklEKGRvbWFpbikpCisgICAg
ICAgIHJldHVybiBleGlzdGluZ0lEOworCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlz
LT5zY29wZWRTdGF0ZW1lbnQobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudCwgaW5zZXJ0
T2JzZXJ2ZWREb21haW5RdWVyeSwgImluc2VydE9ic2VydmVkRG9tYWluIl9zKTsKKyAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEs
IGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6aW5zZXJ0T2JzZXJ2
ZWREb21haW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAg
IGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6
Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIH0KKyAgICByZXR1cm4gZG9tYWluSUQoZG9tYWluKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kY2E2MGQwMDRjNDA1YTA5M2Y3NzRjNjBkMzg5MDU1M2FkYmI2MGQ4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGF0YWJhc2VVdGlsaXRpZXMu
aCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCisvLyBUaGlzIGlzIGNyZWF0ZWQsIHVzZWQsIGFu
ZCBkZXN0cm95ZWQgb24gdGhlIFN0b3JlJ3MgcXVldWUuCitjbGFzcyBEYXRhYmFzZSA6IHB1Ymxp
YyBEYXRhYmFzZVV0aWxpdGllcyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KTsKKyAgICB2
aXJ0dWFsIH5EYXRhYmFzZSgpOworICAgIAorICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+
IGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJik7CisgICAgVmVjdG9y
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pOworICAgIHZvaWQgY2xl
YXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyU2VudEF0
dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKKworICAg
IFN0cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZygpOworICAg
IHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVk
Rm9yVGVzdGluZygpOworICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsKKyAgICB1c2luZyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICB1c2luZyBEb21haW5JRCA9IHVu
c2lnbmVkOworICAgIHVzaW5nIFNvdXJjZURvbWFpbklEID0gdW5zaWduZWQ7CisgICAgdXNpbmcg
RGVzdGluYXRpb25Eb21haW5JRCA9IHVuc2lnbmVkOworICAgIHVzaW5nIFNvdXJjZUVhcmxpZXN0
VGltZVRvU2VuZCA9IGRvdWJsZTsKKyAgICB1c2luZyBEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZCA9IGRvdWJsZTsKKworICAgIGJvb2wgY3JlYXRlU2NoZW1hKCkgZmluYWw7CisgICAgc3Rk
OjpwYWlyPHN0ZDo6b3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
LCBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IGZpbmRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYpOworICAgIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGUpOworICAgIHZvaWQgcmVtb3ZlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50Jik7CisgICAgU3RyaW5nIGF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50KiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUp
OworICAgIHZvaWQgbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oU291cmNlRG9tYWluSUQs
IERlc3RpbmF0aW9uRG9tYWluSUQpOworICAgIHZvaWQgbWFya1JlcG9ydEFzU2VudFRvU291cmNl
KFNvdXJjZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEKTsKKyAgICBzdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOworICAgIHN0ZDo6b3B0aW9uYWw8RG9tYWlu
SUQ+IGVuc3VyZURvbWFpbklEKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxEb21haW5JRD4gZG9tYWluSUQoY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKTsKKyAgICBTdHJpbmcgZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERv
bWFpbklEKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1l
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9maW5k
VW5hdHRyaWJ1dGVkU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQ+IG1fZmluZEF0dHJpYnV0ZWRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1l
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4gbV9jbGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X2NsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZWFybGllc3RUaW1lc1RvU2Vu
ZFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
PiBtX21hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZVN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX21hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0
aW9uU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ+IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVt
ZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5z
ZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2ZmZmNl
NDgxOGE2YTRlMmZkZGEyYjExNTU2ZmJiYTdkOWMxNTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcApAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmgiCisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCituYW1lc3BhY2UgUENNIHsKKworU3RvcmU6OlN0b3JlKFJlZjxTdXNwZW5kYWJsZVdv
cmtRdWV1ZT4mJiB3b3JrUXVldWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCisg
ICAgOiBtX3F1ZXVlKFdURk1vdmUod29ya1F1ZXVlKSkKK3sKKyAgICBpZiAoIWRhdGFiYXNlRGly
ZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZURpcmVjdG9yeSA9IGRhdGFiYXNlRGlyZWN0b3J5
Lmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fZGF0YWJhc2UgPSBt
YWtlVW5pcXVlPERhdGFiYXNlPihXVEZNb3ZlKGRhdGFiYXNlRGlyZWN0b3J5KSk7CisgICAgICAg
IH0pOworICAgIH0KK30KKworU3RvcmU6On5TdG9yZSgpID0gZGVmYXVsdDsKKworLy8gRklYTUU6
IFdlIHNob3VsZCBwcm9iYWJseSB0YXAgaW50byBOZXR3b3JrU2Vzc2lvbjo6ZGVzdHJveVJlc291
cmNlTG9hZFN0YXRpc3RpY3MgZm9yIHRlYXJkb3duLgorLy8gRklYTUU6IExvb2sgaW50byBSTFMn
cyB0cmFuc2FjdGlvbiB0b2tlbnMuCisvLyBGSVhNRTogTWlncmF0ZSBkYXRhIGZyb20gb2xkIGRh
dGFiYXNlLgorCit2b2lkIFN0b3JlOjpwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykK
K3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fcXVldWUtPmRpc3BhdGNo
KFdURk1vdmUodGFzaykpOworfQorCit2b2lkIFN0b3JlOjpwb3N0VGFza1JlcGx5KFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIHJlcGx5KQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHJlcGx5KSk7Cit9CisKK3Zv
aWQgU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKK3sKKyAgICBwb3N0VGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhdHRyaWJ1dGlvbiA9IFdURk1vdmUoYXR0cmli
dXRpb24pLCBhdHRyaWJ1dGlvblR5cGVdICgpIG11dGFibGUgeworICAgICAgICBpZiAobV9kYXRh
YmFzZSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGUpOworICAgIH0pOworfQor
Cit2b2lkIFN0b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
c0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAg
ICAgbV9kYXRhYmFzZS0+bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjphdHRyaWJ1
dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNp
dGUsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJE
YXRhJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgLy8gRklYTUU6IGVwaGVtZXJhbE1lYXN1cmVtZW50IG5lZWRzIGFuIGlzb2xhdGVk
Q29weS4KKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzb3VyY2VTaXRlID0gc291cmNlU2l0ZS5pc29sYXRlZENvcHkoKSwgZGVzdGluYXRpb25TaXRl
ID0gZGVzdGluYXRpb25TaXRlLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
ID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgZXBoZW1lcmFsTWVhc3VyZW1lbnQg
PSBXVEZNb3ZlKGVwaGVtZXJhbE1lYXN1cmVtZW50KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50
aWxTZW5kRGF0YT4gc2Vjb25kczsKKyAgICAgICAgaWYgKG1fZGF0YWJhc2UpIHsKKyAgICAgICAg
ICAgIC8vIEluc2VydCBlcGhlbWVyYWwgbWVhc3VyZW1lbnQgcmlnaHQgYmVmb3JlIGF0dHJpYnV0
aW9uLgorICAgICAgICAgICAgaWYgKGVwaGVtZXJhbE1lYXN1cmVtZW50KSB7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZXBoZW1lcmFsTWVhc3VyZW1lbnQtPmlzRXBoZW1lcmFsKCkp
OworICAgICAgICAgICAgICAgIG1fZGF0YWJhc2UtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFdURk1vdmUoKmVwaGVtZXJhbE1lYXN1cmVtZW50KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBzZWNvbmRzID0gbV9kYXRhYmFzZS0+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoc291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEpKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogVGhpcyBtaWdodCB3YW50IHRv
IGJlIGFuIGlzb2xhdGVkQ29weSwgdG9vLCBpbiBjYXNlIHdlIGV2ZXIgYWRkIGFueXRoaW5nIHRv
IEF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgdGhhdCBuZWVkcyBpdC4KKyAgICAgICAg
cG9zdFRhc2tSZXBseShbc2Vjb25kcyA9IFdURk1vdmUoc2Vjb25kcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzZWNvbmRzKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICBTdHJpbmcgcmVzdWx0OworICAgICAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1fZGF0YWJhc2UtPnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JU
ZXN0aW5nKCk7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoW3Jlc3VsdCA9IHJlc3VsdC5pc29sYXRl
ZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHBv
c3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gY29udmVydGVkQXR0cmli
dXRpb25zOworICAgICAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAgIGNvbnZlcnRlZEF0
dHJpYnV0aW9ucyA9IG1fZGF0YWJhc2UtPmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpOworICAgICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBhbiBpc29sYXRlZENvcHkuCisg
ICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IFdURk1vdmUoY29u
dmVydGVkQXR0cmlidXRpb25zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29udmVydGVkQXR0cmlidXRpb25zKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
Cit2b2lkIFN0b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
aXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+
bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KCk7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIH0pOworfQorCisvLyBGSVhNRTogSSBzaG91bGQgcHJvYmFibHkgYWRkIGEgY29tcGxldGlv
biBoYW5kbGVyIGhlcmUuCit2b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
KCkKK3sKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om51bGxvcHQpOworICAgIH0pOworfQorCit2
b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21h
aW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICBwb3N0
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW4gPSBkb21h
aW4uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQor
ICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChkb21h
aW4pOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpCit7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0oKSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9k
YXRhYmFzZS0+Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICB9KTsK
K30KKwordm9pZCBTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvblRvQ2xlYXIsIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0
RW5kcG9pbnQpCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGhhdmUgYW4g
aXNvbGF0ZWRDb3B5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
MTEyIHdhc24ndCBxdWl0ZSBlbm91Z2guCisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgYXR0cmlidXRpb25Ub0NsZWFyID0gV1RGTW92ZShhdHRyaWJ1
dGlvblRvQ2xlYXIpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50XSgpIG11dGFibGUgeworICAg
ICAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNsZWFyU2VudEF0
dHJpYnV0aW9uKFdURk1vdmUoYXR0cmlidXRpb25Ub0NsZWFyKSwgYXR0cmlidXRpb25SZXBvcnRF
bmRwb2ludCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkzMGQ2YjVmMWQyNWI1ODczOTZm
YWM1NDQ1MWY3ODY4N2E0MzE4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UeXBlIDogYm9vbDsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIERhdGFiYXNlOwor
CitjbGFzcyBTdG9yZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yZT4geworcHVi
bGljOgorICAgIFN0b3JlKFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgflN0b3JlKCk7CisKKyAgICB2b2lkIGluc2VydFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYs
IFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOworICAgIHZv
aWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIGVwaGVtZXJhbE1lYXN1cmVt
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+KT4mJik7
CisKKyAgICB2b2lkIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CisgICAgdm9pZCBtYXJrQWxsVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisgICAg
dm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRl
c3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKworICAgIHZvaWQgYWxsQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJik7CisgICAgdm9pZCBjbGVh
ckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIHZvaWQgY2xlYXJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCgpOworICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7
CisgICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYmIGF0dHJpYnV0aW9uVG9DbGVhciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOworcHJpdmF0ZToKKyAgICB2b2lkIHBv
c3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0VGFza1JlcGx5KEZ1bmN0
aW9uPHZvaWQoKT4mJik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2U+IG1fZGF0YWJh
c2U7CisgICAgUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuY3BwCmluZGV4IDZhNjM1ZDg5ZDc3MzA4MDg1MmMzYTFkZmYxYThkZTg3NmVhZTYwNzMu
LmJjNDQ2ZWE3OTVhMTlhMjE5ZjA4M2Q5ZTdiNWM0NDk2MzRmMTEyNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUHJpdmF0ZUNs
aWNrTQogICAgIH0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUobWVhc3VyZW1lbnQpLCB0
eXBlKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmUoKS5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKG1l
YXN1cmVtZW50KSwgdHlwZSk7CiAjZW5kaWYKIH0KIApAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjphdHRyaWJ1dGUoY29uc3QgU291cmNlU2l0
ZSYgc291cmNlU2l0ZSwgY29uCiAgICAgfQogICAgICAgICAKICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hdHRyaWJ1dGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1vdmUoYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSksIHN0ZDo6ZXhjaGFuZ2UobV9lcGhlbWVyYWxNZWFzdXJlbWVu
dCwgc3RkOjpudWxsb3B0KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAo
YXV0byBhdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhKSB7CisgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5hdHRyaWJ1dGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1v
dmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIHN0ZDo6ZXhjaGFuZ2UobV9lcGhlbWVyYWxNZWFz
dXJlbWVudCwgc3RkOjpudWxsb3B0KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpXSAoYXV0byBhdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhKSB7CiAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApA
QCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpj
bGVhclNlbnRBdHRyaWJ1dGlvbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVuCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5jbGVhclNlbnRBdHRyaWJ1dGlvbihXVEZNb3ZlKHNlbnRDb252ZXJzaW9uKSwgYXR0
cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CisgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5jbGVhclNlbnRBdHRyaWJ1dGlvbihXVEZN
b3ZlKHNlbnRDb252ZXJzaW9uKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CiAjZW5kaWYK
IH0KIApAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKQogICAgIGlmICghcmVzb3VyY2VM
b2FkU3RhdGlzdGljcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8mJiBhdHRyaWJ1dGlvbnMpIHsKKyAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuYWxsQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0gKGF1dG8mJiBhdHRyaWJ1dGlvbnMpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBuZXh0VGltZVRvRmlyZSA9IFNl
Y29uZHM6OmluZmluaXR5KCk7CkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKTsKICNlbmRpZgogfQogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0
cmFibGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRG
b3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbik7CiAjZW5kaWYKIH0KIApAQCAtNDk1
LDExICs0OTUsMTEgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFy
RXhwaXJlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQot
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
KTsKICNlbmRpZgogfQogCi12b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6dG9T
dHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBjb25zdAordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBp
ZiAoIWZlYXR1cmVFbmFibGVkKCkpIHsKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6dG9TdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcpPiYmCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRvU3RyaW5nRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRl
c3RpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkubWFya0FsbFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOwogI2Vu
ZGlmCiB9CiAKQEAgLTU3NSw3ICs1NzUsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cAogICAg
IH0KIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5tYXJrQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIuaAppbmRleCBjZDcyZjI1MWFlZWJhMWRmY2NlMGE2NzAzYTJlNWQ4
NDMzOWVkYjllLi4xZTYxNmRhNjFhMTRlZDA3MGE3YjNmZDdjNTFlYzZhYTU1NmRmZGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgaGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1
ZXN0KTsKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9t
YWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Ci0gICAgdm9pZCB0b1N0cmluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0OworICAgIHZvaWQgdG9TdHJpbmdGb3JU
ZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3Q7CiAgICAgdm9p
ZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSB7IG1faXNSdW5uaW5nVGVz
dCA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJM
JiYpOwogICAgIHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyLmgKaW5kZXggNDczY2U1MzY2N2RkODgzZGI4MWUyZmU1OTk0MjdlODVmODA0NjA0
YS4uMWNlYWUxODMwNWE3Njg4MTFlZGYzYjZmMDBkOWUzMDIxOGQxNjdmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRl
ICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENOZXR3b3JrLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcAppbmRleCAzMDgwMzQzODZmZmNiMjY5
ZmUyOWIzMTQwOWUxODMxOThiMmNhZTAyLi5lMTRmODczYjdjODE3Yzc5N2VjNGYzYjU2ODBiMjEy
ZTNjZjZiOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5m
b1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyCiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKICAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZE
YXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsK
LSAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IElQQWRkcmVzczo6ZnJvbVNvY2tBZGRySW42KCpy
ZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbjYqPihDRkRhdGFHZXRCeXRl
UHRyKGRhdGEpKSkpCisgICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBXZWJDb3JlOjpJUEFkZHJl
c3M6OmZyb21Tb2NrQWRkckluNigqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2Fk
ZHJfaW42Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSkpKQogICAgICAgICAgICAgYWRkcmVzc2Vz
LnVuY2hlY2tlZEFwcGVuZCgqYWRkcmVzcyk7CiAgICAgfQogICAgIGlmIChhZGRyZXNzZXMuaXNF
bXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA5N2Q1MTQ4NzRkZDYwZDU5N2NmZjc4MzhjZDgz
Njk3MmZhOWFkMzJkLi4yODhhYzdkNTFjNTY2MDMxNjgwMGY2NmExMTExYzgxMjE0NmUwZDI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmgKQEAgLTM3LDYgKzM3LDggQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBkaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAgICAgYm9vbCBlbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGlzSXRwU3Rh
dGVFeHBsaWNpdGx5U2V0IHsgZmFsc2UgfTsKICAgICBib29sIGVuYWJsZUxvZ1Rlc3RpbmdFdmVu
dCB7IGZhbHNlIH07CkBAIC01NSw2ICs1Nyw4IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycyB7CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGRpcmVjdG9yeTsKICAg
ICAgICAgZW5jb2RlciA8PCBkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGVuY29k
ZXIgPDwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworICAgICAgICBl
bmNvZGVyIDw8IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKICAgICAgICAgZW5jb2RlciA8PCBlbmFibGVkOwogICAgICAgICBlbmNvZGVyIDw8
IGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OwogICAgICAgICBlbmNvZGVyIDw8IGVuYWJsZUxvZ1Rl
c3RpbmdFdmVudDsKQEAgLTgxLDcgKzg1LDE3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGRlY29kZXIgPj4gZGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgICAgICBpZiAoIWRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgZGVjb2RlciA+
PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIGlmICgh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGRlY29kZXIgPj4gcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBpZiAoIXByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAgIGlmICghZW5h
YmxlZCkKQEAgLTE0Miw2ICsxNTYsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMgewogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmRpcmVj
dG9yeSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAor
ICAgICAgICAgICAgV1RGTW92ZSgqcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0
b3J5KSwKKyAgICAgICAgICAgIFdURk1vdmUoKnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCplbmFibGVk
KSwKICAgICAgICAgICAgIFdURk1vdmUoKmlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0KSwKICAgICAg
ICAgICAgIFdURk1vdmUoKmVuYWJsZUxvZ1Rlc3RpbmdFdmVudCksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2
NmFlZGE0M2M4MmQ4YmZiMzM1YmJmZWY2MDk1ZDA0ZWZhZGI4NjIwLi5kNTNjY2M1NjIxZWUxNmNk
YjM3ZDAwOTQ4MzdkZDc1YTcxY2RkNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU3LDYgKzU3LDcgQEAg
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAogCitOZXR3
b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0
eVRyYWNrZXIuY3BwCkBAIC05OCw2ICs5OSw5IEBAIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50LmNwcAogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5j
cHAKIAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCisKIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgQG5vLXVuaWZ5CiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8t
dW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggYWNkMDRk
ODY3ZmQxYTA4MDFiYWRhZGM1NjM1NzdlMjVkODc3Y2Q4MC4uNzc4NTk1OWVmNTY2MzFjNWE1MWE0
MWFiODNlNDk1ZWY5NmVkMTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmgKQEAgLTYwLDYgKzYwLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwg
aW9zKDExLjApKQogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0V2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk6KSBOU1VSTCAqX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0Q29va2llU3RvcmFnZUZpbGU6KSBO
U1VSTCAqX2Nvb2tpZVN0b3JhZ2VGaWxlOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNl
dHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTopIE5TVVJMICpfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
LCBpb3MoMTEuMykpOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1VS
TCAqcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSwgc2V0dGVyPV9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnk6KSBOU1VSTCAqX2Nh
Y2hlU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3Mo
MTEuMykpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTopIE5TVVJMICpfc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykp
OwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMu
NCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCmluZGV4IDZhM2I2
M2NiNjkwOGViYjlhZTgzNjFmNDM2ODM5YzAzZWQ3ZDYzNmQuLjY1OWQ2ZmQyNWY0YjBiZDZmNTgy
NGExMmZlMDZiOWM0OGQ1N2UzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24ubW0KQEAgLTE4Niw2ICsxODYsMjIgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVu
dChOU1VSTCAqdXJsKQogICAgIF9jb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAorLSAoTlNVUkwgKilwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkKK3sKKyAgICBhdXRvJiBkaXJlY3RvcnkgPSBfY29uZmln
dXJhdGlvbi0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
aWYgKGRpcmVjdG9yeS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXTsKK30KKwor
LSAodm9pZClzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk6KE5TVVJM
ICopdXJsCit7CisgICAgaWYgKCFfY29uZmlndXJhdGlvbi0+aXNQZXJzaXN0ZW50KCkpCisgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6
QCJDYW5ub3Qgc2V0IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSBvbiBh
IG5vbi1wZXJzaXN0ZW50IF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLiJdOworICAg
IGNoZWNrVVJMQXJndW1lbnQodXJsKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KHVybC5wYXRoKTsKK30KKwogLSAoTlNVUkwg
KilfY2FjaGVTdG9yYWdlRGlyZWN0b3J5CiB7CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5
OllFU107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDIxYmUyNTgxMGIzMjZiMWIwMDBhMTRjYWFlZmRk
NzJlODM3N2U1ZjEuLjQ1OGQwYzY0ZTI2YmQ0YzFlYjBiZjM0MmY0MDk3ZDdjNDNlZDQ5NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCkBAIC0yNjEsNiArMjYxLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRX
cml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5uZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkpOwogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQogICAgICAgICBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShyZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25m
aWd1cmF0aW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkoKS5pc0Vt
cHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVj
dG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkuaXNFbXB0eSgpICYmIG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkuaXNF
bXB0eSgpKQogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5
Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKSkpOwogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5qYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSkKQEAgLTE5NjQsNiArMTk2Niw3IEBA
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMo
KQogCiAgICAgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKIAorICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBwcm9iYWJseSBsb29rIGF0IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLgog
ICAgIGF1dG8gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlOwogICAgIGlm
ICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpIHsKQEAgLTE5NzEs
NiArMTk3NCwxMyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3Jl
OjpwYXJhbWV0ZXJzKCkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnlIYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIH0KIAorICAgIGF1dG8gcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5ID0gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24t
PnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSgpOworICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnlI
YW5kbGU7CisgICAgaWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnku
aXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICAgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yYWdlRGlyZWN0b3J5SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CisKICAgICBh
dXRvIG5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVkTmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkp
IHsKQEAgLTIwMDAsNiArMjAxMCw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzIHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzID0gewogICAgICAgICBXVEZN
b3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpLAogICAgICAgICBXVEZNb3ZlKHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGUpLAorICAgICAgICBXVEZNb3ZlKHBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSksCisgICAgICAgIFdURk1vdmUo
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5SGFuZGxlKSwKICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSwKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgICAgICBpc0l0cFN0YXRlRXhwbGljaXRseVNldCgpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGM3MDJkNGE3YTNlZTVlY2Jm
YWE2OTBiNGMzYWRhMGIyM2Q3MGYzOTUuLjVmNTE2NmI3MjhlM2JkYWVkOWQyNTgzNjk0NGIxZDNk
ZTgzYTIzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAg
LTc2LDYgKzc2LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9hbHRlcm5h
dGl2ZVNlcnZpY2VzRGlyZWN0b3J5ID0gdGhpcy0+bV9hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0
b3J5OwogICAgIGNvcHktPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhp
cy0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gdGhpcy0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5OworICAgIGNvcHktPm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdl
RGlyZWN0b3J5ID0gdGhpcy0+bV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rv
cnk7CiAgICAgY29weS0+bV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHRoaXMt
Pm1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgY29weS0+bV9jb29raWVT
dG9yYWdlRmlsZSA9IHRoaXMtPm1fY29va2llU3RvcmFnZUZpbGU7CiAgICAgY29weS0+bV9zb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSB0aGlzLT5tX3NvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmlu
ZGV4IGVmYWE5YzgwYTBjODIwZGUzY2NjMjY4MTQ5Yzg2NmFmMDNhODQ1YWUuLmQ2MGI1OWY0ZDk5
MmFkODRmYTMxODBiYTQ2YjIyMTkwZjA3YWE5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaApAQCAtMTE3LDYgKzExNyw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJp
bmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogCisgICAgY29uc3Qg
U3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsgfQorICAg
IHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYm
IGRpcmVjdG9yeSkgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSA9
IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBuZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsgfQogICAg
IHZvaWQgc2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX25l
dHdvcmtDYWNoZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogICAgIApAQCAtMjAx
LDYgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0Rp
cmVjdG9yeTsKICAgICBTdHJpbmcgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7
CiAgICAgU3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKKyAgICBTdHJp
bmcgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5n
IG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fY29va2ll
U3RvcmFnZUZpbGU7CiAgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZmUzZDMyYjMyOTVjMmM0NGZkNDQ0NGNkZDdmMTQxZjI0MDA0Y2EwMi4uYWFlNDk0ZGJk
ODNlNzhkMjY3OTcxNGI3ZGJiZThjYTljOGU1NmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjcxLDYgKzEyNzEsOCBAQAogCQk1
Qzc5NUQ3MDIyOUYzNzNGMDAzRkYxQzQgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0UwQzM2OTIyOUYy
RDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1Qzc5NUQ3MTIyOUYzNzU3MDAzRkYx
QzQgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFMEMzNkEyMjlGMkQ0QTAwMzY5NUYwIC8q
IFdLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzdGQjQ3MDIxRTk3REM1MDA5RTMyNDEgLyog
V2ViQ29va2llSmFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzdGQjQ2RjIxRTk3QzBDMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggKi87IH07CisJ
CTVDODI2RDZCMjZENDgyRUYwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzgyNkQ2
ODI2RDQ2QjQ0MDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oICovOyB9
OworCQk1QzgyNkQ2QzI2RDQ4MkYyMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM4MjZENjkyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJh
c2UuaCAqLzsgfTsKIAkJNUM4QkM3OTcyMThDQkI0ODAwODEzODg2IC8qIFNhZmVCcm93c2luZy54
Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM4QkM3OTYyMThDQjU4QTAwODEzODg2IC8qIFNhZmVCcm93c2luZy54Y2Fzc2V0cyAqLzsgfTsK
IAkJNUM4REQzODAxRkU0NTIxNjAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4REQzN0YxRkU0
NTE5MjAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oICovOyB9OwogCQk1QzlBOTEx
MTIyOEY2OUNDMDA1QzVCMTcgLyogWFBDU2VydmljZU1haW4ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyODM5NjE2QjQ3RUM0MDBBMjc4RkUgLyog
WFBDU2VydmljZU1haW4ubW0gKi87IH07CkBAIC00NTA5LDYgKzQ1MTEsMTIgQEAKIAkJNUM3RkI0
NkYyMUU5N0MwQzAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM4MEIzREIyMzY5MEQ4RDAwODZFNkRFIC8qIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzgwQjNE
RDIzNjkwRjEwMDA4NkU2REUgLyogU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM4MjZENjcy
NkQ0NkI0MzAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDY4MjZENDZCNDQw
MDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM4MjZENjkyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzgyNkQ2QTI2RDQ4MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM4MjZENkUyNkQ1OEExNjAwOEFFQzkxIC8qIERhdGFiYXNlVXRpbGl0aWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlVXRpbGl0
aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM4MjZENkYyNkQ1OEExNjAw
OEFFQzkxIC8qIERhdGFiYXNlVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERhdGFiYXNlVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDODRDRjkwMUY5NkFDNEUwMEI2NzA1QSAvKiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzg1Qzc4
NjFDM0YyM0M1MDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlbmRpbmdEb3dubG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDODlERjU2MjFBRjYxRkYwMDQ2NDVFOCAvKiBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NjcyLDkgKzg2ODAsMTIgQEAKIAkJCQk5MzkyODhFMDIxNDA0REYw
MDBFQkJBMzMgLyogSW5kZXhlZERCICovLAogCQkJCTJEQTk0NEJCMTg4NTExREQwMEVEODZEQiAv
KiBpb3MgKi8sCiAJCQkJNTEwQ0M3REMxNjEzOEUyOTAwRDAzRUQzIC8qIG1hYyAqLywKKwkJCQk1
QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0MkYgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKi8sCiAJ
CQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VXb3JrZXIgKi8sCiAJCQkJNDEz
MDc1OTcxREU4NEVENzAwMzlFQzY5IC8qIHdlYnJ0YyAqLywKIAkJCQk5M0IyNjE0MzIyN0QxNDMx
MDBCOTdBNzYgLyogV2ViU3RvcmFnZSAqLywKKwkJCQk1QzgyNkQ2RTI2RDU4QTE2MDA4QUVDOTEg
LyogRGF0YWJhc2VVdGlsaXRpZXMuY3BwICovLAorCQkJCTVDODI2RDZGMjZENThBMTYwMDhBRUM5
MSAvKiBEYXRhYmFzZVV0aWxpdGllcy5oICovLAogCQkJCTUzRjNDQUE1MjA2QzQ0M0UwMDg2NDkw
RSAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcCAqLywKIAkJCQk1MzVCQ0I5MDIwNjlDNDlD
MDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oICovLAogCQkJCTQ2RUUyODRCMjY5
RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAqLywK
QEAgLTkyNDMsNiArOTI1NCwxNyBAQAogCQkJcGF0aCA9IFNPQXV0aG9yaXphdGlvbjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTVDMDFCQzM1MjZENDZBRDQwMEZFQjQyRiAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNUM4MjZENkEyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuY3BwICovLAorCQkJCTVDODI2RDY5MjZENDgyRUEwMDhBRUM5
MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi8sCisJCQkJNUM4MjZENjcy
NkQ0NkI0MzAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwICovLAor
CQkJCTVDODI2RDY4MjZENDZCNDQwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNUMxNDI2RjExQzIzRjgxNzAwRDQxMTgz
IC8qIERvd25sb2FkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xMjMwNiw4ICsxMjMyOCwxMCBAQAogCQkJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAv
KiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBQjE0NUU2MjIzRjkz
MTIwMEU0ODlEOCAvKiBQcmVmZXRjaENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUNDMUI5
MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Qzgy
NkQ2QzI2RDQ4MkYyMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNkJEMDU4NjUyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRTY4OEMyNjBB
QkIzRDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNUM4MjZENkIyNkQ0ODJFRjAwOEFFQzkxIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1MzY1MThGRjU4RjUw
MDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0M1
ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA2N2MwZjI1YjlhYzg0NDM5Y2I3ZjUwMzlkNjI3YWE5MTgyNmNlNTNlLi5kZDIz
OTdkNzJmZDZjOTM2MGU0NmI3NWEwMDQxMjI3YzU1N2VhMjk0IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDgt
MjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBTZXBhcmF0ZSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYXRhYmFzZSBmcm9tIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MgZGF0YWJhc2UgYW5kIGFkZCBTUEkgdG8gc2V0IGl0cyBsb2NhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTI3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTA4LTI1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gVXNlIFB5dGhvbiAzIGluIENJ
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50
QXR0cmlidXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2
ZW50QXR0cmlidXRpb24ubW0KaW5kZXggYzgwY2E3MTZjYzAyMWE0Yjg5NjFlODAzNGViNDAwODAz
ZTQ4ZjUxNC4uNzkyMzljYWI5OTZlYTk0NTRhM2U4ZWIyOTg1YmY1MzExODQzOTg3YSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0
aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRB
dHRyaWJ1dGlvbi5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogCiAjaWYgSEFWRShS
U0FfQlNTQSkKIApAQCAtNzgsNyArNzksNyBAQCBzdGF0aWMgTlNVUkwgKmV4YW1wbGVVUkwoKQog
ICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20vIl07
CiB9CiAKLXZvaWQgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChGdW5jdGlvbjx2b2lkKFdL
V2ViVmlldyAqLCBjb25zdCBIVFRQU2VydmVyJik+JiYgYWRkQXR0cmlidXRpb25Ub1dlYlZpZXcp
Cit2b2lkIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QoV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbiwgRnVuY3Rpb248dm9pZChXS1dlYlZpZXcgKiwgY29uc3QgSFRUUFNl
cnZlciYpPiYmIGFkZEF0dHJpYnV0aW9uVG9XZWJWaWV3KQogewogICAgIFtXS1dlYnNpdGVEYXRh
U3RvcmUgX3ByZXZlbnROZXR3b3JrUHJvY2Vzc1N1c3BlbnNpb25Gb3JUZXN0aW5nXTsKICAgICBi
b29sIGRvbmUgPSBmYWxzZTsKQEAgLTExMyw3ICsxMTQsNyBAQCB2b2lkIHJ1bkJhc2ljRXZlbnRB
dHRyaWJ1dGlvblRlc3QoRnVuY3Rpb248dm9pZChXS1dlYlZpZXcgKiwgY29uc3QgSFRUUFNlcnZl
ciYpPgogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAgICAgTlNVUkwgKnNl
cnZlclVSTCA9IHNlcnZlci5yZXF1ZXN0KCkuVVJMOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGNvbmZpZ3VyYXRpb24g
PyBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSkgOiBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAg
ICAgYWRkQXR0cmlidXRpb25Ub1dlYlZpZXcod2ViVmlldy5nZXQoKSwgc2VydmVyKTsKICAgICBb
W3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKICAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluOkBbKGlkKXRlc3RDZXJ0aWZp
Y2F0ZSgpLmdldCgpXSBmb3JIb3N0OnNlcnZlclVSTC5ob3N0XTsKQEAgLTI4MiwxNiArMjgzLDM3
IEBAIFRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwgRnJhdWRQcmV2ZW50aW9uKQogCiBURVNUKEV2ZW50
QXR0cmlidXRpb24sIEJhc2ljKQogewotICAgIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3Qo
W10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIpIHsKKyAgICBy
dW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KG5pbCwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBj
b25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIpIHsKKyAgICAgICAgW3dlYlZpZXcgX2FkZEV2ZW50QXR0
cmlidXRpb25XaXRoU291cmNlSUQ6NDIgZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIHNvdXJj
ZURlc2NyaXB0aW9uOkAidGVzdCBzb3VyY2UgZGVzY3JpcHRpb24iIHB1cmNoYXNlcjpAInRlc3Qg
cHVyY2hhc2VyIiByZXBvcnRFbmRwb2ludDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBvcHRpb25hbE5v
bmNlOm5pbF07CisgICAgfSk7Cit9CisKK1RFU1QoRXZlbnRBdHRyaWJ1dGlvbiwgRGF0YWJhc2VM
b2NhdGlvbikKK3sKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiRXZlbnRBdHRyaWJ1dGlvbkRhdGFiYXNlTG9jYXRpb25UZXN0Il0gaXNEaXJlY3Rv
cnk6WUVTXTsKKyAgICBpZiAoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6dGVtcERpci5w
YXRoXSkKKyAgICAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9y
Om5pbF07CisKKyAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBkYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpLnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSA9IHRl
bXBEaXI7CisgICAgYXV0byB2aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gbmV3XSk7CisgICAgdmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURh
dGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpOworICAgIHJ1
bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3Qodmlld0NvbmZpZ3VyYXRpb24uZ2V0KCksIFtdKFdL
V2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CiAgICAgICAgIFt3
ZWJWaWV3IF9hZGRFdmVudEF0dHJpYnV0aW9uV2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0aW9uVVJM
OmV4YW1wbGVVUkwoKSBzb3VyY2VEZXNjcmlwdGlvbjpAInRlc3Qgc291cmNlIGRlc2NyaXB0aW9u
IiBwdXJjaGFzZXI6QCJ0ZXN0IHB1cmNoYXNlciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVl
c3QoKS5VUkwgb3B0aW9uYWxOb25jZTpuaWxdOwogICAgIH0pOworCisgICAgRVhQRUNUX1RSVUUo
W2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6dGVtcERpci5wYXRoXSk7CisgICAgRVhQRUNU
X1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6W3RlbXBEaXIucGF0aCBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJwY20uZGIiXV0pOwogfQogCisvLyBGSVhNRTogV3Jp
dGUgYSB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhhdCBkYXRhIGlzIG1pZ3JhdGVkIGZyb20gb2xkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MgZGF0YWJhc2VzIHRvIHRoZSBuZXcgUENNIGRhdGFiYXNlLgor
CiAjaWYgSEFWRShVSV9FVkVOVF9BVFRSSUJVVElPTikKIAogVEVTVChFdmVudEF0dHJpYnV0aW9u
LCBCYXNpY1dpdGhJT1NTUEkpCiB7Ci0gICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChb
XShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgeworICAgIHJ1
bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QobmlsLCBbXShXS1dlYlZpZXcgKndlYlZpZXcsIGNv
bnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgewogICAgICAgICBhdXRvIGF0dHJpYnV0aW9uID0gYWRv
cHROUyhbW01vY2tFdmVudEF0dHJpYnV0aW9uIGFsbG9jXSBpbml0V2l0aFJlcG9ydEVuZHBvaW50
OnNlcnZlci5yZXF1ZXN0KCkuVVJMIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKV0pOwogICAg
ICAgICB3ZWJWaWV3Ll91aUV2ZW50QXR0cmlidXRpb24gPSAoVUlFdmVudEF0dHJpYnV0aW9uICop
YXR0cmlidXRpb24uZ2V0KCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5t
bQppbmRleCBiZDFlMjdhOTEwMmQxNzJiZWY5YjQ4ZDAzY2JhMDZhMDllYzUwNDZkLi5lYWU2OGY2
MGNkZmFkMDkwOTViMDJjN2YzZTFhMzlhMjYxNjJiZjUxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQubW0KQEAgLTMxLDcgKzMxLDkgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQorLyoKKyAvLyBGSVhN
RTogSW1wbGVtZW50IG1pZ3JhdGlvbiBmcm9tIG9sZGVyIGRhdGFiYXNlcyBhbmQgZ2V0IHRoZXNl
IHRlc3RzIHdvcmtpbmcuCisgCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBBZGRNaXNz
aW5nUENNRnJhdWRQcmV2ZW50aW9uQ29sdW1ucykKIHsKICAgICBhdXRvICpzaGFyZWRQcm9jZXNz
UG9vbCA9IFtXS1Byb2Nlc3NQb29sIF9zaGFyZWRQcm9jZXNzUG9vbF07CkBAIC0xNTUsMyArMTU3
LDQgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgUmVuYW1lRGVzdGluYXRpb25TaXRl
Q29sdW1uKQogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CiB9Cisq
Lwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436540</attachid>
            <date>2021-08-26 11:41:55 -0700</date>
            <delta_ts>2021-08-26 17:40:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229527-20210826114154.patch</filename>
            <type>text/plain</type>
            <size>220523</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1MTdjY2I1ZmE3YjNiNTFk
NzQ1N2YwOGZjMTRkZjA0NzZhYmJiY2IuLmRjMDI3ZjliNDA4MDU4MjJlN2ZkOTY5NDc5YTY3NWNj
ZDgwM2M4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY5IEBACisyMDIxLTA4LTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJhdGUg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZGF0YWJhc2UgZnJvbSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIGRhdGFiYXNlIGFuZCBhZGQgU1BJIHRvIHNldCBpdHMgbG9jYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTUyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMs
IEkgbW92ZWQgY29tbW9uIGNvZGUgdG8gRGF0YWJhc2VVdGlsaXRpZXMgYW5kIG1vdmVkIHRoZSBQ
Q00gbG9naWMgZnJvbSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZQorICAgICAg
ICB0byBhIG5ldyBjbGFzcy4gIEl0IHB1dHMgdGhlIGRhdGEgaW4gYSBkaWZmZXJlbnQgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkgdW5sZXNzIFNQSSB0ZWxscyBpdCB0byBwdXQgaXQgaW4gYSBk
aWZmZXJlbnQgZGlyZWN0b3J5LgorCisgICAgICAgIFRoZSBiaWdnZXN0IGZ1bmN0aW9uYWwgY2hh
bmdlIEkgbmVlZGVkIHRvIGRvIHdhcyB0byBtYWtlIGEgUENNT2JzZXJ2ZWREb21haW5zIHRhYmxl
IGluIHRoZSBuZXcgREIgaW5zdGVhZCBvZiBhbiBPYnNlcnZlZERvbWFpbnMgdGFibGUsCisgICAg
ICAgIHdoaWNoIGNvbnRhaW5lZCBtb3JlIGluZm9ybWF0aW9uIHRoYW4gSSBuZWVkZWQuICBJIG5l
ZWQganVzdCBhbiBpbmRleCBhbmQgYSBsaXN0IG9mIGRvbWFpbnMuCisKKyAgICAgICAgQW5vdGhl
ciBzbGlnaHQgaW1wbGVtZW50YXRpb24gY2hhbmdlIGlzIHRoYXQgaW5zdGVhZCBvZiBjaGVja2lu
ZyBpc0VwaGVtZXJhbCBpbiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIEkganVzdCBw
YXNzIGFuIGVtcHR5CisgICAgICAgIFN0cmluZyB0byB0aGUgU3RvcmUgaWYgaXQncyBlcGhlbWVy
YWwsIHdoaWNoIGNhdXNlcyBubyBEQiB0byBiZSBjcmVhdGVkLCB3aGljaCBjYXVzZXMgZXF1aXZh
bGVudCBiZWhhdmlvci4KKworICAgICAgICBJIGFsc28gbW92ZWQgdGhlIGRlYnVnIG1lc3NhZ2Ug
YnJvYWRjYXN0aW5nIHRvIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRl
IGluIG9yZGVyIHRvIG1ha2UgdGhlIERhdGFiYXNlIG9iamVjdCBub3QKKyAgICAgICAgbmVlZCB0
byBrbm93IGFib3V0IHRoZSBOZXR3b3JrUHJvY2VzcyBhbmQgbm90IG5lZWQgdG8ga2VlcCBzdGF0
ZSBvZiB3aGV0aGVyIGRlYnVnIG1vZGUgaXMgZW5hYmxlZC4gIERhdGFiYXNlOjphdHRyaWJ1dGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudAorICAgICAgICBub3cgcmV0dXJucyBhIERlYnVnSW5mbyBv
YmplY3QgYW5kIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlIGNoZWNr
cyB3aGV0aGVyIGRlYnVnIG1vZGUgaXMgZW5hYmxlZCBhbmQgYnJvYWRjYXN0cyB0aGUgbWVzc2Fn
ZXMuCisKKyAgICAgICAgQW4gZXZlbiBzbWFsbGVyIGNoYW5nZSBpcyBJIGFkZGVkIGEgIkZvclRl
c3RpbmciIHN1ZmZpeCBvbiBzb21lIGZ1bmN0aW9uIG5hbWVzIG9mIGZ1bmN0aW9ucyB0aGF0IGFy
ZSBvbmx5IHVzZWQgaW4gdGVzdHMuCisKKyAgICAgICAgVGhlIHJlc3Qgb2YgdGhpcyBwYXRjaCBq
dXN0IG1vdmVzIGNvZGUgZnJvbSBvbmUgbG9jYXRpb24gdG8gYW5vdGhlci4KKworICAgICAgICBJ
IHN0aWxsIG5lZWQgdG8gaW1wbGVtZW50IG1pZ3JhdGluZyBkYXRhIGZyb20gdGhlIG9sZCBEQiB0
byB0aGUgbmV3IERCLCBkZWJ1ZyBtZXNzYWdlIGJyb2FkY2FzdGluZywgYW5kIHRlYXJkb3duLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmV4cGVjdGVkVGFibGVBbmRJ
bmRleFF1ZXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbklUUERh
dGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om5lZWRzVXBkYXRlZFNjaGVtYSk6CisgICAgICAgIChXZWJLaXQ6Omluc2VydERpc3Rp
bmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y3JlYXRlVW5pcXVlSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hlbWEpOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZGVzdHJveVN0YXRlbWVudHMpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJE
YXRhYmFzZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6ZXhwZWN0ZWRVbmF0dHJpYnV0ZWRD
b2x1bW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6ZXhwZWN0ZWRBdHRyaWJ1dGVkQ29s
dW1ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpuZWVkc1VwZGF0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFNjaGVtYSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc0lmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbmFtZUNvbHVt
bnNJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzY29wZWRTdGF0ZW1lbnQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YnVp
bGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBp
cmVkRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVVbmF0dHJpYnV0ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmli
dXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmli
dXRpb25Ub1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmVhcmxpZXN0VGltZXNUb1NlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya1JlcG9ydEFzU2VudFRvU291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
U2VudEF0dHJpYnV0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpiZWdpblRyYW5zYWN0aW9uSWZOZWNl
c3NhcnkpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNoYXJlZFN0YXRpc3RpY3NRdWV1ZSk6CisgICAgICAgIChXZWJLaXQ6
OnBjbVN0b3JlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OnNoYXJlZFN0YXRpc3RpY3NRdWV1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFz
RXhwaXJlZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3Ry
YWJsZURvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRGF0
YWJhc2VVdGlsaXRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VVdGls
aXRpZXM6OkRhdGFiYXNlVXRpbGl0aWVzKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VVdGls
aXRpZXM6OnNjb3BlZFN0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNl
VXRpbGl0aWVzOjpiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0
OjpEYXRhYmFzZVV0aWxpdGllczo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6cmVjcmVhdGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNTdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlBDTTo6RGF0YWJhc2U6OkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRh
YmFzZTo6fkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6Y3JlYXRl
U2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjptYXJrQWxs
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YXR0cmlidXRlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpidWlsZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6cmVtb3ZlVW5hdHRyaWJ1dGVkKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YXRhYmFzZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6UENNOjpEYXRhYmFzZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyk6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmF0dHJpYnV0aW9uVG9TdHJpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQQ006
OkRhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktp
dDo6UENNOjpEYXRhYmFzZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Om1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRv
U291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6ZWFybGllc3RUaW1lc1Rv
U2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmRvbWFpbklEKToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6ZW5zdXJlRG9tYWluSUQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlBDTTo6U3RvcmU6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6
cG9zdFRhc2tSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6Omluc2VydFByaXZh
dGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6bWFya0Fs
bFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZyk6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1
cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUb1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmFsbEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6
Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0
b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJL
aXQ6OlBDTTo6U3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbik6CisgICAg
ICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlKToK
KyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhclNl
bnRBdHRyaWJ1dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6ZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzKToKKyAgICAgICAgKFdlYktp
dDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhcik6CisgICAgICAgIChXZWJL
aXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJGb3JSZWdpc3RyYWJsZURv
bWFpbik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
Y2xlYXJFeHBpcmVkKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rpbmcp
OgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVkTmFtZSk6CisgICAgICAgICogU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0
b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDgtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gVmlzdWFsIExvb2sgVXAgYW5pbWF0ZXMg
ZnJvbSB0aGUgd3JvbmcgcmVjdCB3aGVuIHRoZSB3ZWIgdmlldyBpcyBzY2FsZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CmluZGV4IDk1ZDhhOTY2ZmZkZDNlNDQzZmUyYjVkNmQ2NTRmNGZhMWUxMGY4NmUuLmI0
ZjE5ODNiMjE4ZWM1NDE4ZjIwY2Y5MmNlMDYzMDliZmUxOWRjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dApAQCAtMjMsNiArMjMsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvRmlsZUFQSSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJv
Y2Vzcy9JbmRleGVkREIiCisgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlciIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL2NhY2hlIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggYmJl
OGQyZGIzYzc1ZDljYjJkNjg3YjI1YjlhZWJlMDBjMjBjOWZiMy4uMjA3Njc2YjgzMjg5NDdhYzk2
Yzk3NjNiMjc2NDk2Yjc3YmQzMzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVk
ZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgog
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIlByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHkuaCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KQEAgLTg4LDEwICs4OCw2IEBA
IGNvbnN0ZXhwciBhdXRvIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNRdWVyeSA9ICJJTlNF
UlQgT1IgUkVQTEFDRSBpbnRvIFN1YmZyCiBjb25zdGV4cHIgYXV0byB0b3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb21RdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFRvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbSAodG9Eb21haW5JRCwgbGFzdFVwZGF0ZWQsIGZyb21Eb21haW5JRCkgU0VM
RUNUID8sID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxl
RG9tYWluIGluICggIl9zOwogY29uc3RleHByIGF1dG8gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWluc1F1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucyAoc3VicmVzb3VyY2VEb21haW5JRCwgbGFzdFVwZGF0ZWQsIHRvcEZyYW1l
RG9tYWluSUQpIFNFTEVDVCA/LCA/LCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVS
RSByZWdpc3RyYWJsZURvbWFpbiBpbiAoICJfczsKIGNvbnN0ZXhwciBhdXRvIHN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG9RdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8gKHN1YnJlc291cmNlRG9tYWluSUQsIGxhc3RVcGRhdGVkLCB0
b0RvbWFpbklEKSBTRUxFQ1QgPywgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hF
UkUgcmVnaXN0cmFibGVEb21haW4gaW4gKCAiX3M7Ci1jb25zdGV4cHIgYXV0byBpbnNlcnRVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNF
IElOVE8gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKHNvdXJjZVNpdGVEb21h
aW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsICIKLSAgICAic291cmNlSUQsIHRpbWVPZkFk
Q2xpY2ssIHRva2VuLCBzaWduYXR1cmUsIGtleUlEKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8s
ID8pIl9zOwotY29uc3RleHByIGF1dG8gaW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50UXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgKHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQsICIKLSAgICAic291cmNlSUQsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCB0
aW1lT2ZBZENsaWNrLCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVy
ZSwga2V5SUQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24pIFZBTFVFUyAoPywgPywg
PywgPywgPywgPywgPywgPywgPywgPywgPykiX3M7CiAKIC8vIEVYSVNUUyBRdWVyaWVzCiBjb25z
dGV4cHIgYXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNRdWVyeSA9ICJTRUxF
Q1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hF
UkUgc3ViRnJhbWVEb21haW5JRCA9ID8gIgpAQCAtMTE2LDkgKzExMiw2IEBAIGNvbnN0ZXhwciBh
dXRvIHVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERv
bWFpbnMgU0VUIGlzCiBjb25zdGV4cHIgYXV0byBjbGVhclByZXZhbGVudFJlc291cmNlUXVlcnkg
PSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAwLCBpc1ZlcnlQcmV2
YWxlbnQgPSAwIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRv
IHVwZGF0ZUdyYW5kZmF0aGVyZWRRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBn
cmFuZGZhdGhlcmVkID0gPyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4
cHIgYXV0byB1cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsUXVlcnkg
PSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbCA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwotY29uc3RleHBy
IGF1dG8gc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRRdWVy
eSA9ICJVUERBVEUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIHRpbWVP
ZkFkQ2xpY2sgPSAtMS4wIl9zOwotY29uc3RleHByIGF1dG8gbWFya1JlcG9ydEFzU2VudFRvU291
cmNlUXVlcnkgPSAiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQg
ZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSBudWxsIFdIRVJFIHNvdXJjZVNpdGVEb21haW5J
RCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKLWNvbnN0ZXhwciBhdXRv
IG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uUXVlcnkgPSAiVVBEQVRFIEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlv
biA9IG51bGwgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRl
RG9tYWluSUQgPSA/Il9zOwogCiAvLyBTRUxFQ1QgUXVlcmllcwogY29uc3RleHByIGF1dG8gZG9t
YWluSURGcm9tU3RyaW5nUXVlcnkgPSAiU0VMRUNUIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21h
aW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKQEAgLTEzNywxNCArMTMwLDYgQEAg
Y29uc3RleHByIGF1dG8gZ2V0QWxsRG9tYWluc1F1ZXJ5ID0gIlNFTEVDVCByZWdpc3RyYWJsZURv
bWFpbiBGUk9NIE9ic2VydmVkRG9tYWkKIGNvbnN0ZXhwciBhdXRvIGdldEFsbFN1YlN0YXRpc3Rp
Y3NVbmRlckRvbWFpblF1ZXJ5ID0gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIEZST00gU3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyIKICAgICAi
VU5JT04gQUxMIFNFTEVDVCB0b3BGcmFtZURvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyIKICAgICAiVU5JT04g
QUxMIFNFTEVDVCB0b0RvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBX
SEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKLWNvbnN0ZXhwciBhdXRvIGFsbFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zUXVlcnkgPSAiU0VMRUNU
ICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLWNvbnN0ZXhw
ciBhdXRvIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIlNFTEVD
VCAqLCBNSU4oZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRvU2VuZFRv
RGVzdGluYXRpb24pIGFzIG1pblZhbCAiCi0gICAgIkZST00gQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIElTIE5PVCBOVUxM
IEFORCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIElTIE5PVCBOVUxMICIKLSAgICAi
VU5JT04gQUxMIFNFTEVDVCAqLCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBhcyBtaW5WYWwg
RlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbiBJUyBOVUxMICIKLSAgICAiVU5JT04gQUxMIFNFTEVDVCAqLCBl
YXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIGFzIG1pblZhbCBGUk9NIEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBJ
UyBOVUxMIE9SREVSIEJZIG1pblZhbCJfczsKLWNvbnN0ZXhwciBhdXRvIGZpbmRVbmF0dHJpYnV0
ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEID0gPyJfczsKLWNvbnN0ZXhwciBhdXRvIGZpbmRBdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNU
ICogRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0
ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOwotY29uc3Rl
eHByIGF1dG8gZWFybGllc3RUaW1lc1RvU2VuZFF1ZXJ5ID0gIlNFTEVDVCBlYXJsaWVzdFRpbWVU
b1NlbmRUb1NvdXJjZSwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBGUk9NIEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/
IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7CiAKIC8vIEVYSVNUUyBmb3IgdGVz
dGluZyBxdWVyaWVzCiBjb25zdGV4cHIgYXV0byBsaW5rRGVjb3JhdGlvbkV4aXN0c1F1ZXJ5ID0g
IlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9t
IFdIRVJFIHRvRG9tYWluSUQgPSA/IE9SIGZyb21Eb21haW5JRCA9ID8pIl9zOwpAQCAtMTU2LDEw
ICsxNDEsNiBAQCBjb25zdGV4cHIgYXV0byBvYnNlcnZlZERvbWFpbnNFeGlzdHNRdWVyeSA9ICJT
RUxFQ1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIE9ic2VydgogCiAvLyBERUxFVEUgUXVlcmllcwog
Y29uc3RleHByIGF1dG8gcmVtb3ZlQWxsRGF0YVF1ZXJ5ID0gIkRFTEVURSBGUk9NIE9ic2VydmVk
RG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0byBjbGVhclVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEIExJ
S0UgPyBPUiBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBMSUtFID8iX3M7Ci1jb25zdGV4cHIgYXV0
byBjbGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIkRFTEVURSBG
Uk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9t
YWluSUQgTElLRSA/IE9SIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIExJS0UgPyJfczsKLWNvbnN0
ZXhwciBhdXRvIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiREVM
RVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgPyA+IHRp
bWVPZkFkQ2xpY2siX3M7Ci1jb25zdGV4cHIgYXV0byByZW1vdmVVbmF0dHJpYnV0ZWRRdWVyeSA9
ICJERUxFVEUgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBz
b3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7
CiAKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZU9ic2VydmVkRG9tYWluID0gIkNSRUFURSBUQUJMRSBP
YnNlcnZlZERvbWFpbnMgKCIKICAgICAiZG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgcmVn
aXN0cmFibGVEb21haW4gVEVYVCBOT1QgTlVMTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgbGFz
dFNlZW4gUkVBTCBOT1QgTlVMTCwgIgpAQCAtMjQwLDE5ICsyMjEsNiBAQCBjb25zdGV4cHIgYXV0
byBjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSAiQ1JFQVRFIFRBQkxFIFN1
YnJlc291cmNlVQogY29uc3RleHByIGF1dG8gY3JlYXRlT3BlcmF0aW5nRGF0ZXMgPSAiQ1JFQVRF
IFRBQkxFIE9wZXJhdGluZ0RhdGVzICgiCiAgICAgInllYXIgSU5URUdFUiBOT1QgTlVMTCwgbW9u
dGggSU5URUdFUiBOT1QgTlVMTCwgbW9udGhEYXkgSU5URUdFUiBOT1QgTlVMTCkiX3M7CiAKLWNv
bnN0ZXhwciBhdXRvIGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0g
IkNSRUFURSBUQUJMRSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgotICAg
ICJzb3VyY2VTaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQgSU5URUdFUiBOT1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgotICAg
ICJ0aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhU
LCBrZXlJRCBURVhULCBGT1JFSUdOIEtFWShzb3VyY2VTaXRlRG9tYWluSUQpICIKLSAgICAiUkVG
RVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JF
SUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCi0gICAgIk9ic2Vy
dmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOwotCi1jb25zdGV4cHIg
YXV0byBjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRB
QkxFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgotICAgICJzb3VyY2VTaXRl
RG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgSU5URUdF
UiBOT1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgotICAgICJhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhIElOVEVHRVIgTk9UIE5VTEwsIHByaW9yaXR5IElOVEVHRVIgTk9UIE5VTEws
IHRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwgIgotICAgICJlYXJsaWVzdFRpbWVUb1NlbmRU
b1NvdXJjZSBSRUFMLCB0b2tlbiBURVhULCBzaWduYXR1cmUgVEVYVCwga2V5SUQgVEVYVCwgZWFy
bGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBSRUFMLCAiCi0gICAgIkZPUkVJR04gS0VZKHNv
dXJjZVNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9O
IERFTEVURSBDQVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVG
RVJFTkNFUyAiCi0gICAgIk9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NB
REUpIl9zOwotCiAvLyBDUkVBVEUgVU5JUVVFIElOREVYIFF1ZXJpZXMuCiBjb25zdGV4cHIgYXV0
byBjcmVhdGVVbmlxdWVJbmRleFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyA9ICJD
UkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJh
bWVEb21haW5zX2RvbWFpbklEX3RvcExldmVsRG9tYWluSUQgb24gU3RvcmFnZUFjY2Vzc1VuZGVy
VG9wRnJhbWVEb21haW5zICggZG9tYWluSUQsIHRvcExldmVsRG9tYWluSUQgKSJfczsKIGNvbnN0
ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyA9ICJD
UkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
b19zb3VyY2VEb21haW5JRF90b0RvbWFpbklEIG9uIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8g
KCBzb3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCApIl9zOwpAQCAtMjY1LDggKzIzMyw2IEBAIGNv
bnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9t
YWlucyA9ICJDUkVBVEUgVU5JUVVFCiBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1Qg
RVhJU1RTIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9fc3VicmVzb3VyY2VEb21haW5JRF90
b0RvbWFpbklEIG9uIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gKCBzdWJyZXNvdXJjZURv
bWFpbklELCB0b0RvbWFpbklEICkiX3M7CiBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRl
eFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElG
IE5PVCBFWElTVFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tX3N1YnJlc291cmNlRG9t
YWluSURfZnJvbURvbWFpbklEIG9uIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSAoIHN1
YnJlc291cmNlRG9tYWluSUQsIGZyb21Eb21haW5JRCApIl9zOwogY29uc3RleHByIGF1dG8gY3Jl
YXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcyA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5P
VCBFWElTVFMgT3BlcmF0aW5nRGF0ZXNfeWVhcl9tb250aF9tb250aERheSBvbiBPcGVyYXRpbmdE
YXRlcyAoIHllYXIsIG1vbnRoLCBtb250aERheSApIl9zOwotY29uc3RleHByIGF1dG8gY3JlYXRl
VW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUg
VU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEIG9uIFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0
aW5hdGlvblNpdGVEb21haW5JRCApIl9zOwotY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5k
ZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRF
WCBJRiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudF9zb3VyY2VT
aXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQgb24gQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCApIl9zOwogCiAvLyBBZGQgb25lIHRvIHRoZSBjb3VudCBvZiB0aGUgYWJvdmUgaW5kZXgg
cXVlcmllcyB0byBhY2NvdW50IGZvciB0aGUgT2JzZXJ2ZWREb21haW5zIHRhYmxlLCB3aGljaCBo
YXMgYW4gaW5kZXggYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IFNRTGl0ZSBiZWNhdXNlIG9mIGl0
cyBwcmltYXJ5IGtleS4KIGNvbnN0IGludCBleHBlY3RlZEluZGV4Q291bnQgPSAxNDsKQEAgLTI4
MSwxOCArMjQ3LDYgQEAgc3RhdGljIGNvbnN0IFN0cmluZyBPYnNlcnZlZERvbWFpbnNUYWJsZVNj
aGVtYVYxQWx0ZXJuYXRlKCkKICAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIk9ic2VydmVkRG9t
YWluc1wiIChkb21haW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBU
RVhUIE5PVCBOVUxMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBsYXN0U2VlbiBSRUFMIE5PVCBO
VUxMLCBoYWRVc2VySW50ZXJhY3Rpb24gSU5URUdFUiBOT1QgTlVMTCwgbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUgUkVBTCBOT1QgTlVMTCwgZ3JhbmRmYXRoZXJlZCBJTlRFR0VSIE5PVCBO
VUxMLCBpc1ByZXZhbGVudCBJTlRFR0VSIE5PVCBOVUxMLCBpc1ZlcnlQcmV2YWxlbnQgSU5URUdF
UiBOT1QgTlVMTCwgZGF0YVJlY29yZHNSZW1vdmVkIElOVEVHRVIgTk9UIE5VTEwsdGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIElOVEVHRVIgTk9UIE5VTEwsIHRp
bWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgSU5URUdFUiBOT1Qg
TlVMTCxpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsIElOVEVHRVIgTk9UIE5V
TEwpIl9zOwogfQogCi1zdGF0aWMgY29uc3QgRXhwZWN0ZWRDb2x1bW5zJiBleHBlY3RlZFVuYXR0
cmlidXRlZENvbHVtbnMoKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNvbHVtbnMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geyAic291cmNlU2l0ZURvbWFpbklEIl9zLCAi
ZGVzdGluYXRpb25TaXRlRG9tYWluSUQiX3MsICJzb3VyY2VJRCJfcywgInRpbWVPZkFkQ2xpY2si
X3MsICJ0b2tlbiJfcywgInNpZ25hdHVyZSJfcywgImtleUlEIl9zIH0pOwotICAgIHJldHVybiBj
b2x1bW5zLmdldCgpOwotfQotCi1zdGF0aWMgY29uc3QgRXhwZWN0ZWRDb2x1bW5zJiBleHBlY3Rl
ZEF0dHJpYnV0ZWRDb2x1bW5zKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjb2x1bW5zID0g
bWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgInNvdXJjZVNpdGVEb21haW5JRCJf
cywgImRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl9zLCAic291cmNlSUQiX3MsICJhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhIl9zLCAicHJpb3JpdHkiX3MsICJ0aW1lT2ZBZENsaWNrIl9zLCAiZWFybGll
c3RUaW1lVG9TZW5kVG9Tb3VyY2UiX3MsICJ0b2tlbiJfcywgInNpZ25hdHVyZSJfcywgImtleUlE
Il9zLCAiZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiJfcyB9KTsKLSAgICByZXR1cm4g
Y29sdW1ucy5nZXQoKTsKLX0KLQogc3RhdGljIGJvb2wgbmVlZHNOZXdDcmVhdGVUYWJsZVNjaGVt
YShjb25zdCBTdHJpbmcmIHNjaGVtYSkKIHsKICAgICByZXR1cm4gc2NoZW1hLmNvbnRhaW5zKCJS
RUZFUkVOQ0VTIFRvcExldmVsRG9tYWlucyIpOwpAQCAtMzE5LDggKzI3Myw2IEBAIHN0YXRpYyBj
b25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJs
ZUFuZEluZGV4UGFpcj4mCiAgICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8i
X3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVk
VmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkgfSwK
ICAgICAgICAgeyAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBzdGQ6Om1ha2Vf
cGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRl
VW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pKSB9LAogICAgICAgICB7
ICJPcGVyYXRpbmdEYXRlcyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4+KGNyZWF0ZU9wZXJhdGluZ0RhdGVzLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3Rv
cmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcykpIH0sCi0gICAgICAgIHsg
IlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVV
bmlxdWVJbmRleFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgfSwKLSAgICAg
ICAgeyAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFp
cjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRl
VW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB9CiAgICAgfSk7
CiAgICAgCiAgICAgcmV0dXJuIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXM7CkBAIC0zNDks
MTcgKzMwMSwxMyBAQCBIYXNoU2V0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Kj4mIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0bwogCiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUo
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgU3VzcGVuZGFibGVXb3JrUXVl
dWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoc3RvcmUsIHdvcmtR
dWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKLSAgICAsIG1fc3RvcmFnZURpcmVjdG9yeVBh
dGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnlQ
YXRoLCAib2JzZXJ2YXRpb25zLmRiIl9zKSkKLSAgICAsIG1fdHJhbnNhY3Rpb24obV9kYXRhYmFz
ZSkKKyAgICAsIERhdGFiYXNlVXRpbGl0aWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChzdG9yYWdlRGlyZWN0b3J5UGF0aCwgIm9ic2VydmF0aW9ucy5kYiJfcykpCiAgICAg
LCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAgICBlbmFibGVG
b3JlaWduS2V5cygpOwotCi0gICAgLy8gU2luY2Ugd2UgYXJlIHVzaW5nIGEgd29ya2VyUXVldWUs
IHRoZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBtYXkgYmUgY2FsbGVkIGJ5IGRpZmZlcmVu
dCB0aHJlYWRzLgotICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogICAg
IAogICAgIGlmICghbV9kYXRhYmFzZS50dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKSkKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSBmYWlsZWQsIGVy
cm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKQEAgLTM3NCw0MyArMzIyLDkgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6On5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSgpCiAgICAg
YWxsU3RvcmVzKCkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbG9zZSgpCi17Ci0gICAgZGVzdHJveVN0YXRlbWVudHMoKTsKLSAg
ICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkKLSAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwot
fQotCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuSVRQRGF0
YWJhc2UoKQogewotICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3N0b3JhZ2VEaXJl
Y3RvcnlQYXRoKSkgewotICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpKSkgewotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiBGYWlsZWQg
dG8gY3JlYXRlIGRpcmVjdG9yeSBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywg
dGhpcywgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlRmlsZSA9IHRydWU7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1faXNOZXdSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlID0gZmFsc2U7Ci0KLSAgICBpZiAoIW1fZGF0YWJh
c2Uub3BlbihtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGRhdGFi
YXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBzZXRCdXN5VGltZW91
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIGJ1c3lfdGltZW91dCA9IDUw
MDAiX3MpOwotICAgIGlmICghc2V0QnVzeVRpbWVvdXQgfHwgc2V0QnVzeVRpbWVvdXQtPnN0ZXAo
KSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRCdXN5VGltZW91dCBm
YWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VGaWxlKSB7Ci0gICAgICAgIGlmICghY3JlYXRlU2NoZW1hKCkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hlbWEgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAl
IiBQVUJMSUNfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklO
RywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0
aC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQorICAgIG1faXNOZXdSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlID0gb3BlbkRhdGFiYXNlQW5kQ3JlYXRlU2NoZW1hSWZO
ZWNlc3NhcnkoKSA9PSBDcmVhdGVkTmV3RmlsZTo6WWVzOwogfQogCiBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2hlY2tG
b3JNaXNzaW5nVGFibGVzSW5TY2hlbWEoKQpAQCAtNDk1LDE2ICs0MDksNiBAQCBUYWJsZUFuZElu
ZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxl
QW5kSW5kZXhRdWVyaQogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPj4oV1RGTW92ZShjcmVhdGVUYWJsZVF1ZXJ5KSwgV1RGTW92ZShpbmRleCkp
OwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpuZWVkc1Vw
ZGF0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFNjaGVtYSgpCi17Ci0gICAgYXV0byBjdXJyZW50
U2NoZW1hID0gY3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKCJBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQiX3MpLmZpcnN0OwotCi0gICAgaWYgKCFjdXJyZW50U2NoZW1hLmlzRW1w
dHkoKSAmJiBjdXJyZW50U2NoZW1hICE9IGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pc3NpbmdVbmlxdWVJ
bmRpY2VzKCkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudCgiU0VMRUNUIENPVU5UKCopIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ2lu
ZGV4JyJfcyk7CkBAIC01MzcsNyArNDQxLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bmVlZHNVcGRhdGVkU2NoZW1hKCkKIHsKICAgICAvLyBUaGVyZSBhcmUg
MyBjYXNlcyB3aGVyZSB3ZSBleHBlY3QgcG90ZW50aWFsIHNjaGVtYSBjaGFuZ2VzIGR1ZSB0byB1
cGdyYWRlcy4KICAgICAvLyBBbGwgb3RoZXIgdGFibGVzIHNob3VsZCBiZSB1cC10by1kYXRlLCBz
byB3ZSBzaG91bGQgQVNTRVJUIHRoYXQgdGhleSBhcmUgY29ycmVjdC4KLSAgICBpZiAobWlzc2lu
Z1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCkgfHwgbmVlZHNVcGRhdGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTY2hlbWEoKSB8fCBtaXNzaW5nVW5pcXVlSW5kaWNlcygpKQorICAgIGlmICht
aXNzaW5nUmVmZXJlbmNlVG9PYnNlcnZlZERvbWFpbnMoKSB8fCBtaXNzaW5nVW5pcXVlSW5kaWNl
cygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgdGFibGUgOiBleHBl
Y3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7CkBAIC01NjIsMTIgKzQ2Niw2IEBA
IHN0YXRpYyBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gaW5zZXJ0RGlzdGluY3RWYWx1
ZXNJblRhYmxlU3RhdGVtZW50KFNRTGl0CiAgICAgaWYgKHRhYmxlID09ICJUb3BGcmFtZUxpbmtE
ZWNvcmF0aW9uc0Zyb20iKQogICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dCgiSU5TRVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFNFTEVDVCB0b0RvbWFp
bklELCBNQVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWluSUQgRlJPTSBfVG9wRnJhbWVMaW5rRGVj
b3JhdGlvbnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQsIGZyb21Eb21haW5JRCJfcyk7CiAKLSAg
ICBpZiAodGFibGUgPT0gIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IikKLSAg
ICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFTEVDVCBzb3VyY2VTaXRlRG9tYWluSUQs
IGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJRCwgTUFYKHRpbWVPZkFkQ2xpY2spLCB0
b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCBGUk9NIF9VbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBHUk9VUCBCWSBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEIl9zKTsKLQotICAgIGlmICh0YWJsZSA9PSAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50IikKLSAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VS
VCBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxFQ1Qgc291cmNlU2l0
ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQsIGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEsIHByaW9yaXR5LCBNQVgodGltZU9mQWRDbGljayksIGVhcmxpZXN0VGltZVRv
U2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1lVG9TZW5k
VG9EZXN0aW5hdGlvbiBGUk9NIF9BdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgR1JP
VVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCJfcyk7Ci0K
ICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiSU5T
RVJUIElOVE8gIiwgdGFibGUsICIgU0VMRUNUIERJU1RJTkNUICogRlJPTSBfIiwgdGFibGUpKTsK
IH0KIApAQCAtNjYwLDE1ICs1NTgsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUoU3RyaW5nJiYgdGFibAogICAgIH0K
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2lu
Z0NvbHVtbnNJZk5lY2Vzc2FyeSgpCi17Ci0gICAgY29uc3QgYXV0byB1bmF0dHJpYnV0ZWRUYWJs
ZU5hbWUgPSAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci0gICAgY29u
c3QgYXV0byBhdHRyaWJ1dGVkVGFibGVOYW1lID0gIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCJfczsKLQotICAgIGFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSh1bmF0dHJpYnV0ZWRU
YWJsZU5hbWUsIGNvbHVtbnNGb3JUYWJsZSh1bmF0dHJpYnV0ZWRUYWJsZU5hbWUpLCBleHBlY3Rl
ZFVuYXR0cmlidXRlZENvbHVtbnMoKSk7Ci0gICAgYWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKGF0
dHJpYnV0ZWRUYWJsZU5hbWUsIGNvbHVtbnNGb3JUYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lKSwg
ZXhwZWN0ZWRBdHRyaWJ1dGVkQ29sdW1ucygpKTsKLX0KLQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVuYW1lQ29sdW1uSW5UYWJsZShTdHJpbmcmJiB0YWJsZU5h
bWUsIEV4aXN0aW5nQ29sdW1uTmFtZSYmIGV4aXN0aW5nQ29sdW1uTmFtZSwgRXhwZWN0ZWRDb2x1
bW5OYW1lJiYgZXhwZWN0ZWRDb2x1bW5OYW1lKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0
YWJsZU5hbWUsICIgUkVOQU1FIENPTFVNTiAiLCBleGlzdGluZ0NvbHVtbk5hbWUsICIgVE8gIiwg
ZXhwZWN0ZWRDb2x1bW5OYW1lKSk7CkBAIC02ODQsMzAgKzU3Myw2IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbmFtZUNvbHVtbkluVGFibGUoU3RyaW5nJiYg
dGFibGVOYW1lCiAgICAgfQogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZW5hbWVDb2x1bW5zSWZOZWNlc3NhcnkoKQotewotICAgIC8vIEF0dHJpYnV0ZWQg
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBjYXNlLgotICAgIGNvbnN0IGF1dG8gYXR0cmlidXRl
ZFRhYmxlTmFtZSA9ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci0gICAg
Y29uc3QgYXV0byBvbGRFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4gPSAiZWFybGllc3RUaW1lVG9T
ZW5kIl9zOwotICAgIGNvbnN0IGF1dG8gbmV3RWFybGllc3RUaW1lVG9TZW5kQ29sdW1uID0gImVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlIl9zOwotICAgIGNvbnN0IGF1dG8gb2xkQXR0cmlidXRp
b25EZXN0aW5hdGlvbkNvbHVtbiA9ICJhdHRyaWJ1dGVPblNpdGVEb21haW5JRCJfczsKLSAgICBj
b25zdCBhdXRvIG5ld0F0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4gPSAiZGVzdGluYXRpb25T
aXRlRG9tYWluSUQiX3M7Ci0gICAgY29uc3QgYXV0byBmb3VuZEF0dHJpYnV0ZWRUYWJsZUNvbHVt
bnMgPSBjb2x1bW5zRm9yVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSk7Ci0KLSAgICBpZiAoZm91
bmRBdHRyaWJ1dGVkVGFibGVDb2x1bW5zLmNvbnRhaW5zKG9sZEVhcmxpZXN0VGltZVRvU2VuZENv
bHVtbikpCi0gICAgICAgIHJlbmFtZUNvbHVtbkluVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwg
b2xkRWFybGllc3RUaW1lVG9TZW5kQ29sdW1uLCBuZXdFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4p
OwotCi0gICAgaWYgKGZvdW5kQXR0cmlidXRlZFRhYmxlQ29sdW1ucy5jb250YWlucyhvbGRBdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uKSkKLSAgICAgICAgcmVuYW1lQ29sdW1uSW5UYWJsZShh
dHRyaWJ1dGVkVGFibGVOYW1lLCBvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uLCBuZXdB
dHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uKTsKLQotICAgIC8vIFVuYXR0cmlidXRlZCBQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50IGNhc2UuCi0gICAgYXV0byB1bmF0dHJpYnV0ZWRUYWJsZU5h
bWUgPSAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci0gICAgYXV0byBm
b3VuZFVuYXR0cmlidXRlZFRhYmxlQ29sdW1ucyA9IGNvbHVtbnNGb3JUYWJsZSh1bmF0dHJpYnV0
ZWRUYWJsZU5hbWUpOwotCi0gICAgaWYgKGZvdW5kVW5hdHRyaWJ1dGVkVGFibGVDb2x1bW5zLmNv
bnRhaW5zKG9sZEF0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4pKQotICAgICAgICByZW5hbWVD
b2x1bW5JblRhYmxlKHVuYXR0cmlidXRlZFRhYmxlTmFtZSwgb2xkQXR0cmlidXRpb25EZXN0aW5h
dGlvbkNvbHVtbiwgbmV3QXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbik7Ci19Ci0KIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdUYWJsZXNJZk5l
Y2Vzc2FyeSgpCiB7CiAgICAgYXV0byBtaXNzaW5nVGFibGVzID0gY2hlY2tGb3JNaXNzaW5nVGFi
bGVzSW5TY2hlbWEoKTsKQEAgLTc0OCw3ICs2MTMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKQogICAg
ICAgICBpZiAoc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICAgICAg
TE9HX0VSUk9SKCJFcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3Ig
dGhlIE9ic2VydmVkIERvbWFpbnMgdGFibGUuIik7CiAgICAgICAgICAgICBjbG9zZSgpOwotICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsK
KyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRmlsZVBhdGgpOwog
ICAgICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTc2MiwzMiArNjI3LDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpCiAgICAgLy8gRklY
TUU6IE1pZ3JhdGUgb2xkIE9ic2VydmVkRG9tYWlucyBkYXRhIHRvIG5ldyB0YWJsZSBzY2hlbWEu
CiAgICAgaWYgKGN1cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMSgp
ICYmIGN1cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMUFsdGVybmF0
ZSgpKSB7CiAgICAgICAgIGNsb3NlKCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9zdG9yYWdlRmlsZVBhdGgpOwogICAgICAgICBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIC8vIFJlbmFtaW5nIGFuZCBhZGRpbmcgY29sdW1ucyBzaG91
bGQgYmUgZG9uZSBiZWZvcmUgbWlncmF0aW5nIHRvIGF2b2lkIG1pc21hdGNoZWQgb3IgbWlzc2lu
ZyBjb2x1bW5zLgotICAgIHJlbmFtZUNvbHVtbnNJZk5lY2Vzc2FyeSgpOwotICAgIGFkZE1pc3Np
bmdDb2x1bW5zSWZOZWNlc3NhcnkoKTsKICAgICBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNl
c3NhcnkoKTsKIH0KIAotU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNjb3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBBU0NJSUxpdGVyYWwgcXVlcnks
IGNvbnN0IFN0cmluZyYgbG9nU3RyaW5nKSBjb25zdAotewotICAgIGlmICghc3RhdGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gc3RhdGVtZW50T3JFcnJvciA9IG1fZGF0YWJhc2UucHJlcGFyZUhlYXBT
dGF0ZW1lbnQocXVlcnkpOwotICAgICAgICBpZiAoIXN0YXRlbWVudE9yRXJyb3IpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjolcyBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9y
IG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBsb2dTdHJpbmcuYXNjaWkoKS5k
YXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0
U2NvcGUgeyB9OwotICAgICAgICB9Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudE9yRXJy
b3IudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2Uu
aXNPcGVuKCkpOwotICAgIH0KLSAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2Nv
cGUgeyBzdGF0ZW1lbnQuZ2V0KCkgfTsKLX0KLQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aW50ZXJydXB0KCkKIHsKICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4o
KSkKQEAgLTgyMSw5ICs2NjksNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKCkKICAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhl
Y3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
KQogICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRl
eFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkKICAgICAgICAgfHwgIW1fZGF0YWJhc2Uu
ZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zKQotICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmlx
dWVJbmRleE9wZXJhdGluZ0RhdGVzKQotICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29t
bWFuZChjcmVhdGVVbmlxdWVJbmRleFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
KQotICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRl
eEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIHsKKyAgICAgICAgfHwgIW1fZGF0
YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcykpIHsK
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVVuaXF1ZUluZGljZXMgZmFpbGVkIHRvIGV4ZWN1
dGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTg5OSwx
NiArNzQ1LDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3Jl
YXRlU2NoZW1hKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghbV9k
YXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIs
IG1fZGF0YWJhc2UubGFzdEVycm9yKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJv
cigpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQogICAgIGlmICghY3JlYXRlVW5pcXVlSW5kaWNlcygpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTk1NiwyMSArNzkyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6ZGVzdHJveVN0YXRlbWVudHMoKQogICAgIG1fdW5pcXVlUmVkaXJlY3RF
eGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOwogICAgIG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3Rh
dGVtZW50ID0gbnVsbHB0cjsKICAgICBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQgPSBudWxscHRy
OwotICAgIG1faW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1l
bnQgPSBudWxscHRyOwotICAgIG1faW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX3NldFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2NsZWFyVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAg
IG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxs
cHRyOwotICAgIG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQg
PSBudWxscHRyOwotICAgIG1fYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvbnNTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fYWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2ZpbmRVbmF0dHJp
YnV0ZWRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fZmluZEF0dHJpYnV0ZWRTdGF0ZW1lbnQg
PSBudWxscHRyOwogICAgIG1fdXBkYXRlQXR0cmlidXRpb25zRWFybGllc3RUaW1lVG9TZW5kU3Rh
dGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX3JlbW92ZVVuYXR0cmlidXRlZFN0YXRlbWVudCA9IG51
bGxwdHI7Ci0gICAgbV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQgPSBudWxscHRy
OwotICAgIG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQgPSBudWxscHRy
OwotICAgIG1fZWFybGllc3RUaW1lc1RvU2VuZFN0YXRlbWVudCA9IG51bGxwdHI7CiB9CiAKIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9t
YWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGxvYWRTdGF0aXN0aWNzKQpAQCAtMjI4
Nyw3ICsyMTA5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y2xlYXJEYXRhYmFzZUNvbnRlbnRzKCkKICAgICBtX2RhdGFiYXNlLmNsZWFyQWxsVGFibGVzKCk7
CiAKICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVh
ckRhdGFiYXNlQ29udGVudHMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcgIiwgZGF0YWJhc2UgcGF0aDogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRzIGZhaWxlZCwg
ZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9z
dG9yYWdlRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzE1NSw1MTMgKzI5NzcsNiBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlz
dGljRm9yVGVzdGluZyhjb25zdAogICAgIH0KIH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQs
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkK
LXsKLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWlu
SUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOwotICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9t
YWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDEp
KTsKLSAgICBhdXRvIHNvdXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMik7Ci0gICAgYXV0
byB0aW1lT2ZBZENsaWNrID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUo
NSkgOiBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgzKTsKLSAgICBhdXRvIHRva2VuID0gYXR0cmli
dXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRy
aWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDQpOwotICAgIGF1dG8gc2lnbmF0dXJlID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1
bW5UZXh0KDgpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDUpOwotICAgIGF1dG8ga2V5SUQgPSBh
dHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6
OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtblRleHQoOSkgOiBzdGF0ZW1lbnQtPmNvbHVt
blRleHQoNik7Ci0KLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbihXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoc291cmNlSUQpLCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZShSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHNvdXJjZVNpdGVEb21h
aW4pKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGlu
YXRpb25TaXRlKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFi
bGVEb21haW5TdHJpbmcoZGVzdGluYXRpb25TaXRlRG9tYWluKSksIHsgfSwgeyB9LCBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHModGltZU9mQWRDbGljaykpOwotICAgIAotICAgIGlmIChhdHRyaWJ1
dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJp
YnV0ZWQpIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gc3RhdGVtZW50
LT5jb2x1bW5JbnQoMyk7Ci0gICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0ZW1lbnQtPmNvbHVt
bkludCg0KTsKLSAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA9IHN0
YXRlbWVudC0+Y29sdW1uRG91YmxlKDYpOwotICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRWFybGll
c3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxMCk7Ci0KLSAgICAg
ICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEpCi0gICAgICAgICAgICBhdHRyaWJ1
dGlvbi5zZXRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlByaW9yaXR5KHBy
aW9yaXR5KSB9KTsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBzb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmQ7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kOwotICAgICAgICAKLSAgICAgICAgLy8gQSB2YWx1ZSBvZiAw
LjAgaW5kaWNhdGVzIHRoYXQgdGhlIHJlcG9ydCBoYXMgYmVlbiBzZW50IHRvIHRoZSByZXNwZWN0
aXZlIHNpdGUuCi0gICAgICAgIGlmIChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA+IDAu
MCkKLSAgICAgICAgICAgIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyhzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSk7Ci0KLSAgICAgICAgaWYg
KGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCi0gICAgICAgICAgICBk
ZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhk
ZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlKTsKLQotICAgICAgICBhdHRyaWJ1dGlv
bi5zZXRUaW1lc1RvU2VuZCh7IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCwgZGVzdGluYXRpb25F
YXJsaWVzdFRpbWVUb1NlbmQgfSk7Ci0gICAgfQotCi0gICAgYXR0cmlidXRpb24uc2V0U291cmNl
U2VjcmV0VG9rZW4oeyB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCB9KTsKLQotICAgIHJldHVybiBh
dHRyaWJ1dGlvbjsKLX0KLQotc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+LCBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5k
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRl
KQotewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoc291cmNlU2l0ZS5y
ZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRv
bWFpbklEKGRlc3RpbmF0aW9uU2l0ZS5yZWdpc3RyYWJsZURvbWFpbik7Ci0KLSAgICBpZiAoIXNv
dXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Ci0KLSAgICBh
dXRvIGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1l
bnQobV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnksICJm
aW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOwotICAgIGlmICghZmluZFVuYXR0cmlidXRl
ZFNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5h
dGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xP
R19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnks
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQot
ICAgIGF1dG8gZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9maW5kQXR0cmlidXRlZFN0YXRlbWVudCwgZmluZEF0dHJpYnV0ZWRRdWVyeSwgImZp
bmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7Ci0gICAgaWYgKCFmaW5kQXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudAotICAgICAgICB8fCBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+
YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
ZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9S
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRBdHRyaWJ1dGVkUXVlcnksIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHN0ZDo6
b3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50OwotICAgIGlmIChmaW5kVW5hdHRyaWJ1dGVkU2NvcGVk
U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgdW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURh
dGFiYXNlKGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOwotCi0gICAgc3RkOjpv
cHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDsKLSAgICBpZiAoZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgPSBidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKGZp
bmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7Ci0KLSAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIodW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIGF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlIGF0dHJpYnV0aW9uVHlwZSkKLXsKLSAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdp
blRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAgIGF1dG8gc291cmNlRGF0YSA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGF0dHJpYnV0aW9uLnNvdXJj
ZVNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgYXV0byBhdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uRGF0YSA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGF0
dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLQotICAgIGlm
ICghc291cmNlRGF0YS5zZWNvbmQgfHwgIWF0dHJpYnV0aW9uRGVzdGluYXRpb25EYXRhLnNlY29u
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgc291cmNlVW5saW5rYWJsZVRva2VuID0g
YXR0cmlidXRpb24uc291cmNlVW5saW5rYWJsZVRva2VuKCk7Ci0gICAgaWYgKGF0dHJpYnV0aW9u
VHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRl
ZCkgewotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBhdHRyaWJ1dGlvbi5h
dHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKCkudmFsdWUoKS5kYXRhIDogLTE7Ci0gICAgICAgIGF1dG8gcHJpb3JpdHkgPSBhdHRyaWJ1
dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKCkudmFsdWUoKS5wcmlvcml0eSA6IC0xOwotICAgICAgICBhdXRvIHNvdXJjZUVh
cmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNlRWFybGll
c3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5zb3VyY2VFYXJsaWVzdFRp
bWVUb1NlbmQudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgOiAtMTsKLSAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVz
VG9TZW5kKCkuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPyBhdHRyaWJ1dGlvbi50aW1l
c1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpIDogLTE7Ci0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJl
IGluc2VydGluZyBhbiBhdHRyaWJ1dGVkIHByaXZhdGUgY2xpY2sgbWVhc3VyZW1lbnQgdmFsdWUg
aW50byB0aGUgZGF0YWJhc2Ugd2l0aG91dCB2YWxpZCByZXBvcnQgdGltZXMuCi0gICAgICAgIEFT
U0VSVChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEgJiYgZGVzdGluYXRpb25FYXJsaWVz
dFRpbWVUb1NlbmQgIT0gLTEpOwotCi0gICAgICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFz
ZS5wcmVwYXJlU3RhdGVtZW50KGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFF1ZXJ5KTsKLSAgICAgICAgaWYgKCFzdGF0ZW1lbnQKLSAgICAgICAgICAgIHx8IHN0YXRlbWVu
dC0+YmluZEludCgxLCAqc291cmNlRGF0YS5zZWNvbmQpICE9IFNRTElURV9PSwotICAgICAgICAg
ICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9uRGF0YS5z
ZWNvbmQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDMs
IGF0dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwg
c3RhdGVtZW50LT5iaW5kSW50KDQsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDUsIHByaW9yaXR5KSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg2LCBhdHRyaWJ1dGlv
bi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg3LCBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5k
VGV4dCg4LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnRv
a2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8
fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDksIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVu
bGlua2FibGVUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FM
SVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEwLCBzb3VyY2VVbmxp
bmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1w
dHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRE
b3VibGUoMTEsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAg
ICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBp
bnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFy
ZVN0YXRlbWVudChpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5
KTsKLSAgICBpZiAoIXN0YXRlbWVudAotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
KnNvdXJjZURhdGEuc2Vjb25kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LT5i
aW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9uRGF0YS5zZWNvbmQpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMywgYXR0cmlidXRpb24uc291cmNlSUQo
KS5pZCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg0LCBh
dHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg1LCBzb3VyY2VVbmxp
bmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1w
dHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQo
Niwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT5zaWduYXR1
cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3Rh
dGVtZW50LT5iaW5kVGV4dCg3LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmth
YmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElU
UF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50IGluc2VydFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpCi17Ci0gICAgYXV0byBzY29wZWRTdGF0
ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEFzRXhwaXJlZFN0YXRlbWVudCwgc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRRdWVyeSwgIm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmciX3MpOwotCi0gICAgaWYgKCFzY29w
ZWRTdGF0ZW1lbnQgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsK
LSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmIGF0dHJpYnV0aW9uKQotewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0g
ZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLSAg
ICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVz
dGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotCi0gICAgaWYgKCFzb3VyY2VTaXRl
RG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9y
ZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQsIHJlbW92ZVVuYXR0cmlidXRlZFF1ZXJ5LCAicmVt
b3ZlVW5hdHRyaWJ1dGVkIl9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50Ci0gICAgICAg
IHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5h
dGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVu
dC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJP
UihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnJlbW92ZVVuYXR0cmlidXRlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3Qg
U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUm
IGRlc3RpbmF0aW9uU2l0ZSwgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEpCi17Ci0gICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBjbGVhciBleHBpcmVkIGNsaWNr
cyBmcm9tIHRoZSBkYXRhYmFzZSBiZWZvcmUgc2NoZWR1bGluZyBhbiBhdHRyaWJ1dGlvbi4KLSAg
ICBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotCi0gICAgaWYgKCFhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhLmlzVmFsaWQoKSkgewotICAgICAgICBpZiAoVU5MSUtFTFkoZGVi
dWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgIkdvdCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9uLiIpOwotICAgICAg
ICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1l
YXN1cmVtZW50XSBHb3QgYW4gaW52YWxpZCBhdHRyaWJ1dGlvbi4iX3MpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgYXV0byBkYXRhID0gYXR0
cmlidXRpb25UcmlnZ2VyRGF0YS5kYXRhOwotICAgIGF1dG8gcHJpb3JpdHkgPSBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLnByaW9yaXR5OwotCi0gICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJs
ZWQoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIkdvdCBhbiBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJXtw
dWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUuIiwgZGF0YSwgcHJpb3JpdHkpOwotICAg
ICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gYXR0cmlidXRpb24gd2l0aCBhdHRyaWJ1dGlvbiB0
cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHks
ICInLiJfcykpOwotICAgIH0KLQotICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblNlY29uZHNVbnRpbFNlbmREYXRhIHNlY29uZHNVbnRpbFNlbmQgeyBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCB9OwotCi0gICAgYXV0byBhdHRyaWJ1dGlvbiA9IGZpbmRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUpOwotICAgIGF1dG8mIHBy
ZXZpb3VzbHlVbmF0dHJpYnV0ZWQgPSBhdHRyaWJ1dGlvbi5maXJzdDsKLSAgICBhdXRvJiBwcmV2
aW91c2x5QXR0cmlidXRlZCA9IGF0dHJpYnV0aW9uLnNlY29uZDsKLQotICAgIGlmIChwcmV2aW91
c2x5VW5hdHRyaWJ1dGVkKSB7Ci0gICAgICAgIC8vIEFsd2F5cyBjb252ZXJ0IHRoZSBwZW5kaW5n
IGF0dHJpYnV0aW9uIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgdW5hdHRyaWJ1dGVkIG1hcC4KLSAg
ICAgICAgcmVtb3ZlVW5hdHRyaWJ1dGVkKCpwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKTsKLSAgICAg
ICAgc2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5hdHRy
aWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKSk7Ci0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgdmFsaWQgc2Vjb25k
c1VudGlsU2VuZCB2YWx1ZSBmb3IgYSBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkIHZhbHVlIGJlY2F1
c2UgdGhlcmUgY2FuIGJlIG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uIHdpdGggYSBoaWdoZXIgcHJp
b3JpdHkuCi0gICAgICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRp
bFNlbmRWYWx1ZXMoKSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFVO
TElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lO
Rk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJDb252ZXJ0ZWQgYSBzdG9yZWQgYWQgY2xpY2sg
d2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAl
e3B1YmxpY311LiIsIGRhdGEsIHByaW9yaXR5KTsKLSAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1l
c3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRd
IENvbnZlcnRlZCBhIHN0b3JlZCBhZCBjbGljayB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0
YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicuIl9zKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBwcmV2aW91cyBhdHRyaWJ1
dGlvbiwgb3IgdGhlIG5ldyBhdHRyaWJ1dGlvbiBoYXMgaGlnaGVyIHByaW9yaXR5LCBpbnNlcnQv
dXBkYXRlIHRoZSBkYXRhYmFzZS4KLSAgICAgICAgaWYgKCFwcmV2aW91c2x5QXR0cmlidXRlZCB8
fCBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkLnZhbHVlKCkuaGFzSGlnaGVyUHJpb3JpdHlUaGFuKCpw
cmV2aW91c2x5QXR0cmlidXRlZCkpIHsKLSAgICAgICAgICAgIGluc2VydFByaXZhdGVDbGlja01l
YXN1cmVtZW50KFdURk1vdmUoKnByZXZpb3VzbHlVbmF0dHJpYnV0ZWQpLCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7Ci0KLSAgICAgICAgICAgIGlm
IChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIlJlcGxhY2VkIGEgcHJldmlvdXNs
eSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiBkYXRh
OiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dSBiZWNhdXNlIGl0IGhhZCBoaWdo
ZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOwotICAgICAgICAgICAgICAgIGRlYnVnQnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnRdIFJlcGxhY2VkIGEgcHJldmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5l
dyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBw
cmlvcml0eTogJyJfcywgcHJpb3JpdHksICInIGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0
eS4iX3MpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocHJldmlv
dXNseUF0dHJpYnV0ZWQpIHsKLSAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBuZXcgYXR0cmlidXRp
b24sIHJlLWF0dHJpYnV0ZSB0aGUgb2xkIG9uZSB0byByZXNwZWN0IHRoZSBuZXcgcHJpb3JpdHks
IGJ1dCBvbmx5IGlmIHRoaXMgcmVwb3J0IGhhcwotICAgICAgICAvLyBub3QgYmVlbiBzZW50IHRv
IHRoZSBzb3VyY2Ugb3IgZGVzdGluYXRpb24gc2l0ZSB5ZXQuCi0gICAgICAgIGlmICghcHJldmlv
dXNseUF0dHJpYnV0ZWQudmFsdWUoKS5oYXNQcmV2aW91c2x5QmVlblJlcG9ydGVkKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gc2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3VzbHlBdHRyaWJ1dGVkLnZh
bHVlKCkuYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdURk1vdmUoYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSkpOwotICAgICAgICAgICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1Zh
bGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0KLSAgICAgICAgICAgIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdU
Rk1vdmUoKnByZXZpb3VzbHlBdHRyaWJ1dGVkKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOwotCi0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoZGVi
dWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJSZS1jb252ZXJ0ZWQgYW4gYWQgY2xpY2sgd2l0aCBhIG5l
dyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHByaW9y
aXR5OiAle3B1YmxpY311IGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iLCBkYXRhLCBw
cmlvcml0eSk7Ci0gICAgICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpJbmZv
LCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gUmUtY29udmVydGVkIGFu
IGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAn
Il9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJycgYmVjYXVzZSBp
dCBoYWQgaGlnaGVyIHByaW9yaXR5LiJfcykpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1ZhbGlkU2Vjb25kc1VudGlsU2Vu
ZFZhbHVlcygpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHNl
Y29uZHNVbnRpbFNlbmQ7Ci19Ci0KLVZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFsbEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCi17Ci0gICAgYXV0byBhdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RhdGVtZW50LCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmciX3MpOwotCi0gICAgaWYg
KCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19F
UlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBS
SVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQot
ICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYXR0cmlidXRpb25z
OwotICAgIHdoaWxlIChhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRF
X1JPVykKLSAgICAgICAgYXR0cmlidXRpb25zLmFwcGVuZChidWlsZFByaXZhdGVDbGlja01lYXN1
cmVtZW50RnJvbURhdGFiYXNlKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSk7Ci0KLSAgICBy
ZXR1cm4gYXR0cmlidXRpb25zOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8UmVn
aXN0cmFibGVEb21haW4+IGRvbWFpbikKLXsKLSAgICAvLyBEZWZhdWx0IHRvIGNsZWFyIGFsbCBl
bnRyaWVzIGlmIG5vIGRvbWFpbiBpcyBzcGVjaWZpZWQuCi0gICAgU3RyaW5nIGJpbmRQYXJhbWV0
ZXIgPSAiJSI7Ci0gICAgaWYgKGRvbWFpbikgewotICAgICAgICBhdXRvIGRvbWFpbklEVG9NYXRj
aCA9IGRvbWFpbklEKCpkb21haW4pOwotICAgICAgICBpZiAoIWRvbWFpbklEVG9NYXRjaCkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBiaW5kUGFyYW1ldGVyID0gU3RyaW5nOjpudW1i
ZXIoKmRvbWFpbklEVG9NYXRjaCk7Ci0gICAgfQotCi0gICAgYXV0byB0cmFuc2FjdGlvblNjb3Bl
ID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7Ci0KLSAgICBhdXRvIGNsZWFyVW5hdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fY2xlYXJVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgY2xlYXJVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAiY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCJfcyk7Ci0KLSAgICBpZiAoIWNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50Ci0g
ICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBi
aW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRT
Y29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGF1dG8g
Y2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1f
Y2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGNsZWFyQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJjbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50Il9zKTsKLQotICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50
Ci0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwg
YmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElU
RV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KCkKLXsKLSAgICBhdXRvIGV4cGlyYXRpb25UaW1lRnJhbWUgPSBXYWxsVGltZTo6
bm93KCkgLSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6bWF4QWdlKCk7Ci0gICAg
YXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jbGVhckV4cGly
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgY2xlYXJFeHBpcmVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
Il9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRl
bWVudC0+YmluZERvdWJsZSgxLCBleHBpcmF0aW9uVGltZUZyYW1lLnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
RXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRpb25Ub1N0cmluZyhXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQqIHN0YXRlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGUgYXR0cmlidXRpb25UeXBlKQotewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbiA9IGdldERv
bWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNvbHVtbkludCgwKSk7Ci0gICAgYXV0
byBkZXN0aW5hdGlvblNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3Rh
dGVtZW50LT5jb2x1bW5JbnQoMSkpOwotICAgIGF1dG8gc291cmNlSUQgPSBzdGF0ZW1lbnQtPmNv
bHVtbkludCgyKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFw
cGVuZCgiU291cmNlIHNpdGU6ICIsIHNvdXJjZVNpdGVEb21haW4sICJcbkF0dHJpYnV0ZSBvbiBz
aXRlOiAiLCBkZXN0aW5hdGlvblNpdGVEb21haW4sICJcblNvdXJjZSBJRDogIiwgc291cmNlSUQp
OwotCi0gICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgewotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCgzKTsKLSAgICAgICAgYXV0byBwcmlvcml0
eSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDQpOwotICAgICAgICBhdXRvIGVhcmxpZXN0VGltZVRv
U2VuZCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDYpOwotCi0gICAgICAgIGlmIChhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhICE9IC0xKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5BdHRy
aWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICIsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsICJcbkF0dHJp
YnV0aW9uIHByaW9yaXR5OiAiLCBwcmlvcml0eSwgIlxuQXR0cmlidXRpb24gZWFybGllc3QgdGlt
ZSB0byBzZW5kOiAiKTsKLSAgICAgICAgICAgIGlmIChlYXJsaWVzdFRpbWVUb1NlbmQgPT0gLTEp
Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIk5vdCBzZXQiKTsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8gc2Vjb25kc1VudGlsU2VuZCA9IFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhlYXJsaWVzdFRpbWVUb1NlbmQpIC0gV2FsbFRpbWU6Om5vdygpOwot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChzZWNvbmRzVW50aWxTZW5kID49IDI0X2gg
JiYgc2Vjb25kc1VudGlsU2VuZCA8PSA0OF9oKSA/ICJXaXRoaW4gMjQtNDggaG91cnMiIDogIk91
dHNpZGUgMjQtNDggaG91cnMiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7
Ci0gICAgfSBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbk5vIGF0dHJpYnV0aW9uIHRy
aWdnZXIgZGF0YS4iKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpCi17Ci0gICAgYXV0
byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIlNFTEVDVCAoU0VMRUNUIENPVU5UKCopIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDEsIChTRUxFQ1QgQ09VTlQoKikgRlJPTSBBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDIiX3MpOwotICAgIGlmICghcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzIHx8IHByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0
YUV4aXN0cy0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQ
UklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0K
LSAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+Y29sdW1uSW50KDAp
ICYmICFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmNvbHVtbkludCgxKSkKLSAg
ICAgICAgcmV0dXJuICJcbk5vIHN0b3JlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGRhdGEu
XG4iX3M7Ci0KLSAgICBhdXRvIHVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNj
b3BlZFN0YXRlbWVudChtX2FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25zU3RhdGVtZW50LCBhbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uc1F1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyJfcyk7
Ci0KLSAgICBpZiAoIXVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgewotICAgICAgICBJVFBf
UkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB1bnNp
Z25lZCB1bmF0dHJpYnV0ZWROdW1iZXIgPSAwOwotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
LSAgICB3aGlsZSAodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRF
X1JPVykgewotICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSB1bmF0dHJpYnV0ZWROdW1iZXIg
PyAiIiA6ICJVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6IjsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQocHJlZml4LCAiXG5XZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCAiLCArK3VuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKLSAgICAgICAgICAgIGF0dHJpYnV0
aW9uVG9TdHJpbmcodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKSk7Ci0gICAgfQotCi0g
ICAgYXV0byBhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50
KG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBhbGxBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVt
ZW50VG9TdHJpbmciX3MpOwotCi0gICAgaWYgKCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7
Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9T
dHJpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KLQotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZWROdW1iZXIgPSAwOwotICAgIHdoaWxlIChhdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBp
ZiAoIWF0dHJpYnV0ZWROdW1iZXIpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh1bmF0dHJp
YnV0ZWROdW1iZXIgPyAiXG4iIDogIiIsICJBdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnRzOiIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5XZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCAiLCArK2F0dHJpYnV0ZWROdW1iZXIgKyB1bmF0dHJpYnV0ZWROdW1iZXIs
ICdcbicsCi0gICAgICAgICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nKGF0dHJpYnV0ZWRTY29wZWRT
dGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpB
dHRyaWJ1dGVkKSk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0K
LXN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4sIHN0ZDo6
b3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ+PiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRpb24pCi17Ci0gICAgYXV0byBzb3VyY2VT
aXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFi
bGVEb21haW4pOwotICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChh
dHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0KLSAgICBp
ZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Ci0K
LSAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2Vhcmxp
ZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQsIGVhcmxpZXN0VGltZXNUb1NlbmRRdWVyeSwgImVhcmxp
ZXN0VGltZXNUb1NlbmQiX3MpOwotCi0gICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKLSAgICAgICAg
fHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3
b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVhcmxpZXN0VGltZXNU
b1NlbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0g
ICAgc3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+IGVhcmxpZXN0VGltZVRv
U2VuZFRvU291cmNlOwotICAgIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQ+IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb247Ci0gICAgCi0gICAgLy8gQSB2
YWx1ZSBvZiAwLjAgaW5kaWNhdGVzIHRoYXQgdGhlIHJlcG9ydCBoYXMgYmVlbiBzZW50IHRvIHRo
ZSByZXNwZWN0aXZlIHNpdGUuCi0gICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uRG91Ymxl
KDApID4gMC4wKQotICAgICAgICBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9IHNjb3BlZFN0
YXRlbWVudC0+Y29sdW1uRG91YmxlKDApOwotICAgIAotICAgIGlmIChzY29wZWRTdGF0ZW1lbnQt
PmNvbHVtbkRvdWJsZSgxKSA+IDAuMCkKLSAgICAgICAgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0
aW5hdGlvbiA9IHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDEpOwotICAgIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgZWFybGllc3RU
aW1lVG9TZW5kVG9EZXN0aW5hdGlvbik7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZShTb3VyY2VEb21haW5JRCBz
b3VyY2VTaXRlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQpCi17Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1l
bnQobV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQsIG1hcmtSZXBvcnRBc1NlbnRU
b1NvdXJjZVF1ZXJ5LCAibWFya1JlcG9ydEFzU2VudFRvU291cmNlIl9zKTsKLQotICAgIGlmICgh
c2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCBz
b3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPmJpbmRJbnQoMiwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSwgZXJyb3IgbWVzc2FnZTogJSIgUFVC
TElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKFNvdXJjZURvbWFp
bklEIHNvdXJjZVNpdGVEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCBkZXN0aW5hdGlvblNp
dGVEb21haW5JRCkKLXsKLSAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0
YXRlbWVudChtX21hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50LCBtYXJrUmVw
b3J0QXNTZW50VG9EZXN0aW5hdGlvblF1ZXJ5LCAibWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRp
b24iX3MpOwotCi0gICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKLSAgICAgICAgfHwgc2NvcGVkU3Rh
dGVtZW50LT5iaW5kSW50KDEsIHNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRp
b24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclNlbnRBdHRyaWJ1
dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlv
blJlcG9ydEVuZHBvaW50KQoteyAgICAKLSAgICBhdXRvIHRpbWVzVG9TZW5kID0gZWFybGllc3RU
aW1lc1RvU2VuZChhdHRyaWJ1dGlvbik7Ci0gICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmQgPSB0aW1lc1RvU2VuZC5maXJzdDsKLSAgICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1l
VG9TZW5kID0gdGltZXNUb1NlbmQuc2Vjb25kOwotCi0gICAgYXV0byBzb3VyY2VTaXRlRG9tYWlu
SUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4p
OwotICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlv
bi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0KLSAgICBpZiAoIXNvdXJj
ZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHN3aXRjaCAoYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkgewotICAgIGNhc2Ug
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OlNvdXJj
ZToKLSAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpIHsKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSgqc291cmNlU2l0ZURvbWFpbklELCAqZGVz
dGluYXRpb25TaXRlRG9tYWluSUQpOwotICAgICAgICBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQg
PSBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0aW9uOgotICAgICAg
ICBpZiAoIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSB7Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbigqc291cmNlU2l0ZURvbWFpbklELCAqZGVz
dGluYXRpb25TaXRlRG9tYWluSUQpOwotICAgICAgICBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZCA9IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCBjbGVhciB0aGUgYXR0
cmlidXRlIGZyb20gdGhlIGRhdGFiYXNlIHVubGVzcyBpdCBoYXMgYmVlbiByZXBvcnRlZCBib3Ro
IHRvIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHNpdGUuCi0gICAgaWYgKGRlc3RpbmF0aW9u
RWFybGllc3RUaW1lVG9TZW5kIHx8IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVE
b21haW5JRCA9ID8iX3MpOwotICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50Ci0gICAg
ICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURv
bWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50
LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7
Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uIGZhaWxl
ZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1h
cmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygp
Ci17Ci0gICAgYXV0byBleHBpcmVkVGltZVRvU2VuZCA9IFdhbGxUaW1lOjpub3coKSAtIDFfaDsK
LQotICAgIGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2Fy
eSgpOwotCi0gICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudCA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSA/Il9zKTsKLSAgICBh
dXRvIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb25TdGF0ZW1lbnQgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnQoIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgU0VUIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gPSBudWxsIl9zKTsKLQotICAg
IGlmICghZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQKLSAgICAgICAgfHwgZWFy
bGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZXhwaXJlZFRpbWVU
b1NlbmQuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
fHwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGlmICghZWFybGllc3RU
aW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudCB8fCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgSVRQ
X1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICB9Ci19Ci0KLVNjb3BlRXhpdDxGdW5jdGlvbjx2b2lkKCk+PiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5
KCkKLXsKLSAgICBpZiAobV90cmFuc2FjdGlvbi5pblByb2dyZXNzKCkpCi0gICAgICAgIHJldHVy
biBtYWtlU2NvcGVFeGl0KEZ1bmN0aW9uPHZvaWQoKT4geyBbXSB7IH0gfSk7Ci0KLSAgICBtX3Ry
YW5zYWN0aW9uLmJlZ2luKCk7Ci0gICAgcmV0dXJuIG1ha2VTY29wZUV4aXQoRnVuY3Rpb248dm9p
ZCgpPiB7IFt0aGlzXSB7Ci0gICAgICAgIG1fdHJhbnNhY3Rpb24uY29tbWl0KCk7Ci0gICAgfSB9
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBJVFBfUkVMRUFTRV9MT0cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
aW5kZXggMzUxMjk4NjgzODcxYzdlYmQzY2E3OTQ5YjA1OGI0MzgwNTFkZWIxMS4uMDdhNTQ0ZjQ5
ZjRhZGFkN2U1MDZhNTY3NGYzMmFiMmE4MWUxNGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTI3LDIxICsyNywxNiBAQAog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAorI2luY2x1ZGUgIkRhdGFi
YXNlVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVt
ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxwYWwv
U2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU1FMaXRlRGF0YWJhc2U7Ci1j
bGFzcyBTUUxpdGVTdGF0ZW1lbnQ7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93biA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsK
IHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNTYsOCArNTEsNiBAQCBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6YXJyYXk8dW5zaWduZWQsIG51bWJlck9mQnVja2V0c1BlclN0YXRpc3Rp
Yz4gYnVja2V0U2l6ZXMgewogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
OwogY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOwogCi11c2luZyBBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDsKLXVzaW5nIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiB1c2luZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7CiB1c2luZyBBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvbkRlc3RpbmF0aW9uU2l0ZTsKIHVzaW5nIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKQEAg
LTY1LDE1ICs1OCwxMSBAQCB1c2luZyBFeGlzdGluZ0NvbHVtbnMgPSBWZWN0b3I8U3RyaW5nPjsK
IHVzaW5nIEV4cGVjdGVkQ29sdW1ucyA9IFZlY3RvcjxTdHJpbmc+OwogdXNpbmcgRXhpc3RpbmdD
b2x1bW5OYW1lID0gU3RyaW5nOwogdXNpbmcgRXhwZWN0ZWRDb2x1bW5OYW1lID0gU3RyaW5nOwot
dXNpbmcgU291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gZG91YmxlOwotdXNpbmcgRGVzdGluYXRp
b25FYXJsaWVzdFRpbWVUb1NlbmQgPSBkb3VibGU7Ci11c2luZyBTb3VyY2VEb21haW5JRCA9IHVu
c2lnbmVkOwotdXNpbmcgRGVzdGluYXRpb25Eb21haW5JRCA9IHVuc2lnbmVkOwogCiB0eXBlZGVm
IHN0ZDo6cGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4gVGFibGVBbmRJbmRleFBh
aXI7CiAKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBv
biB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4K
LWNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVibGlj
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSB7CitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZSBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUsIHB1YmxpYyBEYXRhYmFzZVV0aWxpdGllcyB7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwg
U3VzcGVuZGFibGVXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJp
bmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgflJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKCk7CkBAIC04Myw3ICs3Miw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQg
Y2xvc2UoKTsKIAogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7CkBAIC0xNDIsMTYgKzEzMCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2Vy
dEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5z
aWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhc1VzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJl
dmFsZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGludGVycnVwdCgpOwogCi0gICAgLy8gUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudC4KLSAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hcmtBbGxVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlk
ZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpB
dHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0
ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4gYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0
aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFyRXhwaXJl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHByaXZhdGVD
bGlja01lYXN1cmVtZW50VG9TdHJpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFyU2VudEF0
dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KSBvdmVycmlk
ZTsKLSAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBp
cmVkRm9yVGVzdGluZygpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNvbHVtbnNGb3JU
YWJsZShjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKQEAgLTE2NCwxOSArMTQyLDE1IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGRNaXNzaW5nVGFibGVzSWZOZWNlc3NhcnkoKTsKICAgICBib29s
IG1pc3NpbmdVbmlxdWVJbmRpY2VzKCk7CiAgICAgYm9vbCBuZWVkc1VwZGF0ZWRTY2hlbWEoKTsK
LSAgICBib29sIG5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NoZW1hKCk7CiAg
ICAgdm9pZCByZW5hbWVDb2x1bW5JblRhYmxlKFN0cmluZyYmLCBFeGlzdGluZ0NvbHVtbk5hbWUm
JiwgRXhwZWN0ZWRDb2x1bW5OYW1lJiYpOwogICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVtbnNUb1Rh
YmxlKFN0cmluZyYmLCBjb25zdCBFeGlzdGluZ0NvbHVtbnMmLCBjb25zdCBFeHBlY3RlZENvbHVt
bnMmKTsKLSAgICB2b2lkIGFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lk
IHJlbmFtZUNvbHVtbnNJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgcmVuYW1lQ29sdW1uSW5UYWJs
ZSgpOwogICAgIFRhYmxlQW5kSW5kZXhQYWlyIGN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyhj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50U2No
ZW1hSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIGVuYWJsZUZvcmVpZ25LZXlzKCk7CiAgICAgYm9v
bCBtaXNzaW5nUmVmZXJlbmNlVG9PYnNlcnZlZERvbWFpbnMoKTsKICAgICB2b2lkIG1pZ3JhdGVE
YXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgZGVzdHJveVN0YXRlbWVudHMo
KTsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBzY29wZWRTdGF0
ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4mLCBBU0NJSUxp
dGVyYWwsIGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIHZvaWQgZGVzdHJveVN0YXRlbWVudHMo
KSBmaW5hbDsKIAogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFp
biYsIGNvbnN0IFN1YkZyYW1lRG9tYWluJikgY29uc3Q7CiAgICAgVmVjdG9yPFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+
IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKQEAgLTIwMSwxMCArMTc1LDYgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uQXNGaXJzdFBhcnR5KCkgY29uc3Q7CiAgICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwg
U3ViUmVzb3VyY2VEb21haW4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcygpIGNvbnN0OwogCi0g
ICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCwgRGVz
dGluYXRpb25Eb21haW5JRCk7Ci0gICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291
cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQpOwotICAgIHN0ZDo6cGFpcjxzdGQ6Om9w
dGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4sIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRp
b25FYXJsaWVzdFRpbWVUb1NlbmQ+PiBlYXJsaWVzdFRpbWVzVG9TZW5kKGNvbnN0IFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7Ci0KICAgICBzdHJ1Y3QgRG9tYWluRGF0YSB7CiAg
ICAgICAgIHVuc2lnbmVkIGRvbWFpbklEOwogICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbjsKQEAgLTI1MywyMCArMjIzLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0RhdGFiYXNlU3RvcmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29s
IGNyZWF0ZVVuaXF1ZUluZGljZXMoKTsKLSAgICBib29sIGNyZWF0ZVNjaGVtYSgpOworICAgIGJv
b2wgY3JlYXRlU2NoZW1hKCkgZmluYWw7CiAgICAgU3RyaW5nIGVuc3VyZUFuZE1ha2VEb21haW5M
aXN0KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgc3RkOjpvcHRpb25h
bDxXYWxsVGltZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgRG9tYWluRGF0
YSYpOwotICAgIAotICAgIHZvaWQgcmVtb3ZlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50Jik7Ci0gICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQqLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7Ci0gICAg
U3RyaW5nIGF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwotICAgIHN0ZDo6cGFpcjxzdGQ6
Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRp
b25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBmaW5kUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25EZXN0aW5hdGlvblNpdGUmKTsKLQotICAgIFNjb3BlRXhpdDxGdW5jdGlvbjx2b2lkKCk+PiBX
QVJOX1VOVVNFRF9SRVRVUk4gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CiAKLSAgICBj
b25zdCBTdHJpbmcgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVU
cmFuc2FjdGlvbiBtX3RyYW5zYWN0aW9uOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0T2Jz
ZXJ2ZWREb21haW5TdGF0ZW1lbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudD4gbV9pbnNlcnRUb3BMZXZlbERvbWFpblN0YXRlbWVudDsKQEAgLTMwNCwyMSAr
MjY0LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQ7CiAgICAgbXV0
YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX29ic2VydmVk
RG9tYWluc0V4aXN0c1N0YXRlbWVudDsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudDsKLSAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZWFybGllc3RU
aW1lc1RvU2VuZFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX2luc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rh
dGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
aW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc2V0VW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jbGVhclVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4gbV9jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2FsbFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fYWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudDsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2ZpbmRBdHRyaWJ1dGVkU3Rh
dGVtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
dXBkYXRlQXR0cmlidXRpb25zRWFybGllc3RUaW1lVG9TZW5kU3RhdGVtZW50OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVtb3ZlVW5hdHRyaWJ1dGVk
U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRp
b25TdGF0ZW1lbnQ7CiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29s
IG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCBh
NzdlMDk4MGFlYTNkMjY1YTE2YTE4NTI0YjQ3ZWVjYmNiYjNjNjk3Li4zZDdmNzVhMDE2MDRmZTZl
MTg0YmRlZTBhODNhMjk2YTI4YjgwYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC0xMDcsMTcgKzEwNyw2IEBAIHB1YmxpYzoKICAg
ICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGFsbERvbWFpbnMoKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhc1Vz
ZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBib29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKIAotICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnQgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBJVFAgbWVtb3J5IHN0b3JlLgotICAg
IHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIG92
ZXJyaWRlIHsgfTsKLSAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlkZSB7IH07Ci0gICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYp
IG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92
ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4pIG92ZXJyaWRlIHsgfTsKLSAg
ICB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGUgeyB9
OwotICAgIFN0cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH07Ci0gICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkgb3ZlcnJpZGUgeyB9OwotICAgIHZv
aWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKCkgb3ZlcnJpZGUgeyB9OwotCiBwcml2YXRlOgogICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNP
cGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKICAgICBjb25zdCBWZWN0b3I8T3Bl
cmF0aW5nRGF0ZT4mIG9wZXJhdGluZ0RhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdE
YXRlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDI0
MjJmYzg0ZjU0ZWU3Y2QzMGVlNDBmMTQyMDQyZDQxZWJmNTFiM2YuLmMxZWRmNTZkMzViYmI2NzM4
OGI3NzMzNTQ0ZDRlMTFmZWI2NzcyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKQEAgLTIwMiwxNyArMjAyLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck9wZXJhdGluZ0RhdGVzKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNTdGF0aXN0
aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0
aW5nRGF0ZXNXaW5kb3cpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBu
dW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFzVXNlckludGVyYWN0aW9uLCBib29s
IGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wpID0gMDsKLSAgICAK
LSAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50LgotICAgIHZpcnR1YWwgdm9pZCBpbnNl
cnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4
cGlyZWRGb3JUZXN0aW5nKCkgPSAwOwotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0
YT4gYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSA9IDA7Ci0gICAg
dmlydHVhbCBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWlu
PikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUltcG9y
dGFuY2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA0ZGI4MDdhN2Q5
ZDcwNTQwMWVkNTlhNmNlZWUyYWQ3YjI0MDY3NzQwLi4xN2YzZjRjNzIzMWZlMDdkODZjYTY0ZWM0
MTA0NGU3OTJkNjY0MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcApAQCAtMTUwLDExICsxNTAsMjQgQEAgc3RhdGljIFJlZjxTdXNwZW5kYWJs
ZVdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCkKICAgICByZXR1cm4gcXVldWUuZ2V0
KCkuY29weVJlZigpOwogfQogCi1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24s
IGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKKworc3RhdGljIFN0cmluZyBwY21TdG9yZURp
cmVjdG9yeShjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSkKK3sKKyAgICBpZiAoc2Vzc2lvbi5zZXNzaW9uSUQo
KS5pc0VwaGVtZXJhbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworCisgICAgcmV0dXJu
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Cit9CisKK1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNz
aW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURp
cmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKICAgICA6IG1f
bmV0d29ya1Nlc3Npb24obWFrZVdlYWtQdHIobmV0d29ya1Nlc3Npb24pKQogICAgICwgbV9zdGF0
aXN0aWNzUXVldWUoc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCkpCiAgICAgLCBtX2RhaWx5VGFza3NU
aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnBlcmZvcm1EYWlseVRhc2tzKQogICAgICwgbV9pc0VwaGVtZXJhbChpc0VwaGVtZXJhbCkK
KyAgICAsIG1fcGNtU3RvcmUoUENNOjpTdG9yZTo6Y3JlYXRlKHNoYXJlZFN0YXRpc3RpY3NRdWV1
ZSgpLCBwY21TdG9yZURpcmVjdG9yeShuZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSkp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODYsOSAr
MTk5LDkgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKCkKICAgICBSRUxFQVNFX0FTU0VSVCghbV9zdGF0aXN0aWNzU3RvcmUp
OwogfQogCi1SZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24s
IGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKK1JlZjxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRl
KE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBp
c0VwaGVtZXJhbCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUobmV0d29ya1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGlzRXBoZW1lcmFsKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNz
aW9uLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0b3JhZ2VEaXJlY3RvcnksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGlzRXBoZW1lcmFs
KSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWREZXN0cm95
TmV0d29ya1Nlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtMjAxLDYgKzIxNCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpkaWREZXN0cm95TmV0d29ya1Nlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8CiAKICAgICBt
X25ldHdvcmtTZXNzaW9uID0gbnVsbHB0cjsKICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yZSgpLmNsb3NlKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIGlu
bGluZSB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cG9zdFRhc2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTE0NzEsMTkxICsxNDg1LDYgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKGNvbnN0IFJlZ2kKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlIGF0dHJpYnV0aW9uVHlwZSkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgaWYgKGlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBvc3RUYXNr
KFt0aGlzLCBhdHRyaWJ1dGlvbiA9IFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5
cGVdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmluc2VydFByaXZhdGVD
bGlja01lYXN1cmVtZW50KFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGUpOwot
ICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0Fs
bFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygp
Ci17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJh
bCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpc10oKSB7Ci0gICAgICAg
IGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUtPm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNv
bnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25z
dCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRl
c3RpbmF0aW9uU2l0ZSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiYmIGVwaGVtZXJhbE1lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHBvc3RUYXNrKFt0aGlzLCBzb3VyY2VTaXRlID0gc291cmNlU2l0ZS5pc29sYXRlZENv
cHkoKSwgZGVzdGluYXRpb25TaXRlID0gZGVzdGluYXRpb25TaXRlLmlzb2xhdGVkQ29weSgpLCBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwg
ZXBoZW1lcmFsTWVhc3VyZW1lbnQgPSBXVEZNb3ZlKGVwaGVtZXJhbE1lYXN1cmVtZW50KSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewotICAgICAgICAgICAgcG9zdFRhc2tS
ZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBJbnNlcnQgZXBoZW1lcmFsIG1lYXN1cmVtZW50IHJpZ2h0IGJlZm9yZSBhdHRyaWJ1
dGlvbi4KLSAgICAgICAgaWYgKGVwaGVtZXJhbE1lYXN1cmVtZW50KSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChlcGhlbWVyYWxNZWFzdXJlbWVudC0+aXNFcGhlbWVyYWwoKSk7Ci0gICAg
ICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
V1RGTW92ZSgqZXBoZW1lcmFsTWVhc3VyZW1lbnQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8g
c2Vjb25kcyA9IG1fc3RhdGlzdGljc1N0b3JlLT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSkpOwotICAgICAgICBwb3N0VGFza1JlcGx5KFtzZWNvbmRzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc2Vjb25kcyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQot
Ci12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFByaXZhdGVD
bGlja01lYXN1cmVtZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBv
c3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7Ci0gICAg
ICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGF1dG8gY29udmVydGVkQXR0cmlidXRpb25zID0gbV9zdGF0aXN0aWNzU3Rv
cmUtPmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotICAgICAgICBwb3N0
VGFza1JlcGx5KFtjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMgPSBXVEZNb3ZlKGNvbnZlcnRlZEF0dHJp
YnV0aW9ucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbnZl
cnRlZEF0dHJpYnV0aW9ucykpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVy
YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcG9zdFRhc2soW3RoaXNdKCkgewotICAgICAg
ICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6bnVs
bG9wdCk7Ci0gICAgfSk7Ci19Ci0gICAgCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpXSgpIG11dGFi
bGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KGRvbWFpbik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCi17Ci0gICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpc10oKSB7Ci0gICAgICAgIGlmICghbV9zdGF0
aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9zdGF0aXN0aWNz
U3RvcmUtPmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYg
KGlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIlxuTm8gc3RvcmVk
IFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiJfcyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3Rp
Y3NTdG9yZSkgewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fc3RhdGlzdGljc1N0
b3JlLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCk7Ci0gICAgICAgIHBvc3RUYXNr
UmVwbHkoW3Jlc3VsdCA9IHJlc3VsdC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvblRvQ2xlYXIsIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAg
IGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhp
cywgYXR0cmlidXRpb25Ub0NsZWFyID0gV1RGTW92ZShhdHRyaWJ1dGlvblRvQ2xlYXIpLCBhdHRy
aWJ1dGlvblJlcG9ydEVuZHBvaW50XSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlz
dGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0
b3JlLT5jbGVhclNlbnRBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhciksIGF0
dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYg
KGlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAobV9z
dGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+bWFya0F0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7Ci0KLSAg
ICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7
Ci19Ci0KIFN0cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5Ojp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoIkhhcyBiZWVuIGdyYW50ZWQgc3RvcmFnZSBhY2Nlc3MgdW5kZXIgIiwgZmly
c3RQYXJ0eURvbWFpbi5zdHJpbmcoKSwgIjogIiwgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPyAnMScg
OiAnMCcsICI7IEhhcyBiZWVuIHNlZW4gdW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmco
KSwgIiBpbiB0aGUgbGFzdCAyNCBob3VyczogIiwgV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5j
ZUVwb2NoKCkgLSB0aW1lTGFzdFVwZGF0ZWQgPCAyNF9oID8gJzEnIDogJzAnKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBiMzQ4ZTMxNmIwODEy
MTg2MTEyMWRiNTQ3NjNkMWI5ODY5M2E1YjUxLi4xNDk4NGNkOGNkZWZlMjE0MGU0YTkwMjI0Mjc5
Mzg3ZDJkZjA2MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVz
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhVHlwZS5oIgpAQCAtMTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBTdG9y
YWdlQWNjZXNzU2NvcGUgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGU7CiAgICAgdXNpbmcg
UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgPSBXZWJDb3JlOjpSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1Jlc3VsdDsKIAotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
PiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6OklzRXBoZW1lcmFsKTsKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgUmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOwogCiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSgpOwogCkBAIC0yMzksMjAgKzI0MCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlz
RXBoZW1lcmFsKCkgY29uc3QgeyByZXR1cm4gbV9pc0VwaGVtZXJhbCA9PSBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzOyB9OwogICAgIHZvaWQgaW5zZXJ0
RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNp
Z25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9u
LCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2
YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICAvLyBQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50LgotICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpOwotICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOwotICAgIHZvaWQgYXR0cmlidXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIGVwaGVtZXJhbE1lYXN1cmVtZW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+KT4mJik7Ci0gICAgdm9pZCBh
bGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpPiYmKTsKLSAgICB2
b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYpOwotICAgIHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoKTsKLSAgICB2b2lkIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKLSAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0
aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKLSAgICB2b2lkIG1h
cmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotCisgICAgUENNOjpTdG9yZSYgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yZSgpIHsgcmV0dXJuIG1fcGNtU3RvcmUuZ2V0KCk7fQogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nl
c3Npb24mLCBjb25zdCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCk7CisgICAgZXhwbGljaXQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOwogCiAgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgc3RhdGljIHZvaWQgcG9zdFRhc2tSZXBseShXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJik7CkBAIC0yODcsNiArMjc3LDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzU2NoZWR1bGVkUHJvY2Vzc1N0YXRzIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9maXJz
dE5ldHdvcmtQcm9jZXNzQ3JlYXRlZCB7IGZhbHNlIH07CisgICAgCisgICAgUmVmPFBDTTo6U3Rv
cmU+IG1fcGNtU3RvcmU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2JkMzNmNzJjZTg0M2I0YTkyZmU2ZWY2N2QwMjkwNmFlNTM5OTA2MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3Bw
CkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0
ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRGF0YWJh
c2VVdGlsaXRpZXM6OkRhdGFiYXNlVXRpbGl0aWVzKFN0cmluZyYmIHN0b3JhZ2VGaWxlUGF0aCkK
KyAgICA6IG1fc3RvcmFnZUZpbGVQYXRoKFdURk1vdmUoc3RvcmFnZUZpbGVQYXRoKSkKKyAgICAs
IG1fdHJhbnNhY3Rpb24obV9kYXRhYmFzZSkgeyB9CisKK0RhdGFiYXNlVXRpbGl0aWVzOjp+RGF0
YWJhc2VVdGlsaXRpZXMoKSA9IGRlZmF1bHQ7CisKK1dlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1
dG9SZXNldFNjb3BlIERhdGFiYXNlVXRpbGl0aWVzOjpzY29wZWRTdGF0ZW1lbnQoc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4mIHN0YXRlbWVudCwgQVNDSUlMaXRlcmFs
IHF1ZXJ5LCBBU0NJSUxpdGVyYWwgbG9nU3RyaW5nKSBjb25zdAoreworICAgIGlmICghc3RhdGVt
ZW50KSB7CisgICAgICAgIGF1dG8gc3RhdGVtZW50T3JFcnJvciA9IG1fZGF0YWJhc2UucHJlcGFy
ZUhlYXBTdGF0ZW1lbnQocXVlcnkpOworICAgICAgICBpZiAoIXN0YXRlbWVudE9yRXJyb3IpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAi
JXAgLSBEYXRhYmFzZVV0aWxpdGllczo6JXMgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBl
cnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbG9nU3RyaW5nLmNoYXJh
Y3RlcnMoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnRBdXRvUmVzZXRTY29wZSB7IH07CisgICAgICAgIH0KKyAgICAgICAgc3RhdGVtZW50ID0gc3Rh
dGVtZW50T3JFcnJvci52YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0cigpOworICAgICAgICBBU1NFUlQo
bV9kYXRhYmFzZS5pc09wZW4oKSk7CisgICAgfQorICAgIHJldHVybiBXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnRBdXRvUmVzZXRTY29wZSB7IHN0YXRlbWVudC5nZXQoKSB9OworfQorCitTY29wZUV4
aXQ8RnVuY3Rpb248dm9pZCgpPj4gRGF0YWJhc2VVdGlsaXRpZXM6OmJlZ2luVHJhbnNhY3Rpb25J
Zk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1fdHJhbnNhY3Rpb24uaW5Qcm9ncmVzcygpKQorICAg
ICAgICByZXR1cm4gbWFrZVNjb3BlRXhpdChGdW5jdGlvbjx2b2lkKCk+IHsgW10geyB9IH0pOwor
CisgICAgbV90cmFuc2FjdGlvbi5iZWdpbigpOworICAgIHJldHVybiBtYWtlU2NvcGVFeGl0KEZ1
bmN0aW9uPHZvaWQoKT4geyBbdGhpc10geworICAgICAgICBtX3RyYW5zYWN0aW9uLmNvbW1pdCgp
OworICAgIH0gfSk7Cit9CisKK2F1dG8gRGF0YWJhc2VVdGlsaXRpZXM6Om9wZW5EYXRhYmFzZUFu
ZENyZWF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkgLT4gQ3JlYXRlZE5ld0ZpbGUKK3sKKyAgICBDcmVh
dGVkTmV3RmlsZSBjcmVhdGVkTmV3RmlsZSA9IENyZWF0ZWROZXdGaWxlOjpObzsKKyAgICBpZiAo
IUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9zdG9yYWdlRmlsZVBhdGgpKSB7CisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgo
bV9zdG9yYWdlRmlsZVBhdGgpKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpvcGVuIGZhaWxlZCwgZXJyb3Ig
bWVzc2FnZTogRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgZGF0YWJhc2UgcGF0aDogJSIgUFVC
TElDX0xPR19TVFJJTkcsIHRoaXMsIG1fc3RvcmFnZUZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlZE5ld0ZpbGU7CisgICAgICAgIH0KKyAgICAgICAgY3JlYXRlZE5ld0ZpbGUgPSBDcmVhdGVk
TmV3RmlsZTo6WWVzOworICAgIH0KKworICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKG1fc3RvcmFn
ZUZpbGVQYXRoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Om9wZW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQ
VUJMSUNfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRmlsZVBhdGgudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
Y3JlYXRlZE5ld0ZpbGU7CisgICAgfQorICAgIAorICAgIC8vIFNpbmNlIHdlIGFyZSB1c2luZyBh
IHdvcmtlclF1ZXVlLCB0aGUgc2VxdWVudGlhbCBkaXNwYXRjaCBibG9ja3MgbWF5IGJlIGNhbGxl
ZCBieSBkaWZmZXJlbnQgdGhyZWFkcy4KKyAgICBtX2RhdGFiYXNlLmRpc2FibGVUaHJlYWRpbmdD
aGVja3MoKTsKKworICAgIGF1dG8gc2V0QnVzeVRpbWVvdXQgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIlBSQUdNQSBidXN5X3RpbWVvdXQgPSA1MDAwIl9zKTsKKyAgICBpZiAoIXNldEJ1
c3lUaW1lb3V0IHx8IHNldEJ1c3lUaW1lb3V0LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0
YWJhc2U6OnNldEJ1c3lUaW1lb3V0IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVkTmV3RmlsZTsKKyAgICB9
CisKKyAgICBpZiAoY3JlYXRlZE5ld0ZpbGUgPT0gQ3JlYXRlZE5ld0ZpbGU6OlllcykgeworICAg
ICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmNyZWF0ZVNjaGVtYSBm
YWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBh
dGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
LCBtX3N0b3JhZ2VGaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZWROZXdGaWxlOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiBjcmVhdGVkTmV3RmlsZTsKK30KKwordm9pZCBEYXRhYmFz
ZVV0aWxpdGllczo6Y2xvc2UoKQoreworICAgIGRlc3Ryb3lTdGF0ZW1lbnRzKCk7CisgICAgaWYg
KG1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0RhdGFiYXNlVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThkYThiOTQwMzViMDk0NmNmYzIxYTMy
NmE5N2RkMTg4NGRhZjc2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9TY29w
ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVz
ZXRTY29wZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERhdGFiYXNlVXRpbGl0
aWVzIHsKK3Byb3RlY3RlZDoKKyAgICBEYXRhYmFzZVV0aWxpdGllcyhTdHJpbmcmJiBzdG9yYWdl
RmlsZVBhdGgpOworICAgIH5EYXRhYmFzZVV0aWxpdGllcygpOworCisgICAgV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgc2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+JiwgQVNDSUlMaXRlcmFsIHF1ZXJ5LCBBU0NJSUxp
dGVyYWwgbG9nU3RyaW5nKSBjb25zdDsKKyAgICBTY29wZUV4aXQ8RnVuY3Rpb248dm9pZCgpPj4g
V0FSTl9VTlVTRURfUkVUVVJOIGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOworICAgIGVu
dW0gY2xhc3MgQ3JlYXRlZE5ld0ZpbGUgOiBib29sIHsgTm8sIFllcyB9OworICAgIENyZWF0ZWRO
ZXdGaWxlIG9wZW5EYXRhYmFzZUFuZENyZWF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CisgICAgdm9p
ZCBjbG9zZSgpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVTY2hlbWEoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRlc3Ryb3lTdGF0ZW1lbnRzKCkgPSAwOworCisgICAgY29uc3QgU3RyaW5nIG1f
c3RvcmFnZUZpbGVQYXRoOworICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9k
YXRhYmFzZTsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uIG1fdHJhbnNh
Y3Rpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA4MmYx
ZTUzMDE0NGZhMGZmMmRhYjExZTY0NGMwOWI3ZjY4NjFhMDAwLi41MmQzNWJjOWIzYTE2MzEzMWZl
ODdjOGRiMjY5ODk2ZWY5NWFhNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NjcsOSArODY3LDkgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKICAgICBtX3Jl
ZGlyZWN0UmVzcG9uc2UgPSByZWRpcmVjdFJlc3BvbnNlOwogCi0gICAgc3RkOjpvcHRpb25hbDxQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+
IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBpZiAo
IXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGlyZWN0
UmVxdWVzdC51cmwoKSkpCisgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVl
c3QudXJsKCkpKQogICAgICAgICAgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhID0gcmVzdWx0LnZhbHVlKCk7CiAgICAgICAgIGVsc2UgaWYgKCFyZXN1bHQu
ZXJyb3IoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgcmVz
dWx0LmVycm9yKCkpOwpAQCAtOTMwLDcgKzkzMCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
CiAgICAgY29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RG
TW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYm
IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4mJiBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpCiB7CiAgICAgcmVk
aXJlY3RSZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAK
aW5kZXggMzM0ODhlNjllZmViZDcxYjZkMzBiZDJiYzdjOGZjNTJhNzI4MzI3ZC4uNzQ0MzUwMzUy
MTg1ZGFjMjFiYmNjNmRmODRlYTAzNmMwNTQ0ODEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTgyLDYgKzgyLDcgQEAgTmV0d29y
a1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
Y29uc3QgTmV0d29ya1Nlc3MKICAgICA6IG1fc2Vzc2lvbklEKHBhcmFtZXRlcnMuc2Vzc2lvbklE
KQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JhZ2VEaXJlY3RvcnkocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgLCBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy5kaXJlY3RvcnkpCiAgICAgLCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJ
blJlc291cmNlTG9hZFN0YXRpc3RpY3MocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9jYWxob3N0ID8gU2hvdWxkSW5jbHVkZUxvY2FsaG9z
dDo6WWVzIDogU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6Tm8pCiAgICAgLCBtX2VuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy5lbmFibGVEZWJ1Z01vZGUgPyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlOjpZZXMgOiBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
OjpObykKQEAgLTExNyw2ICsxMTgsOCBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24o
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogCiAgICAg
ICAgIGlmICghcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBl
cm1hbmVudGx5KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURp
cmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1l
UGVybWFuZW50bHkocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
ICAgIH0KIAogICAgIG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgPSBwYXJhbWV0ZXJz
LnN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKQEAgLTEyNSw3ICsxMjgsNyBAQCBOZXR3b3Jr
U2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2VzcwogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CiAgICAg
bV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IG1ha2VVbmlxdWU8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyPigqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklE
LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGF1dG8mJiBsb2FkUGFyYW1ldGVycywg
YXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUmVz
b3VyY2VFcnJvcihSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pLCB7IH0sIHsgfSk7
CiAKICAgICAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCgq
d2Vha1RoaXMsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfSk7CkBAIC0xNzksNyArMTgyLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUpCiAgICAgaWYgKG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUo
KnRoaXMsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgbV9zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAobV9zZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSA/IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6Tm8pKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSwgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLCAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0Vw
aGVtZXJhbDo6Tm8pKTsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNr
KFtdIHsgfSk7CiAKQEAgLTE5Niw3ICsxOTksNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZWNy
ZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKQog
ICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKnRoaXMsIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpJc0VwaGVtZXJhbDo6Tm8pKTsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKnRoaXMsIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jh
Z2VEaXJlY3RvcnksICBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRp
c3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFs
OjpObykpOwogICAgICAgICBmb3J3YXJkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldHRpbmdzKCk7
CiAgICAgICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTMxOCw3ICszMjEsNyBAQCB2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpoYW5kbGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbnZlcnNpb24oUHJpdmF0ZUNs
aWNrTWVhc3VyZQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpkdW1wUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkudG9TdHJpbmcoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkudG9TdHJpbmdG
b3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
U2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggYTQ5NzE4ZGVmZGEyMzk0ODQ2
YWU4NWM0Yzc4NTJhZGExNTY0MTM0OS4uYWQyNzEwMDMzOTNlZjA0MTcyY2NjMGY4YzgzNTYxN2Ix
ZDQ3ZjZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaApAQCAtMTkxLDYgKzE5MSw3IEBAIHByb3RlY3RlZDoKICAgICBSZWY8TmV0d29ya1Byb2Nl
c3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAgV2Vha0hhc2hTZXQ8TmV0d29ya0RhdGFUYXNrPiBt
X2RhdGFUYXNrU2V0OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
U3RyaW5nIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgUmVmUHRyPFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAg
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhdGFiYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGZlZmUxMzliMmQ1YmNmMTQ5MzE4ZDkyMzllOGFl
Yjc3ZDNhZGNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcApAQCAtMCwwICsxLDY5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgiCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8u
aCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0
aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworY29uc3Rl
eHByIGF1dG8gc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRR
dWVyeSA9ICJVUERBVEUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIHRp
bWVPZkFkQ2xpY2sgPSAtMS4wIl9zOworY29uc3RleHByIGF1dG8gaW5zZXJ0VW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRl
c3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCisgICAgInNvdXJjZUlELCB0aW1lT2ZBZENsaWNrLCB0
b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCkgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/KSJfczsK
K2NvbnN0ZXhwciBhdXRvIGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1
ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCisg
ICAgInNvdXJjZUlELCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwgdGltZU9mQWRD
bGljaywgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUsIGtleUlE
LCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKSBWQUxVRVMgKD8sID8sID8sID8sID8s
ID8sID8sID8sID8sID8sID8pIl9zOworY29uc3RleHByIGF1dG8gZmluZFVuYXR0cmlidXRlZFF1
ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
V0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQg
PSA/Il9zOworY29uc3RleHByIGF1dG8gZmluZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBG
Uk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9t
YWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIg
YXV0byByZW1vdmVVbmF0dHJpYnV0ZWRRdWVyeSA9ICJERUxFVEUgRlJPTSBVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBk
ZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBhbGxBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJTRUxFQ1QgKiwgTUlOKGVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKSBhcyBt
aW5WYWwgIgorICAgICJGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVS
RSBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBJUyBOT1QgTlVMTCBBTkQgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbiBJUyBOT1QgTlVMTCAiCisgICAgIlVOSU9OIEFMTCBTRUxFQ1Qg
KiwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgYXMgbWluVmFsIEZST00gQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRp
b24gSVMgTlVMTCAiCisgICAgIlVOSU9OIEFMTCBTRUxFQ1QgKiwgZWFybGllc3RUaW1lVG9TZW5k
VG9EZXN0aW5hdGlvbiBhcyBtaW5WYWwgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgV0hFUkUgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgSVMgTlVMTCBPUkRFUiBCWSBt
aW5WYWwiX3M7Citjb25zdGV4cHIgYXV0byBhbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Citjb25zdGV4cHIgYXV0byBjbGVhckF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgTElLRSA/IE9SIGRl
c3RpbmF0aW9uU2l0ZURvbWFpbklEIExJS0UgPyJfczsKK2NvbnN0ZXhwciBhdXRvIGNsZWFyVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJERUxFVEUgRlJPTSBVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQg
TElLRSA/IE9SIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIExJS0UgPyJfczsKK2NvbnN0ZXhwciBh
dXRvIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiREVMRVRFIEZS
T00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgPyA+IHRpbWVPZkFk
Q2xpY2siX3M7Citjb25zdGV4cHIgYXV0byBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VRdWVyeSA9
ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRp
bWVUb1NlbmRUb1NvdXJjZSA9IG51bGwgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQg
ZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gbWFya1JlcG9y
dEFzU2VudFRvRGVzdGluYXRpb25RdWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gbnVsbCBX
SEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9
ID8iX3M7Citjb25zdGV4cHIgYXV0byBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnkgPSAiU0VMRUNU
IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0
aW9uIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNp
dGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKK2NvbnN0
ZXhwciBhdXRvIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5ID0gIlNFTEVDVCBkb21haW5JRCBGUk9N
IFBDTU9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7Citjb25z
dGV4cHIgYXV0byBkb21haW5TdHJpbmdGcm9tRG9tYWluSURRdWVyeSA9ICJTRUxFQ1QgcmVnaXN0
cmFibGVEb21haW4gRlJPTSBQQ01PYnNlcnZlZERvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9z
OworY29uc3RleHByIGF1dG8gY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgPSAiQ1JFQVRFIFRBQkxFIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICgi
CisgICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5hdGlvblNp
dGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBOVUxMLCAi
CisgICAgInRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJl
IFRFWFQsIGtleUlEIFRFWFQsIEZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgIgorICAg
ICJSRUZFUkVOQ0VTIFBDTU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NB
REUsIEZPUkVJR04gS0VZKGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VTICIKKyAg
ICAiUENNT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSkiX3M7Citj
b25zdGV4cHIgYXV0byBjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAi
Q1JFQVRFIFRBQkxFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgorICAgICJz
b3VyY2VTaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQgSU5URUdFUiBOT1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgorICAgICJh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhIElOVEVHRVIgTk9UIE5VTEwsIHByaW9yaXR5IElOVEVHRVIg
Tk9UIE5VTEwsIHRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwgIgorICAgICJlYXJsaWVzdFRp
bWVUb1NlbmRUb1NvdXJjZSBSRUFMLCB0b2tlbiBURVhULCBzaWduYXR1cmUgVEVYVCwga2V5SUQg
VEVYVCwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBSRUFMLCAiCisgICAgIkZPUkVJ
R04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERvbWFpbnMo
ZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVE
b21haW5JRCkgUkVGRVJFTkNFUyAiCisgICAgIlBDTU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkg
T04gREVMRVRFIENBU0NBREUpIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVY
IElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNl
U2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEIG9uIFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVE
b21haW5JRCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJ
U1RTIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9tYWluSURf
ZGVzdGluYXRpb25TaXRlRG9tYWluSUQgb24gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOwor
Y29uc3RleHByIGF1dG8gY3JlYXRlUENNT2JzZXJ2ZWREb21haW4gPSAiQ1JFQVRFIFRBQkxFIFBD
TU9ic2VydmVkRG9tYWlucyAoIgorICAgICJkb21haW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCBy
ZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMKSJf
czsKK2NvbnN0ZXhwciBhdXRvIGluc2VydE9ic2VydmVkRG9tYWluUXVlcnkgPSAiSU5TRVJUIElO
VE8gUENNT2JzZXJ2ZWREb21haW5zIChyZWdpc3RyYWJsZURvbWFpbikgVkFMVUVTICg/KSJfczsK
KworRGF0YWJhc2U6OkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKKyAg
ICA6IERhdGFiYXNlVXRpbGl0aWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChzdG9yYWdlRGlyZWN0b3J5LCAicGNtLmRiIl9zKSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBvcGVuRGF0YWJhc2VBbmRDcmVhdGVTY2hlbWFJZk5lY2Vzc2FyeSgp
OworfQorCitEYXRhYmFzZTo6fkRhdGFiYXNlKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBjbG9zZSgpOworfQorCitib29sIERhdGFiYXNlOjpjcmVhdGVTY2hlbWEo
KQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKCFtX2RhdGFi
YXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVBDTU9ic2VydmVkRG9tYWluKSkgeworICAgICAgICBM
T0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgUENNT2JzZXJ2ZWREb21haW5zIHRhYmxlIGluIGRh
dGFiYXNlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UubGFzdEVycm9yKCksIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFt
X2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVz
IiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0
ZUNvbW1hbmQoY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgeworICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50IHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UubGFzdEVy
cm9yKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1
ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCisgICAgICAgIHx8ICFt
X2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yIGNyZWF0aW5n
IGluZGV4ZXMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmlidXRpb25UeXBlKQoreworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVn
aW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CisKKyAgICBhdXRvIHNvdXJjZUlEID0gZW5zdXJl
RG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBhdXRvIGF0dHJpYnV0aW9uRGVzdGluYXRpb25JRCA9IGVuc3VyZURvbWFpbklEKGF0dHJpYnV0
aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIXNvdXJj
ZUlEIHx8ICFhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8mIHNvdXJjZVVubGlua2FibGVUb2tlbiA9IGF0dHJpYnV0aW9uLnNvdXJjZVVubGlua2Fi
bGVUb2tlbigpOworICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKKyAgICAgICAgYXV0byBhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8g
YXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCkuZGF0YSA6IC0xOwor
ICAgICAgICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCkucHJpb3Jp
dHkgOiAtMTsKKyAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1
dGlvbi50aW1lc1RvU2VuZCgpLnNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA/IGF0dHJpYnV0aW9u
LnRpbWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpIDogLTE7CisgICAgICAgIGF1dG8gZGVzdGluYXRpb25FYXJsaWVz
dFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFybGll
c3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5kZXN0aW5hdGlvbkVhcmxp
ZXN0VGltZVRvU2VuZC52YWx1ZSgpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSA6IC0xOwor
CisgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBpbnNlcnRpbmcgYW4gYXR0cmlidXRlZCBw
cml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IHZhbHVlIGludG8gdGhlIGRhdGFiYXNlIHdpdGhvdXQg
dmFsaWQgcmVwb3J0IHRpbWVzLgorICAgICAgICBBU1NFUlQoc291cmNlRWFybGllc3RUaW1lVG9T
ZW5kICE9IC0xICYmIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kICE9IC0xKTsKKworICAg
ICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChpbnNlcnRB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSk7CisgICAgICAgIGlmICghc3Rh
dGVtZW50CisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZUlEKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgyLCAqYXR0cmli
dXRpb25EZXN0aW5hdGlvbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVu
dC0+YmluZEludCgzLCBhdHRyaWJ1dGlvbi5zb3VyY2VJRCgpLmlkKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCg0LCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCg1LCBwcmlv
cml0eSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUo
NiwgYXR0cmlidXRpb24udGltZU9mQWRDbGljaygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUo
KSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoNywg
c291cmNlRWFybGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0
YXRlbWVudC0+YmluZFRleHQoOCwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5r
YWJsZVRva2VuLT50b2tlbkJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwor
ICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg5LCBzb3VyY2VVbmxpbmthYmxlVG9r
ZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnNpZ25hdHVyZUJhc2U2NFVSTCA6IGVtcHR5U3Ry
aW5nKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCgx
MCwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT5rZXlJREJh
c2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3Rh
dGVtZW50LT5iaW5kRG91YmxlKDExLCBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkgIT0g
U1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9O
RSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsICIlcCAtIERhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpbnNlcnRB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBBU1NFUlQoYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOworCisgICAgYXV0byBzdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoaW5zZXJ0VW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSk7CisgICAgaWYgKCFzdGF0ZW1lbnQKKyAgICAgICAg
fHwgc3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VJRCkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IHN0YXRlbWVudC0+YmluZEludCgyLCAqYXR0cmlidXRpb25EZXN0aW5hdGlvbklEKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDMsIGF0dHJpYnV0aW9uLnNv
dXJjZUlEKCkuaWQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3Vi
bGUoNCwgYXR0cmlidXRpb24udGltZU9mQWRDbGljaygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoNSwgc291
cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT50b2tlbkJhc2U2NFVS
TCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPmJp
bmRUZXh0KDYsIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+
c2lnbmF0dXJlQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IHN0YXRlbWVudC0+YmluZFRleHQoNywgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNl
VW5saW5rYWJsZVRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0
YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50IGluc2VydFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBEYXRhYmFzZTo6bWFya0FsbFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpCit7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQg
PSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFzRXhwaXJlZFN0YXRlbWVudCwgc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRBc0V4cGlyZWRRdWVyeSwgIm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmciX3MpOworCisgICAgaWYgKCFzY29wZWRTdGF0
ZW1lbnQgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFi
YXNlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRG
b3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9Cit9CisKK3N0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPERhdGFiYXNlOjpVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OkF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IERhdGFiYXNlOjpmaW5kUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlKQoreworICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0g
ZG9tYWluSUQoc291cmNlU2l0ZS5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGRlc3RpbmF0aW9uU2l0ZS5yZWdpc3RyYWJsZURv
bWFpbik7CisgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQpOworCisgICAgYXV0byBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0g
dGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudCwgZmluZFVu
YXR0cmlidXRlZFF1ZXJ5LCAiZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKyAgICBp
ZiAoIWZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgZmluZFVuYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgfHwgZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+
YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0
YWJhc2U6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnks
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwor
ICAgIGF1dG8gZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9maW5kQXR0cmlidXRlZFN0YXRlbWVudCwgZmluZEF0dHJpYnV0ZWRRdWVyeSwgImZp
bmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7CisgICAgaWYgKCFmaW5kQXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudAorICAgICAgICB8fCBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+
YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
ZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpmaW5kUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgZmluZEF0dHJpYnV0ZWRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gdW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ7CisgICAgaWYgKGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKQorICAgICAgICB1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCA9IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoZmluZFVuYXR0cmli
dXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
OworICAgIGlmIChmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElU
RV9ST1cpCisgICAgICAgIGF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IGJ1aWxk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoZmluZEF0dHJpYnV0ZWRTY29wZWRT
dGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpB
dHRyaWJ1dGVkKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih1bmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KTsK
K30KKworc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+LCBEZWJ1Z0luZm8+IERhdGFiYXNlOjphdHRy
aWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlv
blNpdGUsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKworICAgIC8vIFdlIHNob3VsZCBhbHdheXMgY2xlYXIgZXhwaXJlZCBjbGlj
a3MgZnJvbSB0aGUgZGF0YWJhc2UgYmVmb3JlIHNjaGVkdWxpbmcgYW4gYXR0cmlidXRpb24uCisg
ICAgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICBpZiAoIWF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lORk8o
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3QgYW4gaW52YWxpZCBhdHRyaWJ1dGlvbi4iKTsK
KyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCB7e3sgTWVzc2FnZUxldmVsOjpFcnJvciwg
IltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gaW52YWxpZCBhdHRyaWJ1dGlvbi4i
X3MgfX19IH07CisgICAgfQorCisgICAgRGVidWdJbmZvIGRlYnVnSW5mbzsKKyAgICBhdXRvIGRh
dGEgPSBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRhdGE7CisgICAgYXV0byBwcmlvcml0eSA9IGF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEucHJpb3JpdHk7CisgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCBhbiBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJpYnV0aW9u
IHRyaWdnZXIgZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUuIiwgZGF0
YSwgcHJpb3JpdHkpOworICAgIGRlYnVnSW5mby5tZXNzYWdlcy5hcHBlbmQoeyBNZXNzYWdlTGV2
ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4g
YXR0cmlidXRpb24gd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICIn
IGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInLiJfcykgfSk7CisKKyAgICBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSBzZWNvbmRz
VW50aWxTZW5kIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKworICAgIGF1dG8gYXR0
cmlidXRpb24gPSBmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGlu
YXRpb25TaXRlKTsKKyAgICBhdXRvJiBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkID0gYXR0cmlidXRp
b24uZmlyc3Q7CisgICAgYXV0byYgcHJldmlvdXNseUF0dHJpYnV0ZWQgPSBhdHRyaWJ1dGlvbi5z
ZWNvbmQ7CisKKyAgICBpZiAocHJldmlvdXNseVVuYXR0cmlidXRlZCkgeworICAgICAgICAvLyBB
bHdheXMgY29udmVydCB0aGUgcGVuZGluZyBhdHRyaWJ1dGlvbiBhbmQgcmVtb3ZlIGl0IGZyb20g
dGhlIHVuYXR0cmlidXRlZCBtYXAuCisgICAgICAgIHJlbW92ZVVuYXR0cmlidXRlZCgqcHJldmlv
dXNseVVuYXR0cmlidXRlZCk7CisgICAgICAgIHNlY29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5
VW5hdHRyaWJ1dGVkLnZhbHVlKCkuYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdU
Rk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkpOworCisgICAgICAgIC8vIFdlIHNob3VsZCBh
bHdheXMgaGF2ZSBhIHZhbGlkIHNlY29uZHNVbnRpbFNlbmQgdmFsdWUgZm9yIGEgcHJldmlvdXNs
eVVuYXR0cmlidXRlZCB2YWx1ZSBiZWNhdXNlIHRoZXJlIGNhbiBiZSBubyBwcmV2aW91cyBhdHRy
aWJ1dGlvbiB3aXRoIGEgaGlnaGVyIHByaW9yaXR5LgorICAgICAgICBpZiAoIXNlY29uZHNVbnRp
bFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBX
VEZNb3ZlKGRlYnVnSW5mbykgfTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfTE9HX0lO
Rk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJDb252ZXJ0ZWQgYSBzdG9yZWQgYWQgY2xpY2sg
d2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAl
e3B1YmxpY311LiIsIGRhdGEsIHByaW9yaXR5KTsKKyAgICAgICAgZGVidWdJbmZvLm1lc3NhZ2Vz
LmFwcGVuZCh7IE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIENvbnZlcnRlZCBhIHN0b3JlZCBhZCBjbGljayB3aXRoIGF0dHJpYnV0aW9u
IHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0
eSwgIicuIl9zKSB9KTsKKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBwcmV2aW91cyBhdHRy
aWJ1dGlvbiwgb3IgdGhlIG5ldyBhdHRyaWJ1dGlvbiBoYXMgaGlnaGVyIHByaW9yaXR5LCBpbnNl
cnQvdXBkYXRlIHRoZSBkYXRhYmFzZS4KKyAgICAgICAgaWYgKCFwcmV2aW91c2x5QXR0cmlidXRl
ZCB8fCBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkLnZhbHVlKCkuaGFzSGlnaGVyUHJpb3JpdHlUaGFu
KCpwcmV2aW91c2x5QXR0cmlidXRlZCkpIHsKKyAgICAgICAgICAgIGluc2VydFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KFdURk1vdmUoKnByZXZpb3VzbHlVbmF0dHJpYnV0ZWQpLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7CisKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJSZXBsYWNlZCBhIHBy
ZXZpb3VzbHkgY29udmVydGVkIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRp
b24gZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUgYmVjYXVzZSBpdCBo
YWQgaGlnaGVyIHByaW9yaXR5LiIsIGRhdGEsIHByaW9yaXR5KTsKKyAgICAgICAgICAgIGRlYnVn
SW5mby5tZXNzYWdlcy5hcHBlbmQoeyBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQ
cml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZXBsYWNlZCBhIHByZXZpb3VzbHkgY29udmVydGVk
IGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAn
Il9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJyBiZWNhdXNlIGl0
IGhhZCBoaWdoZXIgcHJpb3JpdHkuIl9zKSB9KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
cHJldmlvdXNseUF0dHJpYnV0ZWQpIHsKKyAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBuZXcgYXR0
cmlidXRpb24sIHJlLWF0dHJpYnV0ZSB0aGUgb2xkIG9uZSB0byByZXNwZWN0IHRoZSBuZXcgcHJp
b3JpdHksIGJ1dCBvbmx5IGlmIHRoaXMgcmVwb3J0IGhhcworICAgICAgICAvLyBub3QgYmVlbiBz
ZW50IHRvIHRoZSBzb3VyY2Ugb3IgZGVzdGluYXRpb24gc2l0ZSB5ZXQuCisgICAgICAgIGlmICgh
cHJldmlvdXNseUF0dHJpYnV0ZWQudmFsdWUoKS5oYXNQcmV2aW91c2x5QmVlblJlcG9ydGVkKCkp
IHsKKyAgICAgICAgICAgIGF1dG8gc2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3VzbHlBdHRyaWJ1
dGVkLnZhbHVlKCkuYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdURk1vdmUoYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSkpOworICAgICAgICAgICAgaWYgKCFzZWNvbmRzVW50aWxTZW5k
Lmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKQorICAgICAgICAgICAgICAgIHJldHVy
biB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShkZWJ1Z0luZm8pIH07CisKKyAgICAgICAgICAgIGlu
c2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoKnByZXZpb3VzbHlBdHRyaWJ1dGVk
KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOwor
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAi
UmUtY29udmVydGVkIGFuIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24g
dHJpZ2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dSBiZWNhdXNl
IGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOworICAgICAgICAgICAg
ZGVidWdJbmZvLm1lc3NhZ2VzLmFwcGVuZCh7IE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmlu
ZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlLWNvbnZlcnRlZCBhbiBhZCBjbGljayB3
aXRoIGEgbmV3IG9uZSB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwg
IicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicnIGJlY2F1c2UgaXQgaGFkIGhpZ2hl
ciBwcmlvcml0eS4iX3MpIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzZWNvbmRz
VW50aWxTZW5kLmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKQorICAgICAgICByZXR1
cm4geyBzdGQ6Om51bGxvcHQsIFdURk1vdmUoZGVidWdJbmZvKSB9OworCisgICAgcmV0dXJuIHsg
c2Vjb25kc1VudGlsU2VuZCwgV1RGTW92ZShkZWJ1Z0luZm8pIH07Cit9CisKK1dlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50IERhdGFiYXNlOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RnJvbURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCit7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWlu
ID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDApKTsK
KyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21h
aW5JRChzdGF0ZW1lbnQtPmNvbHVtbkludCgxKSk7CisgICAgYXV0byBzb3VyY2VJRCA9IHN0YXRl
bWVudC0+Y29sdW1uSW50KDIpOworICAgIGF1dG8gdGltZU9mQWRDbGljayA9IGF0dHJpYnV0aW9u
VHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRl
ZCA/IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDUpIDogc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUo
Myk7CisgICAgYXV0byB0b2tlbiA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4
dCg3KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg0KTsKKyAgICBhdXRvIHNpZ25hdHVyZSA9IGF0
dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6
QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg4KSA6IHN0YXRlbWVudC0+Y29sdW1u
VGV4dCg1KTsKKyAgICBhdXRvIGtleUlEID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1
bW5UZXh0KDkpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDYpOworCisgICAgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OlNvdXJjZUlEKHNvdXJjZUlEKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21S
ZWdpc3RyYWJsZURvbWFpblN0cmluZyhzb3VyY2VTaXRlRG9tYWluKSksIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZShSZWdpc3RyYWJs
ZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbikpLCB7IH0sIHsgfSwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRp
bWVPZkFkQ2xpY2spKTsKKyAgICAKKyAgICBpZiAoYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSB7CisgICAgICAgIGF1
dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDMpOworICAg
ICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNCk7CisgICAgICAgIGF1
dG8gc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJs
ZSg2KTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID0g
c3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMTApOworCisgICAgICAgIGlmIChhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhICE9IC0xKQorICAgICAgICAgICAgYXR0cmlidXRpb24uc2V0QXR0cmlidXRpb24o
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEg
eyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eShwcmlvcml0eSkgfSk7CisKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gc291cmNlRWFybGllc3RUaW1lVG9TZW5kOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZDsKKyAgICAgICAgCisgICAgICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRlcyB0aGF0IHRo
ZSByZXBvcnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgorICAgICAgICBp
ZiAoc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCisgICAgICAgICAgICBzb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc291cmNlRWFy
bGllc3RUaW1lVG9TZW5kVmFsdWUpOworCisgICAgICAgIGlmIChkZXN0aW5hdGlvbkVhcmxpZXN0
VGltZVRvU2VuZFZhbHVlID4gMC4wKQorICAgICAgICAgICAgZGVzdGluYXRpb25FYXJsaWVzdFRp
bWVUb1NlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGVzdGluYXRpb25FYXJsaWVzdFRp
bWVUb1NlbmRWYWx1ZSk7CisKKyAgICAgICAgYXR0cmlidXRpb24uc2V0VGltZXNUb1NlbmQoeyBz
b3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIH0p
OworICAgIH0KKworICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsgdG9rZW4s
IHNpZ25hdHVyZSwga2V5SUQgfSk7CisKKyAgICByZXR1cm4gYXR0cmlidXRpb247Cit9CisKK3Zv
aWQgRGF0YWJhc2U6OnJlbW92ZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYg
YXR0cmlidXRpb24pCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0
byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCku
cmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBk
b21haW5JRChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7
CisgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNj
b3BlZFN0YXRlbWVudChtX3JlbW92ZVVuYXR0cmlidXRlZFN0YXRlbWVudCwgcmVtb3ZlVW5hdHRy
aWJ1dGVkUXVlcnksICJyZW1vdmVVbmF0dHJpYnV0ZWQiX3MpOworCisgICAgaWYgKCFzY29wZWRT
dGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VT
aXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJp
bmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
fHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpy
ZW1vdmVVbmF0dHJpYnV0ZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KKworVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiBEYXRhYmFzZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIGF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9hbGxBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFF1ZXJ5LCAiYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsK
KworICAgIGlmICghYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmFsbEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAg
VmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGlvbnM7Cisg
ICAgd2hpbGUgKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KQorICAgICAgICBhdHRyaWJ1dGlvbnMuYXBwZW5kKGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRGcm9tRGF0YWJhc2UoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpKTsKKworICAgIHJldHVy
biBhdHRyaWJ1dGlvbnM7Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgIGF1dG8gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzID0gbV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgKFNFTEVDVCBDT1VOVCgqKSBGUk9NIFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSBhcyBjbnQxLCAoU0VMRUNUIENPVU5UKCop
IEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSBhcyBjbnQyIl9zKTsKKyAg
ICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cyB8fCBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhdGFFeGlzdHMtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcgZmFpbGVkLCBlcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisKKyAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+
Y29sdW1uSW50KDApICYmICFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmNvbHVt
bkludCgxKSkKKyAgICAgICAgcmV0dXJuICJcbk5vIHN0b3JlZCBQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50IGRhdGEuXG4iX3M7CisKKyAgICBhdXRvIHVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVu
dCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50LCBhbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b1N0cmluZ0ZvclRlc3RpbmciX3MpOworCisgICAgaWYgKCF1bmF0dHJpYnV0ZWRTY29wZWRTdGF0
ZW1lbnQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsICIlcCAtIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVz
dGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorCisgICAgdW5zaWduZWQgdW5hdHRyaWJ1dGVkTnVtYmVyID0gMDsKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgd2hpbGUgKHVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0gdW5hdHRy
aWJ1dGVkTnVtYmVyID8gIiIgOiAiVW5hdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1l
bnRzOiI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHByZWZpeCwgIlxuV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKyt1bmF0dHJpYnV0ZWROdW1iZXIsICdcbicsCisgICAgICAg
ICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nKHVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQo
KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCkp
OworICAgIH0KKworICAgIGF1dG8gYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNj
b3BlZFN0YXRlbWVudChtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRl
bWVudCwgYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyJfcyk7CisKKyAgICBpZiAoIWF0dHJp
YnV0ZWRTY29wZWRTdGF0ZW1lbnQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRvU3RyaW5nRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgdW5zaWduZWQgYXR0cmlidXRlZE51bWJlciA9IDA7Cisg
ICAgd2hpbGUgKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KSB7CisgICAgICAgIGlmICghYXR0cmlidXRlZE51bWJlcikKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHVuYXR0cmlidXRlZE51bWJlciA/ICJcbiIgOiAiIiwgIkF0dHJpYnV0ZWQgUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudHM6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbldlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50ICIsICsrYXR0cmlidXRlZE51bWJlciArIHVuYXR0
cmlidXRlZE51bWJlciwgJ1xuJywKKyAgICAgICAgICAgIGF0dHJpYnV0aW9uVG9TdHJpbmcoYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKK30KKworU3RyaW5nIERhdGFiYXNlOjphdHRyaWJ1dGlvblRvU3RyaW5nKFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJv
bURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDApKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9u
U2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNvbHVt
bkludCgxKSk7CisgICAgYXV0byBzb3VyY2VJRCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDIpOwor
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCJTb3VyY2Ug
c2l0ZTogIiwgc291cmNlU2l0ZURvbWFpbiwgIlxuQXR0cmlidXRlIG9uIHNpdGU6ICIsIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbiwgIlxuU291cmNlIElEOiAiLCBzb3VyY2VJRCk7CisKKyAgICBpZiAo
YXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
OjpBdHRyaWJ1dGVkKSB7CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0
YXRlbWVudC0+Y29sdW1uSW50KDMpOworICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGVtZW50
LT5jb2x1bW5JbnQoNCk7CisgICAgICAgIGF1dG8gZWFybGllc3RUaW1lVG9TZW5kID0gc3RhdGVt
ZW50LT5jb2x1bW5JbnQoNik7CisKKyAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEg
IT0gLTEpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbkF0dHJpYnV0aW9uIHRyaWdn
ZXIgZGF0YTogIiwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgIlxuQXR0cmlidXRpb24gcHJpb3Jp
dHk6ICIsIHByaW9yaXR5LCAiXG5BdHRyaWJ1dGlvbiBlYXJsaWVzdCB0aW1lIHRvIHNlbmQ6ICIp
OworICAgICAgICAgICAgaWYgKGVhcmxpZXN0VGltZVRvU2VuZCA9PSAtMSkKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiTm90IHNldCIpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKGVhcmxpZXN0VGltZVRvU2VuZCkgLSBXYWxsVGltZTo6bm93KCk7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKHNlY29uZHNVbnRpbFNlbmQgPj0gMjRfaCAmJiBzZWNvbmRzVW50
aWxTZW5kIDw9IDQ4X2gpID8gIldpdGhpbiAyNC00OCBob3VycyIgOiAiT3V0c2lkZSAyNC00OCBo
b3VycyIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJcbk5vIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuTm8gYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhLiIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKK30KKwordm9pZCBEYXRhYmFzZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBhdXRvIGV4cGlyZWRUaW1lVG9TZW5kID0gV2FsbFRpbWU6Om5vdygpIC0g
MV9oOworCisgICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVj
ZXNzYXJ5KCk7CisKKyAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50
ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9ID8iX3MpOwor
ICAgIGF1dG8gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiA9IG51bGwiX3MpOwor
CisgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudAorICAgICAgICB8
fCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudC0+YmluZEludCgxLCBleHBpcmVk
VGltZVRvU2VuZC5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAoIWVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb25TdGF0ZW1lbnQgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRl
bWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6bWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJh
c2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJs
ZURvbWFpbj4gZG9tYWluKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IC8vIERlZmF1bHQgdG8gY2xlYXIgYWxsIGVudHJpZXMgaWYgbm8gZG9tYWluIGlzIHNwZWNpZmll
ZC4KKyAgICBTdHJpbmcgYmluZFBhcmFtZXRlciA9ICIlIjsKKyAgICBpZiAoZG9tYWluKSB7Cisg
ICAgICAgIGF1dG8gZG9tYWluSURUb01hdGNoID0gZG9tYWluSUQoKmRvbWFpbik7CisgICAgICAg
IGlmICghZG9tYWluSURUb01hdGNoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGJp
bmRQYXJhbWV0ZXIgPSBTdHJpbmc6Om51bWJlcigqZG9tYWluSURUb01hdGNoKTsKKyAgICB9CisK
KyAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3Nhcnko
KTsKKworICAgIGF1dG8gY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5z
Y29wZWRTdGF0ZW1lbnQobV9jbGVhclVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RhdGVtZW50LCBjbGVhclVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnks
ICJjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKworICAgIGlmICghY2xlYXJVbmF0
dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgYmlu
ZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpjbGVhclBy
aXZhdGVDbGlja01lYXN1cmVtZW50IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAg
ICBhdXRvIGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRl
bWVudChtX2NsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBj
bGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAiY2xlYXJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCJfcyk7CisKKyAgICBpZiAoIWNsZWFyQXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudAorICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRU
ZXh0KDEsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSworICAgICAgICB8fCBjbGVhckF0dHJp
YnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
Y2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJhc2U6OmNsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBhdXRvIGV4cGlyYXRpb25UaW1lRnJhbWUgPSBXYWxsVGltZTo6bm93KCkg
LSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6bWF4QWdlKCk7CisgICAgYXV0byBz
Y29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jbGVhckV4cGlyZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRRdWVyeSwgImNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsK
KworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+
YmluZERvdWJsZSgxLCBleHBpcmF0aW9uVGltZUZyYW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01l
YXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KK30KKwordm9pZCBEYXRhYmFzZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkK
K3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHRpbWVzVG9TZW5k
ID0gZWFybGllc3RUaW1lc1RvU2VuZChhdHRyaWJ1dGlvbik7CisgICAgYXV0byBzb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmQgPSB0aW1lc1RvU2VuZC5maXJzdDsKKyAgICBhdXRvIGRlc3RpbmF0aW9u
RWFybGllc3RUaW1lVG9TZW5kID0gdGltZXNUb1NlbmQuc2Vjb25kOworCisgICAgYXV0byBzb3Vy
Y2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0
cmFibGVEb21haW4pOworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5J
RChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisKKyAg
ICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCisg
ICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAoYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkg
eworICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5k
cG9pbnQ6OlNvdXJjZToKKyAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpIHsK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSgqc291cmNlU2l0ZURv
bWFpbklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOworICAgICAgICBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0
aW9uOgorICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSB7CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbigqc291cmNlU2l0ZURv
bWFpbklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOworICAgICAgICBkZXN0aW5hdGlvbkVh
cmxpZXN0VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBEb24ndCBj
bGVhciB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGRhdGFiYXNlIHVubGVzcyBpdCBoYXMgYmVlbiBy
ZXBvcnRlZCBib3RoIHRvIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHNpdGUuCisgICAgaWYg
KGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIHx8IHNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0
aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3MpOworICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU3Rh
dGVtZW50CisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+YmluZEludCgxLCAq
c291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgY2xlYXJBdHRyaWJ1
dGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Y2xlYXJTZW50QXR0cmlidXRpb24gZmFpbGVkIHRvIHN0
ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K30KKwordm9pZCBEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oU291cmNl
RG9tYWluSUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fbWFya1JlcG9y
dEFzU2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQsIG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0
aW9uUXVlcnksICJtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbiJfcyk7CisKKyAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
c291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6
bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19M
T0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50
VG9Tb3VyY2UoU291cmNlRG9tYWluSUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRv
bWFpbklEIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVt
ZW50KG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVtZW50LCBtYXJrUmVwb3J0QXNTZW50
VG9Tb3VyY2VRdWVyeSwgIm1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSJfcyk7CisKKyAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
c291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6
bWFya1JlcG9ydEFzU2VudFRvU291cmNlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NU
UklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KKworc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OlNv
dXJjZUVhcmxpZXN0VGltZVRvU2VuZD4sIHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OkRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gRGF0YWJhc2U6OmVhcmxpZXN0VGltZXNUb1NlbmQoY29u
c3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklE
ID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24u
ZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKCFzb3VyY2VT
aXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQorICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworCisgICAgYXV0byBz
Y29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9lYXJsaWVzdFRpbWVzVG9T
ZW5kU3RhdGVtZW50LCBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnksICJlYXJsaWVzdFRpbWVzVG9T
ZW5kIl9zKTsKKworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsICJEYXRhYmFzZTo6ZWFybGllc3RUaW1lc1RvU2VuZCwgZXJyb3IgbWVzc2FnZTog
JSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJj
ZUVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2U7CisgICAgc3Rk
OjpvcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9T
ZW5kVG9EZXN0aW5hdGlvbjsKKyAgICAKKyAgICAvLyBBIHZhbHVlIG9mIDAuMCBpbmRpY2F0ZXMg
dGhhdCB0aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8gdGhlIHJlc3BlY3RpdmUgc2l0ZS4KKyAg
ICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMCkgPiAwLjApCisgICAgICAgIGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUo
MCk7CisgICAgCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDEpID4gMC4w
KQorICAgICAgICBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gc2NvcGVkU3RhdGVt
ZW50LT5jb2x1bW5Eb3VibGUoMSk7CisgICAgCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9u
KTsKK30KKworc3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6RG9tYWluSUQ+IERhdGFiYXNlOjpkb21h
aW5JRChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0
aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQsIGRvbWFp
bklERnJvbVN0cmluZ1F1ZXJ5LCAiZG9tYWluSUQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVt
ZW50IHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsICIlcCAtIERhdGFiYXNlOjpkb21haW5JREZyb21TdHJpbmcgZmFpbGVkLiBFcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9CisgICAgCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgp
ICE9IFNRTElURV9ST1cpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6
Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERvbWFpbklEIGRvbWFpbklEKQoreworICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gcmVzdWx0ID0gZW1wdHlTdHJpbmco
KTsKKyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVu
dChtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudCwgZG9tYWluU3RyaW5nRnJvbURv
bWFpbklEUXVlcnksICJnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQiX3MpOworICAgIGlmICgh
c2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCBk
b21haW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURv
bWFpbklELiBTdGF0ZW1lbnQgZmFpbGVkIHRvIHByZXBhcmUgb3IgYmluZCwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIAorICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKQorICAgICAgICByZXN1bHQgPSBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVu
dC0+Y29sdW1uVGV4dCgwKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGQ6Om9w
dGlvbmFsPERhdGFiYXNlOjpEb21haW5JRD4gRGF0YWJhc2U6OmVuc3VyZURvbWFpbklEKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAgaWYgKGF1dG8gZXhp
c3RpbmdJRCA9IGRvbWFpbklEKGRvbWFpbikpCisgICAgICAgIHJldHVybiBleGlzdGluZ0lEOwor
CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9pbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudCwgaW5zZXJ0T2JzZXJ2ZWREb21haW5RdWVyeSwgImlu
c2VydE9ic2VydmVkRG9tYWluIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAg
ICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FM
SVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCAiJXAgLSBEYXRhYmFzZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGJpbmQs
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Omluc2VydE9ic2VydmVkRG9tYWluIGZh
aWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1cm4gZG9t
YWluSUQoZG9tYWluKTsKK30KKwordm9pZCBEYXRhYmFzZTo6ZGVzdHJveVN0YXRlbWVudHMoKQor
eworICAgIG1fc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRT
dGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudCA9IG51
bGxwdHI7CisgICAgbV9maW5kQXR0cmlidXRlZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9y
ZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fYWxsQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2FsbFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50ID0g
bnVsbHB0cjsKKyAgICBtX2NsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZWFybGllc3RUaW1lc1Rv
U2VuZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VT
dGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25T
dGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50ID0g
bnVsbHB0cjsKKyAgICBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudCA9IG51bGxw
dHI7CisgICAgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudCA9IG51bGxwdHI7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjBiZWEzNzZlYmJlOGQ4YWZiNzM5NzJkNWJjNGU5YzM5Mjg5YTcw
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCkBAIC0w
LDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRhdGFi
YXNlVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworc3RydWN0IERlYnVnSW5m
bzsKKworLy8gVGhpcyBpcyBjcmVhdGVkLCB1c2VkLCBhbmQgZGVzdHJveWVkIG9uIHRoZSBTdG9y
ZSdzIHF1ZXVlLgorY2xhc3MgRGF0YWJhc2UgOiBwdWJsaWMgRGF0YWJhc2VVdGlsaXRpZXMgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIERhdGFiYXNlKGNvbnN0
IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSk7CisgICAgdmlydHVhbCB+RGF0YWJhc2UoKTsKKyAg
ICAKKyAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlKTsKKyAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4sIERlYnVnSW5mbz4g
YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKTsKKyAgICBWZWN0b3I8
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpOworICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPik7CisgICAgdm9pZCBjbGVh
ckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIHZvaWQgY2xlYXJTZW50QXR0
cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOworCisgICAg
U3RyaW5nIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKCk7CisgICAg
dm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRG
b3JUZXN0aW5nKCk7CisgICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OworICAgIHVzaW5nIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OworICAgIHVzaW5nIERvbWFpbklEID0gdW5z
aWduZWQ7CisgICAgdXNpbmcgU291cmNlRG9tYWluSUQgPSB1bnNpZ25lZDsKKyAgICB1c2luZyBE
ZXN0aW5hdGlvbkRvbWFpbklEID0gdW5zaWduZWQ7CisgICAgdXNpbmcgU291cmNlRWFybGllc3RU
aW1lVG9TZW5kID0gZG91YmxlOworICAgIHVzaW5nIERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kID0gZG91YmxlOworCisgICAgYm9vbCBjcmVhdGVTY2hlbWEoKSBmaW5hbDsKKyAgICB2b2lk
IGRlc3Ryb3lTdGF0ZW1lbnRzKCkgZmluYWw7CisgICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+LCBzdGQ6Om9wdGlvbmFsPEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IGZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNv
bnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uU2l0ZSYpOworICAgIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IGJ1aWxkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
KiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOworICAgIHZvaWQgcmVt
b3ZlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7CisgICAg
U3RyaW5nIGF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOworICAgIHZvaWQgbWFya1JlcG9y
dEFzU2VudFRvRGVzdGluYXRpb24oU291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQp
OworICAgIHZvaWQgbWFya1JlcG9ydEFzU2VudFRvU291cmNlKFNvdXJjZURvbWFpbklELCBEZXN0
aW5hdGlvbkRvbWFpbklEKTsKKyAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kPj4gZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYpOworICAgIHN0ZDo6b3B0aW9uYWw8RG9tYWluSUQ+IGVuc3VyZURvbWFpbklEKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgc3RkOjpvcHRpb25hbDxEb21h
aW5JRD4gZG9tYWluSUQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBT
dHJpbmcgZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERvbWFpbklEKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc2V0VW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZmluZEF0
dHJpYnV0ZWRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4gbV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudD4gbV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uc1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PiBtX2NsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1l
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jbGVh
ckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NsZWFyRXhwaXJlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+IG1fZWFybGllc3RUaW1lc1RvU2VuZFN0YXRlbWVudDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX21hcmtSZXBvcnRBc1NlbnRU
b1NvdXJjZVN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PiBtX21hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZG9tYWluSURGcm9tU3Ry
aW5nU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ+IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0
ZW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1ZDM5N2JiNzA3MjUxMDdlODgx
ZTQyMTRmYjYxNmM0NzkzMjNhOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdJbmZvLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworRGVidWdJbmZvIERl
YnVnSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBtZXNzYWdlcy5p
c29sYXRlZENvcHkoKSB9OworfQorCitEZWJ1Z0luZm86Ok1lc3NhZ2UgRGVidWdJbmZvOjpNZXNz
YWdlOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7IG1lc3NhZ2VMZXZlbCwg
bWVzc2FnZS5pc29sYXRlZENvcHkoKSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJ
bmZvLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRmMTE2
MDA4MzEwNTgwNzk1MDgyMjc2MTU5YTZmYzdhMmQ1ODQ3MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK25hbWVzcGFjZSBQQ00geworCitzdHJ1Y3QgRGVidWdJbmZvIHsKKworICAgIHN0cnVjdCBN
ZXNzYWdlIHsKKyAgICAgICAgSlNDOjpNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsOworICAgICAg
ICBTdHJpbmcgbWVzc2FnZTsKKworICAgICAgICBNZXNzYWdlIGlzb2xhdGVkQ29weSgpIGNvbnN0
OworICAgIH07CisKKyAgICBWZWN0b3I8TWVzc2FnZT4gbWVzc2FnZXM7CisKKyAgICBEZWJ1Z0lu
Zm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGE5YWMzMmJm
ZjJjYTI2NWUyMWM1NjhhNWJiMjc4YmQwYWI4MTlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JlLmNwcApAQCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
LmgiCisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgiCisjaW5j
bHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3
dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVz
cGFjZSBQQ00geworCitTdG9yZTo6U3RvcmUoUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmIHdv
cmtRdWV1ZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKKyAgICA6IG1fcXVldWUo
V1RGTW92ZSh3b3JrUXVldWUpKQoreworICAgIGlmICghZGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0
eSgpKSB7CisgICAgICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGRhdGFiYXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5
KCldICgpIG11dGFibGUgeworICAgICAgICAgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8RGF0
YWJhc2U+KFdURk1vdmUoZGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICAgICAgfSk7CisgICAgfQor
fQorCitTdG9yZTo6flN0b3JlKCkgPSBkZWZhdWx0OworCisvLyBGSVhNRTogTWlncmF0ZSBkYXRh
IGZyb20gb2xkIGRhdGFiYXNlLgorCit2b2lkIFN0b3JlOjpwb3N0VGFzayhGdW5jdGlvbjx2b2lk
KCk+JiYgdGFzaykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOworfQorCit2b2lkIFN0b3JlOjpwb3N0VGFza1Jl
cGx5KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHJlcGx5KQoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHJlcGx5
KSk7Cit9CisKK3ZvaWQgU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKK3sKKyAgICBwb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhdHRyaWJ1dGlvbiA9IFdU
Rk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGVdICgpIG11dGFibGUgeworICAgICAg
ICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmluc2VydFByaXZhdGVD
bGlja01lYXN1cmVtZW50KFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGUpOwor
ICAgIH0pOworfQorCit2b2lkIFN0b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBwb3N0VGFzayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNl
KQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIH0pOworfQorCit2b2lkIFN0
b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBk
ZXN0aW5hdGlvblNpdGUsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJlbWVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiYmLCBEZWJ1Z0lu
Zm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gRklYTUU6IGVwaGVtZXJhbE1l
YXN1cmVtZW50IG5lZWRzIGFuIGlzb2xhdGVkQ29weS4KKyAgICBwb3N0VGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzb3VyY2VTaXRlID0gc291cmNlU2l0ZS5pc29s
YXRlZENvcHkoKSwgZGVzdGluYXRpb25TaXRlID0gZGVzdGluYXRpb25TaXRlLmlzb2xhdGVkQ29w
eSgpLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKSwgZXBoZW1lcmFsTWVhc3VyZW1lbnQgPSBXVEZNb3ZlKGVwaGVtZXJhbE1lYXN1cmVtZW50
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlKSB7CisgICAgICAgICAgICByZXR1cm4gcG9z
dFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpu
dWxsb3B0LCB7IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJ
bnNlcnQgZXBoZW1lcmFsIG1lYXN1cmVtZW50IHJpZ2h0IGJlZm9yZSBhdHRyaWJ1dGlvbi4KKyAg
ICAgICAgaWYgKGVwaGVtZXJhbE1lYXN1cmVtZW50KSB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChlcGhlbWVyYWxNZWFzdXJlbWVudC0+aXNFcGhlbWVyYWwoKSk7CisgICAgICAgICAgICBt
X2RhdGFiYXNlLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKCplcGhlbWVy
YWxNZWFzdXJlbWVudCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpV
bmF0dHJpYnV0ZWQpOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBbc2Vjb25kcywgZGVidWdJ
bmZvXSA9IG1fZGF0YWJhc2UtPmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KHNvdXJj
ZVNpdGUsIGRlc3RpbmF0aW9uU2l0ZSwgV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7
CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgd2FudCB0byBiZSBhbiBpc29sYXRlZENv
cHksIHRvbywgaW4gY2FzZSB3ZSBldmVyIGFkZCBhbnl0aGluZyB0byBBdHRyaWJ1dGlvblNlY29u
ZHNVbnRpbFNlbmREYXRhIHRoYXQgbmVlZHMgaXQuCisgICAgICAgIHBvc3RUYXNrUmVwbHkoW3Nl
Y29uZHMgPSBXVEZNb3ZlKHNlY29uZHMpLCBkZWJ1Z0luZm8gPSBkZWJ1Z0luZm8uaXNvbGF0ZWRD
b3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlY29uZHMp
LCBXVEZNb3ZlKGRlYnVnSW5mbykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBT
dG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFN0
cmluZyByZXN1bHQ7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgcmVzdWx0
ID0gbV9kYXRhYmFzZS0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3Rpbmco
KTsKKyAgICAgICAgcG9zdFRhc2tSZXBseShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xhdGVkQ29weSgp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9y
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnM7
CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgY29udmVydGVkQXR0cmlidXRp
b25zID0gbV9kYXRhYmFzZS0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7
CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGFuIGlzb2xhdGVkQ29weS4KKyAgICAgICAg
cG9zdFRhc2tSZXBseShbY29udmVydGVkQXR0cmlidXRpb25zID0gV1RGTW92ZShjb252ZXJ0ZWRB
dHRyaWJ1dGlvbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShj
b252ZXJ0ZWRBdHRyaWJ1dGlvbnMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
U3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5tYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAg
ICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7
Cit9CisKKy8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgYWRkIGEgY29tcGxldGlvbiBoYW5k
bGVyIGhlcmUuCit2b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKK3sK
KyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Cisg
ICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om51bGxvcHQpOworICAgIH0pOworfQorCit2b2lkIFN0
b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICBwb3N0VGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW4gPSBkb21haW4uaXNv
bGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAg
ICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChkb21haW4pOwor
ICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpCit7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oKSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFz
ZS0+Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICB9KTsKK30KKwor
dm9pZCBTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJiBhdHRyaWJ1dGlvblRvQ2xlYXIsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQpCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGhhdmUgYW4gaXNvbGF0
ZWRDb3B5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MTEyIHdh
c24ndCBxdWl0ZSBlbm91Z2guCisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgYXR0cmlidXRpb25Ub0NsZWFyID0gV1RGTW92ZShhdHRyaWJ1dGlvblRv
Q2xlYXIpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50XSgpIG11dGFibGUgeworICAgICAgICBp
ZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNsZWFyU2VudEF0dHJpYnV0
aW9uKFdURk1vdmUoYXR0cmlidXRpb25Ub0NsZWFyKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2lu
dCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6OmNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgbV9kYXRhYmFzZSA9IG51bGxw
dHI7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MWFhNjQzYWY4OTJjMDY1ZjQ3M2VkYTg5YjM1NDAz
NjM2NjYxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworZW51bSBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSA6
IGJvb2w7CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBEYXRhYmFzZTsKK3N0cnVjdCBEZWJ1
Z0luZm87CisKK2NsYXNzIFN0b3JlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0b3Jl
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdG9yZT4gY3JlYXRlKFJlZjxTdXNwZW5kYWJs
ZVdvcmtRdWV1ZT4mJiBxdWV1ZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JlKFdURk1vdmUocXVldWUpLCBk
YXRhYmFzZURpcmVjdG9yeSkpOworICAgIH0KKworICAgIH5TdG9yZSgpOworCisgICAgdm9pZCBp
bnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCYmLCBXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsK
KyAgICB2b2lkIGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxN
ZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRh
PiYmLCBEZWJ1Z0luZm8mJik+JiYpOworCisgICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwor
ICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBp
cmVkRm9yVGVzdGluZygpOworICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisKKyAgICB2b2lkIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4m
Jik+JiYpOworICAgIHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsK
KyAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvblRvQ2xlYXIsIFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsK
KworICAgIHZvaWQgY2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKworcHJpdmF0
ZToKKyAgICBTdG9yZShSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+JiYsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VEaXJlY3RvcnkpOworCisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+
JiYpOworICAgIHZvaWQgcG9zdFRhc2tSZXBseShGdW5jdGlvbjx2b2lkKCk+JiYpOworCisgICAg
c3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIFJlZjxTdXNwZW5kYWJs
ZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCA2YTYzNWQ4
OWQ3NzMwODA4NTJjM2ExZGZmMWE4ZGU4NzZlYWU2MDczLi4zM2FiMTk3ZDAxYTdmODdmNDg1NWQ5
YzkyMDNkYTdjY2QwMjg0YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nl
c3Npb24uaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmV0Y2hPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb3JtRGF0YS5oPgpAQCAtMjUw
LDcgKzI1MSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNlcnRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNCiAgICAgfQogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQot
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoV1RGTW92ZShtZWFzdXJlbWVudCksIHR5cGUpOworICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmluc2VydFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUobWVhc3VyZW1lbnQpLCB0eXBlKTsKICNlbmRp
ZgogfQogCkBAIC0yOTcsMTMgKzI5OCwxOCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6YXR0cmlidXRlKGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbgogICAg
IH0KICAgICAgICAgCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNl
U2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBz
dGQ6OmV4Y2hhbmdlKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCksIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YSkgeworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
c291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpLCBzdGQ6OmV4Y2hhbmdlKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCks
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25T
ZWNvbmRzVW50aWxTZW5kRGF0YSwgYXV0byBkZWJ1Z0luZm8pIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoIWF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgp
KSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IGRlYnVnSW5mby5tZXNz
YWdlcykKKyAgICAgICAgICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29u
c29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50LCBtZXNzYWdlLm1lc3NhZ2VMZXZlbCwgbWVzc2FnZS5tZXNzYWdlKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEu
dmFsdWUoKS5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8gbWluU2Vjb25kc1VudGlsU2VuZCA9IGF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2Vu
ZERhdGEudmFsdWUoKS5taW5TZWNvbmRzVW50aWxTZW5kKCk7CiAKQEAgLTM5NSw3ICs0MDEsNyBA
QCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmlidXRp
b24oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJTZW50
QXR0cmlidXRpb24oV1RGTW92ZShzZW50Q29udmVyc2lvbiksIGF0dHJpYnV0aW9uUmVwb3J0RW5k
cG9pbnQpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JlKCkuY2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShzZW50Q29udmVyc2lv
biksIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwogI2VuZGlmCiB9CiAKQEAgLTQwOSw3ICs0
MTUsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZVBlbmRpbmdB
dHRyaWJ1dGlvblJlcXVlc3RzKCkKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmFsbEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldIChhdXRvJiYgYXR0cmlidXRpb25zKSB7CisgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRv
JiYgYXR0cmlidXRpb25zKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGF1dG8gbmV4dFRpbWVUb0ZpcmUgPSBTZWNvbmRzOjppbmZpbml0eSgp
OwpAQCAtNDczLDcgKzQ3OSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpjbGVhcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQot
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KCk7CisgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmUoKS5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CiAjZW5kaWYKIH0K
IApAQCAtNDg0LDcgKzQ5MCw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21h
aW4oZG9tYWluKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3Ry
YWJsZURvbWFpbihkb21haW4pOwogI2VuZGlmCiB9CiAKQEAgLTQ5NSwxMSArNTAxLDExIEBAIHZv
aWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckV4cGlyZWQoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
ZSgpLmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CiAjZW5kaWYKIH0KIAot
dm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3ZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjp0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFmZWF0dXJlRW5hYmxl
ZCgpKSB7CkBAIC01MDgsNyArNTE0LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXI6OnRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJgogICAgIH0K
IAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JlKCkucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3Rp
bmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCkBAIC01NDUsNyArNTUxLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXI6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFz
RXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICNlbmRpZgogfQogCkBAIC01NzUs
NyArNTgxLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1hcmtBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHAKICAgICB9CiAKICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5tYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkubWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmgKaW5kZXggY2Q3MmYyNTFhZWViYTFkZmNjZTBhNjcwM2EyZTVkODQzMzllZGI5ZS4uMWU2MTZk
YTYxYTE0ZWQwNzBhN2IzZmQ3YzUxZWM2YWE1NTZkZmRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZUF0dHJpYnV0
aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAgICAgdm9pZCBj
bGVhcigpOwogICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpOwotICAgIHZvaWQgdG9TdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcpPiYmKSBjb25zdDsKKyAgICB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0OwogICAgIHZvaWQgc2V0T3ZlcnJpZGVUaW1l
ckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzUnVubmluZ1Rlc3QgPSB2YWx1ZTsgfQogICAg
IHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKTsKICAgICB2b2lkIHNl
dFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlci5jcHAKaW5kZXggYjVjN2M1YzE1NWJkYmFhMDlkMjRjMjVkNGVlYTRj
OGE1MWE1ZDY0YS4uZWNiYjRlMmQwODg3NDU2YzRkMTllNDIzMDNhZGJmNzU2YmFiNWU2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcApAQCAtNTEsNiArNTEsMTEg
QEAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE5ldHdvcmtMb2FkZXIoTmV0d28KICAgICBtX25ldHdvcmtMb2FkLT5zdGFydCgpOwog
fQogCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6On5Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoKQoreworICAgIGNhbmNlbCgpOworfQorCiB2b2lkIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZmFpbChSZXNvdXJjZUVycm9yJiYg
ZXJyb3IpCiB7CiAgICAgaWYgKCFtX2NvbXBsZXRpb25IYW5kbGVyKQpAQCAtNjAsMTEgKzY1LDE2
IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpmYWlsKFJlc291
cmNlRXJyb3ImJiBlcnJvcikKICAgICBkaWRDb21wbGV0ZSgpOwogfQogCi12b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikK
K3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpjYW5jZWwoKQogewog
ICAgIGZhaWwoUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlv
biB9KTsKIH0KIAordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6Ondp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVz
dCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpCit7CisgICAgY2FuY2VsKCk7Cit9CisKIHZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEpTT05NSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnROZXR3b3JrTG9hZGVyLmgKaW5kZXggMTk3MmQwNWU1Y2JmZDg4ZWQ2MzY5MzE5N2U1ZDYwNWZi
MzBkMzRmMC4uYzlmZTkwYWJhMmM2NDA2NmY5ZTc3YTNiODM5NDQ5N2U4NTZjOTdhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oCkBAIC00Miw2ICs0Miw4IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYpPjsKICAgICBzdGF0aWMgdm9pZCBzdGFydChOZXR3
b3JrU2Vzc2lvbiYsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBDYWxsYmFjayYmKTsKIAorICAg
IH5Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoKTsKKwogcHJpdmF0ZToKICAg
ICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoTmV0d29ya1Nlc3Npb24mLCBO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgQ2FsbGJhY2smJik7CiAKQEAgLTU2LDYgKzU4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBmaW5hbDsKIAogICAgIHZvaWQgZmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYp
OworICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwogCiAgICAgV2Vh
a1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKaW5kZXggZDI4MjA0NmNiZmI2MDZkOWFkMTRlNDcxMTk5
MWU2OWU4ZDA4MjRjNy4uNjI3NzM3MGQ4NTY4NWY0Yzg0MDFiMGIxOGVjZGY5ODkzNTQ2ODQ4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRW50cnkuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdWJy
ZXNvdXJjZXNFbnRyeS5oIgorI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApp
bmRleCA0NzNjZTUzNjY3ZGQ4ODNkYjgxZTJmZTU5OTQyN2U4NWY4MDQ2MDRhLi4xY2VhZTE4MzA1
YTc2ODgxMWVkZjNiNmYwMGQ5ZTMwMjE4ZDE2N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAorI2luY2x1ZGUgIkxpYldlYlJUQ1Jl
c29sdmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ROUy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwCmluZGV4IDMwODAzNDM4NmZmY2IyNjlmZTI5YjMxNDA5ZTE4
MzE5OGIyY2FlMDIuLmUxNGY4NzNiN2M4MTdjNzk3ZWM0ZjNiNTY4MGIyMTJlM2NmNmI5ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIHZv
aWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5m
bywgY29uc3QgQ0ZTdHIKIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3Vu
dDsgKytpbmRleCkgewogICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJh
eUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBpZiAo
YXV0byBhZGRyZXNzID0gSVBBZGRyZXNzOjpmcm9tU29ja0FkZHJJbjYoKnJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luNio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpKSkK
KyAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IFdlYkNvcmU6OklQQWRkcmVzczo6ZnJvbVNvY2tB
ZGRySW42KCpyZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbjYqPihDRkRh
dGFHZXRCeXRlUHRyKGRhdGEpKSkpCiAgICAgICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBw
ZW5kKCphZGRyZXNzKTsKICAgICB9CiAgICAgaWYgKGFkZHJlc3Nlcy5pc0VtcHR5KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5oCmluZGV4IDk3ZDUxNDg3NGRkNjBkNTk3Y2ZmNzgzOGNkODM2OTcyZmE5YWQzMmQu
LjI4OGFjN2Q1MWM1NjYwMzE2ODAwZjY2YTExMTFjODEyMTQ2ZTBkMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
aApAQCAtMzcsNiArMzcsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMgewogCiAgICAgU3RyaW5nIGRpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIFN0cmluZyBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAg
ICBib29sIGVuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNJdHBTdGF0ZUV4cGxpY2l0bHlT
ZXQgeyBmYWxzZSB9OwogICAgIGJvb2wgZW5hYmxlTG9nVGVzdGluZ0V2ZW50IHsgZmFsc2UgfTsK
QEAgLTU1LDYgKzU3LDggQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
IHsKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgZGlyZWN0b3J5OwogICAgICAgICBlbmNvZGVy
IDw8IGRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICAgICAgZW5jb2RlciA8PCBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIGVuY29kZXIgPDwgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAg
ICAgICBlbmNvZGVyIDw8IGVuYWJsZWQ7CiAgICAgICAgIGVuY29kZXIgPDwgaXNJdHBTdGF0ZUV4
cGxpY2l0bHlTZXQ7CiAgICAgICAgIGVuY29kZXIgPDwgZW5hYmxlTG9nVGVzdGluZ0V2ZW50OwpA
QCAtODEsNyArODUsMTcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
IHsKICAgICAgICAgZGVjb2RlciA+PiBkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgICAg
IGlmICghZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworICAgICAgICBkZWNvZGVyID4+IHByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgaWYgKCFwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyAgICAgICAgZGVjb2RlciA+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKwogICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKICAgICAgICAgaWYgKCFlbmFibGVkKQpAQCAtMTQy
LDYgKzE1Niw4IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAg
ICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqZGlyZWN0b3J5KSwKICAgICAg
ICAgICAgIFdURk1vdmUoKmRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCisgICAgICAgICAgICBX
VEZNb3ZlKCpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpLAorICAgICAg
ICAgICAgV1RGTW92ZSgqcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgICAgIFdURk1vdmUoKmVuYWJsZWQpLAogICAgICAgICAg
ICAgV1RGTW92ZSgqaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQpLAogICAgICAgICAgICAgV1RGTW92
ZSgqZW5hYmxlTG9nVGVzdGluZ0V2ZW50KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY2YWVkYTQzYzgyZDhi
ZmIzMzViYmZlZjYwOTVkMDRlZmFkYjg2MjAuLjNkNTA5N2MyNDg5ZmVmYmRjYTc1NDE3YzRkYzgx
N2QwYmQxNTg0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTcsNiArNTcsNyBAQCBHUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiAKK05ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAK
QEAgLTk4LDYgKzk5LDEwIEBAIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
LmNwcAogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKIAorTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YXRhYmFzZS5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKKwogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBAbm8tdW5p
ZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUu
Y3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRl
eCBhY2QwNGQ4NjdmZDFhMDgwMWJhZGFkYzU2MzU3N2UyNWQ4NzdjZDgwLi43Nzg1OTU5ZWY1NjYz
MWM1YTUxYTQxYWI4M2U0OTVlZjk2ZWQxNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaApAQCAtNjAsNiArNjAsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3Mo
MTAuMTMpLCBpb3MoMTEuMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9z
ZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeTopIE5TVVJMICpfd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRDb29raWVTdG9yYWdl
RmlsZTopIE5TVVJMICpfY29va2llU3RvcmFnZUZpbGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgc2V0dGVyPV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OikgTlNVUkwg
Kl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCksIGlvcygxMS4zKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNv
cHkpIE5TVVJMICpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldENhY2hlU3RvcmFnZURpcmVjdG9yeTopIE5T
VVJMICpfY2FjaGVTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCksIGlvcygxMS4zKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OikgTlNVUkwgKl9zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlv
cygxMS4zKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCks
IGlvcygxMy40KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KaW5k
ZXggNmEzYjYzY2I2OTA4ZWJiOWFlODM2MWY0MzY4MzljMDNlZDdkNjM2ZC4uNjU5ZDZmZDI1ZjRi
MGJkNmY1ODI0YTEyZmUwNmI5YzQ4ZDU3ZTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5tbQpAQCAtMTg2LDYgKzE4NiwyMiBAQCBzdGF0aWMgdm9pZCBjaGVja1VS
TEFyZ3VtZW50KE5TVVJMICp1cmwpCiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCistIChOU1VSTCAqKXByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeQoreworICAgIGF1dG8mIGRpcmVjdG9yeSA9
IF9jb25maWd1cmF0aW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnko
KTsKKyAgICBpZiAoZGlyZWN0b3J5LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNd
OworfQorCistICh2b2lkKXNldFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9y
eTooTlNVUkwgKil1cmwKK3sKKyAgICBpZiAoIV9jb25maWd1cmF0aW9uLT5pc1BlcnNpc3RlbnQo
KSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u
IGZvcm1hdDpAIkNhbm5vdCBzZXQgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0
b3J5IG9uIGEgbm9uLXBlcnNpc3RlbnQgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Il07CisgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOworfQorCiAt
IChOU1VSTCAqKV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkKIHsKICAgICByZXR1cm4gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNE
aXJlY3Rvcnk6WUVTXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMjFiZTI1ODEwYjMyNmIxYjAwMGEx
NGNhYWVmZGQ3MmU4Mzc3ZTVmMS4uYTAyMWViZGJmNjgxZGM1YWFmOGUyNGNjODcxZTQ1N2Y4MDg1
YTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTI2MSw2ICsyNjEsOCBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShyZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24t
Pm5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKSk7CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKSk7CisgICAgaWYg
KCFtX2NvbmZpZ3VyYXRpb24tPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9y
eSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPnByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSgpKSk7CiAgICAgaWYgKCFtX2NvbmZpZ3Vy
YXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5KCkgJiYg
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoKS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQpAQCAtMTk2NCw2ICsx
OTY2LDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFy
YW1ldGVycygpCiAKICAgICByZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwogCisgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGxvb2sgYXQgbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24gaW5zdGVhZCBvZiBtX2NvbmZpZ3VyYXRpb24uCiAgICAgYXV0byByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGU7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkgewpAQCAtMTk3MSw2ICsxOTc0LDEzIEBAIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZSA9IFdURk1vdmUoKmhh
bmRsZSk7CiAgICAgfQogCisgICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VE
aXJlY3RvcnkgPSBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUhhbmRsZTsKKyAgICBpZiAoIXByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSkpCisg
ICAgICAgICAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUg
PSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KKwogICAgIGF1dG8gbmV0d29ya0NhY2hlRGlyZWN0
b3J5ID0gcmVzb2x2ZWROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlm
ICghbmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewpAQCAtMjAwMCw2ICsyMDEwLDgg
QEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVy
cygpCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMgPSB7CiAgICAgICAgIFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeUhhbmRsZSksCisgICAgICAgIFdURk1vdmUocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yYWdlRGlyZWN0b3J5KSwKKyAgICAgICAgV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUpLAogICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCgpLAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAg
IGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKaW5kZXggYzcwMmQ0YTdhM2VlNWVjYmZhYTY5MGI0YzNhZGEwYjIzZDcwZjM5
NS4uNWY1MTY2YjcyOGUzYmRhZWQ5ZDI1ODM2OTQ0YjFkM2RlODNhMjNhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNzYsNiArNzYsNyBAQCBSZWY8V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb3B5KCkgY29uc3QKICAgICBjb3B5LT5tX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnkg
PSB0aGlzLT5tX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2RldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkgPSB0aGlzLT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAgY29w
eS0+bV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX3By
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2phdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+bV9qYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeTsKICAgICBjb3B5LT5tX2Nvb2tpZVN0b3JhZ2VGaWxlID0gdGhpcy0+bV9j
b29raWVTdG9yYWdlRmlsZTsKICAgICBjb3B5LT5tX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllciA9IHRoaXMtPm1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggZWZhYTljODBhMGM4MjBkZTNj
Y2MyNjgxNDljODY2YWYwM2E4NDVhZS4uZDYwYjU5ZjRkOTkyYWQ4NGZhMzE4MGJhNDZiMjIxOTBm
MDdhYTlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC0xMTcs
NiArMTE3LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeTsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShT
dHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0g
V1RGTW92ZShkaXJlY3RvcnkpOyB9CiAKKyAgICBjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9
CisKICAgICBjb25zdCBTdHJpbmcmIG5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0g
V1RGTW92ZShkaXJlY3RvcnkpOyB9CiAgICAgCkBAIC0yMDEsNiArMjA0LDcgQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5OwogICAgIFN0cmluZyBt
X2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OworICAgIFN0cmluZyBtX3ByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9qYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9jb29raWVTdG9yYWdlRmlsZTsKICAgICBTdHJp
bmcgbV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZTNkMzJiMzI5NWMyYzQ0
ZmQ0NDQ0Y2RkN2YxNDFmMjQwMDRjYTAyLi5kY2UxOTMzZmYzZDRjMGYxNTk0MDI1N2YwMTJmZDU2
ODFkZDAzNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEyNzEsNiArMTI3MSw4IEBACiAJCTVDNzk1RDcwMjI5RjM3M0YwMDNGRjFD
NCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTBDMzY5MjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRl
eHRNZW51RWxlbWVudEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CiAJCTVDNzk1RDcxMjI5RjM3NTcwMDNGRjFDNCAvKiBXS0NvbnRleHRNZW51RWxl
bWVudEluZm9Qcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0UwQzM2QTIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJ
bmZvUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTVDN0ZCNDcwMjFFOTdEQzUwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0ZCNDZGMjFFOTdDMEMw
MDlFMzI0MSAvKiBXZWJDb29raWVKYXIuaCAqLzsgfTsKKwkJNUM4MjZENkIyNkQ0ODJFRjAwOEFF
QzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDODI2RDY4MjZENDZCNDQwMDhBRUM5MSAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmggKi87IH07CisJCTVDODI2RDZDMjZENDgyRjIw
MDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzgyNkQ2OTI2RDQ4MkVBMDA4QUVD
OTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oICovOyB9OwogCQk1QzhCQzc5
NzIxOENCQjQ4MDA4MTM4ODYgLyogU2FmZUJyb3dzaW5nLnhjYXNzZXRzIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzhCQzc5NjIxOENCNThBMDA4MTM4
ODYgLyogU2FmZUJyb3dzaW5nLnhjYXNzZXRzICovOyB9OwogCQk1QzhERDM4MDFGRTQ1MjE2MDBG
MkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzhERDM3RjFGRTQ1MTkyMDBGMkE1NTYgLyogV2Vic2l0
ZUF1dG9wbGF5UG9saWN5LmggKi87IH07CiAJCTVDOUE5MTExMjI4RjY5Q0MwMDVDNUIxNyAvKiBY
UENTZXJ2aWNlTWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDODI4Mzk2MTZCNDdFQzQwMEEyNzhGRSAvKiBYUENTZXJ2aWNlTWFpbi5tbSAqLzsg
fTsKQEAgLTQ1MDksNiArNDUxMSwxMiBAQAogCQk1QzdGQjQ2RjIxRTk3QzBDMDA5RTMyNDEgLyog
V2ViQ29va2llSmFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvb2tp
ZUphci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzgwQjNEQjIzNjkwRDhEMDA4
NkU2REUgLyogU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODBCM0REMjM2OTBGMTAwMDg2RTZERSAvKiBT
ZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzgyNkQ2NzI2RDQ2QjQzMDA4QUVDOTEgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUM4MjZENjgyNkQ0NkI0NDAwOEFFQzkxIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzgyNkQ2OTI2RDQ4MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDZB
MjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzgyNkQ2RTI2
RDU4QTE2MDA4QUVDOTEgLyogRGF0YWJhc2VVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzgyNkQ2RjI2RDU4QTE2MDA4QUVDOTEgLyogRGF0YWJhc2VVdGls
aXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VVdGlsaXRp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4NENGOTAxRjk2QUM0RTAwQjY3
MDVBIC8qIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODVDNzg2MUMzRjIzQzUwMDYxQTRGQSAvKiBQ
ZW5kaW5nRG93bmxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGVuZGluZ0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4OURG
NTYyMUFGNjFGRjAwNDY0NUU4IC8qIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NDYs
NiArNDU1NCw4IEBACiAJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZEluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCODkxQzY1MjRBNTAwQThGRENG
IC8qIE5ldHdvcmtEYXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
ZXR3b3JrRGF0YVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCOEIx
QzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQkU5MDhGMjZEN0ZCNjIwMDVBMkU5NSAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0JFOTA5MDI2RDdGQjdDMDA1QTJFOTUgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVkQnVmZmVy
Q29weS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRCdWZmZXJDb3B5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDRDI4NjQ5MUU3MjJGNDQwMDk0RkRD
OCAvKiBfV0tVc2VyQ29udGVudEZpbHRlclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLVXNlckNvbnRlbnRGaWx0ZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDRDI4NjRBMUU3MjJGNDQwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxl
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRlbnRSdWxlTGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODY3Miw5ICs4NjgyLDEyIEBACiAJ
CQkJOTM5Mjg4RTAyMTQwNERGMDAwRUJCQTMzIC8qIEluZGV4ZWREQiAqLywKIAkJCQkyREE5NDRC
QjE4ODUxMUREMDBFRDg2REIgLyogaW9zICovLAogCQkJCTUxMENDN0RDMTYxMzhFMjkwMEQwM0VE
MyAvKiBtYWMgKi8sCisJCQkJNUMwMUJDMzUyNkQ0NkFENDAwRkVCNDJGIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50ICovLAogCQkJCTkzQkEwNEQ5MjE1MUFEQ0QwMDdGNDU1RiAvKiBTZXJ2aWNl
V29ya2VyICovLAogCQkJCTQxMzA3NTk3MURFODRFRDcwMDM5RUM2OSAvKiB3ZWJydGMgKi8sCiAJ
CQkJOTNCMjYxNDMyMjdEMTQzMTAwQjk3QTc2IC8qIFdlYlN0b3JhZ2UgKi8sCisJCQkJNUM4MjZE
NkUyNkQ1OEExNjAwOEFFQzkxIC8qIERhdGFiYXNlVXRpbGl0aWVzLmNwcCAqLywKKwkJCQk1Qzgy
NkQ2RjI2RDU4QTE2MDA4QUVDOTEgLyogRGF0YWJhc2VVdGlsaXRpZXMuaCAqLywKIAkJCQk1M0Yz
Q0FBNTIwNkM0NDNFMDA4NjQ5MEUgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAgKi8sCiAJ
CQkJNTM1QkNCOTAyMDY5QzQ5QzAwQ0NDRTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCAq
LywKIAkJCQk0NkVFMjg0QjI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeS5jcHAgKi8sCkBAIC05MjQzLDYgKzkyNTYsMTkgQEAKIAkJCXBhdGggPSBTT0F1
dGhvcml6YXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1QzAxQkMz
NTI2RDQ2QUQ0MDBGRUI0MkYgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTVDODI2RDZBMjZENDgyRUEwMDhB
RUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcCAqLywKKwkJCQk1Qzgy
NkQ2OTI2RDQ4MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5o
ICovLAorCQkJCTVDQkU5MDkwMjZEN0ZCN0MwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERlYnVnSW5mby5jcHAgKi8sCisJCQkJNUNCRTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmggKi8sCisJCQkJNUM4MjZENjcyNkQ0NkI0
MzAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwICovLAorCQkJCTVD
ODI2RDY4MjZENDZCNDQwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgg
Ki8sCisJCQkpOworCQkJcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNUMxNDI2RjExQzIzRjgxNzAwRDQxMTgzIC8qIERv
d25sb2FkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0x
MjMwNiw4ICsxMjMzMiwxMCBAQAogCQkJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQcmVm
ZXJlbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBQjE0NUU2MjIzRjkzMTIwMEU0
ODlEOCAvKiBQcmVmZXRjaENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUNDMUI5MDEyRDdF
QURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzgyNkQ2QzI2
RDQ4MkYyMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkJEMDU4NjUyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRTY4OEMyNjBBQkIzRDAw
QkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUM4MjZENkIyNkQ0ODJFRjAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFEQjJF
RiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0M1ODExMzZF
MTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjNG
RDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA2N2MwZjI1YjlhYzg0NDM5Y2I3ZjUwMzlkNjI3YWE5MTgyNmNlNTNlLi5kZDIzOTdkNzJm
ZDZjOTM2MGU0NmI3NWEwMDQxMjI3YzU1N2VhMjk0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDgtMjUgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTZXBh
cmF0ZSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYXRhYmFzZSBmcm9tIFJlc291cmNlTG9hZFN0
YXRpc3RpY3MgZGF0YWJhc2UgYW5kIGFkZCBTUEkgdG8gc2V0IGl0cyBsb2NhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTI3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDIxLTA4LTI1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gVXNlIFB5dGhvbiAzIGluIENJCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmli
dXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0
cmlidXRpb24ubW0KaW5kZXggYzgwY2E3MTZjYzAyMWE0Yjg5NjFlODAzNGViNDAwODAzZTQ4ZjUx
NC4uZWVhZDVmZTAxNjVhNTE3NDBkYmRjNTE3YWM5ZDVhMDI5NmQyNGI2ZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1
dGlvbi5tbQpAQCAtMjgsMTAgKzI4LDEyIEBACiAjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmg+CiAKICNpZiBIQVZFKFJTQV9CU1NBKQogCkBAIC03OCw3ICs4MCw3IEBAIHN0YXRp
YyBOU1VSTCAqZXhhbXBsZVVSTCgpCiAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iXTsKIH0KIAotdm9pZCBydW5CYXNpY0V2ZW50QXR0cmlidXRp
b25UZXN0KEZ1bmN0aW9uPHZvaWQoV0tXZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXImKT4mJiBh
ZGRBdHRyaWJ1dGlvblRvV2ViVmlldykKK3ZvaWQgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVz
dChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKFdL
V2ViVmlldyAqLCBjb25zdCBIVFRQU2VydmVyJik+JiYgYWRkQXR0cmlidXRpb25Ub1dlYlZpZXcp
CiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfcHJldmVudE5ldHdvcmtQcm9jZXNzU3VzcGVu
c2lvbkZvclRlc3RpbmddOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwpAQCAtMTEzLDcgKzExNSw3
IEBAIHZvaWQgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChGdW5jdGlvbjx2b2lkKFdLV2Vi
VmlldyAqLCBjb25zdCBIVFRQU2VydmVyJik+CiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6
Okh0dHBzKTsKICAgICBOU1VSTCAqc2VydmVyVVJMID0gc2VydmVyLnJlcXVlc3QoKS5VUkw7CiAK
LSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgYXV0byB3
ZWJWaWV3ID0gY29uZmlndXJhdGlvbiA/IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKSA6IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBhZGRBdHRyaWJ1dGlvblRvV2ViVmlldyh3ZWJWaWV3
LmdldCgpLCBzZXJ2ZXIpOwogICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0
YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOwogICAgIFtbd2Vi
VmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1RMU0NlcnRpZmljYXRl
Q2hhaW46QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIGZvckhvc3Q6c2VydmVyVVJMLmhv
c3RdOwpAQCAtMjgyLDE2ICsyODQsNTEgQEAgVEVTVChFdmVudEF0dHJpYnV0aW9uLCBGcmF1ZFBy
ZXZlbnRpb24pCiAKIFRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwgQmFzaWMpCiB7Ci0gICAgcnVuQmFz
aWNFdmVudEF0dHJpYnV0aW9uVGVzdChbXShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBT
ZXJ2ZXImIHNlcnZlcikgeworICAgIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QobmlsLCBb
XShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgewogICAgICAg
ICBbd2ViVmlldyBfYWRkRXZlbnRBdHRyaWJ1dGlvbldpdGhTb3VyY2VJRDo0MiBkZXN0aW5hdGlv
blVSTDpleGFtcGxlVVJMKCkgc291cmNlRGVzY3JpcHRpb246QCJ0ZXN0IHNvdXJjZSBkZXNjcmlw
dGlvbiIgcHVyY2hhc2VyOkAidGVzdCBwdXJjaGFzZXIiIHJlcG9ydEVuZHBvaW50OnNlcnZlci5y
ZXF1ZXN0KCkuVVJMIG9wdGlvbmFsTm9uY2U6bmlsXTsKICAgICB9KTsKIH0KIAorVEVTVChFdmVu
dEF0dHJpYnV0aW9uLCBEYXRhYmFzZUxvY2F0aW9uKQoreworICAgIE5TRmlsZU1hbmFnZXIgKmZp
bGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgIE5TVVJMICp0
ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJFdmVudEF0dHJpYnV0aW9uRGF0YWJhc2VM
b2NhdGlvblRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworICAgIGlmIChbZmlsZU1hbmFnZXIgZmls
ZUV4aXN0c0F0UGF0aDp0ZW1wRGlyLnBhdGhdKQorICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3Zl
SXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6bmlsXTsKKworICAgIGF1dG8gd2ViVmlld1RvS2VlcE5l
dHdvcmtQcm9jZXNzQWxpdmUgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOworICAgIFt3
ZWJWaWV3VG9LZWVwTmV0d29ya1Byb2Nlc3NBbGl2ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6QCJzdGFydCBuZXR3b3JrIHByb2Nlc3MiXTsKKworICAgIHBpZF90IG9yaWdpbmFsTmV0d29y
a1Byb2Nlc3NQaWQgPSAwOworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvIGRh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBuZXddKTsKKyAgICAgICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgPSB0ZW1wRGlyOworICAgICAgICBh
dXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBu
ZXddKTsKKyAgICAgICAgdmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9
IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpOworICAgICAgICBydW5CYXNp
Y0V2ZW50QXR0cmlidXRpb25UZXN0KHZpZXdDb25maWd1cmF0aW9uLmdldCgpLCBbXShXS1dlYlZp
ZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgeworICAgICAgICAgICAgW3dl
YlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25XaXRoU291cmNlSUQ6NDIgZGVzdGluYXRpb25VUkw6
ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0aW9uOkAidGVzdCBzb3VyY2UgZGVzY3JpcHRpb24i
IHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2VyIiByZXBvcnRFbmRwb2ludDpzZXJ2ZXIucmVxdWVz
dCgpLlVSTCBvcHRpb25hbE5vbmNlOm5pbF07CisgICAgICAgIH0pOworICAgICAgICBvcmlnaW5h
bE5ldHdvcmtQcm9jZXNzUGlkID0gdmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFT
dG9yZS5fbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyOworICAgICAgICBFWFBFQ1RfR1Qob3JpZ2lu
YWxOZXR3b3JrUHJvY2Vzc1BpZCwgMCk7CisgICAgfQorICAgIFV0aWw6OnNwaW5SdW5Mb29wKDEw
KTsKKyAgICB1c2xlZXAoMTAwMDAwKTsKKyAgICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CisKKyAg
ICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDp0ZW1wRGlyLnBhdGhd
KTsKKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpbdGVtcERp
ci5wYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInBjbS5kYiJdXSk7CisKKyAg
ICBbd2ViVmlld1RvS2VlcE5ldHdvcmtQcm9jZXNzQWxpdmUgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nOkAic3RhcnQgbmV0d29yayBwcm9jZXNzIGFnYWluIGlmIGl0IGNyYXNoZWQgZHVyaW5n
IHRlYXJkb3duIl07CisgICAgRVhQRUNUX0VRKHdlYlZpZXdUb0tlZXBOZXR3b3JrUHJvY2Vzc0Fs
aXZlLmdldCgpLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS5fbmV0d29ya1Byb2Nlc3NJ
ZGVudGlmaWVyLCBvcmlnaW5hbE5ldHdvcmtQcm9jZXNzUGlkKTsKK30KKworLy8gRklYTUU6IFdy
aXRlIGEgdGVzdCB0aGF0IHZlcmlmaWVzIHRoYXQgZGF0YSBpcyBtaWdyYXRlZCBmcm9tIG9sZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGRhdGFiYXNlcyB0byB0aGUgbmV3IFBDTSBkYXRhYmFzZS4K
KwogI2lmIEhBVkUoVUlfRVZFTlRfQVRUUklCVVRJT04pCiAKIFRFU1QoRXZlbnRBdHRyaWJ1dGlv
biwgQmFzaWNXaXRoSU9TU1BJKQogewotICAgIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3Qo
W10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIpIHsKKyAgICBy
dW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KG5pbCwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBj
b25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvbiA9IGFk
b3B0TlMoW1tNb2NrRXZlbnRBdHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhSZXBvcnRFbmRwb2lu
dDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMKCldKTsKICAg
ICAgICAgd2ViVmlldy5fdWlFdmVudEF0dHJpYnV0aW9uID0gKFVJRXZlbnRBdHRyaWJ1dGlvbiAq
KWF0dHJpYnV0aW9uLmdldCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQu
bW0KaW5kZXggYmQxZTI3YTkxMDJkMTcyYmVmOWI0OGQwM2NiYTA2YTA5ZWM1MDQ2ZC4uNjliZDVl
ZjY3NTAxOThhNzI2NzBhNzY3ZTAyNDA5MThhMzc4NWQ5MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50Lm1tCkBAIC0zMSw2ICszMSw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisvKgorIC8vIEZJWE1F
OiBJbXBsZW1lbnQgbWlncmF0aW9uIGZyb20gb2xkZXIgZGF0YWJhc2VzIGFuZCBnZXQgdGhlc2Ug
dGVzdHMgd29ya2luZy4KIAogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgQWRkTWlzc2lu
Z1BDTUZyYXVkUHJldmVudGlvbkNvbHVtbnMpCiB7CkBAIC0xNTUsMyArMTU3LDQgQEAgVEVTVChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgUmVuYW1lRGVzdGluYXRpb25TaXRlQ29sdW1uKQogCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CiB9CisqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436593</attachid>
            <date>2021-08-26 17:40:05 -0700</date>
            <delta_ts>2021-08-27 11:39:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229527-20210826174004.patch</filename>
            <type>text/plain</type>
            <size>241407</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUyOGFjN2M2NGJlYzQ0
NjMzMjZhNGIzYTYzYjlkNGQ2YzcwODk0OS4uOGMzYWFmYTcwOGJkNWZlMGU4NjRmNTJlOTQ2ODg5
MzZmYzFiM2M2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA4LTI2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJh
dGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZGF0YWJhc2UgZnJvbSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIGRhdGFiYXNlIGFuZCBhZGQgU1BJIHRvIHNldCBpdHMgbG9jYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaDoKKwogMjAyMS0w
OC0yNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVUF0gUmVtb3RlQXVkaW9TZXNzaW9uIGRvZXNuJ3QgaW1wbGVtZW50IGJlZ2luL2VuZEludGVy
cnVwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBmNTE3Y2NiNWZhN2IzYjUxZDc0NTdmMDhmYzE0ZGYwNDc2YWJi
YmNiLi5mNTJhZTA5YmYyMDdmNGM3ZGI3MWQzZmY5ODdiNGE3YmMyYjMyNWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3NCBAQAorMjAyMS0wOC0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFNlcGFyYXRlIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IGRhdGFiYXNlIGZyb20gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBkYXRhYmFzZSBhbmQgYWRk
IFNQSSB0byBzZXQgaXRzIGxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjk1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byBkbyB0aGlzLCBJIG1vdmVkIGNvbW1vbiBjb2Rl
IHRvIERhdGFiYXNlVXRpbGl0aWVzIGFuZCBtb3ZlZCB0aGUgUENNIGxvZ2ljIGZyb20gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUKKyAgICAgICAgdG8gYSBuZXcgY2xhc3MuICBJ
dCBwdXRzIHRoZSBkYXRhIGluIGEgZGlmZmVyZW50IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
IHVubGVzcyBTUEkgdGVsbHMgaXQgdG8gcHV0IGl0IGluIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4K
KworICAgICAgICBUaGUgYmlnZ2VzdCBmdW5jdGlvbmFsIGNoYW5nZSBJIG5lZWRlZCB0byBkbyB3
YXMgdG8gbWFrZSBhIFBDTU9ic2VydmVkRG9tYWlucyB0YWJsZSBpbiB0aGUgbmV3IERCIGluc3Rl
YWQgb2YgYW4gT2JzZXJ2ZWREb21haW5zIHRhYmxlLAorICAgICAgICB3aGljaCBjb250YWluZWQg
bW9yZSBpbmZvcm1hdGlvbiB0aGFuIEkgbmVlZGVkLiAgSSBuZWVkIGp1c3QgYW4gaW5kZXggYW5k
IGEgbGlzdCBvZiBkb21haW5zLgorCisgICAgICAgIEFub3RoZXIgc2xpZ2h0IGltcGxlbWVudGF0
aW9uIGNoYW5nZSBpcyB0aGF0IGluc3RlYWQgb2YgY2hlY2tpbmcgaXNFcGhlbWVyYWwgaW4gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBJIGp1c3QgcGFzcyBhbiBlbXB0eQorICAgICAg
ICBTdHJpbmcgdG8gdGhlIFN0b3JlIGlmIGl0J3MgZXBoZW1lcmFsLCB3aGljaCBjYXVzZXMgbm8g
REIgdG8gYmUgY3JlYXRlZCwgd2hpY2ggY2F1c2VzIGVxdWl2YWxlbnQgYmVoYXZpb3IuCisKKyAg
ICAgICAgSSBhbHNvIG1vdmVkIHRoZSBkZWJ1ZyBtZXNzYWdlIGJyb2FkY2FzdGluZyB0byBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZSBpbiBvcmRlciB0byBtYWtlIHRo
ZSBEYXRhYmFzZSBvYmplY3Qgbm90CisgICAgICAgIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgTmV0
d29ya1Byb2Nlc3MgYW5kIG5vdCBuZWVkIHRvIGtlZXAgc3RhdGUgb2Ygd2hldGhlciBkZWJ1ZyBt
b2RlIGlzIGVuYWJsZWQuICBEYXRhYmFzZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQKKyAgICAgICAgbm93IHJldHVybnMgYSBEZWJ1Z0luZm8gb2JqZWN0IGFuZCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZSBjaGVja3Mgd2hldGhlciBkZWJ1ZyBtb2Rl
IGlzIGVuYWJsZWQgYW5kIGJyb2FkY2FzdHMgdGhlIG1lc3NhZ2VzLgorCisgICAgICAgIEkgYWRk
ZWQgYSBmZXcgY2FsbHMgdG8gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSB3
aGVuIG1vdmluZyBhbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBvYmplY3QgdG8gYW5vdGhlciB0
aHJlYWQuCisKKyAgICAgICAgSSBhZGRlZCBhIENvbXBsZXRpb25IYW5kbGVyIHRvIGNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgYW5kIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JS
ZWdpc3RyYWJsZURvbWFpbgorICAgICAgICBzbyB0aGF0IGNsZWFyaW5nIHdlYnNpdGUgZGF0YSBk
b2Vzbid0IHNheSBpdCdzIGRvbmUgdW50aWwgaXQncyBkb25lLgorCisgICAgICAgIEFuIGV2ZW4g
c21hbGxlciBjaGFuZ2UgaXMgSSBhZGRlZCBhICJGb3JUZXN0aW5nIiBzdWZmaXggb24gc29tZSBm
dW5jdGlvbiBuYW1lcyBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgb25seSB1c2VkIGluIHRlc3RzLgor
CisgICAgICAgIFRoZSByZXN0IG9mIHRoaXMgcGF0Y2gganVzdCBtb3ZlcyBjb2RlIGZyb20gb25l
IGxvY2F0aW9uIHRvIGFub3RoZXIuCisKKyAgICAgICAgSSBzdGlsbCBuZWVkIHRvIGltcGxlbWVu
dCBtaWdyYXRpbmcgZGF0YSBmcm9tIHRoZSBvbGQgREIgdG8gdGhlIG5ldyBEQi4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVy
aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW5JVFBEYXRhYmFzZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpu
ZWVkc1VwZGF0ZWRTY2hlbWEpOgorICAgICAgICAoV2ViS2l0OjppbnNlcnREaXN0aW5jdFZhbHVl
c0luVGFibGVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVVu
aXF1ZUluZGljZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRlc3Ryb3lTdGF0ZW1lbnRzKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VD
b250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OmV4cGVjdGVkVW5hdHRyaWJ1dGVkQ29sdW1ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmV4cGVjdGVkQXR0cmlidXRlZENvbHVtbnMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6bmVlZHNVcGRhdGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTY2hlbWEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YWRkTWlzc2luZ0NvbHVtbnNJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1bW5zSWZOZWNl
c3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c2NvcGVkU3RhdGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmJ1aWxkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZmluZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRl
c3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cmVtb3ZlVW5hdHRyaWJ1dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0aW9uVG9T
dHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpl
YXJsaWVzdFRpbWVzVG9TZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjptYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclNlbnRBdHRy
aWJ1dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KTog
RGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzaGFyZWRTdGF0aXN0aWNzUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9y
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpzaGFyZWRTdGF0aXN0aWNzUXVldWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRG
b3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWxsQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21h
aW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRp
bGl0aWVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpE
YXRhYmFzZVV0aWxpdGllcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpz
Y29wZWRTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVV0aWxpdGll
czo6YmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VVdGlsaXRpZXM6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRGF0
YWJhc2VVdGlsaXRpZXMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnJlY3JlYXRlUmVzb3VyY2VMb2FkU3RhdGlz
dGljU3RvcmUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006
OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6On5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmNyZWF0ZVNjaGVtYSk6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1
cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6bWFya0FsbFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1
cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YnVpbGRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6OnJlbW92ZVVuYXR0cmlidXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6
OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6RGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjphdHRyaWJ1dGlvblRvU3RyaW5nKToKKyAgICAgICAg
KFdlYktpdDo6UENNOjpEYXRhYmFzZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFz
ZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGF0YWJhc2U6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6UENNOjpEYXRhYmFzZTo6Y2xlYXJTZW50QXR0cmlidXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpQQ006OkRhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Om1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmVhcmxpZXN0VGltZXNUb1NlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpkb21haW5JRCk6CisgICAgICAgIChXZWJL
aXQ6OlBDTTo6RGF0YWJhc2U6OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmVuc3VyZURvbWFpbklEKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhdGFiYXNlLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpQQ006
OlN0b3JlOjpwb3N0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OnBvc3RUYXNr
UmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6Om1hcmtBbGxVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OlN0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9T
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjptYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6Y2xl
YXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006
OlN0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OnN0b3JlVW5hdHRyaWJ1dGVkKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4pOgorICAgICAgICAoV2Vi
S2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmli
dXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OmZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4pOgor
ICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRXhw
aXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjptYXJrQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpyZXNvbHZlZE5hbWUpOgorICAgICAgICAqIFNoYXJlZC9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeV0pOgor
ICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDIxLTA4LTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIFZpc3VhbCBMb29rIFVwIGFuaW1hdGVzIGZyb20gdGhl
IHdyb25nIHJlY3Qgd2hlbiB0aGUgd2ViIHZpZXcgaXMgc2NhbGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCA2ZGYyNDc5MWMy
MjZmMGJiOGIxMTQzMDVlNmE2MWI5YjNiMTM3NmZhLi5iNjZiZjNhNDhlMWVmMTJkZjYwMDg1YzNm
MDA4MDc3NjZkNGY5M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTU5LDYgKzU5LDUwIEBAIGJvb2wgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogICAgICAgICAmJiAobV90aW1lc1RvU2VuZC5z
b3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgfHwgbV90aW1lc1RvU2VuZC5kZXN0aW5hdGlvbkVhcmxp
ZXN0VGltZVRvU2VuZCk7CiB9CiAKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNy
ZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46Omlzb2xh
dGVkQ29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgdG9rZW5CYXNlNjRVUkwu
aXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHNpZ25hdHVyZUJhc2U2NFVSTC5pc29sYXRlZENvcHko
KSwKKyAgICAgICAga2V5SURCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksCisgICAgfTsKK30KKwor
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4geyBub25jZS5pc29sYXRlZENvcHkoKSB9OworfQorCitQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgYmxpbmRlciwKKyAgICAgICAg
d2FpdGluZ1Rva2VuLAorICAgICAgICByZWFkeVRva2VuLAorI2VuZGlmCisgICAgICAgIHZhbHVl
QmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpCisgICAgfTsKK30KKworUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7Cisg
ICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY29weTsKKyAgICBjb3B5Lm1fc291cmNlSUQgPSBt
X3NvdXJjZUlEOworICAgIGNvcHkubV9zb3VyY2VTaXRlID0gbV9zb3VyY2VTaXRlLmlzb2xhdGVk
Q29weSgpOworICAgIGNvcHkubV9kZXN0aW5hdGlvblNpdGUgPSBtX2Rlc3RpbmF0aW9uU2l0ZS5p
c29sYXRlZENvcHkoKTsKKyAgICBjb3B5Lm1fc291cmNlRGVzY3JpcHRpb24gPSBtX3NvdXJjZURl
c2NyaXB0aW9uLmlzb2xhdGVkQ29weSgpOworICAgIGNvcHkubV9wdXJjaGFzZXIgPSBtX3B1cmNo
YXNlci5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5Lm1fdGltZU9mQWRDbGljayA9IG1fdGltZU9m
QWRDbGljay5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5Lm1faXNFcGhlbWVyYWwgPSBtX2lzRXBo
ZW1lcmFsOworICAgIGNvcHkubV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gbV9hdHRyaWJ1dGlv
blRyaWdnZXJEYXRhOworICAgIGNvcHkubV90aW1lc1RvU2VuZCA9IG1fdGltZXNUb1NlbmQ7Cisg
ICAgY29weS5tX2VwaGVtZXJhbFNvdXJjZU5vbmNlID0gY3Jvc3NUaHJlYWRDb3B5KG1fZXBoZW1l
cmFsU291cmNlTm9uY2UpOworICAgIGNvcHkubV9zb3VyY2VVbmxpbmthYmxlVG9rZW4gPSBtX3Nv
dXJjZVVubGlua2FibGVUb2tlbi5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5Lm1fc291cmNlU2Vj
cmV0VG9rZW4gPSBjcm9zc1RocmVhZENvcHkobV9zb3VyY2VTZWNyZXRUb2tlbik7CisgICAgcmV0
dXJuIGNvcHk7Cit9CisKIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0
dHJpYnV0aW9uUmVxdWVzdChjb25zdCBVUkwmIHJlZGlyZWN0VVJMKQogewogICAgIGF1dG8gcGF0
aCA9IFN0cmluZ1ZpZXcocmVkaXJlY3RVUkwuc3RyaW5nKCkpLnN1YnN0cmluZyhyZWRpcmVjdFVS
TC5wYXRoU3RhcnQoKSwgcmVkaXJlY3RVUkwucGF0aEVuZCgpIC0gcmVkaXJlY3RVUkwucGF0aFN0
YXJ0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuaAppbmRleCBlYjg2MDg3YmVlNTg5NGVhYjBiZWJmMmU4ZjZjMmZiNzBkYWZiYzc0Li40YjQ2
MzFhYjEzMWM2ODk0YzY0NTk1MWJlNmU0YzRiMDcyMzdlZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaApAQCAtMzU0LDYgKzM1NCw4IEBA
IHB1YmxpYzoKICAgICBzdHJ1Y3QgRXBoZW1lcmFsU291cmNlTm9uY2UgewogICAgICAgICBTdHJp
bmcgbm9uY2U7CiAKKyAgICAgICAgRXBoZW1lcmFsU291cmNlTm9uY2UgaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7CisKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAK
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpAQCAtMzY5LDYgKzM3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHNpZ25hdHVy
ZUJhc2U2NFVSTDsKICAgICAgICAgU3RyaW5nIGtleUlEQmFzZTY0VVJMOwogCisgICAgICAgIFNv
dXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogICAgICAgICBib29sIGlzVmFs
aWQoKSBjb25zdDsKICAgICB9OwogCkBAIC0zODQsNiArMzg3LDggQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4gZGVjb2RlKERlY29kZXImKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIFByaXZh
dGVDbGlja01lYXN1cmVtZW50IGlzb2xhdGVkQ29weSgpIGNvbnN0OworCiBwcml2YXRlOgogICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCkBAIC00MDUsNiArNDEwLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgUmV0YWluUHRyPFJTQUJTU0FUb2tlblJlYWR5PiByZWFkeVRva2VuOwogI2VuZGlmCiAg
ICAgICAgIFN0cmluZyB2YWx1ZUJhc2U2NFVSTDsKKworICAgICAgICBTb3VyY2VVbmxpbmthYmxl
VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgfTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8
RXBoZW1lcmFsU291cmNlTm9uY2U+IG1fZXBoZW1lcmFsU291cmNlTm9uY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAppbmRleCA5NWQ4YTk2NmZmZGQzZTQ0M2ZlMmI1ZDZkNjU0ZjRmYTFlMTBmODZlLi5iNGYx
OTgzYjIxOGVjNTQxOGYyMGNmOTJjZTA2MzA5YmZlMTlkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
QEAgLTIzLDYgKzIzLDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzIgogICAgICIke1dFQktJVF9ESVJ9
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nl
c3MvSW5kZXhlZERCIgorICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIK
ICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGJiZThk
MmRiM2M3NWQ5Y2IyZDY4N2IyNWI5YWViZTAwYzIwYzlmYjMuLjE1Mzc0ZDQyOWRlOTdhMWY0ZWZl
NjNiMWE5MTZkOTc1ZGVlMTBkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUg
Ik5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CkBAIC04OCwxMCArODgsNiBAQCBj
b25zdGV4cHIgYXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5TRVJU
IE9SIFJFUExBQ0UgaW50byBTdWJmcgogY29uc3RleHByIGF1dG8gdG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tUXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBUb3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb20gKHRvRG9tYWluSUQsIGxhc3RVcGRhdGVkLCBmcm9tRG9tYWluSUQpIFNFTEVD
VCA/LCA/LCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURv
bWFpbiBpbiAoICJfczsKIGNvbnN0ZXhwciBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnNRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMgKHN1YnJlc291cmNlRG9tYWluSUQsIGxhc3RVcGRhdGVkLCB0b3BGcmFtZURv
bWFpbklEKSBTRUxFQ1QgPywgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUg
cmVnaXN0cmFibGVEb21haW4gaW4gKCAiX3M7CiBjb25zdGV4cHIgYXV0byBzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvUXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvIChzdWJyZXNvdXJjZURvbWFpbklELCBsYXN0VXBkYXRlZCwgdG9E
b21haW5JRCkgU0VMRUNUID8sID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJF
IHJlZ2lzdHJhYmxlRG9tYWluIGluICggIl9zOwotY29uc3RleHByIGF1dG8gaW5zZXJ0VW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJ
TlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWlu
SUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCi0gICAgInNvdXJjZUlELCB0aW1lT2ZBZENs
aWNrLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCkgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/
KSJfczsKLWNvbnN0ZXhwciBhdXRvIGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
LCAiCi0gICAgInNvdXJjZUlELCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwgdGlt
ZU9mQWRDbGljaywgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUs
IGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKSBWQUxVRVMgKD8sID8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8pIl9zOwogCiAvLyBFWElTVFMgUXVlcmllcwogY29uc3Rl
eHByIGF1dG8gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzUXVlcnkgPSAiU0VMRUNU
IEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJF
IHN1YkZyYW1lRG9tYWluSUQgPSA/ICIKQEAgLTExNiw5ICsxMTIsNiBAQCBjb25zdGV4cHIgYXV0
byB1cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21h
aW5zIFNFVCBpcwogY29uc3RleHByIGF1dG8gY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5ID0g
IlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gMCwgaXNWZXJ5UHJldmFs
ZW50ID0gMCBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byB1
cGRhdGVHcmFuZGZhdGhlcmVkUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZ3Jh
bmRmYXRoZXJlZCA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3RleHBy
IGF1dG8gdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFF1ZXJ5ID0g
IlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwgPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKLWNvbnN0ZXhwciBh
dXRvIHNldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkUXVlcnkg
PSAiVVBEQVRFIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCB0aW1lT2ZB
ZENsaWNrID0gLTEuMCJfczsKLWNvbnN0ZXhwciBhdXRvIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJj
ZVF1ZXJ5ID0gIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gbnVsbCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQg
PSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0byBt
YXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblF1ZXJ5ID0gIlVQREFURSBBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24g
PSBudWxsIFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEID0gPyJfczsKIAogLy8gU0VMRUNUIFF1ZXJpZXMKIGNvbnN0ZXhwciBhdXRvIGRvbWFp
bklERnJvbVN0cmluZ1F1ZXJ5ID0gIlNFTEVDVCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlu
cyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CkBAIC0xMzcsMTQgKzEzMCw2IEBAIGNv
bnN0ZXhwciBhdXRvIGdldEFsbERvbWFpbnNRdWVyeSA9ICJTRUxFQ1QgcmVnaXN0cmFibGVEb21h
aW4gRlJPTSBPYnNlcnZlZERvbWFpCiBjb25zdGV4cHIgYXV0byBnZXRBbGxTdWJTdGF0aXN0aWNz
VW5kZXJEb21haW5RdWVyeSA9ICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBGUk9NIFN1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3ViRnJhbWVEb21haW5JRCA9ID8iCiAgICAgIlVO
SU9OIEFMTCBTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBGUk9NIFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iCiAgICAgIlVOSU9OIEFM
TCBTRUxFQ1QgdG9Eb21haW5JRCBGUk9NIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gV0hF
UkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0byBhbGxVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5ID0gIlNFTEVDVCAq
IEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci1jb25zdGV4cHIg
YXV0byBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJTRUxFQ1Qg
KiwgTUlOKGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uKSBhcyBtaW5WYWwgIgotICAgICJGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBXSEVSRSBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBJUyBOT1QgTlVMTCBB
TkQgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBJUyBOT1QgTlVMTCAiCi0gICAgIlVO
SU9OIEFMTCBTRUxFQ1QgKiwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgYXMgbWluVmFsIEZS
T00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGltZVRv
U2VuZFRvRGVzdGluYXRpb24gSVMgTlVMTCAiCi0gICAgIlVOSU9OIEFMTCBTRUxFQ1QgKiwgZWFy
bGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBhcyBtaW5WYWwgRlJPTSBBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgSVMg
TlVMTCBPUkRFUiBCWSBtaW5WYWwiX3M7Ci1jb25zdGV4cHIgYXV0byBmaW5kVW5hdHRyaWJ1dGVk
UXVlcnkgPSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0byBmaW5kQXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAq
IEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVE
b21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKLWNvbnN0ZXhw
ciBhdXRvIGVhcmxpZXN0VGltZXNUb1NlbmRRdWVyeSA9ICJTRUxFQ1QgZWFybGllc3RUaW1lVG9T
ZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gRlJPTSBBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBB
TkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOwogCiAvLyBFWElTVFMgZm9yIHRlc3Rp
bmcgcXVlcmllcwogY29uc3RleHByIGF1dG8gbGlua0RlY29yYXRpb25FeGlzdHNRdWVyeSA9ICJT
RUxFQ1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBX
SEVSRSB0b0RvbWFpbklEID0gPyBPUiBmcm9tRG9tYWluSUQgPSA/KSJfczsKQEAgLTE1NiwxMCAr
MTQxLDYgQEAgY29uc3RleHByIGF1dG8gb2JzZXJ2ZWREb21haW5zRXhpc3RzUXVlcnkgPSAiU0VM
RUNUIEVYSVNUUyAoU0VMRUNUICogRlJPTSBPYnNlcnYKIAogLy8gREVMRVRFIFF1ZXJpZXMKIGNv
bnN0ZXhwciBhdXRvIHJlbW92ZUFsbERhdGFRdWVyeSA9ICJERUxFVEUgRlJPTSBPYnNlcnZlZERv
bWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9zOwotY29uc3RleHByIGF1dG8gY2xlYXJVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIkRFTEVURSBGUk9NIFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCBMSUtF
ID8gT1IgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgTElLRSA/Il9zOwotY29uc3RleHByIGF1dG8g
Y2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJERUxFVEUgRlJP
TSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFp
bklEIExJS0UgPyBPUiBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBMSUtFID8iX3M7Ci1jb25zdGV4
cHIgYXV0byBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIkRFTEVU
RSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFID8gPiB0aW1l
T2ZBZENsaWNrIl9zOwotY29uc3RleHByIGF1dG8gcmVtb3ZlVW5hdHRyaWJ1dGVkUXVlcnkgPSAi
REVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291
cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOwog
CiBjb25zdGV4cHIgYXV0byBjcmVhdGVPYnNlcnZlZERvbWFpbiA9ICJDUkVBVEUgVEFCTEUgT2Jz
ZXJ2ZWREb21haW5zICgiCiAgICAgImRvbWFpbklEIElOVEVHRVIgUFJJTUFSWSBLRVksIHJlZ2lz
dHJhYmxlRG9tYWluIFRFWFQgTk9UIE5VTEwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIGxhc3RT
ZWVuIFJFQUwgTk9UIE5VTEwsICIKQEAgLTI0MCwxOSArMjIxLDYgQEAgY29uc3RleHByIGF1dG8g
Y3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tID0gIkNSRUFURSBUQUJMRSBTdWJy
ZXNvdXJjZVUKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZU9wZXJhdGluZ0RhdGVzID0gIkNSRUFURSBU
QUJMRSBPcGVyYXRpbmdEYXRlcyAoIgogICAgICJ5ZWFyIElOVEVHRVIgTk9UIE5VTEwsIG1vbnRo
IElOVEVHRVIgTk9UIE5VTEwsIG1vbnRoRGF5IElOVEVHRVIgTk9UIE5VTEwpIl9zOwogCi1jb25z
dGV4cHIgYXV0byBjcmVhdGVVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJD
UkVBVEUgVEFCTEUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCIKLSAgICAi
c291cmNlU2l0ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEIElOVEVHRVIgTk9UIE5VTEwsIHNvdXJjZUlEIElOVEVHRVIgTk9UIE5VTEwsICIKLSAgICAi
dGltZU9mQWRDbGljayBSRUFMIE5PVCBOVUxMLCB0b2tlbiBURVhULCBzaWduYXR1cmUgVEVYVCwg
a2V5SUQgVEVYVCwgRk9SRUlHTiBLRVkoc291cmNlU2l0ZURvbWFpbklEKSAiCi0gICAgIlJFRkVS
RU5DRVMgT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgRk9SRUlH
TiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgIgotICAgICJPYnNlcnZl
ZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKSJfczsKLQotY29uc3RleHByIGF1
dG8gY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBUQUJM
RSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCIKLSAgICAic291cmNlU2l0ZURv
bWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIElOVEVHRVIg
Tk9UIE5VTEwsIHNvdXJjZUlEIElOVEVHRVIgTk9UIE5VTEwsICIKLSAgICAiYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSBJTlRFR0VSIE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5PVCBOVUxMLCB0
aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsICIKLSAgICAiZWFybGllc3RUaW1lVG9TZW5kVG9T
b3VyY2UgUkVBTCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIGVhcmxp
ZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gUkVBTCwgIgotICAgICJGT1JFSUdOIEtFWShzb3Vy
Y2VTaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBE
RUxFVEUgQ0FTQ0FERSwgRk9SRUlHTiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVS
RU5DRVMgIgotICAgICJPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURF
KSJfczsKLQogLy8gQ1JFQVRFIFVOSVFVRSBJTkRFWCBRdWVyaWVzLgogY29uc3RleHByIGF1dG8g
Y3JlYXRlVW5pcXVlSW5kZXhTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgPSAiQ1JF
QVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1l
RG9tYWluc19kb21haW5JRF90b3BMZXZlbERvbWFpbklEIG9uIFN0b3JhZ2VBY2Nlc3NVbmRlclRv
cEZyYW1lRG9tYWlucyAoIGRvbWFpbklELCB0b3BMZXZlbERvbWFpbklEICkiX3M7CiBjb25zdGV4
cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gPSAiQ1JF
QVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9f
c291cmNlRG9tYWluSURfdG9Eb21haW5JRCBvbiBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvICgg
c291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQgKSJfczsKQEAgLTI2NSwxMSArMjMzLDkgQEAgY29u
c3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21h
aW5zID0gIkNSRUFURSBVTklRVUUKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBF
WElTVFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb19zdWJyZXNvdXJjZURvbWFpbklEX3Rv
RG9tYWluSUQgb24gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyAoIHN1YnJlc291cmNlRG9t
YWluSUQsIHRvRG9tYWluSUQgKSJfczsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYg
Tk9UIEVYSVNUUyBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21fc3VicmVzb3VyY2VEb21h
aW5JRF9mcm9tRG9tYWluSUQgb24gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tICggc3Vi
cmVzb3VyY2VEb21haW5JRCwgZnJvbURvbWFpbklEICkiX3M7CiBjb25zdGV4cHIgYXV0byBjcmVh
dGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9U
IEVYSVNUUyBPcGVyYXRpbmdEYXRlc195ZWFyX21vbnRoX21vbnRoRGF5IG9uIE9wZXJhdGluZ0Rh
dGVzICggeWVhciwgbW9udGgsIG1vbnRoRGF5ICkiX3M7Ci1jb25zdGV4cHIgYXV0byBjcmVhdGVV
bmlxdWVJbmRleFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBV
TklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQgb24gVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEICkiX3M7Ci1jb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRl
eEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVY
IElGIE5PVCBFWElTVFMgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50X3NvdXJjZVNp
dGVEb21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21haW5JRCBvbiBBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEICkiX3M7CiAKIC8vIEFkZCBvbmUgdG8gdGhlIGNvdW50IG9mIHRoZSBhYm92ZSBpbmRleCBx
dWVyaWVzIHRvIGFjY291bnQgZm9yIHRoZSBPYnNlcnZlZERvbWFpbnMgdGFibGUsIHdoaWNoIGhh
cyBhbiBpbmRleCBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgU1FMaXRlIGJlY2F1c2Ugb2YgaXRz
IHByaW1hcnkga2V5LgotY29uc3QgaW50IGV4cGVjdGVkSW5kZXhDb3VudCA9IDE0OworY29uc3Rl
eHByIGludCBleHBlY3RlZEluZGV4Q291bnQgPSAxMjsKIAogc3RhdGljIGNvbnN0IFN0cmluZyBP
YnNlcnZlZERvbWFpbnNUYWJsZVNjaGVtYVYxKCkKIHsKQEAgLTI4MSwxOCArMjQ3LDYgQEAgc3Rh
dGljIGNvbnN0IFN0cmluZyBPYnNlcnZlZERvbWFpbnNUYWJsZVNjaGVtYVYxQWx0ZXJuYXRlKCkK
ICAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIk9ic2VydmVkRG9tYWluc1wiIChkb21haW5JRCBJ
TlRFR0VSIFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFV
RSBPTiBDT05GTElDVCBGQUlMLCBsYXN0U2VlbiBSRUFMIE5PVCBOVUxMLCBoYWRVc2VySW50ZXJh
Y3Rpb24gSU5URUdFUiBOT1QgTlVMTCwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgUkVB
TCBOT1QgTlVMTCwgZ3JhbmRmYXRoZXJlZCBJTlRFR0VSIE5PVCBOVUxMLCBpc1ByZXZhbGVudCBJ
TlRFR0VSIE5PVCBOVUxMLCBpc1ZlcnlQcmV2YWxlbnQgSU5URUdFUiBOT1QgTlVMTCwgZGF0YVJl
Y29yZHNSZW1vdmVkIElOVEVHRVIgTk9UIE5VTEwsdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1
ZVRvVXNlckludGVyYWN0aW9uIElOVEVHRVIgTk9UIE5VTEwsIHRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgSU5URUdFUiBOT1QgTlVMTCxpc1NjaGVkdWxlZEZv
ckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsIElOVEVHRVIgTk9UIE5VTEwpIl9zOwogfQogCi1zdGF0
aWMgY29uc3QgRXhwZWN0ZWRDb2x1bW5zJiBleHBlY3RlZFVuYXR0cmlidXRlZENvbHVtbnMoKQot
ewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNvbHVtbnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVj
dG9yPFN0cmluZz4geyAic291cmNlU2l0ZURvbWFpbklEIl9zLCAiZGVzdGluYXRpb25TaXRlRG9t
YWluSUQiX3MsICJzb3VyY2VJRCJfcywgInRpbWVPZkFkQ2xpY2siX3MsICJ0b2tlbiJfcywgInNp
Z25hdHVyZSJfcywgImtleUlEIl9zIH0pOwotICAgIHJldHVybiBjb2x1bW5zLmdldCgpOwotfQot
Ci1zdGF0aWMgY29uc3QgRXhwZWN0ZWRDb2x1bW5zJiBleHBlY3RlZEF0dHJpYnV0ZWRDb2x1bW5z
KCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjb2x1bW5zID0gbWFrZU5ldmVyRGVzdHJveWVk
KFZlY3RvcjxTdHJpbmc+IHsgInNvdXJjZVNpdGVEb21haW5JRCJfcywgImRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEIl9zLCAic291cmNlSUQiX3MsICJhdHRyaWJ1dGlvblRyaWdnZXJEYXRhIl9zLCAi
cHJpb3JpdHkiX3MsICJ0aW1lT2ZBZENsaWNrIl9zLCAiZWFybGllc3RUaW1lVG9TZW5kVG9Tb3Vy
Y2UiX3MsICJ0b2tlbiJfcywgInNpZ25hdHVyZSJfcywgImtleUlEIl9zLCAiZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbiJfcyB9KTsKLSAgICByZXR1cm4gY29sdW1ucy5nZXQoKTsKLX0K
LQogc3RhdGljIGJvb2wgbmVlZHNOZXdDcmVhdGVUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHNj
aGVtYSkKIHsKICAgICByZXR1cm4gc2NoZW1hLmNvbnRhaW5zKCJSRUZFUkVOQ0VTIFRvcExldmVs
RG9tYWlucyIpOwpAQCAtMzE5LDggKzI3Myw2IEBAIHN0YXRpYyBjb25zdCBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mCiAg
ICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iX3MsIHN0ZDo6bWFrZV9wYWly
PFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVl
SW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkgfSwKICAgICAgICAgeyAiU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLCBz
dHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pKSB9LAogICAgICAgICB7ICJPcGVyYXRpbmdEYXRlcyJf
cywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZU9w
ZXJhdGluZ0RhdGVzLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5p
cXVlSW5kZXhPcGVyYXRpbmdEYXRlcykpIH0sCi0gICAgICAgIHsgIlVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPj4oY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIHN0
cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgfSwKLSAgICAgICAgeyAiQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPj4oY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBz
dHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB9CiAgICAgfSk7CiAgICAgCiAgICAgcmV0dXJu
IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXM7CkBAIC0zMzksNyArMjkxLDcgQEAgc3RhdGlj
IFN0cmluZyBidWlsZExpc3QoY29uc3QgQ29udGFpbmVyVHlwZSYgdmFsdWVzKQogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLUhhc2hTZXQ8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUqPiYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFs
bFN0b3JlcygpCitzdGF0aWMgSGFzaFNldDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZSo+JiBhbGxTdG9yZXMoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC0zNDksMTcgKzMwMSwxMyBAQCBIYXNoU2V0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlKj4mIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0bwogCiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgU3VzcGVuZGFi
bGVXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNs
dWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoc3Rv
cmUsIHdvcmtRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKLSAgICAsIG1fc3RvcmFnZURp
cmVjdG9yeVBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VE
aXJlY3RvcnlQYXRoLCAib2JzZXJ2YXRpb25zLmRiIl9zKSkKLSAgICAsIG1fdHJhbnNhY3Rpb24o
bV9kYXRhYmFzZSkKKyAgICAsIERhdGFiYXNlVXRpbGl0aWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5UGF0aCwgIm9ic2VydmF0aW9ucy5kYiJf
cykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAg
ICBlbmFibGVGb3JlaWduS2V5cygpOwotCi0gICAgLy8gU2luY2Ugd2UgYXJlIHVzaW5nIGEgd29y
a2VyUXVldWUsIHRoZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBtYXkgYmUgY2FsbGVkIGJ5
IGRpZmZlcmVudCB0aHJlYWRzLgotICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVhZGluZ0NoZWNr
cygpOwogICAgIAogICAgIGlmICghbV9kYXRhYmFzZS50dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1
dW0oKSkKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSBm
YWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTM3NCw0MyArMzIyLDkgQEAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6On5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZSgpCiAgICAgYWxsU3RvcmVzKCkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbG9zZSgpCi17Ci0gICAgZGVzdHJveVN0YXRlbWVu
dHMoKTsKLSAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkKLSAgICAgICAgbV9kYXRhYmFzZS5j
bG9zZSgpOwotfQotCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpv
cGVuSVRQRGF0YWJhc2UoKQogewotICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3N0
b3JhZ2VEaXJlY3RvcnlQYXRoKSkgewotICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKG1fc3RvcmFnZURpcmVjdG9yeVBhdGgp
KSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW4gZmFpbGVkLCBlcnJvciBtZXNzYWdl
OiBGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9H
X1NUUklORywgdGhpcywgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2lzTmV3UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlRmlsZSA9IHRydWU7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1faXNO
ZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlID0gZmFsc2U7Ci0KLSAgICBpZiAo
IW1fZGF0YWJhc2Uub3BlbihtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKSkgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5H
ICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOwot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBzZXRC
dXN5VGltZW91dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIGJ1c3lfdGlt
ZW91dCA9IDUwMDAiX3MpOwotICAgIGlmICghc2V0QnVzeVRpbWVvdXQgfHwgc2V0QnVzeVRpbWVv
dXQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5l
dHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRCdXN5
VGltZW91dCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1faXNOZXdSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlKSB7Ci0gICAgICAgIGlmICghY3JlYXRlU2NoZW1hKCkp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hlbWEgZmFpbGVkLCBlcnJvciBt
ZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGly
ZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQorICAgIG1faXNOZXdS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlID0gb3BlbkRhdGFiYXNlQW5kQ3JlYXRl
U2NoZW1hSWZOZWNlc3NhcnkoKSA9PSBDcmVhdGVkTmV3RmlsZTo6WWVzOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEoKQpAQCAtNDk1LDE2ICs0MDksNiBAQCBU
YWJsZUFuZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3Vy
cmVudFRhYmxlQW5kSW5kZXhRdWVyaQogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oV1RGTW92ZShjcmVhdGVUYWJsZVF1ZXJ5KSwgV1RGTW92
ZShpbmRleCkpOwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpuZWVkc1VwZGF0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFNjaGVtYSgpCi17Ci0gICAgYXV0
byBjdXJyZW50U2NoZW1hID0gY3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKCJBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpLmZpcnN0OwotCi0gICAgaWYgKCFjdXJyZW50U2No
ZW1hLmlzRW1wdHkoKSAmJiBjdXJyZW50U2NoZW1hICE9IGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pc3Np
bmdVbmlxdWVJbmRpY2VzKCkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJl
cGFyZVN0YXRlbWVudCgiU0VMRUNUIENPVU5UKCopIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0
eXBlID0gJ2luZGV4JyJfcyk7CkBAIC01MzcsNyArNDQxLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bmVlZHNVcGRhdGVkU2NoZW1hKCkKIHsKICAgICAvLyBU
aGVyZSBhcmUgMyBjYXNlcyB3aGVyZSB3ZSBleHBlY3QgcG90ZW50aWFsIHNjaGVtYSBjaGFuZ2Vz
IGR1ZSB0byB1cGdyYWRlcy4KICAgICAvLyBBbGwgb3RoZXIgdGFibGVzIHNob3VsZCBiZSB1cC10
by1kYXRlLCBzbyB3ZSBzaG91bGQgQVNTRVJUIHRoYXQgdGhleSBhcmUgY29ycmVjdC4KLSAgICBp
ZiAobWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCkgfHwgbmVlZHNVcGRhdGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTY2hlbWEoKSB8fCBtaXNzaW5nVW5pcXVlSW5kaWNlcygpKQor
ICAgIGlmIChtaXNzaW5nUmVmZXJlbmNlVG9PYnNlcnZlZERvbWFpbnMoKSB8fCBtaXNzaW5nVW5p
cXVlSW5kaWNlcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgdGFi
bGUgOiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7CkBAIC01NjIsMTIg
KzQ2Niw2IEBAIHN0YXRpYyBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gaW5zZXJ0RGlz
dGluY3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KFNRTGl0CiAgICAgaWYgKHRhYmxlID09ICJUb3BG
cmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQogICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFy
ZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFNFTEVD
VCB0b0RvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWluSUQgRlJPTSBfVG9wRnJh
bWVMaW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQsIGZyb21Eb21haW5JRCJf
cyk7CiAKLSAgICBpZiAodGFibGUgPT0gIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IikKLSAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJ
TlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFTEVDVCBzb3VyY2VTaXRl
RG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJRCwgTUFYKHRpbWVPZkFk
Q2xpY2spLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCBGUk9NIF9VbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBHUk9VUCBCWSBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9u
U2l0ZURvbWFpbklEIl9zKTsKLQotICAgIGlmICh0YWJsZSA9PSAiQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50IikKLSAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQoIklOU0VSVCBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxFQ1Qg
c291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQsIGF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCBNQVgodGltZU9mQWRDbGljayksIGVhcmxp
ZXN0VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RU
aW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBGUk9NIF9BdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgR1JPVVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCJfcyk7Ci0KICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0
cmluZygiSU5TRVJUIElOVE8gIiwgdGFibGUsICIgU0VMRUNUIERJU1RJTkNUICogRlJPTSBfIiwg
dGFibGUpKTsKIH0KIApAQCAtNjM1LDc5ICs1MzMsNiBAQCBWZWN0b3I8U3RyaW5nPiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmlu
ZwogICAgIHJldHVybiBjb2x1bW5zOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUoU3RyaW5nJiYgdGFibGVOYW1l
LCBjb25zdCBFeGlzdGluZ0NvbHVtbnMmIGV4aXN0aW5nQ29sdW1ucywgY29uc3QgRXhwZWN0ZWRD
b2x1bW5zJiBleHBlY3RlZENvbHVtbnMpCi17Ci0gICAgQVNTRVJUKGV4aXN0aW5nQ29sdW1ucy5z
aXplKCkgPD0gZXhwZWN0ZWRDb2x1bW5zLnNpemUoKSk7Ci0KLSAgICBhdXRvIHRyYW5zYWN0aW9u
ID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7Ci0KLSAgICBmb3IgKGF1dG8mIGNvbHVt
biA6IGV4cGVjdGVkQ29sdW1ucykgewotICAgICAgICBpZiAoZXhpc3RpbmdDb2x1bW5zLmNvbnRh
aW5zKGNvbHVtbikpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBhdXRvIHN0YXRl
bWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiQUxURVIg
VEFCTEUgIiwgdGFibGVOYW1lLCAiIEFERCBDT0xVTU4gIiwgY29sdW1uKSk7Ci0gICAgICAgIGlm
ICghc3RhdGVtZW50KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVt
bnNUb1RhYmxlIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBhZGQgbWlzc2luZyBjb2x1
bW5zIHRvIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0YXRl
bWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlIGVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gYWRk
IG1pc3NpbmcgY29sdW1ucyB0byB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIHN0YXRlbWVudC0+cmVzZXQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkoKQotewot
ICAgIGNvbnN0IGF1dG8gdW5hdHRyaWJ1dGVkVGFibGVOYW1lID0gIlVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50Il9zOwotICAgIGNvbnN0IGF1dG8gYXR0cmlidXRlZFRhYmxlTmFt
ZSA9ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci0KLSAgICBhZGRNaXNz
aW5nQ29sdW1uc1RvVGFibGUodW5hdHRyaWJ1dGVkVGFibGVOYW1lLCBjb2x1bW5zRm9yVGFibGUo
dW5hdHRyaWJ1dGVkVGFibGVOYW1lKSwgZXhwZWN0ZWRVbmF0dHJpYnV0ZWRDb2x1bW5zKCkpOwot
ICAgIGFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCBjb2x1bW5z
Rm9yVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSksIGV4cGVjdGVkQXR0cmlidXRlZENvbHVtbnMo
KSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbmFt
ZUNvbHVtbkluVGFibGUoU3RyaW5nJiYgdGFibGVOYW1lLCBFeGlzdGluZ0NvbHVtbk5hbWUmJiBl
eGlzdGluZ0NvbHVtbk5hbWUsIEV4cGVjdGVkQ29sdW1uTmFtZSYmIGV4cGVjdGVkQ29sdW1uTmFt
ZSkKLXsKLSAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNs
b3cobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGVOYW1lLCAiIFJFTkFNRSBDT0xVTU4g
IiwgZXhpc3RpbmdDb2x1bW5OYW1lLCAiIFRPICIsIGV4cGVjdGVkQ29sdW1uTmFtZSkpOwotICAg
IGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1u
c1RvVGFibGUgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHJlbmFtZSBjb2x1bW4gaW4g
dGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlIGVy
cm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gcmVuYW1lIGNvbHVtbiBpbiB0YWJsZSwgZXJyb3Ig
bWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJl
bmFtZUNvbHVtbnNJZk5lY2Vzc2FyeSgpCi17Ci0gICAgLy8gQXR0cmlidXRlZCBQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50IGNhc2UuCi0gICAgY29uc3QgYXV0byBhdHRyaWJ1dGVkVGFibGVOYW1l
ID0gIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLSAgICBjb25zdCBhdXRv
IG9sZEVhcmxpZXN0VGltZVRvU2VuZENvbHVtbiA9ICJlYXJsaWVzdFRpbWVUb1NlbmQiX3M7Ci0g
ICAgY29uc3QgYXV0byBuZXdFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4gPSAiZWFybGllc3RUaW1l
VG9TZW5kVG9Tb3VyY2UiX3M7Ci0gICAgY29uc3QgYXV0byBvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uQ29sdW1uID0gImF0dHJpYnV0ZU9uU2l0ZURvbWFpbklEIl9zOwotICAgIGNvbnN0IGF1dG8g
bmV3QXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbiA9ICJkZXN0aW5hdGlvblNpdGVEb21haW5J
RCJfczsKLSAgICBjb25zdCBhdXRvIGZvdW5kQXR0cmlidXRlZFRhYmxlQ29sdW1ucyA9IGNvbHVt
bnNGb3JUYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lKTsKLQotICAgIGlmIChmb3VuZEF0dHJpYnV0
ZWRUYWJsZUNvbHVtbnMuY29udGFpbnMob2xkRWFybGllc3RUaW1lVG9TZW5kQ29sdW1uKSkKLSAg
ICAgICAgcmVuYW1lQ29sdW1uSW5UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCBvbGRFYXJsaWVz
dFRpbWVUb1NlbmRDb2x1bW4sIG5ld0VhcmxpZXN0VGltZVRvU2VuZENvbHVtbik7Ci0KLSAgICBp
ZiAoZm91bmRBdHRyaWJ1dGVkVGFibGVDb2x1bW5zLmNvbnRhaW5zKG9sZEF0dHJpYnV0aW9uRGVz
dGluYXRpb25Db2x1bW4pKQotICAgICAgICByZW5hbWVDb2x1bW5JblRhYmxlKGF0dHJpYnV0ZWRU
YWJsZU5hbWUsIG9sZEF0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4sIG5ld0F0dHJpYnV0aW9u
RGVzdGluYXRpb25Db2x1bW4pOwotCi0gICAgLy8gVW5hdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnQgY2FzZS4KLSAgICBhdXRvIHVuYXR0cmlidXRlZFRhYmxlTmFtZSA9ICJVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLSAgICBhdXRvIGZvdW5kVW5hdHRy
aWJ1dGVkVGFibGVDb2x1bW5zID0gY29sdW1uc0ZvclRhYmxlKHVuYXR0cmlidXRlZFRhYmxlTmFt
ZSk7Ci0KLSAgICBpZiAoZm91bmRVbmF0dHJpYnV0ZWRUYWJsZUNvbHVtbnMuY29udGFpbnMob2xk
QXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbikpCi0gICAgICAgIHJlbmFtZUNvbHVtbkluVGFi
bGUodW5hdHRyaWJ1dGVkVGFibGVOYW1lLCBvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1u
LCBuZXdBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uKTsKLX0KLQogdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ1RhYmxlc0lmTmVjZXNzYXJ5KCkK
IHsKICAgICBhdXRvIG1pc3NpbmdUYWJsZXMgPSBjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVt
YSgpOwpAQCAtNzQ4LDcgKzU3Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGlmIChz
dGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBMT0dfRVJST1Io
IkVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgT2JzZXJ2
ZWQgRG9tYWlucyB0YWJsZS4iKTsKICAgICAgICAgICAgIGNsb3NlKCk7Ci0gICAgICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOworICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VGaWxlUGF0aCk7CiAgICAgICAgICAg
ICBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
NzYyLDM2ICs1ODcsMjAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkKICAgICAvLyBGSVhNRTogTWlncmF0
ZSBvbGQgT2JzZXJ2ZWREb21haW5zIGRhdGEgdG8gbmV3IHRhYmxlIHNjaGVtYS4KICAgICBpZiAo
Y3VycmVudFNjaGVtYSAhPSBPYnNlcnZlZERvbWFpbnNUYWJsZVNjaGVtYVYxKCkgJiYgY3VycmVu
dFNjaGVtYSAhPSBPYnNlcnZlZERvbWFpbnNUYWJsZVNjaGVtYVYxQWx0ZXJuYXRlKCkpIHsKICAg
ICAgICAgY2xvc2UoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VE
aXJlY3RvcnlQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VG
aWxlUGF0aCk7CiAgICAgICAgIG9wZW5JVFBEYXRhYmFzZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgLy8gUmVuYW1pbmcgYW5kIGFkZGluZyBjb2x1bW5zIHNob3VsZCBiZSBkb25l
IGJlZm9yZSBtaWdyYXRpbmcgdG8gYXZvaWQgbWlzbWF0Y2hlZCBvciBtaXNzaW5nIGNvbHVtbnMu
Ci0gICAgcmVuYW1lQ29sdW1uc0lmTmVjZXNzYXJ5KCk7Ci0gICAgYWRkTWlzc2luZ0NvbHVtbnNJ
Zk5lY2Vzc2FyeSgpOwogICAgIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpOwog
fQogCi1TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIEFTQ0lJTGl0ZXJhbCBxdWVyeSwgY29uc3QgU3Ry
aW5nJiBsb2dTdHJpbmcpIGNvbnN0Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXMoKQogewotICAgIGlmICghc3RhdGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gc3RhdGVtZW50T3JFcnJvciA9IG1fZGF0YWJhc2UucHJlcGFyZUhlYXBT
dGF0ZW1lbnQocXVlcnkpOwotICAgICAgICBpZiAoIXN0YXRlbWVudE9yRXJyb3IpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjolcyBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9y
IG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBsb2dTdHJpbmcuYXNjaWkoKS5k
YXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0
U2NvcGUgeyB9OwotICAgICAgICB9Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudE9yRXJy
b3IudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2Uu
aXNPcGVuKCkpOwotICAgIH0KLSAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2Nv
cGUgeyBzdGF0ZW1lbnQuZ2V0KCkgfTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aW50ZXJydXB0KCkKLXsKLSAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4o
KSkKLSAgICAgICAgbV9kYXRhYmFzZS5pbnRlcnJ1cHQoKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBmb3IgKGF1dG8gc3RvcmUgOiBhbGxTdG9yZXMoKSkKKyAgICAgICAg
c3RvcmUtPmludGVycnVwdCgpOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppc0VtcHR5KCkgY29uc3QKQEAgLTgyMSw5ICs2MzAsNyBAQCBib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKCkKICAg
ICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKQogICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRl
Q29tbWFuZChjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkK
ICAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKQotICAgICAgICB8fCAhbV9kYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzKQotICAgICAgICB8
fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRleFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50KQotICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRl
Q29tbWFuZChjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCkpIHsKKyAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVl
SW5kZXhPcGVyYXRpbmdEYXRlcykpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29y
aywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVVuaXF1
ZUluZGljZXMgZmFpbGVkIHRvIGV4ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KQEAgLTg5OSwxNiArNzA2LDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1hKCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IHRhYmxl
IGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UubGFzdEVycm9yKCksIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
aWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0g
JXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlmICghY3JlYXRlVW5pcXVlSW5k
aWNlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTk1NiwyMSArNzUzLDYgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZGVzdHJveVN0YXRlbWVudHMo
KQogICAgIG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOwogICAgIG1f
b2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKICAgICBtX3JlbW92ZUFs
bERhdGFTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1faW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1faW5zZXJ0QXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX3Nl
dFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50ID0g
bnVsbHB0cjsKLSAgICBtX2NsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fYWxsVW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0ZW1lbnQgPSBudWxscHRyOwot
ICAgIG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVs
bHB0cjsKLSAgICBtX2ZpbmRVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1f
ZmluZEF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fdXBkYXRlQXR0cmlidXRp
b25zRWFybGllc3RUaW1lVG9TZW5kU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX3JlbW92ZVVu
YXR0cmlidXRlZFN0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9tYXJrUmVwb3J0QXNTZW50VG9T
b3VyY2VTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGlu
YXRpb25TdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fZWFybGllc3RUaW1lc1RvU2VuZFN0YXRl
bWVudCA9IG51bGxwdHI7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IGxvYWRTdGF0aXN0aWNzKQpAQCAtMjI4Nyw3ICsyMDY5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRzKCkKICAgICBtX2Rh
dGFiYXNlLmNsZWFyQWxsVGFibGVzKCk7CiAKICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMgZmFpbGVkLCBlcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcgIiwgZGF0YWJhc2UgcGF0aDogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VE
aXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJE
YXRhYmFzZUNvbnRlbnRzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MzE1NSw1MTMgKzI5MzcsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdAogICAgIH0KIH0KIAot
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKLXsKLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW4gPSBn
ZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOwotICAg
IGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklE
KHN0YXRlbWVudC0+Y29sdW1uSW50KDEpKTsKLSAgICBhdXRvIHNvdXJjZUlEID0gc3RhdGVtZW50
LT5jb2x1bW5JbnQoMik7Ci0gICAgYXV0byB0aW1lT2ZBZENsaWNrID0gYXR0cmlidXRpb25UeXBl
ID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8g
c3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoNSkgOiBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgzKTsK
LSAgICBhdXRvIHRva2VuID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDcp
IDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDQpOwotICAgIGF1dG8gc2lnbmF0dXJlID0gYXR0cmli
dXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRy
aWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDgpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDUpOwotICAgIGF1dG8ga2V5SUQgPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtblRl
eHQoOSkgOiBzdGF0ZW1lbnQtPmNvbHVtblRleHQoNik7Ci0KLSAgICBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBhdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291
cmNlSUQoc291cmNlSUQpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
U2l0ZShSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9t
YWluU3RyaW5nKHNvdXJjZVNpdGVEb21haW4pKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZGVzdGluYXRpb25TaXRlRG9t
YWluKSksIHsgfSwgeyB9LCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZU9mQWRDbGljaykp
OwotICAgIAotICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMyk7Ci0gICAgICAgIGF1dG8gcHJp
b3JpdHkgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCg0KTsKLSAgICAgICAgYXV0byBzb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmRWYWx1ZSA9IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDYpOwotICAgICAg
ICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNv
bHVtbkRvdWJsZSgxMCk7Ci0KLSAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0g
LTEpCi0gICAgICAgICAgICBhdHRyaWJ1dGlvbi5zZXRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRpY19jYXN0
PHVpbnQzMl90PihhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlByaW9yaXR5KHByaW9yaXR5KSB9KTsKLQotICAgICAgICBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kOwotICAgICAgICAK
LSAgICAgICAgLy8gQSB2YWx1ZSBvZiAwLjAgaW5kaWNhdGVzIHRoYXQgdGhlIHJlcG9ydCBoYXMg
YmVlbiBzZW50IHRvIHRoZSByZXNwZWN0aXZlIHNpdGUuCi0gICAgICAgIGlmIChzb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmRWYWx1ZSA+IDAuMCkKLSAgICAgICAgICAgIHNvdXJjZUVhcmxpZXN0VGlt
ZVRvU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmRWYWx1ZSk7Ci0KLSAgICAgICAgaWYgKGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFs
dWUgPiAwLjApCi0gICAgICAgICAgICBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVl
KTsKLQotICAgICAgICBhdHRyaWJ1dGlvbi5zZXRUaW1lc1RvU2VuZCh7IHNvdXJjZUVhcmxpZXN0
VGltZVRvU2VuZCwgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgfSk7Ci0gICAgfQotCi0g
ICAgYXR0cmlidXRpb24uc2V0U291cmNlU2VjcmV0VG9rZW4oeyB0b2tlbiwgc2lnbmF0dXJlLCBr
ZXlJRCB9KTsKLQotICAgIHJldHVybiBhdHRyaWJ1dGlvbjsKLX0KLQotc3RkOjpwYWlyPHN0ZDo6
b3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+LCBzdGQ6Om9wdGlv
bmFsPEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNv
bnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlKQotewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklE
ID0gZG9tYWluSUQoc291cmNlU2l0ZS5yZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgYXV0byBkZXN0
aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGRlc3RpbmF0aW9uU2l0ZS5yZWdpc3RyYWJs
ZURvbWFpbik7Ci0KLSAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25T
aXRlRG9tYWluSUQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCk7Ci0KLSAgICBhdXRvIGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50LCBm
aW5kVW5hdHRyaWJ1dGVkUXVlcnksICJmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOwot
ICAgIGlmICghZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBmaW5k
VW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWlu
SUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7
Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGF1dG8gZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0
ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9maW5kQXR0cmlidXRlZFN0YXRlbWVudCwg
ZmluZEF0dHJpYnV0ZWRRdWVyeSwgImZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7Ci0g
ICAgaWYgKCFmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBmaW5kQXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJp
bmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAgICAg
ICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRB
dHRyaWJ1dGVkUXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIH0KLQotICAgIHN0ZDo6b3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+IHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50OwotICAgIGlm
IChmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykK
LSAgICAgICAgdW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0
ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0
dHJpYnV0ZWQpOwotCi0gICAgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+IGF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKLSAgICBpZiAoZmlu
ZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAg
ICBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZhdGVDbGlja01l
YXN1cmVtZW50RnJvbURhdGFiYXNlKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgp
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7Ci0K
LSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIGF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk7Ci19Ci0KLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1
cmVtZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKLXsKLSAgICBhdXRv
IHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAg
IGF1dG8gc291cmNlRGF0YSA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0gICAg
YXV0byBhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uRGF0YSA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKGF0dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lz
dHJhYmxlRG9tYWluKTsKLQotICAgIGlmICghc291cmNlRGF0YS5zZWNvbmQgfHwgIWF0dHJpYnV0
aW9uRGVzdGluYXRpb25EYXRhLnNlY29uZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYg
c291cmNlVW5saW5rYWJsZVRva2VuID0gYXR0cmlidXRpb24uc291cmNlVW5saW5rYWJsZVRva2Vu
KCk7Ci0gICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgewotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEgPSBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1
dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkudmFsdWUoKS5kYXRhIDogLTE7Ci0gICAgICAg
IGF1dG8gcHJpb3JpdHkgPSBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBh
dHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkudmFsdWUoKS5wcmlvcml0eSA6IC0x
OwotICAgICAgICBhdXRvIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRp
bWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNU
b1NlbmQoKS5zb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCkgOiAtMTsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQgPyBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1l
VG9TZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7Ci0KLSAgICAg
ICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGluc2VydGluZyBhbiBhdHRyaWJ1dGVkIHByaXZhdGUg
Y2xpY2sgbWVhc3VyZW1lbnQgdmFsdWUgaW50byB0aGUgZGF0YWJhc2Ugd2l0aG91dCB2YWxpZCBy
ZXBvcnQgdGltZXMuCi0gICAgICAgIEFTU0VSVChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgIT0g
LTEgJiYgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEpOwotCi0gICAgICAgIGF1
dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KGluc2VydEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5KTsKLSAgICAgICAgaWYgKCFzdGF0ZW1lbnQK
LSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlRGF0YS5zZWNvbmQp
ICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uRGF0YS5zZWNvbmQpICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgc3RhdGVtZW50LT5iaW5kSW50KDMsIGF0dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQpICE9IFNR
TElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDQsIGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5k
SW50KDUsIHByaW9yaXR5KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+
YmluZERvdWJsZSg2LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+Ymlu
ZERvdWJsZSg3LCBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpICE9IFNRTElURV9PSwotICAgICAg
ICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg4LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBz
b3VyY2VVbmxpbmthYmxlVG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0g
U1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDksIHNvdXJjZVVu
bGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJM
IDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQt
PmJpbmRUZXh0KDEwLCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9r
ZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1l
VG9TZW5kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIHN0YXRl
bWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChpbnNlcnRVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5KTsKLSAgICBpZiAoIXN0YXRlbWVudAotICAgICAgICB8
fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZURhdGEuc2Vjb25kKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
RGF0YS5zZWNvbmQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQo
MywgYXR0cmlidXRpb24uc291cmNlSUQoKS5pZCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0
YXRlbWVudC0+YmluZERvdWJsZSg0LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50
LT5iaW5kVGV4dCg1LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9r
ZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAg
IHx8IHN0YXRlbWVudC0+YmluZFRleHQoNiwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNl
VW5saW5rYWJsZVRva2VuLT5zaWduYXR1cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg3LCBzb3VyY2VVbmxpbmth
YmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlT
dHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFByaXZhdGVD
bGlja01lYXN1cmVtZW50IGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0Fs
bFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygp
Ci17Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9z
ZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFN0YXRlbWVudCwg
c2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRRdWVyeSwgIm1h
cmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3Rp
bmciX3MpOwotCi0gICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQgfHwgc2NvcGVkU3RhdGVtZW50LT5z
dGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFy
a0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGlu
ZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQot
fQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVVbmF0
dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQotewotICAgIGF1
dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgp
LnJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0g
ZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4p
OwotCi0gICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0
aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQsIHJlbW92
ZVVuYXR0cmlidXRlZFF1ZXJ5LCAicmVtb3ZlVW5hdHRyaWJ1dGVkIl9zKTsKLQotICAgIGlmICgh
c2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAq
c291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZVVuYXR0cmlidXRlZCwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlv
bmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmRE
YXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRlUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgU291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgQXR0
cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgQXR0cmlidXRpb25Ucmln
Z2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpCi17Ci0gICAgLy8gV2Ugc2hvdWxkIGFs
d2F5cyBjbGVhciBleHBpcmVkIGNsaWNrcyBmcm9tIHRoZSBkYXRhYmFzZSBiZWZvcmUgc2NoZWR1
bGluZyBhbiBhdHRyaWJ1dGlvbi4KLSAgICBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpOwotCi0gICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmlzVmFsaWQoKSkgewot
ICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCBhbiBpbnZhbGlk
IGF0dHJpYnV0aW9uLiIpOwotICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpF
cnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gaW52YWxpZCBhdHRyaWJ1
dGlvbi4iX3MpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fQotCi0gICAgYXV0byBkYXRhID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kYXRhOwotICAgIGF1
dG8gcHJpb3JpdHkgPSBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnByaW9yaXR5OwotCi0gICAgaWYg
KFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSU5G
TyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCBhbiBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJp
YnV0aW9uIHRyaWdnZXIgZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUu
IiwgZGF0YSwgcHJpb3JpdHkpOwotICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6Oklu
Zm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gYXR0cmli
dXRpb24gd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBw
cmlvcml0eTogJyJfcywgcHJpb3JpdHksICInLiJfcykpOwotICAgIH0KLQotICAgIFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhIHNlY29uZHNV
bnRpbFNlbmQgeyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwotCi0gICAgYXV0byBhdHRy
aWJ1dGlvbiA9IGZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5h
dGlvblNpdGUpOwotICAgIGF1dG8mIHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQgPSBhdHRyaWJ1dGlv
bi5maXJzdDsKLSAgICBhdXRvJiBwcmV2aW91c2x5QXR0cmlidXRlZCA9IGF0dHJpYnV0aW9uLnNl
Y29uZDsKLQotICAgIGlmIChwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKSB7Ci0gICAgICAgIC8vIEFs
d2F5cyBjb252ZXJ0IHRoZSBwZW5kaW5nIGF0dHJpYnV0aW9uIGFuZCByZW1vdmUgaXQgZnJvbSB0
aGUgdW5hdHRyaWJ1dGVkIG1hcC4KLSAgICAgICAgcmVtb3ZlVW5hdHRyaWJ1dGVkKCpwcmV2aW91
c2x5VW5hdHRyaWJ1dGVkKTsKLSAgICAgICAgc2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3VzbHlV
bmF0dHJpYnV0ZWQudmFsdWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV1RG
TW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7Ci0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIGFs
d2F5cyBoYXZlIGEgdmFsaWQgc2Vjb25kc1VudGlsU2VuZCB2YWx1ZSBmb3IgYSBwcmV2aW91c2x5
VW5hdHRyaWJ1dGVkIHZhbHVlIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG5vIHByZXZpb3VzIGF0dHJp
YnV0aW9uIHdpdGggYSBoaWdoZXIgcHJpb3JpdHkuCi0gICAgICAgIGlmICghc2Vjb25kc1VudGls
U2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkgewotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJDb252
ZXJ0ZWQgYSBzdG9yZWQgYWQgY2xpY2sgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7
cHVibGljfXUgYW5kIHByaW9yaXR5OiAle3B1YmxpY311LiIsIGRhdGEsIHByaW9yaXR5KTsKLSAg
ICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1By
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnRlZCBhIHN0b3JlZCBhZCBjbGljayB3aXRo
IGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAn
Il9zLCBwcmlvcml0eSwgIicuIl9zKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBwcmV2aW91cyBhdHRyaWJ1dGlvbiwgb3IgdGhlIG5ldyBhdHRyaWJ1dGlvbiBoYXMg
aGlnaGVyIHByaW9yaXR5LCBpbnNlcnQvdXBkYXRlIHRoZSBkYXRhYmFzZS4KLSAgICAgICAgaWYg
KCFwcmV2aW91c2x5QXR0cmlidXRlZCB8fCBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkLnZhbHVlKCku
aGFzSGlnaGVyUHJpb3JpdHlUaGFuKCpwcmV2aW91c2x5QXR0cmlidXRlZCkpIHsKLSAgICAgICAg
ICAgIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoKnByZXZpb3VzbHlVbmF0
dHJpYnV0ZWQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCk7Ci0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIlJlcGxhY2VkIGEgcHJldmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBv
bmUgd2l0aCBhdHRyaWJ1dGlvbiBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJs
aWN9dSBiZWNhdXNlIGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOwot
ICAgICAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmlu
ZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlcGxhY2VkIGEgcHJldmlvdXNseSBjb252
ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRh
dGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInIGJlY2F1
c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iX3MpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAocHJldmlvdXNseUF0dHJpYnV0ZWQpIHsKLSAgICAgICAgLy8gSWYg
d2UgaGF2ZSBubyBuZXcgYXR0cmlidXRpb24sIHJlLWF0dHJpYnV0ZSB0aGUgb2xkIG9uZSB0byBy
ZXNwZWN0IHRoZSBuZXcgcHJpb3JpdHksIGJ1dCBvbmx5IGlmIHRoaXMgcmVwb3J0IGhhcwotICAg
ICAgICAvLyBub3QgYmVlbiBzZW50IHRvIHRoZSBzb3VyY2Ugb3IgZGVzdGluYXRpb24gc2l0ZSB5
ZXQuCi0gICAgICAgIGlmICghcHJldmlvdXNseUF0dHJpYnV0ZWQudmFsdWUoKS5oYXNQcmV2aW91
c2x5QmVlblJlcG9ydGVkKCkpIHsKLSAgICAgICAgICAgIGF1dG8gc2Vjb25kc1VudGlsU2VuZCA9
IHByZXZpb3VzbHlBdHRyaWJ1dGVkLnZhbHVlKCkuYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1l
VG9TZW5kKFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkpOwotICAgICAgICAgICAgaWYg
KCFzZWNvbmRzVW50aWxTZW5kLmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgICAgIGluc2VydFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoKnByZXZpb3VzbHlBdHRyaWJ1dGVkKSwgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOwotCi0gICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJSZS1jb252ZXJ0
ZWQgYW4gYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRh
dGE6ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAle3B1YmxpY311IGJlY2F1c2UgaXQgaGFkIGhp
Z2hlciBwcmlvcml0eS4iLCBkYXRhLCBwcmlvcml0eSk7Ci0gICAgICAgICAgICAgICAgZGVidWdC
cm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gUmUtY29udmVydGVkIGFuIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0
cmlidXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3Ms
IHByaW9yaXR5LCAiJycgYmVjYXVzZSBpdCBoYWQgaGlnaGVyIHByaW9yaXR5LiJfcykpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFzZWNvbmRzVW50aWxTZW5k
Lmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotCi0gICAgcmV0dXJuIHNlY29uZHNVbnRpbFNlbmQ7Ci19Ci0KLVZlY3RvcjxXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCi17Ci0gICAg
YXV0byBhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1f
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBhbGxBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9TdHJpbmciX3MpOwotCi0gICAgaWYgKCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7Ci0g
ICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJp
bmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4gYXR0cmlidXRpb25zOwotICAgIHdoaWxlIChhdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgYXR0cmlidXRpb25zLmFwcGVu
ZChidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKGF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
OjpBdHRyaWJ1dGVkKSk7Ci0KLSAgICByZXR1cm4gYXR0cmlidXRpb25zOwotfQotCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50KHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbikKLXsKLSAgICAv
LyBEZWZhdWx0IHRvIGNsZWFyIGFsbCBlbnRyaWVzIGlmIG5vIGRvbWFpbiBpcyBzcGVjaWZpZWQu
Ci0gICAgU3RyaW5nIGJpbmRQYXJhbWV0ZXIgPSAiJSI7Ci0gICAgaWYgKGRvbWFpbikgewotICAg
ICAgICBhdXRvIGRvbWFpbklEVG9NYXRjaCA9IGRvbWFpbklEKCpkb21haW4pOwotICAgICAgICBp
ZiAoIWRvbWFpbklEVG9NYXRjaCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBiaW5k
UGFyYW1ldGVyID0gU3RyaW5nOjpudW1iZXIoKmRvbWFpbklEVG9NYXRjaCk7Ci0gICAgfQotCi0g
ICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7
Ci0KLSAgICBhdXRvIGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2Nv
cGVkU3RhdGVtZW50KG1fY2xlYXJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
YXRlbWVudCwgY2xlYXJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAi
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7Ci0KLSAgICBpZiAoIWNsZWFyVW5hdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVk
U3RhdGVtZW50LT5iaW5kVGV4dCgxLCBiaW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGJpbmRQ
YXJhbWV0ZXIpICE9IFNRTElURV9PSwotICAgICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNjb3Bl
ZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNF
X0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY2xlYXJVbmF0dHJpYnV0ZWRT
Y29wZWRTdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIH0KLQotICAgIGF1dG8gY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0g
dGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdGF0ZW1lbnQsIGNsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVl
cnksICJjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKLQotICAgIGlmICghY2xlYXJB
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3Bl
ZFN0YXRlbWVudC0+YmluZFRleHQoMSwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgYmluZFBh
cmFtZXRlcikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xP
R19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY2xlYXJBdHRyaWJ1dGVkU2NvcGVk
U3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKLXsKLSAgICBhdXRvIGV4cGlyYXRp
b25UaW1lRnJhbWUgPSBXYWxsVGltZTo6bm93KCkgLSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6bWF4QWdlKCk7Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29w
ZWRTdGF0ZW1lbnQobV9jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVu
dCwgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyRXhwaXJl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50
Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZERvdWJsZSgxLCBleHBpcmF0aW9uVGlt
ZUZyYW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAg
IHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElU
UF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0K
LVN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRpb25U
b1N0cmluZyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqIHN0YXRlbWVudCwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmlidXRpb25UeXBlKQotewotICAgIGF1dG8g
c291cmNlU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQt
PmNvbHVtbkludCgwKSk7Ci0gICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW4gPSBnZXREb21h
aW5TdHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMSkpOwotICAgIGF1dG8g
c291cmNlSUQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCgyKTsKLQotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCgiU291cmNlIHNpdGU6ICIsIHNvdXJjZVNpdGVE
b21haW4sICJcbkF0dHJpYnV0ZSBvbiBzaXRlOiAiLCBkZXN0aW5hdGlvblNpdGVEb21haW4sICJc
blNvdXJjZSBJRDogIiwgc291cmNlSUQpOwotCi0gICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgewotICAg
ICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCgz
KTsKLSAgICAgICAgYXV0byBwcmlvcml0eSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDQpOwotICAg
ICAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDYpOwot
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKSB7Ci0gICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiXG5BdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICIsIGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEsICJcbkF0dHJpYnV0aW9uIHByaW9yaXR5OiAiLCBwcmlvcml0eSwgIlxu
QXR0cmlidXRpb24gZWFybGllc3QgdGltZSB0byBzZW5kOiAiKTsKLSAgICAgICAgICAgIGlmIChl
YXJsaWVzdFRpbWVUb1NlbmQgPT0gLTEpCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Ik5vdCBzZXQiKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8gc2Vj
b25kc1VudGlsU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhlYXJsaWVzdFRpbWVUb1Nl
bmQpIC0gV2FsbFRpbWU6Om5vdygpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChz
ZWNvbmRzVW50aWxTZW5kID49IDI0X2ggJiYgc2Vjb25kc1VudGlsU2VuZCA8PSA0OF9oKSA/ICJX
aXRoaW4gMjQtNDggaG91cnMiIDogIk91dHNpZGUgMjQtNDggaG91cnMiKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5ObyBhdHRy
aWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJcbk5vIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsKLSAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb1N0cmluZygpCi17Ci0gICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlz
dHMgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCAoU0VMRUNUIENPVU5UKCop
IEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDEsIChTRUxF
Q1QgQ09VTlQoKikgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNu
dDIiX3MpOwotICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzIHx8IHBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcgZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50
RGF0YUV4aXN0cy0+Y29sdW1uSW50KDApICYmICFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFF
eGlzdHMtPmNvbHVtbkludCgxKSkKLSAgICAgICAgcmV0dXJuICJcbk5vIHN0b3JlZCBQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50IGRhdGEuXG4iX3M7Ci0KLSAgICBhdXRvIHVuYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50LCBhbGxVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1F1ZXJ5LCAicHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb1N0cmluZyJfcyk7Ci0KLSAgICBpZiAoIXVuYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudCkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCB1bmF0dHJpYnV0ZWROdW1iZXIgPSAwOwotICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICB3aGlsZSAodW5hdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBjb25zdCBjaGFyKiBwcmVm
aXggPSB1bmF0dHJpYnV0ZWROdW1iZXIgPyAiIiA6ICJVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudHM6IjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4LCAiXG5XZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAiLCArK3VuYXR0cmlidXRlZE51bWJlciwgJ1xu
JywKLSAgICAgICAgICAgIGF0dHJpYnV0aW9uVG9TdHJpbmcodW5hdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5h
dHRyaWJ1dGVkKSk7Ci0gICAgfQotCi0gICAgYXV0byBhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50
ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RhdGVtZW50LCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVy
eSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmciX3MpOwotCi0gICAgaWYgKCFhdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUiht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZWROdW1i
ZXIgPSAwOwotICAgIHdoaWxlIChhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0g
U1FMSVRFX1JPVykgewotICAgICAgICBpZiAoIWF0dHJpYnV0ZWROdW1iZXIpCi0gICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCh1bmF0dHJpYnV0ZWROdW1iZXIgPyAiXG4iIDogIiIsICJBdHRyaWJ1
dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOiIpOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiXG5XZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAiLCArK2F0dHJpYnV0ZWROdW1i
ZXIgKyB1bmF0dHJpYnV0ZWROdW1iZXIsICdcbicsCi0gICAgICAgICAgICBhdHRyaWJ1dGlvblRv
U3RyaW5nKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSk7Ci0gICAgfQotICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNvdXJjZUVh
cmxpZXN0VGltZVRvU2VuZD4sIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQ+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZWFybGllc3RUaW1l
c1RvU2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRp
b24pCi17Ci0gICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlv
bi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotICAgIGF1dG8gZGVzdGluYXRpb25T
aXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdp
c3RyYWJsZURvbWFpbik7Ci0KLSAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGlu
YXRpb25TaXRlRG9tYWluSUQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Ci0KLSAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMt
PnNjb3BlZFN0YXRlbWVudChtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQsIGVhcmxpZXN0
VGltZXNUb1NlbmRRdWVyeSwgImVhcmxpZXN0VGltZXNUb1NlbmQiX3MpOwotCi0gICAgaWYgKCFz
Y29wZWRTdGF0ZW1lbnQKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpz
b3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmVhcmxpZXN0VGltZXNUb1NlbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19M
T0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgc3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRp
bWVUb1NlbmQ+IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlOwotICAgIHN0ZDo6b3B0aW9uYWw8
RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ+IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGlu
YXRpb247Ci0gICAgCi0gICAgLy8gQSB2YWx1ZSBvZiAwLjAgaW5kaWNhdGVzIHRoYXQgdGhlIHJl
cG9ydCBoYXMgYmVlbiBzZW50IHRvIHRoZSByZXNwZWN0aXZlIHNpdGUuCi0gICAgaWYgKHNjb3Bl
ZFN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDApID4gMC4wKQotICAgICAgICBlYXJsaWVzdFRpbWVU
b1NlbmRUb1NvdXJjZSA9IHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDApOwotICAgIAot
ICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxKSA+IDAuMCkKLSAgICAgICAg
ZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiA9IHNjb3BlZFN0YXRlbWVudC0+Y29sdW1u
RG91YmxlKDEpOwotICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihlYXJsaWVzdFRpbWVU
b1NlbmRUb1NvdXJjZSwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbik7Ci19Ci0KLXZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRU
b1NvdXJjZShTb3VyY2VEb21haW5JRCBzb3VyY2VTaXRlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9t
YWluSUQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi17Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1l
bnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0
ZW1lbnQsIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZVF1ZXJ5LCAibWFya1JlcG9ydEFzU2VudFRv
U291cmNlIl9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+YmluZEludCgxLCBzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb1NvdXJj
ZSwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRU
b0Rlc3RpbmF0aW9uKFNvdXJjZURvbWFpbklEIHNvdXJjZVNpdGVEb21haW5JRCwgRGVzdGluYXRp
b25Eb21haW5JRCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCkKLXsKLSAgICBhdXRvIHNjb3BlZFN0
YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX21hcmtSZXBvcnRBc1NlbnRUb0Rlc3Rp
bmF0aW9uU3RhdGVtZW50LCBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblF1ZXJ5LCAibWFy
a1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24iX3MpOwotCi0gICAgaWYgKCFzY29wZWRTdGF0ZW1l
bnQKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsIHNvdXJjZVNpdGVEb21h
aW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgy
LCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFy
a1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0df
U1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25S
ZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KQoteyAgICAKLSAgICBhdXRv
IHRpbWVzVG9TZW5kID0gZWFybGllc3RUaW1lc1RvU2VuZChhdHRyaWJ1dGlvbik7Ci0gICAgYXV0
byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSB0aW1lc1RvU2VuZC5maXJzdDsKLSAgICBhdXRv
IGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gdGltZXNUb1NlbmQuc2Vjb25kOwotCi0g
ICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VT
aXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURv
bWFpbik7Ci0KLSAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRl
RG9tYWluSUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN3aXRjaCAoYXR0cmlidXRpb25SZXBv
cnRFbmRwb2ludCkgewotICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uUmVwb3J0RW5kcG9pbnQ6OlNvdXJjZToKLSAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRp
bWVUb1NlbmQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSgq
c291cmNlU2l0ZURvbWFpbklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOwotICAgICAgICBz
b3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQ6OkRlc3RpbmF0aW9uOgotICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbigq
c291cmNlU2l0ZURvbWFpbklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOwotICAgICAgICBk
ZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAg
ICAvLyBEb24ndCBjbGVhciB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGRhdGFiYXNlIHVubGVzcyBp
dCBoYXMgYmVlbiByZXBvcnRlZCBib3RoIHRvIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHNp
dGUuCi0gICAgaWYgKGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIHx8IHNvdXJjZUVhcmxp
ZXN0VGltZVRvU2VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBjbGVhckF0dHJpYnV0
ZWRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQg
PSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3MpOwotICAgIGlmICghY2xlYXJB
dHRyaWJ1dGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+
YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
Y2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUiht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyU2VudEF0dHJpYnV0aW9uIGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZygpCi17Ci0gICAgYXV0byBleHBpcmVkVGltZVRvU2VuZCA9
IFdhbGxUaW1lOjpub3coKSAtIDFfaDsKLQotICAgIGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJl
Z2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwotCi0gICAgYXV0byBlYXJsaWVzdFRpbWVUb1Nl
bmRUb1NvdXJjZVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiVVBEQVRF
IEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5k
VG9Tb3VyY2UgPSA/Il9zKTsKLSAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRp
b25TdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlVQREFURSBBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGlu
YXRpb24gPSBudWxsIl9zKTsKLQotICAgIGlmICghZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VT
dGF0ZW1lbnQKLSAgICAgICAgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQt
PmJpbmRJbnQoMSwgZXhwaXJlZFRpbWVUb1NlbmQuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0
ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0df
RVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRl
c3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KLQotICAgIGlmICghZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudCB8
fCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLVNjb3BlRXhpdDxG
dW5jdGlvbjx2b2lkKCk+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YmVn
aW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAobV90cmFuc2FjdGlvbi5pblBy
b2dyZXNzKCkpCi0gICAgICAgIHJldHVybiBtYWtlU2NvcGVFeGl0KEZ1bmN0aW9uPHZvaWQoKT4g
eyBbXSB7IH0gfSk7Ci0KLSAgICBtX3RyYW5zYWN0aW9uLmJlZ2luKCk7Ci0gICAgcmV0dXJuIG1h
a2VTY29wZUV4aXQoRnVuY3Rpb248dm9pZCgpPiB7IFt0aGlzXSB7Ci0gICAgICAgIG1fdHJhbnNh
Y3Rpb24uY29tbWl0KCk7Ci0gICAgfSB9KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICN1bmRlZiBJVFBfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggMzUxMjk4NjgzODcxYzdlYmQzY2E3OTQ5YjA1
OGI0MzgwNTFkZWIxMS4uMjVmOGE3ZWM1MTg1YTY5YWRjZmUzM2UwMTQxZjdlNTNiMGNkZjUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmgKQEAgLTI3LDIxICsyNywxNiBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKIAorI2luY2x1ZGUgIkRhdGFiYXNlVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVT
dGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNh
Y3Rpb24uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgU1FMaXRlRGF0YWJhc2U7Ci1jbGFzcyBTUUxpdGVTdGF0ZW1lbnQ7CiBlbnVtIGNsYXNz
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpA
QCAtNTYsMzQgKzUxLDIyIEBAIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTx1bnNpZ25lZCwg
bnVtYmVyT2ZCdWNrZXRzUGVyU3RhdGlzdGljPiBidWNrZXRTaXplcyB7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU7CiBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI7CiAKLXVzaW5nIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OwotdXNpbmcgVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKIHVz
aW5nIFNvdXJjZVNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
U2l0ZTsKIHVzaW5nIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlID0gV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlOwogdXNpbmcgQXR0
cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOwotdXNpbmcgRXhpc3RpbmdDb2x1bW5zID0gVmVjdG9yPFN0
cmluZz47Ci11c2luZyBFeHBlY3RlZENvbHVtbnMgPSBWZWN0b3I8U3RyaW5nPjsKLXVzaW5nIEV4
aXN0aW5nQ29sdW1uTmFtZSA9IFN0cmluZzsKLXVzaW5nIEV4cGVjdGVkQ29sdW1uTmFtZSA9IFN0
cmluZzsKLXVzaW5nIFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IGRvdWJsZTsKLXVzaW5nIERl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gZG91YmxlOwotdXNpbmcgU291cmNlRG9tYWlu
SUQgPSB1bnNpZ25lZDsKLXVzaW5nIERlc3RpbmF0aW9uRG9tYWluSUQgPSB1bnNpZ25lZDsKIAog
dHlwZWRlZiBzdGQ6OnBhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+IFRhYmxlQW5k
SW5kZXhQYWlyOwogCiAvLyBUaGlzIGlzIGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0
cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3Mg
cXVldWUuCi1jbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSBmaW5hbCA6
IHB1YmxpYyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgeworY2xhc3MgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLCBwdWJsaWMgRGF0YWJhc2VVdGlsaXRpZXMgewogcHVibGljOgogICAgIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSYsIFN1c3BlbmRhYmxlV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29u
c3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQpOwogICAgIH5S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSgpOwogCi0gICAgc3RhdGljIEhhc2hT
ZXQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUqPiYgYWxsU3RvcmVzKCk7CiAg
ICAgdm9pZCBwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUmKTsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CkBAIC0xNDAsMTggKzEyMyw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShpbnQpOwogICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IGNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCk7CiAg
ICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYXNV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bCwgYm9vbCBpc1ByZXZhbGVudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnRlcnJ1cHQoKTsKLQot
ICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQuCi0gICAgdm9pZCBpbnNlcnRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBt
YXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0
aW5nKCkgb3ZlcnJpZGU7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gYXR0cmlidXRlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8V2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlOwotICAgIFN0
cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
LCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRw
b2ludCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlkZTsKKyAgICBzdGF0aWMgdm9pZCBp
bnRlcnJ1cHRBbGxEYXRhYmFzZXMoKTsKKwogICAgIFZlY3RvcjxTdHJpbmc+IGNvbHVtbnNGb3JU
YWJsZShjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKQEAgLTE2NCwxOSArMTM3LDExIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGRNaXNzaW5nVGFibGVzSWZOZWNlc3NhcnkoKTsKICAgICBib29s
IG1pc3NpbmdVbmlxdWVJbmRpY2VzKCk7CiAgICAgYm9vbCBuZWVkc1VwZGF0ZWRTY2hlbWEoKTsK
LSAgICBib29sIG5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NoZW1hKCk7Ci0g
ICAgdm9pZCByZW5hbWVDb2x1bW5JblRhYmxlKFN0cmluZyYmLCBFeGlzdGluZ0NvbHVtbk5hbWUm
JiwgRXhwZWN0ZWRDb2x1bW5OYW1lJiYpOwotICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVtbnNUb1Rh
YmxlKFN0cmluZyYmLCBjb25zdCBFeGlzdGluZ0NvbHVtbnMmLCBjb25zdCBFeHBlY3RlZENvbHVt
bnMmKTsKLSAgICB2b2lkIGFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lk
IHJlbmFtZUNvbHVtbnNJZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgcmVuYW1lQ29sdW1uSW5UYWJs
ZSgpOwogICAgIFRhYmxlQW5kSW5kZXhQYWlyIGN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyhj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50U2No
ZW1hSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIGVuYWJsZUZvcmVpZ25LZXlzKCk7CiAgICAgYm9v
bCBtaXNzaW5nUmVmZXJlbmNlVG9PYnNlcnZlZERvbWFpbnMoKTsKICAgICB2b2lkIG1pZ3JhdGVE
YXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgZGVzdHJveVN0YXRlbWVudHMo
KTsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBzY29wZWRTdGF0
ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4mLCBBU0NJSUxp
dGVyYWwsIGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIHZvaWQgZGVzdHJveVN0YXRlbWVudHMo
KSBmaW5hbDsKIAogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFp
biYsIGNvbnN0IFN1YkZyYW1lRG9tYWluJikgY29uc3Q7CiAgICAgVmVjdG9yPFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+
IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKQEAgLTIwMSwxMCArMTY2LDYgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uQXNGaXJzdFBhcnR5KCkgY29uc3Q7CiAgICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwg
U3ViUmVzb3VyY2VEb21haW4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcygpIGNvbnN0OwogCi0g
ICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCwgRGVz
dGluYXRpb25Eb21haW5JRCk7Ci0gICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291
cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQpOwotICAgIHN0ZDo6cGFpcjxzdGQ6Om9w
dGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4sIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRp
b25FYXJsaWVzdFRpbWVUb1NlbmQ+PiBlYXJsaWVzdFRpbWVzVG9TZW5kKGNvbnN0IFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7Ci0KICAgICBzdHJ1Y3QgRG9tYWluRGF0YSB7CiAg
ICAgICAgIHVuc2lnbmVkIGRvbWFpbklEOwogICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbjsKQEAgLTI1MywyMCArMjE0LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0RhdGFiYXNlU3RvcmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29s
IGNyZWF0ZVVuaXF1ZUluZGljZXMoKTsKLSAgICBib29sIGNyZWF0ZVNjaGVtYSgpOworICAgIGJv
b2wgY3JlYXRlU2NoZW1hKCkgZmluYWw7CiAgICAgU3RyaW5nIGVuc3VyZUFuZE1ha2VEb21haW5M
aXN0KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgc3RkOjpvcHRpb25h
bDxXYWxsVGltZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgRG9tYWluRGF0
YSYpOwotICAgIAotICAgIHZvaWQgcmVtb3ZlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50Jik7Ci0gICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQqLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7Ci0gICAg
U3RyaW5nIGF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwotICAgIHN0ZDo6cGFpcjxzdGQ6
Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRp
b25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBmaW5kUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25EZXN0aW5hdGlvblNpdGUmKTsKLQotICAgIFNjb3BlRXhpdDxGdW5jdGlvbjx2b2lkKCk+PiBX
QVJOX1VOVVNFRF9SRVRVUk4gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CiAKLSAgICBj
b25zdCBTdHJpbmcgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVU
cmFuc2FjdGlvbiBtX3RyYW5zYWN0aW9uOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0T2Jz
ZXJ2ZWREb21haW5TdGF0ZW1lbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudD4gbV9pbnNlcnRUb3BMZXZlbERvbWFpblN0YXRlbWVudDsKQEAgLTMwNCwyMSAr
MjU1LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQ7CiAgICAgbXV0
YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX29ic2VydmVk
RG9tYWluc0V4aXN0c1N0YXRlbWVudDsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudDsKLSAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZWFybGllc3RU
aW1lc1RvU2VuZFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX2luc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rh
dGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
aW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc2V0VW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jbGVhclVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4gbV9jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2FsbFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fYWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudDsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2ZpbmRBdHRyaWJ1dGVkU3Rh
dGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
dXBkYXRlQXR0cmlidXRpb25zRWFybGllc3RUaW1lVG9TZW5kU3RhdGVtZW50OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVtb3ZlVW5hdHRyaWJ1dGVk
U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRp
b25TdGF0ZW1lbnQ7CiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29s
IG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCBh
NzdlMDk4MGFlYTNkMjY1YTE2YTE4NTI0YjQ3ZWVjYmNiYjNjNjk3Li4zZDdmNzVhMDE2MDRmZTZl
MTg0YmRlZTBhODNhMjk2YTI4YjgwYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC0xMDcsMTcgKzEwNyw2IEBAIHB1YmxpYzoKICAg
ICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGFsbERvbWFpbnMoKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhc1Vz
ZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBib29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKIAotICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnQgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBJVFAgbWVtb3J5IHN0b3JlLgotICAg
IHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIG92
ZXJyaWRlIHsgfTsKLSAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlkZSB7IH07Ci0gICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYp
IG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92
ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4pIG92ZXJyaWRlIHsgfTsKLSAg
ICB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGUgeyB9
OwotICAgIFN0cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH07Ci0gICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkgb3ZlcnJpZGUgeyB9OwotICAgIHZv
aWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKCkgb3ZlcnJpZGUgeyB9OwotCiBwcml2YXRlOgogICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNP
cGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKICAgICBjb25zdCBWZWN0b3I8T3Bl
cmF0aW5nRGF0ZT4mIG9wZXJhdGluZ0RhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdE
YXRlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDI0
MjJmYzg0ZjU0ZWU3Y2QzMGVlNDBmMTQyMDQyZDQxZWJmNTFiM2YuLmMxZWRmNTZkMzViYmI2NzM4
OGI3NzMzNTQ0ZDRlMTFmZWI2NzcyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKQEAgLTIwMiwxNyArMjAyLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck9wZXJhdGluZ0RhdGVzKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNTdGF0aXN0
aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0
aW5nRGF0ZXNXaW5kb3cpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBu
dW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFzVXNlckludGVyYWN0aW9uLCBib29s
IGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wpID0gMDsKLSAgICAK
LSAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50LgotICAgIHZpcnR1YWwgdm9pZCBpbnNl
cnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4
cGlyZWRGb3JUZXN0aW5nKCkgPSAwOwotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0
YT4gYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSA9IDA7Ci0gICAg
dmlydHVhbCBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWlu
PikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUltcG9y
dGFuY2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA0ZGI4MDdhN2Q5
ZDcwNTQwMWVkNTlhNmNlZWUyYWQ3YjI0MDY3NzQwLi45ZDMzZWNlY2I0Zjg3MWRhZGI5NWZkNGMw
MmVlNWNlZjYxMjA1ODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcApAQCAtMTUwLDExICsxNTAsMjMgQEAgc3RhdGljIFJlZjxTdXNwZW5kYWJs
ZVdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCkKICAgICByZXR1cm4gcXVldWUuZ2V0
KCkuY29weVJlZigpOwogfQogCi1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24s
IGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKK3N0YXRpYyBTdHJpbmcgcGNtU3RvcmVEaXJl
Y3RvcnkoY29uc3QgTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpCit7CisgICAgaWYgKHNlc3Npb24uc2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKKworICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OworfQorCitXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lv
biYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJl
Y3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgUmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCiAgICAgOiBtX25l
dHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkKICAgICAsIG1fc3RhdGlz
dGljc1F1ZXVlKHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpKQogICAgICwgbV9kYWlseVRhc2tzVGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpwZXJmb3JtRGFpbHlUYXNrcykKICAgICAsIG1faXNFcGhlbWVyYWwoaXNFcGhlbWVyYWwpCisg
ICAgLCBtX3BjbVN0b3JlKFBDTTo6U3RvcmU6OmNyZWF0ZShwY21TdG9yZURpcmVjdG9yeShuZXR3
b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODYsOSArMTk4LDkgQEAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkKICAgICBSRUxF
QVNFX0FTU0VSVCghbV9zdGF0aXN0aWNzU3RvcmUpOwogfQogCi1SZWY8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShO
ZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBp
c0VwaGVtZXJhbCkKK1JlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vz
c2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBjb25z
dCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUobmV0d29ya1Nlc3Np
b24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QsIGlzRXBoZW1lcmFsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3QsIGlzRXBoZW1lcmFsKSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpkaWREZXN0cm95TmV0d29ya1Nlc3Npb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjAxLDYgKzIxMyw3IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWREZXN0cm95TmV0d29ya1Nlc3Np
b24oQ29tcGxldGlvbkhhbmRsZXI8CiAKICAgICBtX25ldHdvcmtTZXNzaW9uID0gbnVsbHB0cjsK
ICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmNsb3NlKFtjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIGlubGluZSB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAg
LTE0NDYsMTEgKzE0NTksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBsZXRpb25IYW5kbGVyPAogdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
Ci0KLSAgICBzaGFyZWRTdGF0aXN0aWNzUXVldWUoKS0+c3VzcGVuZChbXSgpIG11dGFibGUgewot
ICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlU3RvcmUgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6YWxsU3RvcmVzKCkpCi0gICAgICAgICAgICBkYXRhYmFzZVN0b3JlLT5p
bnRlcnJ1cHQoKTsKLSAgICB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2hh
cmVkU3RhdGlzdGljc1F1ZXVlKCktPnN1c3BlbmQoUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmludGVycnVwdEFsbERhdGFiYXNlcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzdW1lKCkK
QEAgLTE0NzEsMTkxICsxNDgwLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2kKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydFByaXZhdGVD
bGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHBvc3RUYXNrKFt0aGlzLCBhdHRyaWJ1dGlvbiA9IFdU
Rk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGVdKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUo
YXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGUpOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBwb3N0VGFzayhbdGhpc10oKSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPm1hcmtB
bGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3Rpbmco
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmF0
dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIGVwaGVtZXJh
bE1lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERh
dGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBvc3RUYXNrKFt0aGlzLCBz
b3VyY2VTaXRlID0gc291cmNlU2l0ZS5pc29sYXRlZENvcHkoKSwgZGVzdGluYXRpb25TaXRlID0g
ZGVzdGluYXRpb25TaXRlLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0g
V1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgZXBoZW1lcmFsTWVhc3VyZW1lbnQgPSBX
VEZNb3ZlKGVwaGVtZXJhbE1lYXN1cmVtZW50KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3Rp
Y3NTdG9yZSkgewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJbnNlcnQgZXBoZW1lcmFs
IG1lYXN1cmVtZW50IHJpZ2h0IGJlZm9yZSBhdHRyaWJ1dGlvbi4KLSAgICAgICAgaWYgKGVwaGVt
ZXJhbE1lYXN1cmVtZW50KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlcGhlbWVyYWxN
ZWFzdXJlbWVudC0+aXNFcGhlbWVyYWwoKSk7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
ZS0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgqZXBoZW1lcmFsTWVhc3Vy
ZW1lbnQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1
dGVkKTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gc2Vjb25kcyA9IG1fc3RhdGlzdGljc1N0
b3JlLT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5h
dGlvblNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkpOwotICAgICAgICBwb3N0
VGFza1JlcGx5KFtzZWNvbmRzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2Vj
b25kcyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0g
ICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAg
ICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gY29udmVy
dGVkQXR0cmlidXRpb25zID0gbV9zdGF0aXN0aWNzU3RvcmUtPmFsbEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCgpOwotICAgICAgICBwb3N0VGFza1JlcGx5KFtjb252ZXJ0ZWRBdHRy
aWJ1dGlvbnMgPSBXVEZNb3ZlKGNvbnZlcnRlZEF0dHJpYnV0aW9ucyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbnZlcnRlZEF0dHJpYnV0aW9ucykpOwotICAg
ICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQotewotICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgcG9zdFRhc2soW3RoaXNdKCkgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3Jl
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6bnVsbG9wdCk7Ci0gICAgfSk7Ci19Ci0gICAg
Ci12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4pCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0Vw
aGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlu
ID0gZG9tYWluLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3Rh
dGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGlj
c1N0b3JlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KGRvbWFpbik7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckV4cGlyZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCgpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
LQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFz
ayhbdGhpc10oKSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyRXhwaXJlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1l
bnQgZGF0YS5cbiJfcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFzayhb
dGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewotICAgICAgICAgICAg
cG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1fc3RhdGlzdGljc1N0b3JlLT5wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFRvU3RyaW5nKCk7Ci0gICAgICAgIHBvc3RUYXNrUmVwbHkoW3Jlc3VsdCA9IHJlc3VsdC5p
c29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7
Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiBhdHRyaWJ1dGlvblRvQ2xlYXIsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpCi17Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgYXR0cmlidXRpb25Ub0NsZWFyID0g
V1RGTW92ZShhdHRyaWJ1dGlvblRvQ2xlYXIpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50XSgp
IG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclNlbnRBdHRyaWJ1dGlv
bihXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhciksIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQp
OwotICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFy
a0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBv
c3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAg
ICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7Ci0KLSAgICAgICAgcG9zdFRhc2tSZXBseShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7Ci19Ci0KIFN0cmluZyBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
Ojp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkhhcyBiZWVuIGdy
YW50ZWQgc3RvcmFnZSBhY2Nlc3MgdW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSwg
IjogIiwgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPyAnMScgOiAnMCcsICI7IEhhcyBiZWVuIHNlZW4g
dW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSwgIiBpbiB0aGUgbGFzdCAyNCBob3Vy
czogIiwgV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkgLSB0aW1lTGFzdFVwZGF0
ZWQgPCAyNF9oID8gJzEnIDogJzAnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAppbmRleCBiMzQ4ZTMxNmIwODEyMTg2MTEyMWRiNTQ3NjNkMWI5ODY5M2E1
YjUxLi4xYjkyMzJlYjdmNWRlZWM3MjIzODkyNWJiZjQzM2M0OTY0NGY2MjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUu
aCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgpAQCAtMTA4LDcg
KzEwOSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzU2NvcGUgPSBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzU2NvcGU7CiAgICAgdXNpbmcgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1
bHQgPSBXZWJDb3JlOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdDsKIAotICAgIHN0YXRpYyBS
ZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24m
LCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdv
cmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
LCBjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwg
U2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVy
YWwpOwogCiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwogCkBAIC0yMzks
MjAgKzI0MCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRXBoZW1lcmFsKCkgY29uc3QgeyByZXR1
cm4gbV9pc0VwaGVtZXJhbCA9PSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0Vw
aGVtZXJhbDo6WWVzOyB9OwogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0Rh
eXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAKLSAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50LgotICAgIHZv
aWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwotICAg
IHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVk
Rm9yVGVzdGluZygpOwotICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
Y29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25z
dCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25Ucmln
Z2VyRGF0YSYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
PiYmIGVwaGVtZXJhbE1lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25k
c1VudGlsU2VuZERhdGE+KT4mJik7Ci0gICAgdm9pZCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoKTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdp
c3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIHZv
aWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLSAgICB2b2lkIHByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcp
PiYmKTsKLSAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblJlcG9ydEVuZHBvaW50KTsKLSAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotCisgICAgUENNOjpTdG9yZSYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpIHsg
cmV0dXJuIG1fcGNtU3RvcmUuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiwg
U2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
SXNFcGhlbWVyYWwpOworICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1l
cmFsKTsKIAogICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAg
IHN0YXRpYyB2b2lkIHBvc3RUYXNrUmVwbHkoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwpAQCAt
Mjg3LDYgKzI3Nyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1NjaGVkdWxlZFByb2Nlc3NT
dGF0cyB7IGZhbHNlIH07CiAKICAgICBib29sIG1fZmlyc3ROZXR3b3JrUHJvY2Vzc0NyZWF0ZWQg
eyBmYWxzZSB9OworICAgIAorICAgIFJlZjxQQ006OlN0b3JlPiBtX3BjbVN0b3JlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyZjdkMGRjZGY4OWEzMjgyZDUw
OTYzZjgxNTk3NzdjZWExMjZmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVV0aWxpdGll
cy5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3Rh
dGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29w
ZS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0RhdGFiYXNlVXRpbGl0aWVzOjpEYXRhYmFzZVV0
aWxpdGllcyhTdHJpbmcmJiBzdG9yYWdlRmlsZVBhdGgpCisgICAgOiBtX3N0b3JhZ2VGaWxlUGF0
aChXVEZNb3ZlKHN0b3JhZ2VGaWxlUGF0aCkpCisgICAgLCBtX3RyYW5zYWN0aW9uKG1fZGF0YWJh
c2UpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cit9CisKK0RhdGFiYXNlVXRp
bGl0aWVzOjp+RGF0YWJhc2VVdGlsaXRpZXMoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworfQorCitXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBEYXRh
YmFzZVV0aWxpdGllczo6c2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIEFTQ0lJTGl0ZXJhbCBxdWVyeSwgQVNDSUlMaXRl
cmFsIGxvZ1N0cmluZykgY29uc3QKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBpZiAoIXN0YXRlbWVudCkgeworICAgICAgICBhdXRvIHN0YXRlbWVudE9yRXJyb3IgPSBt
X2RhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50KHF1ZXJ5KTsKKyAgICAgICAgaWYgKCFzdGF0
ZW1lbnRPckVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6OiVzIGZhaWxlZCB0byBwcmVw
YXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMs
IGxvZ1N0cmluZy5jaGFyYWN0ZXJzKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgeyB9OworICAgICAgICB9CisgICAgICAg
IHN0YXRlbWVudCA9IHN0YXRlbWVudE9yRXJyb3IudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsK
KyAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgIH0KKyAgICByZXR1cm4g
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgeyBzdGF0ZW1lbnQuZ2V0KCkg
fTsKK30KKworU2NvcGVFeGl0PEZ1bmN0aW9uPHZvaWQoKT4+IERhdGFiYXNlVXRpbGl0aWVzOjpi
ZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGlmIChtX3RyYW5zYWN0aW9uLmluUHJvZ3Jlc3MoKSkKKyAgICAgICAgcmV0
dXJuIG1ha2VTY29wZUV4aXQoRnVuY3Rpb248dm9pZCgpPiB7IFtdIHsgfSB9KTsKKworICAgIG1f
dHJhbnNhY3Rpb24uYmVnaW4oKTsKKyAgICByZXR1cm4gbWFrZVNjb3BlRXhpdChGdW5jdGlvbjx2
b2lkKCk+IHsgW3RoaXNdIHsKKyAgICAgICAgbV90cmFuc2FjdGlvbi5jb21taXQoKTsKKyAgICB9
IH0pOworfQorCithdXRvIERhdGFiYXNlVXRpbGl0aWVzOjpvcGVuRGF0YWJhc2VBbmRDcmVhdGVT
Y2hlbWFJZk5lY2Vzc2FyeSgpIC0+IENyZWF0ZWROZXdGaWxlCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisgICAgQ3JlYXRlZE5ld0ZpbGUgY3JlYXRlZE5ld0ZpbGUgPSBDcmVh
dGVkTmV3RmlsZTo6Tm87CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fc3RvcmFn
ZUZpbGVQYXRoKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKG1fc3RvcmFnZUZpbGVQYXRoKSkpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRh
YmFzZTo6b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6IEZhaWxlZCB0byBjcmVhdGUgZGlyZWN0
b3J5IGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX3N0b3JhZ2VG
aWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZWROZXdGaWxlOworICAgICAgICB9CisgICAgICAg
IGNyZWF0ZWROZXdGaWxlID0gQ3JlYXRlZE5ld0ZpbGU6OlllczsKKyAgICB9CisKKyAgICBpZiAo
IW1fZGF0YWJhc2Uub3BlbihtX3N0b3JhZ2VGaWxlUGF0aCkpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpvcGVuIGZh
aWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZGF0YWJhc2UgcGF0
aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCks
IG1fc3RvcmFnZUZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZWROZXdGaWxlOworICAgIH0KKyAgICAKKyAg
ICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwgZGlz
cGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVyZW50IHRocmVhZHMuCisgICAgbV9k
YXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CisKKyAgICBhdXRvIHNldEJ1c3lUaW1l
b3V0ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgYnVzeV90aW1lb3V0ID0g
NTAwMCJfcyk7CisgICAgaWYgKCFzZXRCdXN5VGltZW91dCB8fCBzZXRCdXN5VGltZW91dC0+c3Rl
cCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpzZXRCdXN5VGltZW91dCBmYWlsZWQsIGVy
cm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gY3JlYXRlZE5ld0ZpbGU7CisgICAgfQorCisgICAgaWYgKGNyZWF0ZWROZXdGaWxlID09IENy
ZWF0ZWROZXdGaWxlOjpZZXMpIHsKKyAgICAgICAgaWYgKCFjcmVhdGVTY2hlbWEoKSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAt
IERhdGFiYXNlOjpjcmVhdGVTY2hlbWEgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNf
TE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRmlsZVBhdGgudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBjcmVhdGVkTmV3RmlsZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY3JlYXRlZE5l
d0ZpbGU7Cit9CisKK3ZvaWQgRGF0YWJhc2VVdGlsaXRpZXM6OmNsb3NlKCkKK3sKKyAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBkZXN0cm95U3RhdGVtZW50cygpOworICAgIGlm
IChtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7Cit9CisK
K3ZvaWQgRGF0YWJhc2VVdGlsaXRpZXM6OmludGVycnVwdCgpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAgIG1f
ZGF0YWJhc2UuaW50ZXJydXB0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE0YTIwNGZjYWMyYzExODU3MjcyOGNlNWJiYjZlMWE5MTMxNWNlZmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNh
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGU7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBEYXRhYmFzZVV0aWxpdGllcyB7Citwcm90ZWN0ZWQ6CisgICAgRGF0YWJh
c2VVdGlsaXRpZXMoU3RyaW5nJiYgc3RvcmFnZUZpbGVQYXRoKTsKKyAgICB+RGF0YWJhc2VVdGls
aXRpZXMoKTsKKworICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHNj
b3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiYs
IEFTQ0lJTGl0ZXJhbCBxdWVyeSwgQVNDSUlMaXRlcmFsIGxvZ1N0cmluZykgY29uc3Q7CisgICAg
U2NvcGVFeGl0PEZ1bmN0aW9uPHZvaWQoKT4+IFdBUk5fVU5VU0VEX1JFVFVSTiBiZWdpblRyYW5z
YWN0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICBlbnVtIGNsYXNzIENyZWF0ZWROZXdGaWxlIDogYm9v
bCB7IE5vLCBZZXMgfTsKKyAgICBDcmVhdGVkTmV3RmlsZSBvcGVuRGF0YWJhc2VBbmRDcmVhdGVT
Y2hlbWFJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGludGVycnVw
dCgpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVTY2hlbWEoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3lTdGF0ZW1lbnRzKCkgPSAwOworCisgICAgY29uc3QgU3RyaW5nIG1fc3RvcmFn
ZUZpbGVQYXRoOworICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFz
ZTsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uIG1fdHJhbnNhY3Rpb247
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNWQ2ODI5YjI4ODAyNTRiZDAxMTMxMGE5
ZmQyOWQ3ODVlZGI2ZTA1NS4uMjhkMDBhMDdkYTgzZmFkNGU0MmI2MTBmNDk2MDgxMTVjYjIyODQy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJlY29u
bmVjdFRhc2suaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCkBA
IC0xNjE4LDcgKzE2MTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgICAgICAgICAgbmV0d29ya1Nlc3Npb24t
PmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwog
ICAgIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCkBAIC0xNjc3
LDE0ICsxNjc4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgfQogI2VuZGlmCiAK
KyAgICBhdXRvIGNsZWFyVGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNy
ZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykp
IHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3Jp
Z2luRGF0YXMpCi0gICAgICAgICAgICAgICAgbmV0d29ya1Nlc3Npb24tPmNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luRGF0YS5ob3N0KSk7CisgICAgICAgICAgICAgICAg
bmV0d29ya1Nlc3Npb24tPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJs
ZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2lu
RGF0YS5ob3N0KSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgICAgICB9CiAgICAgfQot
ICAgIAotICAgIGF1dG8gY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEY6OkNhbGxiYWNrQWdncmVnYXRv
cjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CiAgICAgICAg
IGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQpAQCAtMjI0NSw2ICsyMjQ2LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lv
bkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZChbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogI2VuZGlmCisgICAgUENNOjpTdG9yZTo6cHJlcGFyZUZv
clByb2Nlc3NUb1N1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIAogICAgIGZvckVh
Y2hOZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIHBs
YXRmb3JtRmx1c2hDb29raWVzKG5ldHdvcmtTZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yXSB7IH0pOwpAQCAtMjI4Nyw3ICsyMjg5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVzdW1lKCkKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzdW1lKCk7CiAjZW5kaWYKLSAgICAKKyAg
ICBQQ006OlN0b3JlOjpwcm9jZXNzRGlkUmVzdW1lKCk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKICAg
ICAgICAgc2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CkBAIC0yNTY5LDkgKzI1NzIsOSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24tPmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLSAgICAKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICBzZXNzaW9uLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJp
ZGVUaW1lckZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggODJmMWU1MzAxNDRmYTBmZjJkYWIxMWU2NDRjMDliN2Y2ODYxYTAwMC4uNTJkMzViYzli
M2ExNjMxMzFmZTg3YzhkYjI2OTg5NmVmOTVhYTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtODY3LDkg
Kzg2Nyw5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgKyttX3JlZGlyZWN0Q291bnQ7
CiAgICAgbV9yZWRpcmVjdFJlc3BvbnNlID0gcmVkaXJlY3RSZXNwb25zZTsKIAotICAgIHN0ZDo6
b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+
IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7
CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIGlmIChhdXRv
IHJlc3VsdCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVz
dChyZWRpcmVjdFJlcXVlc3QudXJsKCkpKQorICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVk
aXJlY3RSZXF1ZXN0LnVybCgpKSkKICAgICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHJlc3VsdC52YWx1ZSgpOwogICAgICAgICBlbHNlIGlm
ICghcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIHJlc3VsdC5lcnJvcigpKTsKQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LAogICAgIGNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSksIFdURk1vdmUocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25Ucmln
Z2VyRGF0YT4mJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEp
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGE+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQog
ewogICAgIHJlZGlyZWN0UmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChyZXF1ZXN0LmlzQXBwSW5p
dGlhdGVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCmluZGV4IDMzNDg4ZTY5ZWZlYmQ3MWI2ZDMwYmQyYmM3YzhmYzUyYTcyODMyN2Qu
Ljc3Yzk5ODBkMTNlNjdmMjYwYWQ0ZDQ5NzYzNmI1NjgyMDBkYmFjYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC04Miw2ICs4Miw3
IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgOiBtX3Nlc3Npb25JRChwYXJhbWV0ZXJz
LnNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAsIG1fcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KQogICAg
ICwgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZGlyZWN0b3J5KQogICAgICwgbV9zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCA/IFNob3VsZEluY2x1
ZGVMb2NhbGhvc3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vKQogICAgICwgbV9l
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlRGVidWdNb2RlID8gRW5hYmxlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZTo6WWVzIDogRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZTo6Tm8pCkBAIC0xMTcsNiArMTE4LDggQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdv
cmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nl
c3MKIAogICAgICAgICBpZiAoIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuZGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLmRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIGlmICghcGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICAgICB9CiAKICAgICBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkID0g
cGFyYW1ldGVycy5zdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQ7CkBAIC0xMjUsNyArMTI4LDcg
QEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3Jr
UHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJs
ZWQpOwogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBtYWtlVW5pcXVlPFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcj4oKnRoaXMsIG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJz
LnNlc3Npb25JRCwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChhdXRvJiYgbG9hZFBh
cmFtZXRlcnMsIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAoIXdlYWtU
aGlzKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKSwg
eyB9LCB7IH0pOwogCiAgICAgICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
cjo6c3RhcnQoKndlYWtUaGlzLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwpAQCAtMTc5LDcgKzE4Miw3IEBAIHZvaWQgTmV0d29y
a1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlKQog
ICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y3JlYXRlKCp0aGlzLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIG1fc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgKG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVz
IDogUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CisgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVh
dGUoKnRoaXMsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdElu
UmVzb3VyY2VMb2FkU3RhdGlzdGljcywgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnBvcHVsYXRlTWVtb3J5U3Rv
cmVGcm9tRGlzayhbXSB7IH0pOwogCkBAIC0xOTYsNyArMTk5LDcgQEAgdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6cmVjcmVhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNTdG9yZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCkKICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCp0
aGlzLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIG1fc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogUmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CisgICAgICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCp0aGlz
LCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCAgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLCAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJ
c0VwaGVtZXJhbDo6Tm8pKTsKICAgICAgICAgZm9yd2FyZFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXR0aW5ncygpOwogICAgICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9t
RGlzayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0zMTgsMTcgKzMyMSwxNyBAQCB2
b2lkIE5ldHdvcmtTZXNzaW9uOjpoYW5kbGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbnZlcnNp
b24oUHJpdmF0ZUNsaWNrTWVhc3VyZQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpkdW1wUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkudG9TdHJpbmco
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50
KCkudG9TdHJpbmdGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCit2b2lk
IE5ldHdvcmtTZXNzaW9uOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpLmNsZWFyKCk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5jbGVh
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Npb246
OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkuY2xlYXJGb3JS
ZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKGRvbWFpbikpOworICAgIHByaXZhdGVDbGlja01lYXN1
cmVtZW50KCkuY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKGRvbWFpbiksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGE0
OTcxOGRlZmRhMjM5NDg0NmFlODVjNGM3ODUyYWRhMTU2NDEzNDkuLmMwMWFhMjgwZjkzNjZkM2Fj
NTczZDUzNWQyNmM1MmNjNjUyMTdhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTEyNSw4ICsxMjUsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdG9yZVByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYpOwogICAgIHZvaWQgaGFuZGxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJz
aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJE
YXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHZvaWQgZHVtcFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7Ci0gICAgdm9pZCBjbGVhclBy
aXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7
CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVn
aXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3Zl
cnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBtYXJrQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9r
ZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKTsKQEAgLTE5MSw2ICsxOTEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwogICAgIFdl
YWtIYXNoU2V0PE5ldHdvcmtEYXRhVGFzaz4gbV9kYXRhVGFza1NldDsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFN0cmluZyBtX3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5OwogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICBTaG91bGRJbmNsdWRlTG9jYWxob3N0IG1fc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7IFNob3VsZEluY2x1
ZGVMb2NhbGhvc3Q6OlllcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk0
ODA5Njk3ODdiMjE2MGI4MmQ2OTg3OTQ0MDUwMjZkMWZhMWFmMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKQEAgLTAsMCArMSw3MTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYXRhYmFzZS5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworbmFtZXNwYWNlIFBDTSB7CisKK2NvbnN0ZXhwciBhdXRvIHNldFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkUXVlcnkgPSAiVVBEQVRFIFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCB0aW1lT2ZBZENsaWNrID0gLTEuMCJfczsKK2NvbnN0
ZXhwciBhdXRvIGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkg
PSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCAoc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgorICAg
ICJzb3VyY2VJRCwgdGltZU9mQWRDbGljaywgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQpIFZBTFVF
UyAoPywgPywgPywgPywgPywgPywgPykiX3M7Citjb25zdGV4cHIgYXV0byBpbnNlcnRBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRP
IEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURvbWFpbklELCBk
ZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgorICAgICJzb3VyY2VJRCwgYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSwgcHJpb3JpdHksIHRpbWVPZkFkQ2xpY2ssIGVhcmxpZXN0VGltZVRvU2VuZFRvU291
cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5h
dGlvbikgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfczsKK2NvbnN0
ZXhwciBhdXRvIGZpbmRVbmF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8g
QU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIGZpbmRB
dHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICogRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRl
RG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gcmVtb3ZlVW5hdHRyaWJ1dGVkUXVlcnkg
PSAiREVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUg
c291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9z
OworY29uc3RleHByIGF1dG8gYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVl
cnkgPSAiU0VMRUNUICosIE1JTihlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgZWFybGllc3RU
aW1lVG9TZW5kVG9EZXN0aW5hdGlvbikgYXMgbWluVmFsICIKKyAgICAiRlJPTSBBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2Ug
SVMgTk9UIE5VTEwgQU5EIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gSVMgTk9UIE5V
TEwgIgorICAgICJVTklPTiBBTEwgU0VMRUNUICosIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNl
IGFzIG1pblZhbCBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBl
YXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIElTIE5VTEwgIgorICAgICJVTklPTiBBTEwg
U0VMRUNUICosIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gYXMgbWluVmFsIEZST00g
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvU291cmNlIElTIE5VTEwgT1JERVIgQlkgbWluVmFsIl9zOworY29uc3RleHByIGF1dG8gYWxs
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNRdWVyeSA9ICJT
RUxFQ1QgKiBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOworY29u
c3RleHByIGF1dG8gY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9
ICJERUxFVEUgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291
cmNlU2l0ZURvbWFpbklEIExJS0UgPyBPUiBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBMSUtFID8i
X3M7Citjb25zdGV4cHIgYXV0byBjbGVhclVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50UXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEIExJS0UgPyBPUiBkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCBMSUtFID8iX3M7Citjb25zdGV4cHIgYXV0byBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFF1ZXJ5ID0gIkRFTEVURSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50IFdIRVJFID8gPiB0aW1lT2ZBZENsaWNrIl9zOworY29uc3RleHByIGF1dG8gbWFy
a1JlcG9ydEFzU2VudFRvU291cmNlUXVlcnkgPSAiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSBudWxsIFdIRVJF
IHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJf
czsKK2NvbnN0ZXhwciBhdXRvIG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uUXVlcnkgPSAi
VVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbiA9IG51bGwgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBB
TkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gZWFybGll
c3RUaW1lc1RvU2VuZFF1ZXJ5ID0gIlNFTEVDVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwg
ZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBkb21haW5JREZyb21TdHJpbmdR
dWVyeSA9ICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBQQ01PYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVn
aXN0cmFibGVEb21haW4gPSA/Il9zOworY29uc3RleHByIGF1dG8gZG9tYWluU3RyaW5nRnJvbURv
bWFpbklEUXVlcnkgPSAiU0VMRUNUIHJlZ2lzdHJhYmxlRG9tYWluIEZST00gUENNT2JzZXJ2ZWRE
b21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBUQUJMRSBVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgorICAgICJzb3VyY2VTaXRlRG9tYWluSUQgSU5U
RUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwg
c291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgorICAgICJ0aW1lT2ZBZENsaWNrIFJFQUwgTk9U
IE5VTEwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJRCBURVhULCBGT1JFSUdOIEtF
WShzb3VyY2VTaXRlRG9tYWluSUQpICIKKyAgICAiUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERvbWFp
bnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNp
dGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCisgICAgIlBDTU9ic2VydmVkRG9tYWlucyhkb21haW5J
RCkgT04gREVMRVRFIENBU0NBREUpIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBUQUJMRSBBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgKCIKKyAgICAic291cmNlU2l0ZURvbWFpbklEIElOVEVHRVIgTk9U
IE5VTEwsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIHNvdXJjZUlE
IElOVEVHRVIgTk9UIE5VTEwsICIKKyAgICAiYXR0cmlidXRpb25UcmlnZ2VyRGF0YSBJTlRFR0VS
IE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5PVCBOVUxMLCB0aW1lT2ZBZENsaWNrIFJFQUwg
Tk9UIE5VTEwsICIKKyAgICAiZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgUkVBTCwgdG9rZW4g
VEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb24gUkVBTCwgIgorICAgICJGT1JFSUdOIEtFWShzb3VyY2VTaXRlRG9tYWluSUQpIFJF
RkVSRU5DRVMgUENNT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwg
Rk9SRUlHTiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgIgorICAgICJQ
Q01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKSJfczsKK2NvbnN0
ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50X3NvdXJjZVNpdGVEb21haW5JRF9kZXN0aW5hdGlvblNpdGVE
b21haW5JRCBvbiBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIHNvdXJjZVNp
dGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgKSJfczsKK2NvbnN0ZXhwciBhdXRv
IGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNS
RUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEIG9uIEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21haW5JRCwgZGVz
dGluYXRpb25TaXRlRG9tYWluSUQgKSJfczsKK2NvbnN0ZXhwciBhdXRvIGNyZWF0ZVBDTU9ic2Vy
dmVkRG9tYWluID0gIkNSRUFURSBUQUJMRSBQQ01PYnNlcnZlZERvbWFpbnMgKCIKKyAgICAiZG9t
YWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgcmVnaXN0cmFibGVEb21haW4gVEVYVCBOT1QgTlVM
TCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCkiX3M7Citjb25zdGV4cHIgYXV0byBpbnNlcnRPYnNl
cnZlZERvbWFpblF1ZXJ5ID0gIklOU0VSVCBJTlRPIFBDTU9ic2VydmVkRG9tYWlucyAocmVnaXN0
cmFibGVEb21haW4pIFZBTFVFUyAoPykiX3M7CisKK3N0YXRpYyBIYXNoU2V0PERhdGFiYXNlKj4m
IGFsbERhdGFiYXNlcygpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8RGF0YWJhc2UqPj4gc2V0OworICAgIHJldHVy
biBzZXQ7Cit9CisKK0RhdGFiYXNlOjpEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJl
Y3RvcnkpCisgICAgOiBEYXRhYmFzZVV0aWxpdGllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgInBjbS5kYiJfcykpCit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgb3BlbkRhdGFiYXNlQW5kQ3JlYXRlU2NoZW1hSWZO
ZWNlc3NhcnkoKTsKKyAgICBhbGxEYXRhYmFzZXMoKS5hZGQodGhpcyk7Cit9CisKK0RhdGFiYXNl
Ojp+RGF0YWJhc2UoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGNs
b3NlKCk7CisgICAgYWxsRGF0YWJhc2VzKCkucmVtb3ZlKHRoaXMpOworfQorCit2b2lkIERhdGFi
YXNlOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXMoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGZvciAoYXV0byBkYXRhYmFzZSA6IGFsbERhdGFiYXNlcygpKQorICAgICAg
ICBkYXRhYmFzZS0+aW50ZXJydXB0KCk7Cit9CisKK2Jvb2wgRGF0YWJhc2U6OmNyZWF0ZVNjaGVt
YSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoIW1fZGF0
YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlUENNT2JzZXJ2ZWREb21haW4pKSB7CisgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBQQ01PYnNlcnZlZERvbWFpbnMgdGFibGUgaW4g
ZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0g
JXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV9kYXRhYmFzZS5leGVj
dXRlQ29tbWFuZChjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7Cisg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0
RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5p
cXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKKyAgICAgICAgfHwg
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExPR19FUlJPUigiRXJyb3IgY3JlYXRp
bmcgaW5kZXhlcyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIERhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCit7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBi
ZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8gc291cmNlSUQgPSBlbnN1
cmVEb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwor
ICAgIGF1dG8gYXR0cmlidXRpb25EZXN0aW5hdGlvbklEID0gZW5zdXJlRG9tYWluSUQoYXR0cmli
dXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghc291
cmNlSUQgfHwgIWF0dHJpYnV0aW9uRGVzdGluYXRpb25JRCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byYgc291cmNlVW5saW5rYWJsZVRva2VuID0gYXR0cmlidXRpb24uc291cmNlVW5saW5r
YWJsZVRva2VuKCk7CisgICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgeworICAgICAgICBhdXRvIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEgPSBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkg
PyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkudmFsdWUoKS5kYXRhIDogLTE7
CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkudmFsdWUoKS5wcmlv
cml0eSA6IC0xOworICAgICAgICBhdXRvIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJp
YnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRp
b24udGltZXNUb1NlbmQoKS5zb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQudmFsdWUoKS5zZWNvbmRz
U2luY2VFcG9jaCgpLnZhbHVlKCkgOiAtMTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxp
ZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuZGVzdGluYXRpb25FYXJs
aWVzdFRpbWVUb1NlbmQgPyBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7
CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGluc2VydGluZyBhbiBhdHRyaWJ1dGVk
IHByaXZhdGUgY2xpY2sgbWVhc3VyZW1lbnQgdmFsdWUgaW50byB0aGUgZGF0YWJhc2Ugd2l0aG91
dCB2YWxpZCByZXBvcnQgdGltZXMuCisgICAgICAgIEFTU0VSVChzb3VyY2VFYXJsaWVzdFRpbWVU
b1NlbmQgIT0gLTEgJiYgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEpOworCisg
ICAgICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KGluc2Vy
dEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5KTsKKyAgICAgICAgaWYgKCFz
dGF0ZW1lbnQKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlSUQp
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uSUQpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVt
ZW50LT5iaW5kSW50KDMsIGF0dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQpICE9IFNRTElURV9PSwor
ICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDQsIGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDUsIHBy
aW9yaXR5KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJs
ZSg2LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1
ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg3
LCBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwg
c3RhdGVtZW50LT5iaW5kVGV4dCg4LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxp
bmthYmxlVG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09L
CisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDksIHNvdXJjZVVubGlua2FibGVU
b2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMIDogZW1wdHlT
dHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0
KDEwLCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtleUlE
QmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBz
dGF0ZW1lbnQtPmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9E
T05FKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgIiVwIC0gRGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50IGluc2Vy
dEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFTU0VSVChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7CisKKyAgICBhdXRvIHN0
YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChpbnNlcnRVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5KTsKKyAgICBpZiAoIXN0YXRlbWVudAorICAgICAg
ICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZUlEKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9uSUQpICE9
IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMywgYXR0cmlidXRpb24u
c291cmNlSUQoKS5pZCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERv
dWJsZSg0LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52
YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg1LCBz
b3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnRva2VuQmFzZTY0
VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+
YmluZFRleHQoNiwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2Vu
LT5zaWduYXR1cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg3LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3Vy
Y2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0VW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNlOjptYXJrQWxsVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVu
dCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3NldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50LCBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5LCAibWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZyJfcyk7CisKKyAgICBpZiAoIXNjb3BlZFN0
YXRlbWVudCB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0
YWJhc2U6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJl
ZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KK30KKworc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OlVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6QXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gRGF0YWJhc2U6OmZpbmRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291
cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUpCit7CisgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQg
PSBkb21haW5JRChzb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoZGVzdGluYXRpb25TaXRlLnJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRl
RG9tYWluSUQpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRvIGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQg
PSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5k
VW5hdHRyaWJ1dGVkUXVlcnksICJmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOworICAg
IGlmICghZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBmaW5kVW5h
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQp
ICE9IFNRTElURV9PSworICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50
LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRVbmF0dHJpYnV0ZWRRdWVy
eSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
CisgICAgYXV0byBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0
YXRlbWVudChtX2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCAi
ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKyAgICBpZiAoIWZpbmRBdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50
LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8
fCBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25T
aXRlRG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmZpbmRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiB1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsKKyAgICBpZiAoZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgp
ID09IFNRTElURV9ST1cpCisgICAgICAgIHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShmaW5kVW5hdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ7CisgICAgaWYgKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FM
SVRFX1JPVykKKyAgICAgICAgYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gYnVp
bGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShmaW5kQXR0cmlidXRlZFNjb3Bl
ZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6
OkF0dHJpYnV0ZWQpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
OworfQorCitzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4sIERlYnVnSW5mbz4gRGF0YWJhc2U6OmF0
dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0
aW9uU2l0ZSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworCisgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBjbGVhciBleHBpcmVkIGNs
aWNrcyBmcm9tIHRoZSBkYXRhYmFzZSBiZWZvcmUgc2NoZWR1bGluZyBhbiBhdHRyaWJ1dGlvbi4K
KyAgICBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgIGlmICghYXR0
cmlidXRpb25UcmlnZ2VyRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSU5G
TyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9uLiIp
OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHt7eyBNZXNzYWdlTGV2ZWw6OkVycm9y
LCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9u
LiJfcyB9fX0gfTsKKyAgICB9CisKKyAgICBEZWJ1Z0luZm8gZGVidWdJbmZvOworICAgIGF1dG8g
ZGF0YSA9IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGF0YTsKKyAgICBhdXRvIHByaW9yaXR5ID0g
YXR0cmlidXRpb25UcmlnZ2VyRGF0YS5wcmlvcml0eTsKKyAgICBSRUxFQVNFX0xPR19JTkZPKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IGFuIGF0dHJpYnV0aW9uIHdpdGggYXR0cmlidXRp
b24gdHJpZ2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dS4iLCBk
YXRhLCBwcmlvcml0eSk7CisgICAgZGVidWdJbmZvLm1lc3NhZ2VzLmFwcGVuZCh7IE1lc3NhZ2VM
ZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBh
biBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwg
IicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicuIl9zKSB9KTsKKworICAgIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhIHNlY29u
ZHNVbnRpbFNlbmQgeyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworCisgICAgYXV0byBh
dHRyaWJ1dGlvbiA9IGZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0
aW5hdGlvblNpdGUpOworICAgIGF1dG8mIHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQgPSBhdHRyaWJ1
dGlvbi5maXJzdDsKKyAgICBhdXRvJiBwcmV2aW91c2x5QXR0cmlidXRlZCA9IGF0dHJpYnV0aW9u
LnNlY29uZDsKKworICAgIGlmIChwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKSB7CisgICAgICAgIC8v
IEFsd2F5cyBjb252ZXJ0IHRoZSBwZW5kaW5nIGF0dHJpYnV0aW9uIGFuZCByZW1vdmUgaXQgZnJv
bSB0aGUgdW5hdHRyaWJ1dGVkIG1hcC4KKyAgICAgICAgcmVtb3ZlVW5hdHRyaWJ1dGVkKCpwcmV2
aW91c2x5VW5hdHRyaWJ1dGVkKTsKKyAgICAgICAgc2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3Vz
bHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQo
V1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxk
IGFsd2F5cyBoYXZlIGEgdmFsaWQgc2Vjb25kc1VudGlsU2VuZCB2YWx1ZSBmb3IgYSBwcmV2aW91
c2x5VW5hdHRyaWJ1dGVkIHZhbHVlIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG5vIHByZXZpb3VzIGF0
dHJpYnV0aW9uIHdpdGggYSBoaWdoZXIgcHJpb3JpdHkuCisgICAgICAgIGlmICghc2Vjb25kc1Vu
dGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkgeworICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IFdURk1vdmUoZGVidWdJbmZvKSB9OworICAgICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9MT0df
SU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkNvbnZlcnRlZCBhIHN0b3JlZCBhZCBjbGlj
ayB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6
ICV7cHVibGljfXUuIiwgZGF0YSwgcHJpb3JpdHkpOworICAgICAgICBkZWJ1Z0luZm8ubWVzc2Fn
ZXMuYXBwZW5kKHsgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gQ29udmVydGVkIGEgc3RvcmVkIGFkIGNsaWNrIHdpdGggYXR0cmlidXRp
b24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9y
aXR5LCAiJy4iX3MpIH0pOworCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGF0
dHJpYnV0aW9uLCBvciB0aGUgbmV3IGF0dHJpYnV0aW9uIGhhcyBoaWdoZXIgcHJpb3JpdHksIGlu
c2VydC91cGRhdGUgdGhlIGRhdGFiYXNlLgorICAgICAgICBpZiAoIXByZXZpb3VzbHlBdHRyaWJ1
dGVkIHx8IHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5oYXNIaWdoZXJQcmlvcml0eVRo
YW4oKnByZXZpb3VzbHlBdHRyaWJ1dGVkKSkgeworICAgICAgICAgICAgaW5zZXJ0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgqcHJldmlvdXNseVVuYXR0cmlidXRlZCksIFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKKworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIlJlcGxhY2VkIGEg
cHJldmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1
dGlvbiBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dSBiZWNhdXNlIGl0
IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOworICAgICAgICAgICAgZGVi
dWdJbmZvLm1lc3NhZ2VzLmFwcGVuZCh7IE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygi
W1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlcGxhY2VkIGEgcHJldmlvdXNseSBjb252ZXJ0
ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6
ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInIGJlY2F1c2Ug
aXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iX3MpIH0pOworICAgICAgICB9CisgICAgfSBlbHNlIGlm
IChwcmV2aW91c2x5QXR0cmlidXRlZCkgeworICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIG5ldyBh
dHRyaWJ1dGlvbiwgcmUtYXR0cmlidXRlIHRoZSBvbGQgb25lIHRvIHJlc3BlY3QgdGhlIG5ldyBw
cmlvcml0eSwgYnV0IG9ubHkgaWYgdGhpcyByZXBvcnQgaGFzCisgICAgICAgIC8vIG5vdCBiZWVu
IHNlbnQgdG8gdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBzaXRlIHlldC4KKyAgICAgICAgaWYg
KCFwcmV2aW91c2x5QXR0cmlidXRlZC52YWx1ZSgpLmhhc1ByZXZpb3VzbHlCZWVuUmVwb3J0ZWQo
KSkgeworICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0gcHJldmlvdXNseUF0dHJp
YnV0ZWQudmFsdWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV1RGTW92ZShh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7CisgICAgICAgICAgICBpZiAoIXNlY29uZHNVbnRpbFNl
bmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHsgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKGRlYnVnSW5mbykgfTsKKworICAgICAgICAgICAg
aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgqcHJldmlvdXNseUF0dHJpYnV0
ZWQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7
CisKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
ICJSZS1jb252ZXJ0ZWQgYW4gYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlv
biB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAle3B1YmxpY311IGJlY2F1
c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iLCBkYXRhLCBwcmlvcml0eSk7CisgICAgICAgICAg
ICBkZWJ1Z0luZm8ubWVzc2FnZXMuYXBwZW5kKHsgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3Ry
aW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gUmUtY29udmVydGVkIGFuIGFkIGNsaWNr
IHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRh
LCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJycgYmVjYXVzZSBpdCBoYWQgaGln
aGVyIHByaW9yaXR5LiJfcykgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXNlY29u
ZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkpCisgICAgICAgIHJl
dHVybiB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShkZWJ1Z0luZm8pIH07CisKKyAgICByZXR1cm4g
eyBzZWNvbmRzVW50aWxTZW5kLCBXVEZNb3ZlKGRlYnVnSW5mbykgfTsKK30KKworV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgRGF0YWJhc2U6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQsIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHNvdXJjZVNpdGVEb21h
aW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkp
OworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURv
bWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDEpKTsKKyAgICBhdXRvIHNvdXJjZUlEID0gc3Rh
dGVtZW50LT5jb2x1bW5JbnQoMik7CisgICAgYXV0byB0aW1lT2ZBZENsaWNrID0gYXR0cmlidXRp
b25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1
dGVkID8gc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoNSkgOiBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJs
ZSgzKTsKKyAgICBhdXRvIHRva2VuID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5U
ZXh0KDcpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDQpOworICAgIGF1dG8gc2lnbmF0dXJlID0g
YXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
OjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDgpIDogc3RhdGVtZW50LT5jb2x1
bW5UZXh0KDUpOworICAgIGF1dG8ga2V5SUQgPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNv
bHVtblRleHQoOSkgOiBzdGF0ZW1lbnQtPmNvbHVtblRleHQoNik7CisKKyAgICBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U291cmNlSUQoc291cmNlSUQpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U291cmNlU2l0ZShSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJv
bVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHNvdXJjZVNpdGVEb21haW4pKSwgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlKFJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZGVz
dGluYXRpb25TaXRlRG9tYWluKSksIHsgfSwgeyB9LCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
dGltZU9mQWRDbGljaykpOworICAgIAorICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKKyAgICAgICAg
YXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMyk7Cisg
ICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCg0KTsKKyAgICAgICAg
YXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA9IHN0YXRlbWVudC0+Y29sdW1uRG91
YmxlKDYpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUg
PSBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxMCk7CisKKyAgICAgICAgaWYgKGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEgIT0gLTEpCisgICAgICAgICAgICBhdHRyaWJ1dGlvbi5zZXRBdHRyaWJ1dGlv
bihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0
YSB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlByaW9yaXR5KHByaW9yaXR5KSB9KTsKKworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kOworICAgICAgICAKKyAgICAgICAgLy8gQSB2YWx1ZSBvZiAwLjAgaW5kaWNhdGVzIHRoYXQg
dGhlIHJlcG9ydCBoYXMgYmVlbiBzZW50IHRvIHRoZSByZXNwZWN0aXZlIHNpdGUuCisgICAgICAg
IGlmIChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA+IDAuMCkKKyAgICAgICAgICAgIHNv
dXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSk7CisKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uRWFybGll
c3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCisgICAgICAgICAgICBkZXN0aW5hdGlvbkVhcmxpZXN0
VGltZVRvU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhkZXN0aW5hdGlvbkVhcmxpZXN0
VGltZVRvU2VuZFZhbHVlKTsKKworICAgICAgICBhdHRyaWJ1dGlvbi5zZXRUaW1lc1RvU2VuZCh7
IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCwgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQg
fSk7CisgICAgfQorCisgICAgYXR0cmlidXRpb24uc2V0U291cmNlU2VjcmV0VG9rZW4oeyB0b2tl
biwgc2lnbmF0dXJlLCBrZXlJRCB9KTsKKworICAgIHJldHVybiBhdHRyaWJ1dGlvbjsKK30KKwor
dm9pZCBEYXRhYmFzZTo6cmVtb3ZlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50
JiBhdHRyaWJ1dGlvbikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBh
dXRvIHNvdXJjZVNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUo
KS5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9
IGRvbWFpbklEKGF0dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+
c2NvcGVkU3RhdGVtZW50KG1fcmVtb3ZlVW5hdHRyaWJ1dGVkU3RhdGVtZW50LCByZW1vdmVVbmF0
dHJpYnV0ZWRRdWVyeSwgInJlbW92ZVVuYXR0cmlidXRlZCJfcyk7CisKKyAgICBpZiAoIXNjb3Bl
ZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJj
ZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+
YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAg
ICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6
OnJlbW92ZVVuYXR0cmlidXRlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorCitWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+IERhdGFiYXNlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQor
eworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50UXVlcnksICJhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3Mp
OworCisgICAgaWYgKCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6YWxs
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGF0dHJpYnV0aW9uczsK
KyAgICB3aGlsZSAoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9S
T1cpCisgICAgICAgIGF0dHJpYnV0aW9ucy5hcHBlbmQoYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEZyb21EYXRhYmFzZShhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkpOworCisgICAgcmV0
dXJuIGF0dHJpYnV0aW9uczsKK30KKworU3RyaW5nIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZygpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCAoU0VMRUNUIENPVU5UKCopIEZST00gVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDEsIChTRUxFQ1QgQ09VTlQo
KikgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDIiX3MpOwor
ICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzIHx8IHByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YUV4aXN0cy0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNl
Ojpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyBmYWlsZWQsIGVycm9y
IG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKworICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3Rz
LT5jb2x1bW5JbnQoMCkgJiYgIXByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+Y29s
dW1uSW50KDEpKQorICAgICAgICByZXR1cm4gIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnQgZGF0YS5cbiJfczsKKworICAgIGF1dG8gdW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0ZW1lbnQsIGFsbFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zUXVlcnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRvU3RyaW5nRm9yVGVzdGluZyJfcyk7CisKKyAgICBpZiAoIXVuYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgIiVwIC0gRGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JU
ZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCB1bmF0dHJpYnV0ZWROdW1iZXIgPSAwOworICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKKyAgICB3aGlsZSAodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5z
dGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSB1bmF0
dHJpYnV0ZWROdW1iZXIgPyAiIiA6ICJVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudHM6IjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4LCAiXG5XZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCAiLCArK3VuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKKyAgICAg
ICAgICAgIGF0dHJpYnV0aW9uVG9TdHJpbmcodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50Lmdl
dCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVk
KSk7CisgICAgfQorCisgICAgYXV0byBhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+
c2NvcGVkU3RhdGVtZW50KG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rh
dGVtZW50LCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgInByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nIl9zKTsKKworICAgIGlmICghYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVt
ZW50VG9TdHJpbmdGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVkTnVtYmVyID0gMDsK
KyAgICB3aGlsZSAoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9S
T1cpIHsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVkTnVtYmVyKQorICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQodW5hdHRyaWJ1dGVkTnVtYmVyID8gIlxuIiA6ICIiLCAiQXR0cmlidXRlZCBQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50czoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKythdHRyaWJ1dGVkTnVtYmVyICsgdW5h
dHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAorICAgICAgICAgICAgYXR0cmlidXRpb25Ub1N0cmluZyhh
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworfQorCitTdHJpbmcgRGF0YWJhc2U6OmF0dHJpYnV0aW9uVG9TdHJpbmcoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBhdXRvIHNvdXJjZVNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdG
cm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOworICAgIGF1dG8gZGVzdGluYXRp
b25TaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29s
dW1uSW50KDEpKTsKKyAgICBhdXRvIHNvdXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMik7
CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoIlNvdXJj
ZSBzaXRlOiAiLCBzb3VyY2VTaXRlRG9tYWluLCAiXG5BdHRyaWJ1dGUgb24gc2l0ZTogIiwgZGVz
dGluYXRpb25TaXRlRG9tYWluLCAiXG5Tb3VyY2UgSUQ6ICIsIHNvdXJjZUlEKTsKKworICAgIGlm
IChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGU6OkF0dHJpYnV0ZWQpIHsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0g
c3RhdGVtZW50LT5jb2x1bW5JbnQoMyk7CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0ZW1l
bnQtPmNvbHVtbkludCg0KTsKKyAgICAgICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGF0
ZW1lbnQtPmNvbHVtbkludCg2KTsKKworICAgICAgICBpZiAoYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSAhPSAtMSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuQXR0cmlidXRpb24gdHJp
Z2dlciBkYXRhOiAiLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCAiXG5BdHRyaWJ1dGlvbiBwcmlv
cml0eTogIiwgcHJpb3JpdHksICJcbkF0dHJpYnV0aW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDog
Iik7CisgICAgICAgICAgICBpZiAoZWFybGllc3RUaW1lVG9TZW5kID09IC0xKQorICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJOb3Qgc2V0Iik7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoZWFybGllc3RUaW1lVG9TZW5kKSAtIFdhbGxUaW1lOjpub3coKTsKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgoc2Vjb25kc1VudGlsU2VuZCA+PSAyNF9oICYmIHNlY29uZHNV
bnRpbFNlbmQgPD0gNDhfaCkgPyAiV2l0aGluIDI0LTQ4IGhvdXJzIiA6ICJPdXRzaWRlIDI0LTQ4
IGhvdXJzIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIlxuTm8gYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhLiIpOworICAgIH0gZWxz
ZQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEu
Iik7CisgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOworfQorCit2b2lkIERhdGFiYXNlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIGF1dG8gZXhwaXJlZFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6bm93KCkg
LSAxX2g7CisKKyAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZO
ZWNlc3NhcnkoKTsKKworICAgIGF1dG8gZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1l
bnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gPyJfcyk7
CisgICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gbnVsbCJfcyk7
CisKKyAgICBpZiAoIWVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50CisgICAgICAg
IHx8IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50LT5iaW5kSW50KDEsIGV4cGly
ZWRUaW1lVG9TZW5kLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGlmICghZWFybGllc3RUaW1lVG9TZW5kVG9E
ZXN0aW5hdGlvblN0YXRlbWVudCB8fCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3Rh
dGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjptYXJrQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBEYXRh
YmFzZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW4pCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgLy8gRGVmYXVsdCB0byBjbGVhciBhbGwgZW50cmllcyBpZiBubyBkb21haW4gaXMgc3BlY2lm
aWVkLgorICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyID0gIiUiOworICAgIGlmIChkb21haW4pIHsK
KyAgICAgICAgYXV0byBkb21haW5JRFRvTWF0Y2ggPSBkb21haW5JRCgqZG9tYWluKTsKKyAgICAg
ICAgaWYgKCFkb21haW5JRFRvTWF0Y2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
YmluZFBhcmFtZXRlciA9IFN0cmluZzo6bnVtYmVyKCpkb21haW5JRFRvTWF0Y2gpOworICAgIH0K
KworICAgIGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2Fy
eSgpOworCisgICAgYXV0byBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMt
PnNjb3BlZFN0YXRlbWVudChtX2NsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdGF0ZW1lbnQsIGNsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVy
eSwgImNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOworCisgICAgaWYgKCFjbGVhclVu
YXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBi
aW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRT
Y29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQs
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwor
ICAgIGF1dG8gY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3Rh
dGVtZW50KG1fY2xlYXJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQs
IGNsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJjbGVhclByaXZh
dGVDbGlja01lYXN1cmVtZW50Il9zKTsKKworICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU2NvcGVk
U3RhdGVtZW50CisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+Ymlu
ZFRleHQoMSwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGNsZWFyQXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgYmluZFBhcmFtZXRlcikgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZB
VEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBEYXRhYmFzZTo6Y2xlYXJF
eHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIGF1dG8gZXhwaXJhdGlvblRpbWVGcmFtZSA9IFdhbGxUaW1lOjpub3co
KSAtIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjptYXhBZ2UoKTsKKyAgICBhdXRv
IHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NsZWFyRXhwaXJlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFF1ZXJ5LCAiY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3Mp
OworCisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5iaW5kRG91YmxlKDEsIGV4cGlyYXRpb25UaW1lRnJhbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52
YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorfQorCit2b2lkIERhdGFiYXNlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
KQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gdGltZXNUb1Nl
bmQgPSBlYXJsaWVzdFRpbWVzVG9TZW5kKGF0dHJpYnV0aW9uKTsKKyAgICBhdXRvIHNvdXJjZUVh
cmxpZXN0VGltZVRvU2VuZCA9IHRpbWVzVG9TZW5kLmZpcnN0OworICAgIGF1dG8gZGVzdGluYXRp
b25FYXJsaWVzdFRpbWVUb1NlbmQgPSB0aW1lc1RvU2VuZC5zZWNvbmQ7CisKKyAgICBhdXRvIHNv
dXJjZVNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5yZWdp
c3RyYWJsZURvbWFpbik7CisgICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFp
bklEKGF0dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKwor
ICAgIGlmICghc291cmNlU2l0ZURvbWFpbklEIHx8ICFkZXN0aW5hdGlvblNpdGVEb21haW5JRCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoIChhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
KSB7CisgICAgY2FzZSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRF
bmRwb2ludDo6U291cmNlOgorICAgICAgICBpZiAoIXNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkg
eworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgbWFya1JlcG9ydEFzU2VudFRvU291cmNlKCpzb3VyY2VTaXRl
RG9tYWluSUQsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCk7CisgICAgICAgIHNvdXJjZUVhcmxp
ZXN0VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6RGVzdGlu
YXRpb246CisgICAgICAgIGlmICghZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKCpzb3VyY2VTaXRl
RG9tYWluSUQsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCk7CisgICAgICAgIGRlc3RpbmF0aW9u
RWFybGllc3RUaW1lVG9TZW5kID0gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIERvbid0
IGNsZWFyIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGUgZGF0YWJhc2UgdW5sZXNzIGl0IGhhcyBiZWVu
IHJlcG9ydGVkIGJvdGggdG8gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gc2l0ZS4KKyAgICBp
ZiAoZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgfHwgc291cmNlRWFybGllc3RUaW1lVG9T
ZW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNsZWFyQXR0cmlidXRlZFN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiREVMRVRFIEZST00gQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRl
c3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfcyk7CisgICAgaWYgKCFjbGVhckF0dHJpYnV0ZWRT
dGF0ZW1lbnQKKyAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LT5iaW5kSW50KDEs
ICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBjbGVhckF0dHJp
YnV0ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbiBmYWlsZWQgdG8g
c3RlcCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorfQorCit2b2lkIERhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbihTb3Vy
Y2VEb21haW5JRCBzb3VyY2VTaXRlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQgZGVzdGlu
YXRpb25TaXRlRG9tYWluSUQpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9tYXJrUmVw
b3J0QXNTZW50VG9EZXN0aW5hdGlvblN0YXRlbWVudCwgbWFya1JlcG9ydEFzU2VudFRvRGVzdGlu
YXRpb25RdWVyeSwgIm1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uIl9zKTsKKworICAgIGlm
ICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgx
LCBzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0
ZW1lbnQtPmJpbmRJbnQoMiwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkRhdGFiYXNl
OjptYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbiwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElD
X0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJhc2U6Om1hcmtSZXBvcnRBc1Nl
bnRUb1NvdXJjZShTb3VyY2VEb21haW5JRCBzb3VyY2VTaXRlRG9tYWluSUQsIERlc3RpbmF0aW9u
RG9tYWluSUQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCit7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQsIG1hcmtSZXBvcnRBc1Nl
bnRUb1NvdXJjZVF1ZXJ5LCAibWFya1JlcG9ydEFzU2VudFRvU291cmNlIl9zKTsKKworICAgIGlm
ICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgx
LCBzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0
ZW1lbnQtPmJpbmRJbnQoMiwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkRhdGFiYXNl
OjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0df
U1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorCitzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6
U291cmNlRWFybGllc3RUaW1lVG9TZW5kPiwgc3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6RGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ+PiBEYXRhYmFzZTo6ZWFybGllc3RUaW1lc1RvU2VuZChj
b25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRpb24pCit7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWlu
SUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4p
OworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlv
bi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAoIXNvdXJj
ZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCisgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRv
IHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2VhcmxpZXN0VGltZXNU
b1NlbmRTdGF0ZW1lbnQsIGVhcmxpZXN0VGltZXNUb1NlbmRRdWVyeSwgImVhcmxpZXN0VGltZXNU
b1NlbmQiX3MpOworCisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
IT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgIkRhdGFiYXNlOjplYXJsaWVzdFRpbWVzVG9TZW5kLCBlcnJvciBtZXNzYWdl
OiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U291
cmNlRWFybGllc3RUaW1lVG9TZW5kPiBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPiBlYXJsaWVzdFRpbWVU
b1NlbmRUb0Rlc3RpbmF0aW9uOworICAgIAorICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRl
cyB0aGF0IHRoZSByZXBvcnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgor
ICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgwKSA+IDAuMCkKKyAgICAgICAg
ZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJs
ZSgwKTsKKyAgICAKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMSkgPiAw
LjApCisgICAgICAgIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gPSBzY29wZWRTdGF0
ZW1lbnQtPmNvbHVtbkRvdWJsZSgxKTsKKyAgICAKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
ZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRp
b24pOworfQorCitzdGQ6Om9wdGlvbmFsPERhdGFiYXNlOjpEb21haW5JRD4gRGF0YWJhc2U6OmRv
bWFpbklEKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9
IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudCwgZG9t
YWluSURGcm9tU3RyaW5nUXVlcnksICJkb21haW5JRCJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0
ZW1lbnQgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmRvbWFpbklERnJvbVN0cmluZyBmYWlsZWQuIEVycm9y
IG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0KKyAgICAKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVw
KCkgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkludCgwKTsKK30KKworU3RyaW5nIERhdGFiYXNl
OjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoRG9tYWluSUQgZG9tYWluSUQpCit7CisgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byByZXN1bHQgPSBlbXB0eVN0cmlu
ZygpOworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVt
ZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50LCBkb21haW5TdHJpbmdGcm9t
RG9tYWluSURRdWVyeSwgImdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCJfcyk7CisgICAgaWYg
KCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEs
IGRvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpnZXREb21haW5TdHJpbmdGcm9t
RG9tYWluSUQuIFN0YXRlbWVudCBmYWlsZWQgdG8gcHJlcGFyZSBvciBiaW5kLCBlcnJvciBtZXNz
YWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisgICAgCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElU
RV9ST1cpCisgICAgICAgIHJlc3VsdCA9IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVt
ZW50LT5jb2x1bW5UZXh0KDApOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0ZDo6
b3B0aW9uYWw8RGF0YWJhc2U6OkRvbWFpbklEPiBEYXRhYmFzZTo6ZW5zdXJlRG9tYWluSUQoY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICBpZiAoYXV0byBl
eGlzdGluZ0lEID0gZG9tYWluSUQoZG9tYWluKSkKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nSUQ7
CisKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2lu
c2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LCBpbnNlcnRPYnNlcnZlZERvbWFpblF1ZXJ5LCAi
aW5zZXJ0T2JzZXJ2ZWREb21haW4iX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsICIlcCAtIERhdGFiYXNlOjppbnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gYmlu
ZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4g
ZmFpbGVkIHRvIGNvbW1pdCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIHJldHVybiBk
b21haW5JRChkb21haW4pOworfQorCit2b2lkIERhdGFiYXNlOjpkZXN0cm95U3RhdGVtZW50cygp
Cit7CisgICAgbV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJl
ZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50ID0g
bnVsbHB0cjsKKyAgICBtX2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBt
X3JlbW92ZVVuYXR0cmlidXRlZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9hbGxBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fYWxs
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0ZW1lbnQg
PSBudWxscHRyOworICAgIG1fY2xlYXJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9jbGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9jbGVhckV4cGlyZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9lYXJsaWVzdFRpbWVz
VG9TZW5kU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX21hcmtSZXBvcnRBc1NlbnRUb1NvdXJj
ZVN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9tYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlv
blN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQg
PSBudWxscHRyOworICAgIG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50ID0gbnVs
bHB0cjsKKyAgICBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50ID0gbnVsbHB0cjsKK30K
KworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0
YWJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYTU2NmJhYjIyYzI3YTZiNjcxNmQ2OGMxYjNmZWY3ZTg4ZTJm
MDFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKQEAg
LTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGF0
YWJhc2VVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitzdHJ1Y3QgRGVidWdJ
bmZvOworCisvLyBUaGlzIGlzIGNyZWF0ZWQsIHVzZWQsIGFuZCBkZXN0cm95ZWQgb24gdGhlIFN0
b3JlJ3MgcXVldWUuCitjbGFzcyBEYXRhYmFzZSA6IHB1YmxpYyBEYXRhYmFzZVV0aWxpdGllcyB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KTsKKyAgICB2aXJ0dWFsIH5EYXRhYmFzZSgpOwor
ICAgIAorICAgIHN0YXRpYyB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlcygpOworCisgICAgdm9p
ZCBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CisgICAg
c3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+LCBEZWJ1Z0luZm8+IGF0dHJpYnV0ZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJik7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKTsKKyAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pOworICAgIHZvaWQgY2xlYXJFeHBpcmVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKKworICAgIFN0cmluZyBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZygpOworICAgIHZvaWQgbWFya0Fs
bFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygp
OworICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGly
ZWRGb3JUZXN0aW5nKCk7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAg
ICB1c2luZyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICB1c2luZyBEb21haW5JRCA9IHVuc2lnbmVkOworICAg
IHVzaW5nIFNvdXJjZURvbWFpbklEID0gdW5zaWduZWQ7CisgICAgdXNpbmcgRGVzdGluYXRpb25E
b21haW5JRCA9IHVuc2lnbmVkOworICAgIHVzaW5nIFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9
IGRvdWJsZTsKKyAgICB1c2luZyBEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IGRvdWJs
ZTsKKworICAgIGJvb2wgY3JlYXRlU2NoZW1hKCkgZmluYWw7CisgICAgdm9pZCBkZXN0cm95U3Rh
dGVtZW50cygpIGZpbmFsOworICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+PiBmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmKTsK
KyAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBidWlsZFByaXZhdGVDbGlja01l
YXN1cmVtZW50RnJvbURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKKyAgICB2b2lkIHJlbW92ZVVuYXR0cmli
dXRlZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOworICAgIFN0cmluZyBhdHRy
aWJ1dGlvblRvU3RyaW5nKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKKyAgICB2b2lkIG1hcmtSZXBvcnRBc1NlbnRUb0Rl
c3RpbmF0aW9uKFNvdXJjZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEKTsKKyAgICB2b2lk
IG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZShTb3VyY2VEb21haW5JRCwgRGVzdGluYXRpb25Eb21h
aW5JRCk7CisgICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1lVG9T
ZW5kPiwgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4+IGVhcmxp
ZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPERvbWFpbklEPiBlbnN1cmVEb21haW5JRChjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHN0ZDo6b3B0aW9uYWw8RG9tYWluSUQ+IGRvbWFp
bklEKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgU3RyaW5nIGdldERv
bWFpblN0cmluZ0Zyb21Eb21haW5JRChEb21haW5JRCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3NldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2ZpbmRBdHRyaWJ1dGVkU3Rh
dGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
cmVtb3ZlVW5hdHRyaWJ1dGVkU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0
ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9j
bGVhclVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiBtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0
ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9t
YXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVu
dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2RvbWFp
blN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50PiBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50OworfTsK
KworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGVidWdJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWQzOTdiYjcwNzI1MTA3ZTg4MWU0MjE0ZmI2MTZj
NDc5MzIzYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5m
by5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK0RlYnVnSW5mbyBEZWJ1Z0luZm86Omlz
b2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgbWVzc2FnZXMuaXNvbGF0ZWRDb3B5
KCkgfTsKK30KKworRGVidWdJbmZvOjpNZXNzYWdlIERlYnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UuaXNv
bGF0ZWRDb3B5KCkgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZjExNjAwODMxMDU4MDc5
NTA4MjI3NjE1OWE2ZmM3YTJkNTg0NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGVidWdJbmZvLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3Bh
Y2UgUENNIHsKKworc3RydWN0IERlYnVnSW5mbyB7CisKKyAgICBzdHJ1Y3QgTWVzc2FnZSB7Cisg
ICAgICAgIEpTQzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbDsKKyAgICAgICAgU3RyaW5nIG1l
c3NhZ2U7CisKKyAgICAgICAgTWVzc2FnZSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICB9Owor
CisgICAgVmVjdG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOworCisgICAgRGVidWdJbmZvIGlzb2xhdGVk
Q29weSgpIGNvbnN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVjN2Q4ZjdlZDMwNzMzYWY5ZTU1
MWI0MzM2ZTA2YWIyYmI4ODFhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yZS5jcHAKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIgorCisjaW5j
bHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIgorI2luY2x1ZGUgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRh
YmxlV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsK
Kworc3RhdGljIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gc2hhcmVkV29ya1F1ZXVlKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPj4gcXVl
dWUoU3VzcGVuZGFibGVXb3JrUXVldWU6OmNyZWF0ZSgiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
UHJvY2VzcyBEYXRhIFF1ZXVlIiwgIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSk7CisgICAgcmV0
dXJuIHF1ZXVlLmdldCgpLmNvcHlSZWYoKTsKK30KKwordm9pZCBTdG9yZTo6cHJlcGFyZUZvclBy
b2Nlc3NUb1N1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgc2hhcmVkV29ya1F1
ZXVlKCktPnN1c3BlbmQoRGF0YWJhc2U6OmludGVycnVwdEFsbERhdGFiYXNlcywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFN0b3JlOjpwcm9jZXNzRGlkUmVzdW1lKCkK
K3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHNoYXJlZFdvcmtRdWV1ZSgp
LT5yZXN1bWUoKTsKK30KKworU3RvcmU6OlN0b3JlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJl
Y3RvcnkpCisgICAgOiBtX3F1ZXVlKHNoYXJlZFdvcmtRdWV1ZSgpKQoreworICAgIGlmICghZGF0
YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VE
aXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgICAgICAgICAgbV9kYXRh
YmFzZSA9IG1ha2VVbmlxdWU8RGF0YWJhc2U+KFdURk1vdmUoZGF0YWJhc2VEaXJlY3RvcnkpKTsK
KyAgICAgICAgfSk7CisgICAgfQorfQorCitTdG9yZTo6flN0b3JlKCkgPSBkZWZhdWx0OworCisv
LyBGSVhNRTogTWlncmF0ZSBkYXRhIGZyb20gb2xkIGRhdGFiYXNlLgorCit2b2lkIFN0b3JlOjpw
b3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOworfQorCit2
b2lkIFN0b3JlOjpwb3N0VGFza1JlcGx5KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHJlcGx5KQor
eworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChXVEZNb3ZlKHJlcGx5KSk7Cit9CisKK3ZvaWQgU3RvcmU6Omluc2VydFByaXZhdGVD
bGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmli
dXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9u
VHlwZSkKK3sKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBhdHRyaWJ1dGlvbiA9IFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGVd
ICgpIG11dGFibGUgeworICAgICAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAgIG1fZGF0
YWJhc2UtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoYXR0cmlidXRpb24p
LCBhdHRyaWJ1dGlvblR5cGUpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjptYXJrQWxsVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sK
KyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Cisg
ICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+bWFya0FsbFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOwor
ICAgIH0pOworfQorCit2b2lkIFN0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291
cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBl
cGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRp
bFNlbmREYXRhPiYmLCBEZWJ1Z0luZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
cG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc291cmNlU2l0
ZSA9IHNvdXJjZVNpdGUuaXNvbGF0ZWRDb3B5KCksIGRlc3RpbmF0aW9uU2l0ZSA9IGRlc3RpbmF0
aW9uU2l0ZS5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdURk1vdmUo
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIGVwaGVtZXJhbE1lYXN1cmVtZW50ID0gY3Jvc3NUaHJl
YWRDb3B5KGVwaGVtZXJhbE1lYXN1cmVtZW50KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9kYXRhYmFz
ZSkgeworICAgICAgICAgICAgcmV0dXJuIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgeyB9KTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisKKyAgICAgICAgLy8gSW5zZXJ0IGVwaGVtZXJhbCBtZWFzdXJlbWVudCBy
aWdodCBiZWZvcmUgYXR0cmlidXRpb24uCisgICAgICAgIGlmIChlcGhlbWVyYWxNZWFzdXJlbWVu
dCkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXBoZW1lcmFsTWVhc3VyZW1lbnQtPmlz
RXBoZW1lcmFsKCkpOworICAgICAgICAgICAgbV9kYXRhYmFzZS0+aW5zZXJ0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoV1RGTW92ZSgqZXBoZW1lcmFsTWVhc3VyZW1lbnQpLCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8gW3NlY29uZHMsIGRlYnVnSW5mb10gPSBtX2RhdGFiYXNlLT5hdHRyaWJ1dGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1v
dmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkpOworCisgICAgICAgIHBvc3RUYXNrUmVwbHkoW3Nl
Y29uZHMgPSBXVEZNb3ZlKHNlY29uZHMpLCBkZWJ1Z0luZm8gPSBkZWJ1Z0luZm8uaXNvbGF0ZWRD
b3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlY29uZHMp
LCBXVEZNb3ZlKGRlYnVnSW5mbykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBT
dG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFN0
cmluZyByZXN1bHQ7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgcmVzdWx0
ID0gbV9kYXRhYmFzZS0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3Rpbmco
KTsKKyAgICAgICAgcG9zdFRhc2tSZXBseShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xhdGVkQ29weSgp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9y
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnM7
CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgY29udmVydGVkQXR0cmlidXRp
b25zID0gbV9kYXRhYmFzZS0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7
CisgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IGNvbnZlcnRl
ZEF0dHJpYnV0aW9ucy5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoY29udmVydGVkQXR0cmlidXRpb25zKSk7CisgICAgICAgIH0pOworICAg
IH0pOworfQorCit2b2lkIFN0b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9k
YXRhYmFzZS0+bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nKCk7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclBy
aXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBvc3RUYXNrUmVw
bHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3Jl
OjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChkb21haW4pOworICAgICAgICBwb3N0VGFza1JlcGx5
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yZTo6
Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQoreworICAgIHBvc3RUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgeworICAgICAgICBpZiAobV9k
YXRhYmFzZSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNsZWFyRXhwaXJlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6OmNsZWFyU2VudEF0dHJp
YnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb25Ub0Ns
ZWFyLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRF
bmRwb2ludCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KQoreworICAgIHBvc3RUYXNrKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGF0dHJpYnV0aW9uVG9DbGVhciA9IGF0
dHJpYnV0aW9uVG9DbGVhci5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2lu
dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2Rh
dGFiYXNlLT5jbGVhclNlbnRBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhciks
IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpj
bG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOworICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENN
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTUxZWQw
YWJkMWNhOGI3YjFjMzU0Njc2YWM0NWYzMzMyMWE0YjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgOiBib29sOworCituYW1lc3BhY2UgUENNIHsKKworY2xh
c3MgRGF0YWJhc2U7CitzdHJ1Y3QgRGVidWdJbmZvOworCitjbGFzcyBTdG9yZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3Rv
cmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmUoZGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICB9
CisKKyAgICB+U3RvcmUoKTsKKworICAgIHN0YXRpYyB2b2lkIHByZXBhcmVGb3JQcm9jZXNzVG9T
dXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc3RhdGljIHZvaWQgcHJv
Y2Vzc0RpZFJlc3VtZSgpOworCisgICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJLaXQ6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKKyAgICB2b2lkIGF0dHJpYnV0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpT
b3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpB
dHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiYmLCBEZWJ1Z0luZm8mJik+JiYpOworCisg
ICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOworICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIHZvaWQg
bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKKyAgICB2b2lkIGFsbEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJik+JiYpOworICAgIHZvaWQgY2xlYXJFeHBp
cmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmIGF0dHJpYnV0aW9uVG9DbGVhciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOworCisgICAgdm9pZCBjbG9zZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworCitwcml2YXRlOgorICAgIFN0b3JlKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VEaXJlY3RvcnkpOworCisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+
JiYpOworICAgIHZvaWQgcG9zdFRhc2tSZXBseShGdW5jdGlvbjx2b2lkKCk+JiYpOworCisgICAg
c3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIFJlZjxTdXNwZW5kYWJs
ZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCA2YTYzNWQ4
OWQ3NzMwODA4NTJjM2ExZGZmMWE4ZGU4NzZlYWU2MDczLi43OTc0OGE2ODNlZjg3NjZiZjdjYzhi
N2VhYjA2NDk1ZGJjOGY5Yjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nl
c3Npb24uaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmV0Y2hPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb3JtRGF0YS5oPgpAQCAtMjUw
LDcgKzI1MSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNlcnRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNCiAgICAgfQogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQot
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoV1RGTW92ZShtZWFzdXJlbWVudCksIHR5cGUpOworICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmluc2VydFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUobWVhc3VyZW1lbnQpLCB0eXBlKTsKICNlbmRp
ZgogfQogCkBAIC0yOTcsMTMgKzI5OCwxOCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6YXR0cmlidXRlKGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbgogICAg
IH0KICAgICAgICAgCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNl
U2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBz
dGQ6OmV4Y2hhbmdlKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCksIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YSkgeworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
c291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpLCBzdGQ6OmV4Y2hhbmdlKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCks
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25T
ZWNvbmRzVW50aWxTZW5kRGF0YSwgYXV0byBkZWJ1Z0luZm8pIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoIWF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgp
KSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IGRlYnVnSW5mby5tZXNz
YWdlcykKKyAgICAgICAgICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29u
c29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50LCBtZXNzYWdlLm1lc3NhZ2VMZXZlbCwgbWVzc2FnZS5tZXNzYWdlKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEu
dmFsdWUoKS5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8gbWluU2Vjb25kc1VudGlsU2VuZCA9IGF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2Vu
ZERhdGEudmFsdWUoKS5taW5TZWNvbmRzVW50aWxTZW5kKCk7CiAKQEAgLTM5NSw3ICs0MDEsNyBA
QCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmlidXRp
b24oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJTZW50
QXR0cmlidXRpb24oV1RGTW92ZShzZW50Q29udmVyc2lvbiksIGF0dHJpYnV0aW9uUmVwb3J0RW5k
cG9pbnQpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JlKCkuY2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShzZW50Q29udmVyc2lv
biksIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwogI2VuZGlmCiB9CiAKQEAgLTQwOSw3ICs0
MTUsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZVBlbmRpbmdB
dHRyaWJ1dGlvblJlcXVlc3RzKCkKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmFsbEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldIChhdXRvJiYgYXR0cmlidXRpb25zKSB7CisgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRv
JiYgYXR0cmlidXRpb25zKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGF1dG8gbmV4dFRpbWVUb0ZpcmUgPSBTZWNvbmRzOjppbmZpbml0eSgp
OwpAQCAtNDYyLDcgKzQ2OCw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhcigpCit2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzVGlt
ZXIuc3RvcCgpOwogICAgIG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQgPSBzdGQ6Om51bGxvcHQ7CkBA
IC00NzAsMjIgKzQ3NiwyNCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
Y2xlYXIoKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAo
IWZlYXR1cmVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAg
ICAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogI2VuZGlmCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyOjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICgh
ZmVhdHVyZUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoKTsKIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0
cmFibGVEb21haW4oZG9tYWluKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5jbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAjZW5kaWYKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJFeHBpcmVkKCkKQEAgLTQ5NSwxMSArNTAz
LDExIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckV4cGlyZWQo
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yZSgpLmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CiAjZW5k
aWYKIH0KIAotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QK
K3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjp0b1N0cmluZ0ZvclRlc3Rpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25z
dAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFmZWF0
dXJlRW5hYmxlZCgpKSB7CkBAIC01MDgsNyArNTE2LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4m
JgogICAgIH0KIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmlu
Z0ZvclRlc3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogI2VuZGlmCkBAIC01NDUsNyArNTUzLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLm1hcmtBbGxVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICNlbmRpZgogfQog
CkBAIC01NzUsNyArNTgzLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHAKICAgICB9CiAKICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5tYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkubWFya0F0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmgKaW5kZXggY2Q3MmYyNTFhZWViYTFkZmNjZTBhNjcwM2EyZTVkODQzMzllZGI5
ZS4uZjQ5NTlkNWVhNGQ0NDcyNDRkODBhZWE4YzI0MjBmMDZmMjEwNzcyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3Rv
cmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7CiAgICAgdm9pZCBoYW5k
bGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwot
ICAgIHZvaWQgY2xlYXIoKTsKLSAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKTsKLSAgICB2b2lkIHRvU3RyaW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3Q7CisgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYm
KSBjb25zdDsKICAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUp
IHsgbV9pc1J1bm5pbmdUZXN0ID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFRva2VuUHVibGljS2V5
VVJMRm9yVGVzdGluZyhVUkwmJik7CiAgICAgdm9pZCBzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRl
c3RpbmcoVVJMJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwCmlu
ZGV4IGI1YzdjNWMxNTViZGJhYTA5ZDI0YzI1ZDRlZWE0YzhhNTFhNWQ2NGEuLmVjYmI0ZTJkMDg4
NzQ1NmM0ZDE5ZTQyMzAzYWRiZjc1NmJhYjVlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlci5jcHAKQEAgLTUxLDYgKzUxLDExIEBAIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKE5l
dHdvCiAgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKIH0KIAorUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnROZXR3b3JrTG9hZGVyOjp+UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVy
KCkKK3sKKyAgICBjYW5jZWwoKTsKK30KKwogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5l
dHdvcmtMb2FkZXI6OmZhaWwoUmVzb3VyY2VFcnJvciYmIGVycm9yKQogewogICAgIGlmICghbV9j
b21wbGV0aW9uSGFuZGxlcikKQEAgLTYwLDExICs2NSwxNiBAQCB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZmFpbChSZXNvdXJjZUVycm9yJiYgZXJyb3IpCiAgICAg
ZGlkQ29tcGxldGUoKTsKIH0KIAotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtM
b2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpCit2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TmV0d29ya0xvYWRlcjo6Y2FuY2VsKCkKIHsKICAgICBmYWlsKFJlc291cmNlRXJyb3Ig
eyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSk7CiB9CiAKK3ZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYm
KQoreworICAgIGNhbmNlbCgpOworfQorCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0
d29ya0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUocmVzcG9uc2Uu
bWltZVR5cGUoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oCmluZGV4
IDE5NzJkMDVlNWNiZmQ4OGVkNjM2OTMxOTdlNWQ2MDVmYjMwZDM0ZjAuLmM5ZmU5MGFiYTJjNjQw
NjZmOWU3N2EzYjgzOTQ0OTdlODU2Yzk3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdv
cmtMb2FkZXIuaApAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVmUHRyPEpTT046Ok9iamVj
dD4mKT47CiAgICAgc3RhdGljIHZvaWQgc3RhcnQoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMmJiwgQ2FsbGJhY2smJik7CiAKKyAgICB+UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnROZXR3b3JrTG9hZGVyKCk7CisKIHByaXZhdGU6CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnROZXR3b3JrTG9hZGVyKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYs
IENhbGxiYWNrJiYpOwogCkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRG
YWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKICAgICB2
b2lkIGZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKKyAgICB2b2lkIGNhbmNlbCgpOwog
ICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1f
c2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3Bw
CmluZGV4IGQyODIwNDZjYmZiNjA2ZDlhZDE0ZTQ3MTE5OTFlNjllOGQwODI0YzcuLjYyNzczNzBk
ODU2ODVmNGM4NDAxYjBiMThlY2RmOTg5MzU0Njg0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCIKKyNpbmNs
dWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9z
dGljTG9nZ2luZ0tleXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggNDczY2U1MzY2N2RkODgzZGI4
MWUyZmU1OTk0MjdlODVmODA0NjA0YS4uMWNlYWUxODMwNWE3Njg4MTFlZGYzYjZmMDBkOWUzMDIx
OGQxNjdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShM
SUJXRUJSVEMpCiAKKyNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJSVENOZXR3b3JrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApp
bmRleCAzMDgwMzQzODZmZmNiMjY5ZmUyOWIzMTQwOWUxODMxOThiMmNhZTAyLi5lMTRmODczYjdj
ODE3Yzc5N2VjNGYzYjU2ODBiMjEyZTNjZjZiOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RS
ZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyCiAKICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKICAgICAgICAg
Q0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2
ZWRBZGRyZXNzZXMsIGluZGV4KTsKLSAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IElQQWRkcmVz
czo6ZnJvbVNvY2tBZGRySW42KCpyZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRk
cl9pbjYqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKSkpCisgICAgICAgIGlmIChhdXRvIGFkZHJl
c3MgPSBXZWJDb3JlOjpJUEFkZHJlc3M6OmZyb21Tb2NrQWRkckluNigqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSkpKQog
ICAgICAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZCgqYWRkcmVzcyk7CiAgICAgfQog
ICAgIGlmIChhZGRyZXNzZXMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA5N2Q1MTQ4
NzRkZDYwZDU5N2NmZjc4MzhjZDgzNjk3MmZhOWFkMzJkLi4yODhhYzdkNTFjNTY2MDMxNjgwMGY2
NmExMTExYzgxMjE0NmUwZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTM3LDYgKzM3LDggQEAgc3Ry
dWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBkaXJl
Y3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGRpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyAgICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5
OworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgYm9vbCBlbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0IHsgZmFsc2UgfTsKICAgICBib29s
IGVuYWJsZUxvZ1Rlc3RpbmdFdmVudCB7IGZhbHNlIH07CkBAIC01NSw2ICs1Nyw4IEBAIHN0cnVj
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgewogICAgICAgICBlbmNv
ZGVyIDw8IGRpcmVjdG9yeTsKICAgICAgICAgZW5jb2RlciA8PCBkaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgICAgIGVuY29kZXIgPDwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdl
RGlyZWN0b3J5OworICAgICAgICBlbmNvZGVyIDw8IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgZW5jb2RlciA8PCBlbmFibGVk
OwogICAgICAgICBlbmNvZGVyIDw8IGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OwogICAgICAgICBl
bmNvZGVyIDw8IGVuYWJsZUxvZ1Rlc3RpbmdFdmVudDsKQEAgLTgxLDcgKzg1LDE3IEBAIHN0cnVj
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGRlY29kZXIgPj4g
ZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIWRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9y
eTsKKyAgICAgICAgZGVjb2RlciA+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJl
Y3Rvcnk7CisgICAgICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0
b3J5KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGRlY29kZXIg
Pj4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OworICAgICAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJs
ZWQ7CiAgICAgICAgIGlmICghZW5hYmxlZCkKQEAgLTE0Miw2ICsxNTYsOCBAQCBzdHJ1Y3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICByZXR1cm4ge3sKICAgICAg
ICAgICAgIFdURk1vdmUoKmRpcmVjdG9yeSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpkaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpLAorICAgICAgICAgICAgV1RGTW92ZSgqcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSwKKyAgICAgICAgICAgIFdURk1vdmUoKnByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAgICAg
ICAgICBXVEZNb3ZlKCplbmFibGVkKSwKICAgICAgICAgICAgIFdURk1vdmUoKmlzSXRwU3RhdGVF
eHBsaWNpdGx5U2V0KSwKICAgICAgICAgICAgIFdURk1vdmUoKmVuYWJsZUxvZ1Rlc3RpbmdFdmVu
dCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCA2NmFlZGE0M2M4MmQ4YmZiMzM1YmJmZWY2MDk1ZDA0ZWZhZGI4
NjIwLi4zZDUwOTdjMjQ4OWZlZmJkY2E3NTQxN2M0ZGM4MTdkMGJkMTU4NDRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTU3LDYgKzU3LDcgQEAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcAogCitOZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKIE5l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAKIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwCkBAIC05OCw2ICs5OSwxMCBAQCBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAogTmV0d29ya1Byb2Nlc3Mv
SW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKIE5ldHdvcmtQcm9jZXNzL0lu
ZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCiAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCitOZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVn
SW5mby5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmUuY3BwCisKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCmluZGV4IDhjYTI0MTJlNjhhMTk3NDdhNTU0YTNkODViYzlkMTkzNDBjYzQzMjkuLjkxYmM2
ZmJmNTA1YzRjNGQyYzViNDQyNWVhMDM0ZGE2ODIzZTkyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAt
NzMxLDkgKzczMSw5IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4g
dG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjptYWtlTmV4dE5ldHdvcmtQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3Rpbmco
KTsKIH0KIAotKyAodm9pZClfcHJldmVudE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkZvclRlc3Rp
bmcKKysgKHZvaWQpX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5n
OihCT09MKWFsbG93ZWQKIHsKLSAgICBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByZXZl
bnRTdXNwZW5zaW9uRm9yVGVzdGluZygpOworICAgIFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0U3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nKGFsbG93ZWQpOwogfQogCiAtIChCT09M
KV9uZXR3b3JrUHJvY2Vzc0V4aXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggYmVi
NGMyODU4Y2U5ZDA5NzgwZjc2YjgzOThjYWRhNzI2N2U2Mzc4YS4uMDE3MTNlNjAxN2Q1ZDE3MGYw
NmQ1OWFhMDk2OWRmZGU4ZDM0N2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC05
NSw3ICs5NSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0
YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9zZW5kTmV0d29ya1Byb2Nlc3NQcmVwYXJl
VG9TdXNwZW5kOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAtICh2b2lkKV9zZW5kTmV0d29ya1Byb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1
LjApKTsKIC0gKHZvaWQpX3NlbmROZXR3b3JrUHJvY2Vzc0RpZFJlc3VtZSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwotKyAodm9pZClfcHJldmVudE5ldHdvcmtQcm9j
ZXNzU3VzcGVuc2lvbkZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKHZvaWQpX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lv
bkFsbG93ZWRGb3JUZXN0aW5nOihCT09MKWFsbG93ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3N5bnRoZXNpemVBcHBJc0Jh
Y2tncm91bmQ6KEJPT0wpYmFja2dyb3VuZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBp
b3MoMTUuMCkpOwogLSAocGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogKyAodm9pZClfbWFrZU5leHROZXR3b3Jr
UHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCks
IGlvcygxNS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4
IGFjZDA0ZDg2N2ZkMWEwODAxYmFkYWRjNTYzNTc3ZTI1ZDg3N2NkODAuLjc3ODU5NTllZjU2NjMx
YzVhNTFhNDFhYjgzZTQ5NWVmOTZlZDE0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygx
MC4xMyksIGlvcygxMS4wKSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3Nl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OikgTlNVUkwgKl93ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldENvb2tpZVN0b3JhZ2VG
aWxlOikgTlNVUkwgKl9jb29raWVTdG9yYWdlRmlsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5LCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk6KSBOU1VSTCAq
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMy40KSwgaW9zKDExLjMpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29w
eSkgTlNVUkwgKnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OikgTlNV
UkwgKl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSwgaW9zKDExLjMpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6KSBOU1VSTCAqX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9z
KDExLjMpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwg
aW9zKDEzLjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQppbmRl
eCA2YTNiNjNjYjY5MDhlYmI5YWU4MzYxZjQzNjgzOWMwM2VkN2Q2MzZkLi42NTlkNmZkMjVmNGIw
YmQ2ZjU4MjRhMTJmZTA2YjljNDhkNTdlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLm1tCkBAIC0xODYsNiArMTg2LDIyIEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJM
QXJndW1lbnQoTlNVUkwgKnVybCkKICAgICBfY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKKy0gKE5TVVJMICopcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5Cit7CisgICAgYXV0byYgZGlyZWN0b3J5ID0g
X2NvbmZpZ3VyYXRpb24tPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSgp
OworICAgIGlmIChkaXJlY3RvcnkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
cmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU107
Cit9CisKKy0gKHZvaWQpc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5
OihOU1VSTCAqKXVybAoreworICAgIGlmICghX2NvbmZpZ3VyYXRpb24tPmlzUGVyc2lzdGVudCgp
KQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24g
Zm9ybWF0OkAiQ2Fubm90IHNldCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rv
cnkgb24gYSBub24tcGVyc2lzdGVudCBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi4i
XTsKKyAgICBjaGVja1VSTEFyZ3VtZW50KHVybCk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSh1cmwucGF0aCk7Cit9CisKIC0g
KE5TVVJMICopX2NhY2hlU3RvcmFnZURpcmVjdG9yeQogewogICAgIHJldHVybiBbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBpc0Rp
cmVjdG9yeTpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNjcxYWRkNGFhMjdjZDE3ZWJiNjc5MGVm
ZTE2YTU1YTFjMTQzNjZlYi4uY2IwZDJkYWNkZmNiYWYyNjhjYmJiZWFiMmRhZmQyZWQwZWEyMzFh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjUxLDE1ICsxMjUxLDE1IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nKCkK
ICAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmMoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmM6OlJlcGx5KCksIDAp
OwogfQogCi1zdGF0aWMgYm9vbCBzX3N1c3BlbnNpb25QcmV2ZW50ZWRGb3JUZXN0aW5nIHsgZmFs
c2UgfTsKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJldmVudFN1c3BlbnNpb25Gb3JUZXN0
aW5nKCkKK3N0YXRpYyBib29sIHNfc3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nIHsgdHJ1ZSB9
Owordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTdXNwZW5zaW9uQWxsb3dlZEZvclRlc3Rp
bmcoYm9vbCBhbGxvd2VkKQogewotICAgIHNfc3VzcGVuc2lvblByZXZlbnRlZEZvclRlc3Rpbmcg
PSB0cnVlOworICAgIHNfc3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nID0gYWxsb3dlZDsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3Bl
bnNpb25JbW1pbmVudCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChzX3N1c3BlbnNpb25QcmV2ZW50
ZWRGb3JUZXN0aW5nKQorICAgIGlmICghc19zdXNwZW5zaW9uQWxsb3dlZEZvclRlc3RpbmcpCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZXBhcmVUb1N1c3BlbmQoaXNTdXNwZW5zaW9u
SW1taW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1taW5lbnQ6OlllcyksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCAwLCB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpO
byk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IDU4YThhOGU5NGJmM2NmZTdiZjhjNzc5Nzk4NWNjMTJiZDNh
YjY4YmUuLjFmZjVlYThhM2M3YzU2MjQzOGQwMGY4MTRiNWNiYjllZGZhMDgzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yMzEsNyArMjMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZFByb2Nlc3NEaWRS
ZXN1bWUoKSBmaW5hbDsKICAgICBBU0NJSUxpdGVyYWwgY2xpZW50TmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJOZXR3b3JrUHJvY2VzcyJfczsgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHBy
ZXZlbnRTdXNwZW5zaW9uRm9yVGVzdGluZygpOworICAgIHN0YXRpYyB2b2lkIHNldFN1c3BlbnNp
b25BbGxvd2VkRm9yVGVzdGluZyhib29sKTsKICAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3Bl
bmRJbW1pbmVudGx5Rm9yVGVzdGluZygpOwogCiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckxl
Z2FjeUN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAy
MWJlMjU4MTBiMzI2YjFiMDAwYTE0Y2FhZWZkZDcyZTgzNzdlNWYxLi5mOTQxYjAxZWJmZWI3ZmFi
Y2YxMTBhOTE1MzEzYzZlMjg4Mjg1YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjYxLDYgKzI2
MSw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3Nh
cnkoKQogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5z
aW9uKG1fY29uZmlndXJhdGlvbi0+bmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpKTsKICAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpLmlzRW1w
dHkoKSkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNh
bmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCkpKTsK
ICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpLmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkocmVzb2x2
ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1
cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKICAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKS5pc0Vt
cHR5KCkpCkBAIC0xOTY0LDEzICsxOTY2LDIwIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
IFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogCiAgICAgcmVzb2x2ZURpcmVjdG9yaWVz
SWZOZWNlc3NhcnkoKTsKIAotICAgIGF1dG8gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSA9IG1fY29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgIGF1dG8gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGU7
CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkgewog
ICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlID0gV1RGTW92
ZSgqaGFuZGxlKTsKICAgICB9CiAKKyAgICBhdXRvIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmFnZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5SGFuZGxlOworICAgIGlmICgh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JS
ZWFkV3JpdGVEaXJlY3RvcnkocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5
KSkKKyAgICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUhh
bmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQorCiAgICAgYXV0byBuZXR3b3JrQ2FjaGVE
aXJlY3RvcnkgPSByZXNvbHZlZE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CkBAIC0yMDAwLDYgKzIw
MDksOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJh
bWV0ZXJzKCkKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycyA9IHsKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5SGFuZGxlKSwKKyAgICAgICAgV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0b3JhZ2VEaXJlY3RvcnkpLAorICAgICAgICBXVEZNb3ZlKHByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmFnZURpcmVjdG9yeUhhbmRsZSksCiAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCksCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICAgICAgaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmNwcAppbmRleCBjNzAyZDRhN2EzZWU1ZWNiZmFhNjkwYjRjM2FkYTBiMjNk
NzBmMzk1Li41ZjUxNjZiNzI4ZTNiZGFlZDlkMjU4MzY5NDRiMWQzZGU4M2EyM2FiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC03Niw2ICs3Niw3IEBAIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb246OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVj
dG9yeSA9IHRoaXMtPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeTsKICAgICBjb3B5LT5t
X2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fZGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKKyAg
ICBjb3B5LT5tX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSA9IHRoaXMt
Pm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1f
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5tX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIGNvcHktPm1fY29va2llU3RvcmFnZUZpbGUgPSB0aGlz
LT5tX2Nvb2tpZVN0b3JhZ2VGaWxlOwogICAgIGNvcHktPm1fc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyID0gdGhpcy0+bV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCBlZmFhOWM4MGEwYzgy
MGRlM2NjYzI2ODE0OWM4NjZhZjAzYTg0NWFlLi5kNjBiNTlmNGQ5OTJhZDg0ZmEzMTgwYmE0NmIy
MjE5MGYwN2FhOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAg
LTExNyw2ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KIAorICAgIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9y
eSk7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgbmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldE5ldHdvcmtD
YWNoZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9uZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KICAgICAKQEAgLTIwMSw2ICsyMDQsNyBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7CiAgICAgU3Ry
aW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2Nvb2tpZVN0b3JhZ2VGaWxlOwogICAg
IFN0cmluZyBtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZlM2QzMmIzMjk1
YzJjNDRmZDQ0NDRjZGQ3ZjE0MWYyNDAwNGNhMDIuLmRjZTE5MzNmZjNkNGMwZjE1OTQwMjU3ZjAx
MmZkNTY4MWRkMDM0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTI3MSw2ICsxMjcxLDggQEAKIAkJNUM3OTVENzAyMjlGMzczRjAw
M0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFMEMzNjkyMjlGMkQ0QTAwMzY5NUYwIC8qIFdL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJNUM3OTVENzEyMjlGMzc1NzAwM0ZGMUM0IC8qIFdLQ29udGV4dE1l
bnVFbGVtZW50SW5mb1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDRTBDMzZBMjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxl
bWVudEluZm9Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNUM3RkI0NzAyMUU5N0RDNTAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3RkI0NkYyMUU5
N0MwQzAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5oICovOyB9OworCQk1QzgyNkQ2QjI2RDQ4MkVG
MDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4MjZENjgyNkQ0NkI0NDAwOEFFQzkx
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCAqLzsgfTsKKwkJNUM4MjZENkMyNkQ0
ODJGMjAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDODI2RDY5MjZENDgyRUEw
MDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi87IH07CiAJCTVD
OEJDNzk3MjE4Q0JCNDgwMDgxMzg4NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEJDNzk2MjE4Q0I1OEEw
MDgxMzg4NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgKi87IH07CiAJCTVDOEREMzgwMUZFNDUy
MTYwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEREMzdGMUZFNDUxOTIwMEYyQTU1NiAvKiBX
ZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCAqLzsgfTsKIAkJNUM5QTkxMTEyMjhGNjlDQzAwNUM1QjE3
IC8qIFhQQ1NlcnZpY2VNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM4MjgzOTYxNkI0N0VDNDAwQTI3OEZFIC8qIFhQQ1NlcnZpY2VNYWluLm1t
ICovOyB9OwpAQCAtNDUwOSw2ICs0NTExLDEyIEBACiAJCTVDN0ZCNDZGMjFFOTdDMEMwMDlFMzI0
MSAvKiBXZWJDb29raWVKYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q29va2llSmFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODBCM0RCMjM2OTBE
OEQwMDg2RTZERSAvKiBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4MEIzREQyMzY5MEYxMDAwODZFNkRF
IC8qIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDY3MjZENDZCNDMwMDhBRUM5MSAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzgyNkQ2ODI2RDQ2QjQ0MDA4QUVDOTEgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDODI2RDY5MjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM4
MjZENkEyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2
RDZFMjZENThBMTYwMDhBRUM5MSAvKiBEYXRhYmFzZVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVV0aWxpdGllcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDZGMjZENThBMTYwMDhBRUM5MSAvKiBEYXRhYmFz
ZVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVV0
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzg0Q0Y5MDFGOTZBQzRF
MDBCNjcwNUEgLyogTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4NUM3ODYxQzNGMjNDNTAwNjFBNEZB
IC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQZW5kaW5nRG93bmxvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Qzg5REY1NjIxQUY2MUZGMDA0NjQ1RTggLyogTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDU0Niw2ICs0NTU0LDggQEAKIAkJNUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNl
TG9hZEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2Fk
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4OTFDNjUyNEE1MDBB
OEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5ldHdvcmtEYXRhVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JD
OUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCRTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQkU5MDkwMjZEN0ZCN0MwMDVBMkU5NSAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRC
dWZmZXJDb3B5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZEJ1ZmZl
ckNvcHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNEMjg2NDkxRTcyMkY0NDAw
OTRGREM4IC8qIF9XS1VzZXJDb250ZW50RmlsdGVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tVc2VyQ29udGVudEZpbHRlclByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNEMjg2NEExRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVu
dFJ1bGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGVudFJ1
bGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjcyLDkgKzg2ODIsMTIg
QEAKIAkJCQk5MzkyODhFMDIxNDA0REYwMDBFQkJBMzMgLyogSW5kZXhlZERCICovLAogCQkJCTJE
QTk0NEJCMTg4NTExREQwMEVEODZEQiAvKiBpb3MgKi8sCiAJCQkJNTEwQ0M3REMxNjEzOEUyOTAw
RDAzRUQzIC8qIG1hYyAqLywKKwkJCQk1QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0MkYgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgKi8sCiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNl
cnZpY2VXb3JrZXIgKi8sCiAJCQkJNDEzMDc1OTcxREU4NEVENzAwMzlFQzY5IC8qIHdlYnJ0YyAq
LywKIAkJCQk5M0IyNjE0MzIyN0QxNDMxMDBCOTdBNzYgLyogV2ViU3RvcmFnZSAqLywKKwkJCQk1
QzgyNkQ2RTI2RDU4QTE2MDA4QUVDOTEgLyogRGF0YWJhc2VVdGlsaXRpZXMuY3BwICovLAorCQkJ
CTVDODI2RDZGMjZENThBMTYwMDhBRUM5MSAvKiBEYXRhYmFzZVV0aWxpdGllcy5oICovLAogCQkJ
CTUzRjNDQUE1MjA2QzQ0M0UwMDg2NDkwRSAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcCAq
LywKIAkJCQk1MzVCQ0I5MDIwNjlDNDlDMDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tl
ci5oICovLAogCQkJCTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAqLywKQEAgLTkyNDMsNiArOTI1NiwxOSBAQAogCQkJcGF0aCA9
IFNPQXV0aG9yaXphdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTVD
MDFCQzM1MjZENDZBRDQwMEZFQjQyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM4MjZENkEyNkQ0ODJF
QTAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwICovLAorCQkJ
CTVDODI2RDY5MjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmggKi8sCisJCQkJNUNCRTkwOTAyNkQ3RkI3QzAwNUEyRTk1IC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVidWdJbmZvLmNwcCAqLywKKwkJCQk1Q0JFOTA4RjI2RDdGQjYyMDA1QTJFOTUg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaCAqLywKKwkJCQk1QzgyNkQ2NzI2
RDQ2QjQzMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgKi8sCisJ
CQkJNUM4MjZENjgyNkQ0NkI0NDAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmUuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1QzE0MjZGMTFDMjNGODE3MDBENDExODMg
LyogRG93bmxvYWRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTEyMzA2LDggKzEyMzMyLDEwIEBACiAJCQkJQzE1Q0JCMzYyM0YzNzc3MTAwMzAwQ0M3IC8q
IFByZWZlcmVuY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFCMTQ1RTYyMjNGOTMx
MjAwRTQ4OUQ4IC8qIFByZWZldGNoQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQ0MxQjkw
MTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTVDODI2
RDZDMjZENDgyRjIwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2QkQwNTg2NTIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZFNjg4QzI2MEFC
QjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1QzgyNkQ2QjI2RDQ4MkVGMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAw
MURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4
MTEzNkUxOUMwMEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDY3YzBmMjViOWFjODQ0MzljYjdmNTAzOWQ2MjdhYTkxODI2Y2U1M2UuLmRkMjM5
N2Q3MmZkNmM5MzYwZTQ2Yjc1YTAwNDEyMjdjNTU3ZWEyOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOC0y
NSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFNlcGFyYXRlIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGRhdGFiYXNlIGZyb20gUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyBkYXRhYmFzZSBhbmQgYWRkIFNQSSB0byBzZXQgaXRzIGxvY2F0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk1MjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDgtMjUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRh
cmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtnaXQtd2Via2l0XSBVc2UgUHl0aG9uIDMgaW4gQ0kK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRB
dHRyaWJ1dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZl
bnRBdHRyaWJ1dGlvbi5tbQppbmRleCBjODBjYTcxNmNjMDIxYTRiODk2MWU4MDM0ZWI0MDA4MDNl
NDhmNTE0Li5lMDIyYTBmM2E3MWE4MzczNWYzN2VjMjQxNjYzZWVmOGNiZTZiOWU0IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRp
b24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0
dHJpYnV0aW9uLm1tCkBAIC0yOCwxMCArMjgsMTIgQEAKICNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMu
aCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaD4KIAogI2lmIEhBVkUoUlNBX0JTU0EpCiAKQEAgLTc4LDkgKzgwLDkgQEAg
c3RhdGljIE5TVVJMICpleGFtcGxlVVJMKCkKICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwczovL2V4YW1wbGUuY29tLyJdOwogfQogCi12b2lkIHJ1bkJhc2ljRXZlbnRBdHRy
aWJ1dGlvblRlc3QoRnVuY3Rpb248dm9pZChXS1dlYlZpZXcgKiwgY29uc3QgSFRUUFNlcnZlciYp
PiYmIGFkZEF0dHJpYnV0aW9uVG9XZWJWaWV3KQordm9pZCBydW5CYXNpY0V2ZW50QXR0cmlidXRp
b25UZXN0KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24sIEZ1bmN0aW9uPHZv
aWQoV0tXZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXImKT4mJiBhZGRBdHRyaWJ1dGlvblRvV2Vi
VmlldykKIHsKLSAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9wcmV2ZW50TmV0d29ya1Byb2Nlc3NT
dXNwZW5zaW9uRm9yVGVzdGluZ107CisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0TmV0d29y
a1Byb2Nlc3NTdXNwZW5zaW9uQWxsb3dlZEZvclRlc3Rpbmc6Tk9dOwogICAgIGJvb2wgZG9uZSA9
IGZhbHNlOwogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFsmZG9uZSwgY29ubmVjdGlvbkNvdW50ID0g
MF0gKENvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoKytj
b25uZWN0aW9uQ291bnQpIHsKQEAgLTExMyw3ICsxMTUsNyBAQCB2b2lkIHJ1bkJhc2ljRXZlbnRB
dHRyaWJ1dGlvblRlc3QoRnVuY3Rpb248dm9pZChXS1dlYlZpZXcgKiwgY29uc3QgSFRUUFNlcnZl
ciYpPgogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAgICAgTlNVUkwgKnNl
cnZlclVSTCA9IHNlcnZlci5yZXF1ZXN0KCkuVVJMOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGNvbmZpZ3VyYXRpb24g
PyBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSkgOiBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAg
ICAgYWRkQXR0cmlidXRpb25Ub1dlYlZpZXcod2ViVmlldy5nZXQoKSwgc2VydmVyKTsKICAgICBb
W3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKICAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluOkBbKGlkKXRlc3RDZXJ0aWZp
Y2F0ZSgpLmdldCgpXSBmb3JIb3N0OnNlcnZlclVSTC5ob3N0XTsKQEAgLTEyOSw3ICsxMzEsNyBA
QCB2b2lkIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QoRnVuY3Rpb248dm9pZChXS1dlYlZp
ZXcgKiwgY29uc3QgSFRUUFNlcnZlciYpPgogI2lmIEhBVkUoUlNBX0JTU0EpCiBURVNUKEV2ZW50
QXR0cmlidXRpb24sIEZyYXVkUHJldmVudGlvbikKIHsKLSAgICBbV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcmV2ZW50TmV0d29ya1Byb2Nlc3NTdXNwZW5zaW9uRm9yVGVzdGluZ107CisgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfc2V0TmV0d29ya1Byb2Nlc3NTdXNwZW5zaW9uQWxsb3dlZEZvclRlc3Rp
bmc6Tk9dOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogCiAgICAgLy8gR2VuZXJhdGUgdGhlIHNl
cnZlciBrZXkgcGFpci4KQEAgLTI4MiwxNiArMjg0LDYxIEBAIFRFU1QoRXZlbnRBdHRyaWJ1dGlv
biwgRnJhdWRQcmV2ZW50aW9uKQogCiBURVNUKEV2ZW50QXR0cmlidXRpb24sIEJhc2ljKQogewot
ICAgIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBj
b25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIpIHsKKyAgICBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25U
ZXN0KG5pbCwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIp
IHsKICAgICAgICAgW3dlYlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25XaXRoU291cmNlSUQ6NDIg
ZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0aW9uOkAidGVzdCBzb3Vy
Y2UgZGVzY3JpcHRpb24iIHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2VyIiByZXBvcnRFbmRwb2lu
dDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBvcHRpb25hbE5vbmNlOm5pbF07CiAgICAgfSk7CiB9CiAK
K1RFU1QoRXZlbnRBdHRyaWJ1dGlvbiwgRGF0YWJhc2VMb2NhdGlvbikKK3sKKyAgICBOU0ZpbGVN
YW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAg
ICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGly
ZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRXZlbnRBdHRyaWJ1dGlv
bkRhdGFiYXNlTG9jYXRpb25UZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBpZiAoW2ZpbGVN
YW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6dGVtcERpci5wYXRoXSkKKyAgICAgICAgW2ZpbGVNYW5h
Z2VyIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9yOm5pbF07CisKKyAgICBhdXRvIHdlYlZp
ZXdUb0tlZXBOZXR3b3JrUHJvY2Vzc0FsaXZlID0gYWRvcHROUyhbVGVzdFdLV2ViVmlldyBuZXdd
KTsKKyAgICBbd2ViVmlld1RvS2VlcE5ldHdvcmtQcm9jZXNzQWxpdmUgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAic3RhcnQgbmV0d29yayBwcm9jZXNzIl07CisKKyAgICBwaWRfdCBvcmln
aW5hbE5ldHdvcmtQcm9jZXNzUGlkID0gMDsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAg
ICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCkucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5ID0gdGVtcERpcjsK
KyAgICAgICAgYXV0byB2aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gbmV3XSk7CisgICAgICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgICAgIHZpZXdDb25maWd1cmF0aW9uLmdldCgpLndlYnNp
dGVEYXRhU3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgICAgIHJ1bkJhc2ljRXZlbnRBdHRy
aWJ1dGlvblRlc3Qodmlld0NvbmZpZ3VyYXRpb24uZ2V0KCksIFtdKFdLV2ViVmlldyAqd2ViVmll
dywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAgICAgICAgICBbd2ViVmlldyBfYWRk
RXZlbnRBdHRyaWJ1dGlvbldpdGhTb3VyY2VJRDo0MiBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJM
KCkgc291cmNlRGVzY3JpcHRpb246QCJ0ZXN0IHNvdXJjZSBkZXNjcmlwdGlvbiIgcHVyY2hhc2Vy
OkAidGVzdCBwdXJjaGFzZXIiIHJlcG9ydEVuZHBvaW50OnNlcnZlci5yZXF1ZXN0KCkuVVJMIG9w
dGlvbmFsTm9uY2U6bmlsXTsKKyAgICAgICAgfSk7CisgICAgICAgIG9yaWdpbmFsTmV0d29ya1By
b2Nlc3NQaWQgPSBbZGF0YVN0b3JlIF9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXJdOworICAgICAg
ICBFWFBFQ1RfR1Qob3JpZ2luYWxOZXR3b3JrUHJvY2Vzc1BpZCwgMCk7CisKKyAgICAgICAgX19i
bG9jayBib29sIHN1c3BlbmRlZCA9IGZhbHNlOworICAgICAgICBbV0tXZWJzaXRlRGF0YVN0b3Jl
IF9zZXROZXR3b3JrUHJvY2Vzc1N1c3BlbnNpb25BbGxvd2VkRm9yVGVzdGluZzpZRVNdOworICAg
ICAgICBbZGF0YVN0b3JlIF9zZW5kTmV0d29ya1Byb2Nlc3NQcmVwYXJlVG9TdXNwZW5kOl57Cisg
ICAgICAgICAgICBzdXNwZW5kZWQgPSB0cnVlOworICAgICAgICAgICAgW2RhdGFTdG9yZSBfc2Vu
ZE5ldHdvcmtQcm9jZXNzRGlkUmVzdW1lXTsKKyAgICAgICAgfV07CisgICAgICAgIFV0aWw6OnJ1
bigmc3VzcGVuZGVkKTsKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTApOworICAgIH0KKyAg
ICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CisgICAgdXNsZWVwKDEwMDAwMCk7CisgICAgVXRpbDo6
c3BpblJ1bkxvb3AoMTApOworCisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlz
dHNBdFBhdGg6dGVtcERpci5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZp
bGVFeGlzdHNBdFBhdGg6W3RlbXBEaXIucGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJwY20uZGIiXV0pOworCisgICAgW3dlYlZpZXdUb0tlZXBOZXR3b3JrUHJvY2Vzc0FsaXZl
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInN0YXJ0IG5ldHdvcmsgcHJvY2VzcyBhZ2Fp
biBpZiBpdCBjcmFzaGVkIGR1cmluZyB0ZWFyZG93biJdOworICAgIEVYUEVDVF9FUSh3ZWJWaWV3
VG9LZWVwTmV0d29ya1Byb2Nlc3NBbGl2ZS5nZXQoKS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUuX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllciwgb3JpZ2luYWxOZXR3b3JrUHJvY2Vzc1Bp
ZCk7Cit9CisKKy8vIEZJWE1FOiBXcml0ZSBhIHRlc3QgdGhhdCB2ZXJpZmllcyB0aGF0IGRhdGEg
aXMgbWlncmF0ZWQgZnJvbSBvbGQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBkYXRhYmFzZXMgdG8g
dGhlIG5ldyBQQ00gZGF0YWJhc2UuCisKICNpZiBIQVZFKFVJX0VWRU5UX0FUVFJJQlVUSU9OKQog
CiBURVNUKEV2ZW50QXR0cmlidXRpb24sIEJhc2ljV2l0aElPU1NQSSkKIHsKLSAgICBydW5CYXNp
Y0V2ZW50QXR0cmlidXRpb25UZXN0KFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNl
cnZlciYgc2VydmVyKSB7CisgICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChuaWwsIFtd
KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CiAgICAgICAg
IGF1dG8gYXR0cmlidXRpb24gPSBhZG9wdE5TKFtbTW9ja0V2ZW50QXR0cmlidXRpb24gYWxsb2Nd
IGluaXRXaXRoUmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgZGVzdGluYXRpb25V
Ukw6ZXhhbXBsZVVSTCgpXSk7CiAgICAgICAgIHdlYlZpZXcuX3VpRXZlbnRBdHRyaWJ1dGlvbiA9
IChVSUV2ZW50QXR0cmlidXRpb24gKilhdHRyaWJ1dGlvbi5nZXQoKTsKICAgICB9KTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
aXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCmluZGV4IGJkMWUyN2E5MTAyZDE3MmJlZjliNDhkMDNj
YmEwNmEwOWVjNTA0NmQuLjY5YmQ1ZWY2NzUwMTk4YTcyNjcwYTc2N2UwMjQwOTE4YTM3ODVkOTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQpAQCAtMzEsNiArMzEsOCBAQAogI2lt
cG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorLyoKKyAvLyBGSVhNRTogSW1wbGVtZW50IG1pZ3JhdGlvbiBmcm9tIG9sZGVyIGRh
dGFiYXNlcyBhbmQgZ2V0IHRoZXNlIHRlc3RzIHdvcmtpbmcuCiAKIFRFU1QoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsIEFkZE1pc3NpbmdQQ01GcmF1ZFByZXZlbnRpb25Db2x1bW5zKQogewpAQCAt
MTU1LDMgKzE1Nyw0IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFJlbmFtZURlc3Rp
bmF0aW9uU2l0ZUNvbHVtbikKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZs
YWcpOwogfQorKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436646</attachid>
            <date>2021-08-27 11:39:30 -0700</date>
            <delta_ts>2021-08-27 12:08:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229527-20210827113929.patch</filename>
            <type>text/plain</type>
            <size>248046</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUyOGFjN2M2NGJlYzQ0
NjMzMjZhNGIzYTYzYjlkNGQ2YzcwODk0OS4uNTdkYWNhZTU5Y2NjYzUzNWNjYWE0Mzk0MzZiMjRm
YzY5MDJkM2RmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA4LTI3ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJh
dGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZGF0YWJhc2UgZnJvbSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIGRhdGFiYXNlIGFuZCBhZGQgU1BJIHRvIHNldCBpdHMgbG9jYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaDoKKwogMjAyMS0w
OC0yNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVUF0gUmVtb3RlQXVkaW9TZXNzaW9uIGRvZXNuJ3QgaW1wbGVtZW50IGJlZ2luL2VuZEludGVy
cnVwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBmNTE3Y2NiNWZhN2IzYjUxZDc0NTdmMDhmYzE0ZGYwNDc2YWJi
YmNiLi42ODVjMTkzY2ZiOTAwY2NjNjM4ZmY3OGU0ODBkYmFhMjcwNGRkODY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyMyBAQAorMjAyMS0wOC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFNlcGFyYXRlIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IGRhdGFiYXNlIGZyb20gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBkYXRhYmFzZSBhbmQgYWRk
IFNQSSB0byBzZXQgaXRzIGxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjk1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHdpbGwgYmUgdXNlZCBieSByZGFyOi8vODA4MDYyODMKKwor
ICAgICAgICBJbiBvcmRlciB0byBkbyB0aGlzLCBJIG1vdmVkIGNvbW1vbiBjb2RlIHRvIERhdGFi
YXNlVXRpbGl0aWVzIGFuZCBtb3ZlZCB0aGUgUENNIGxvZ2ljIGZyb20gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUKKyAgICAgICAgdG8gYSBuZXcgY2xhc3MuICBJdCBwdXRzIHRo
ZSBkYXRhIGluIGEgZGlmZmVyZW50IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHVubGVzcyBT
UEkgdGVsbHMgaXQgdG8gcHV0IGl0IGluIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4KKworICAgICAg
ICBUaGUgYmlnZ2VzdCBmdW5jdGlvbmFsIGNoYW5nZSBJIG5lZWRlZCB0byBkbyB3YXMgdG8gbWFr
ZSBhIFBDTU9ic2VydmVkRG9tYWlucyB0YWJsZSBpbiB0aGUgbmV3IERCIGluc3RlYWQgb2YgYW4g
T2JzZXJ2ZWREb21haW5zIHRhYmxlLAorICAgICAgICB3aGljaCBjb250YWluZWQgbW9yZSBpbmZv
cm1hdGlvbiB0aGFuIEkgbmVlZGVkLiAgSSBuZWVkIGp1c3QgYW4gaW5kZXggYW5kIGEgbGlzdCBv
ZiBkb21haW5zLgorCisgICAgICAgIEFub3RoZXIgc2xpZ2h0IGltcGxlbWVudGF0aW9uIGNoYW5n
ZSBpcyB0aGF0IGluc3RlYWQgb2YgY2hlY2tpbmcgaXNFcGhlbWVyYWwgaW4gV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLCBJIGp1c3QgcGFzcyBhbiBlbXB0eQorICAgICAgICBTdHJpbmcg
dG8gdGhlIFN0b3JlIGlmIGl0J3MgZXBoZW1lcmFsLCB3aGljaCBjYXVzZXMgbm8gREIgdG8gYmUg
Y3JlYXRlZCwgd2hpY2ggY2F1c2VzIGVxdWl2YWxlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgSSBh
bHNvIG1vdmVkIHRoZSBkZWJ1ZyBtZXNzYWdlIGJyb2FkY2FzdGluZyB0byBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZSBpbiBvcmRlciB0byBtYWtlIHRoZSBEYXRhYmFz
ZSBvYmplY3Qgbm90CisgICAgICAgIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgTmV0d29ya1Byb2Nl
c3MgYW5kIG5vdCBuZWVkIHRvIGtlZXAgc3RhdGUgb2Ygd2hldGhlciBkZWJ1ZyBtb2RlIGlzIGVu
YWJsZWQuICBEYXRhYmFzZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKKyAgICAg
ICAgbm93IHJldHVybnMgYSBEZWJ1Z0luZm8gb2JqZWN0IGFuZCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmF0dHJpYnV0ZSBjaGVja3Mgd2hldGhlciBkZWJ1ZyBtb2RlIGlzIGVuYWJs
ZWQgYW5kIGJyb2FkY2FzdHMgdGhlIG1lc3NhZ2VzLgorCisgICAgICAgIEkgYWRkZWQgYSBmZXcg
Y2FsbHMgdG8gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSB3aGVuIG1vdmlu
ZyBhbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBvYmplY3QgdG8gYW5vdGhlciB0aHJlYWQuCisK
KyAgICAgICAgSSBhZGRlZCBhIENvbXBsZXRpb25IYW5kbGVyIHRvIGNsZWFyUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgYW5kIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJs
ZURvbWFpbgorICAgICAgICBzbyB0aGF0IGNsZWFyaW5nIHdlYnNpdGUgZGF0YSBkb2Vzbid0IHNh
eSBpdCdzIGRvbmUgdW50aWwgaXQncyBkb25lLgorCisgICAgICAgIEFuIGV2ZW4gc21hbGxlciBj
aGFuZ2UgaXMgSSBhZGRlZCBhICJGb3JUZXN0aW5nIiBzdWZmaXggb24gc29tZSBmdW5jdGlvbiBu
YW1lcyBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgb25seSB1c2VkIGluIHRlc3RzLgorCisgICAgICAg
IFRoZSByZXN0IG9mIHRoaXMgcGF0Y2gganVzdCBtb3ZlcyBjb2RlIGZyb20gb25lIGxvY2F0aW9u
IHRvIGFub3RoZXIuCisKKyAgICAgICAgSSBzdGlsbCBuZWVkIHRvIGltcGxlbWVudCBtaWdyYXRp
bmcgZGF0YSBmcm9tIHRoZSBvbGQgREIgdG8gdGhlIG5ldyBEQi4gIEknbGwgZG8gdGhhdCBpbiBh
bm90aGVyIHBhdGNoIHNvb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmll
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuSVRQRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bmVl
ZHNVcGRhdGVkU2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6aW5zZXJ0RGlzdGluY3RWYWx1ZXNJ
blRhYmxlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnRlcnJ1cHRB
bGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y3JlYXRlVW5pcXVlSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hlbWEpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZGVzdHJveVN0YXRl
bWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6ZXhwZWN0ZWRV
bmF0dHJpYnV0ZWRDb2x1bW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6ZXhwZWN0ZWRB
dHRyaWJ1dGVkQ29sdW1ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbmFibGVGb3JlaWduS2V5
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpuZWVkc1VwZGF0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFNjaGVtYSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNJ
Zk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1bW5JblRhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbmFtZUNv
bHVtbnNJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzY29wZWRTdGF0ZW1lbnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aW50ZXJydXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJh
c2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVtb3ZlVW5hdHRy
aWJ1dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZh
dGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0aW9uVG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplYXJsaWVzdFRpbWVzVG9TZW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Om1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrUmVwb3J0QXNTZW50VG9EZXN0
aW5hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6cGNtU3RvcmVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWREZXN0cm95
TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptYXJrQWxsVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjph
dHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpEYXRhYmFzZVV0aWxpdGll
cyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjp+RGF0YWJhc2VVdGlsaXRp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVV0aWxpdGllczo6c2NvcGVkU3RhdGVtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRpZXM6OmJlZ2luVHJhbnNh
Y3Rpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpv
cGVuRGF0YWJhc2VBbmRDcmVhdGVTY2hlbWFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlVXRpbGl0aWVzOjplbmFibGVGb3JlaWduS2V5cyk6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlVXRpbGl0aWVzOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRp
bGl0aWVzOjppbnRlcnJ1cHQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRp
bGl0aWVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJl
VG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbjo6cmVjcmVhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uOjpkdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6RGF0YWJhc2U6On5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6OmludGVycnVwdEFsbERhdGFiYXNlcyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6OmNyZWF0ZVNjaGVtYSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Omluc2Vy
dFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFz
ZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9y
VGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmZpbmRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmF0dHJpYnV0
ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFz
ZTo6YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OnJlbW92ZVVuYXR0cmlidXRlZCk6CisgICAgICAgIChXZWJL
aXQ6OlBDTTo6RGF0YWJhc2U6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9TdHJpbmdGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YXR0
cmlidXRpb25Ub1N0cmluZ0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFi
YXNlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRl
c3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlj
a01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6Y2xlYXJFeHBp
cmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFi
YXNlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6Om1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRvU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
UENNOjpEYXRhYmFzZTo6ZWFybGllc3RUaW1lc1RvU2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6RGF0YWJhc2U6OmRvbWFpbklEKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6
Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRh
YmFzZTo6ZW5zdXJlRG9tYWluSUQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpk
ZXN0cm95U3RhdGVtZW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAgICAoV2ViS2l0
OjpQQ006OkRlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UENNOjpEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREZWJ1Z0luZm8uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OnNoYXJlZFdvcmtRdWV1ZSk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6U3RvcmU6OnByZXBhcmVGb3JQcm9jZXNzVG9TdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpTdG9yZTo6cHJvY2Vzc0RpZFJlc3VtZSk6CisgICAgICAgIChXZWJL
aXQ6OlBDTTo6U3RvcmU6OlN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6cG9z
dFRhc2spOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpwb3N0VGFza1JlcGx5KToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
UENNOjpTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpQQ006OlN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6Om1hcmtBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
Rm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVh
ckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
U3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9y
ZTo6Y2xvc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlBDTTo6U3RvcmU6OmNyZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRl
KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVh
clNlbnRBdHRyaWJ1dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6ZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzKToKKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhcik6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJGb3JSZWdpc3RyYWJs
ZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjo6Y2xlYXJFeHBpcmVkKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGly
ZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OnRvU3RyaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6On5Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVk
TmFtZSk6CisgICAgICAgICogU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtbV0tXZWJz
aXRlRGF0YVN0b3JlIF9zZXROZXR3b3JrUHJvY2Vzc1N1c3BlbnNpb25BbGxvd2VkRm9yVGVzdGlu
ZzpdKToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIF9wcmV2ZW50TmV0d29ya1Byb2Nl
c3NTdXNwZW5zaW9uRm9yVGVzdGluZ10pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
OgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGly
ZWN0b3J5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTdXNwZW5z
aW9uQWxsb3dlZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnByZXZlbnRTdXNwZW5zaW9uRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wOC0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBWaXN1YWwgTG9vayBVcCBhbmltYXRl
cyBmcm9tIHRoZSB3cm9uZyByZWN0IHdoZW4gdGhlIHdlYiB2aWV3IGlzIHNjYWxlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKaW5kZXgg
NmRmMjQ3OTFjMjI2ZjBiYjhiMTE0MzA1ZTZhNjFiOWIzYjEzNzZmYS4uYjY2YmYzYTQ4ZTFlZjEy
ZGY2MDA4NWMzZjAwODA3NzY2ZDRmOTNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCkBAIC01OSw2ICs1OSw1MCBAQCBib29sIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Ojppc1ZhbGlkKCkgY29uc3QKICAgICAgICAgJiYgKG1fdGlt
ZXNUb1NlbmQuc291cmNlRWFybGllc3RUaW1lVG9TZW5kIHx8IG1fdGltZXNUb1NlbmQuZGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpOwogfQogCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlU2VjcmV0VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRv
a2VuOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIHRva2Vu
QmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBzaWduYXR1cmVCYXNlNjRVUkwuaXNv
bGF0ZWRDb3B5KCksCisgICAgICAgIGtleUlEQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpLAorICAg
IH07Cit9CisKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgbm9uY2UuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKwor
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIHJldHVybiB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIGJsaW5kZXIs
CisgICAgICAgIHdhaXRpbmdUb2tlbiwKKyAgICAgICAgcmVhZHlUb2tlbiwKKyNlbmRpZgorICAg
ICAgICB2YWx1ZUJhc2U2NFVSTC5pc29sYXRlZENvcHkoKQorICAgIH07Cit9CisKK1ByaXZhdGVD
bGlja01lYXN1cmVtZW50IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc29sYXRlZENvcHkoKSBj
b25zdAoreworICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGNvcHk7CisgICAgY29weS5tX3Nv
dXJjZUlEID0gbV9zb3VyY2VJRDsKKyAgICBjb3B5Lm1fc291cmNlU2l0ZSA9IG1fc291cmNlU2l0
ZS5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5Lm1fZGVzdGluYXRpb25TaXRlID0gbV9kZXN0aW5h
dGlvblNpdGUuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5tX3NvdXJjZURlc2NyaXB0aW9uID0g
bV9zb3VyY2VEZXNjcmlwdGlvbi5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5Lm1fcHVyY2hhc2Vy
ID0gbV9wdXJjaGFzZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5tX3RpbWVPZkFkQ2xpY2sg
PSBtX3RpbWVPZkFkQ2xpY2suaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5tX2lzRXBoZW1lcmFs
ID0gbV9pc0VwaGVtZXJhbDsKKyAgICBjb3B5Lm1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IG1f
YXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICBjb3B5Lm1fdGltZXNUb1NlbmQgPSBtX3RpbWVz
VG9TZW5kOworICAgIGNvcHkubV9lcGhlbWVyYWxTb3VyY2VOb25jZSA9IGNyb3NzVGhyZWFkQ29w
eShtX2VwaGVtZXJhbFNvdXJjZU5vbmNlKTsKKyAgICBjb3B5Lm1fc291cmNlVW5saW5rYWJsZVRv
a2VuID0gbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4uaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5t
X3NvdXJjZVNlY3JldFRva2VuID0gY3Jvc3NUaHJlYWRDb3B5KG1fc291cmNlU2VjcmV0VG9rZW4p
OworICAgIHJldHVybiBjb3B5OworfQorCiBFeHBlY3RlZDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QoY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKICAg
ICBhdXRvIHBhdGggPSBTdHJpbmdWaWV3KHJlZGlyZWN0VVJMLnN0cmluZygpKS5zdWJzdHJpbmco
cmVkaXJlY3RVUkwucGF0aFN0YXJ0KCksIHJlZGlyZWN0VVJMLnBhdGhFbmQoKSAtIHJlZGlyZWN0
VVJMLnBhdGhTdGFydCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmgKaW5kZXggZWI4NjA4N2JlZTU4OTRlYWIwYmViZjJlOGY2YzJmYjcwZGFm
YmM3NC4uNGI0NjMxYWIxMzFjNjg5NGM2NDU5NTFiZTZlNGM0YjA3MjM3ZWZkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKQEAgLTM1NCw2
ICszNTQsOCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IEVwaGVtZXJhbFNvdXJjZU5vbmNlIHsKICAg
ICAgICAgU3RyaW5nIG5vbmNlOwogCisgICAgICAgIEVwaGVtZXJhbFNvdXJjZU5vbmNlIGlzb2xh
dGVkQ29weSgpIGNvbnN0OworCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNWYWxpZCgp
IGNvbnN0OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKQEAgLTM2OSw2ICszNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmlu
ZyBzaWduYXR1cmVCYXNlNjRVUkw7CiAgICAgICAgIFN0cmluZyBrZXlJREJhc2U2NFVSTDsKIAor
ICAgICAgICBTb3VyY2VTZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKICAgICAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgfTsKIApAQCAtMzg0LDYgKzM4Nyw4IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGRlY29kZShEZWNvZGVyJik7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpc29sYXRlZENvcHkoKSBjb25zdDsKKwogcHJp
dmF0ZToKICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIApAQCAtNDA1LDYgKzQxMCw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9rZW5SZWFkeT4gcmVhZHlUb2tlbjsK
ICNlbmRpZgogICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRVUkw7CisKKyAgICAgICAgU291cmNl
VW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogICAgIH07CiAKICAgICBzdGQ6
Om9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQKaW5kZXggOTVkOGE5NjZmZmRkM2U0NDNmZTJiNWQ2ZDY1NGY0ZmExZTEw
Zjg2ZS4uYjRmMTk4M2IyMThlYzU0MThmMjBjZjkyY2UwNjMwOWJmZTE5ZGMyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CkBAIC0yMyw2ICsyMyw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0Rvd25sb2FkcyIKICAgICAiJHtX
RUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJIgogICAgICIke1dFQktJVF9ESVJ9L05l
dHdvcmtQcm9jZXNzL0luZGV4ZWREQiIKKyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FjaGUiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApp
bmRleCBiYmU4ZDJkYjNjNzVkOWNiMmQ2ODdiMjViOWFlYmUwMGMyMGM5ZmIzLi41MDM3NjlhM2Zj
YWM0NTMyYWRiYTg2MzBlNjhkYjczNzViNGNmYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRl
RGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdn
cmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgpAQCAtODgsMTAg
Kzg4LDYgQEAgY29uc3RleHByIGF1dG8gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc1F1ZXJ5
ID0gIklOU0VSVCBPUiBSRVBMQUNFIGludG8gU3ViZnIKIGNvbnN0ZXhwciBhdXRvIHRvcEZyYW1l
TGlua0RlY29yYXRpb25zRnJvbVF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gVG9wRnJh
bWVMaW5rRGVjb3JhdGlvbnNGcm9tICh0b0RvbWFpbklELCBsYXN0VXBkYXRlZCwgZnJvbURvbWFp
bklEKSBTRUxFQ1QgPywgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVn
aXN0cmFibGVEb21haW4gaW4gKCAiX3M7CiBjb25zdGV4cHIgYXV0byBzdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBTdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zIChzdWJyZXNvdXJjZURvbWFpbklELCBsYXN0VXBkYXRlZCwg
dG9wRnJhbWVEb21haW5JRCkgU0VMRUNUID8sID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21h
aW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluIGluICggIl9zOwogY29uc3RleHByIGF1dG8gc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb1F1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8g
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyAoc3VicmVzb3VyY2VEb21haW5JRCwgbGFzdFVw
ZGF0ZWQsIHRvRG9tYWluSUQpIFNFTEVDVCA/LCA/LCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9t
YWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBpbiAoICJfczsKLWNvbnN0ZXhwciBhdXRvIGlu
c2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiSU5TRVJUIE9S
IFJFUExBQ0UgSU5UTyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNl
U2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgotICAgICJzb3VyY2VJRCwg
dGltZU9mQWRDbGljaywgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQpIFZBTFVFUyAoPywgPywgPywg
PywgPywgPywgPykiX3M7Ci1jb25zdGV4cHIgYXV0byBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNp
dGVEb21haW5JRCwgIgotICAgICJzb3VyY2VJRCwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgcHJp
b3JpdHksIHRpbWVPZkFkQ2xpY2ssIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwg
c2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbikgVkFMVUVT
ICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfczsKIAogLy8gRVhJU1RTIFF1ZXJp
ZXMKIGNvbnN0ZXhwciBhdXRvIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1F1ZXJ5
ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyAiCkBAIC0xMTYsOSArMTEyLDYgQEAgY29u
c3RleHByIGF1dG8gdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlUXVlcnkgPSAiVVBEQVRFIE9i
c2VydmVkRG9tYWlucyBTRVQgaXMKIGNvbnN0ZXhwciBhdXRvIGNsZWFyUHJldmFsZW50UmVzb3Vy
Y2VRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVudCA9IDAsIGlz
VmVyeVByZXZhbGVudCA9IDAgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3Rl
eHByIGF1dG8gdXBkYXRlR3JhbmRmYXRoZXJlZFF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFp
bnMgU0VUIGdyYW5kZmF0aGVyZWQgPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsK
IGNvbnN0ZXhwciBhdXRvIHVwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWxRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsID0gPyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7Ci1j
b25zdGV4cHIgYXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhw
aXJlZFF1ZXJ5ID0gIlVQREFURSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBT
RVQgdGltZU9mQWRDbGljayA9IC0xLjAiX3M7Ci1jb25zdGV4cHIgYXV0byBtYXJrUmVwb3J0QXNT
ZW50VG9Tb3VyY2VRdWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9IG51bGwgV0hFUkUgc291cmNlU2l0
ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOwotY29uc3Rl
eHByIGF1dG8gbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25RdWVyeSA9ICJVUERBVEUgQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uID0gbnVsbCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCA9ID8iX3M7CiAKIC8vIFNFTEVDVCBRdWVyaWVzCiBjb25zdGV4cHIg
YXV0byBkb21haW5JREZyb21TdHJpbmdRdWVyeSA9ICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBPYnNl
cnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwpAQCAtMTM3LDE0ICsx
MzAsNiBAQCBjb25zdGV4cHIgYXV0byBnZXRBbGxEb21haW5zUXVlcnkgPSAiU0VMRUNUIHJlZ2lz
dHJhYmxlRG9tYWluIEZST00gT2JzZXJ2ZWREb21haQogY29uc3RleHByIGF1dG8gZ2V0QWxsU3Vi
U3RhdGlzdGljc1VuZGVyRG9tYWluUXVlcnkgPSAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgRlJP
TSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9tYWluSUQgPSA/
IgogICAgICJVTklPTiBBTEwgU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBTdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IgogICAg
ICJVTklPTiBBTEwgU0VMRUNUIHRvRG9tYWluSUQgRlJPTSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwotY29uc3RleHByIGF1dG8g
YWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNRdWVyeSA9
ICJTRUxFQ1QgKiBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOwot
Y29uc3RleHByIGF1dG8gYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkg
PSAiU0VMRUNUICosIE1JTihlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbikgYXMgbWluVmFsICIKLSAgICAiRlJPTSBBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgSVMg
Tk9UIE5VTEwgQU5EIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gSVMgTk9UIE5VTEwg
IgotICAgICJVTklPTiBBTEwgU0VMRUNUICosIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIGFz
IG1pblZhbCBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBlYXJs
aWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIElTIE5VTEwgIgotICAgICJVTklPTiBBTEwgU0VM
RUNUICosIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gYXMgbWluVmFsIEZST00gQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGltZVRvU2VuZFRv
U291cmNlIElTIE5VTEwgT1JERVIgQlkgbWluVmFsIl9zOwotY29uc3RleHByIGF1dG8gZmluZFVu
YXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25T
aXRlRG9tYWluSUQgPSA/Il9zOwotY29uc3RleHByIGF1dG8gZmluZEF0dHJpYnV0ZWRRdWVyeSA9
ICJTRUxFQ1QgKiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBz
b3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7
Ci1jb25zdGV4cHIgYXV0byBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnkgPSAiU0VMRUNUIGVhcmxp
ZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIEZS
T00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21h
aW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKIAogLy8gRVhJU1RT
IGZvciB0ZXN0aW5nIHF1ZXJpZXMKIGNvbnN0ZXhwciBhdXRvIGxpbmtEZWNvcmF0aW9uRXhpc3Rz
UXVlcnkgPSAiU0VMRUNUIEVYSVNUUyAoU0VMRUNUICogRlJPTSBUb3BGcmFtZUxpbmtEZWNvcmF0
aW9uc0Zyb20gV0hFUkUgdG9Eb21haW5JRCA9ID8gT1IgZnJvbURvbWFpbklEID0gPykiX3M7CkBA
IC0xNTYsMTAgKzE0MSw2IEBAIGNvbnN0ZXhwciBhdXRvIG9ic2VydmVkRG9tYWluc0V4aXN0c1F1
ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gT2JzZXJ2CiAKIC8vIERFTEVURSBR
dWVyaWVzCiBjb25zdGV4cHIgYXV0byByZW1vdmVBbGxEYXRhUXVlcnkgPSAiREVMRVRFIEZST00g
T2JzZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsKLWNvbnN0ZXhwciBhdXRvIGNs
ZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJERUxFVEUgRlJP
TSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9t
YWluSUQgTElLRSA/IE9SIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIExJS0UgPyJfczsKLWNvbnN0
ZXhwciBhdXRvIGNsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAi
REVMRVRFIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJj
ZVNpdGVEb21haW5JRCBMSUtFID8gT1IgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgTElLRSA/Il9z
OwotY29uc3RleHByIGF1dG8gY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVy
eSA9ICJERUxFVEUgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVS
RSA/ID4gdGltZU9mQWRDbGljayJfczsKLWNvbnN0ZXhwciBhdXRvIHJlbW92ZVVuYXR0cmlidXRl
ZFF1ZXJ5ID0gIkRFTEVURSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
ID0gPyJfczsKIAogY29uc3RleHByIGF1dG8gY3JlYXRlT2JzZXJ2ZWREb21haW4gPSAiQ1JFQVRF
IFRBQkxFIE9ic2VydmVkRG9tYWlucyAoIgogICAgICJkb21haW5JRCBJTlRFR0VSIFBSSU1BUlkg
S0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBPTiBDT05GTElDVCBG
QUlMLCBsYXN0U2VlbiBSRUFMIE5PVCBOVUxMLCAiCkBAIC0yNDAsMTkgKzIyMSw2IEBAIGNvbnN0
ZXhwciBhdXRvIGNyZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVBVEUg
VEFCTEUgU3VicmVzb3VyY2VVCiBjb25zdGV4cHIgYXV0byBjcmVhdGVPcGVyYXRpbmdEYXRlcyA9
ICJDUkVBVEUgVEFCTEUgT3BlcmF0aW5nRGF0ZXMgKCIKICAgICAieWVhciBJTlRFR0VSIE5PVCBO
VUxMLCBtb250aCBJTlRFR0VSIE5PVCBOVUxMLCBtb250aERheSBJTlRFR0VSIE5PVCBOVUxMKSJf
czsKIAotY29uc3RleHByIGF1dG8gY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
ICgiCi0gICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBOVUxM
LCAiCi0gICAgInRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwgdG9rZW4gVEVYVCwgc2lnbmF0
dXJlIFRFWFQsIGtleUlEIFRFWFQsIEZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgIgot
ICAgICJSRUZFUkVOQ0VTIE9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NB
REUsIEZPUkVJR04gS0VZKGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VTICIKLSAg
ICAiT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSkiX3M7Ci0KLWNv
bnN0ZXhwciBhdXRvIGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJD
UkVBVEUgVEFCTEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICgiCi0gICAgInNv
dXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBOVUxMLCAiCi0gICAgImF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEgSU5URUdFUiBOT1QgTlVMTCwgcHJpb3JpdHkgSU5URUdFUiBO
T1QgTlVMTCwgdGltZU9mQWRDbGljayBSRUFMIE5PVCBOVUxMLCAiCi0gICAgImVhcmxpZXN0VGlt
ZVRvU2VuZFRvU291cmNlIFJFQUwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJRCBU
RVhULCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIFJFQUwsICIKLSAgICAiRk9SRUlH
TiBLRVkoc291cmNlU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VTIE9ic2VydmVkRG9tYWlucyhkb21h
aW5JRCkgT04gREVMRVRFIENBU0NBREUsIEZPUkVJR04gS0VZKGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEKSBSRUZFUkVOQ0VTICIKLSAgICAiT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxF
VEUgQ0FTQ0FERSkiX3M7Ci0KIC8vIENSRUFURSBVTklRVUUgSU5ERVggUXVlcmllcy4KIGNvbnN0
ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21h
aW5zID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBTdG9yYWdlQWNjZXNzVW5k
ZXJUb3BGcmFtZURvbWFpbnNfZG9tYWluSURfdG9wTGV2ZWxEb21haW5JRCBvbiBTdG9yYWdlQWNj
ZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgKCBkb21haW5JRCwgdG9wTGV2ZWxEb21haW5JRCApIl9z
OwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvX3NvdXJjZURvbWFpbklEX3RvRG9tYWluSUQgb24gVG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUbyAoIHNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEICkiX3M7CkBAIC0yNjUsMTEgKzIz
Myw5IEBAIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucyA9ICJDUkVBVEUgVU5JUVVFCiBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlx
dWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gPSAiQ1JFQVRFIFVOSVFVRSBJTkRF
WCBJRiBOT1QgRVhJU1RTIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9fc3VicmVzb3VyY2VE
b21haW5JRF90b0RvbWFpbklEIG9uIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gKCBzdWJy
ZXNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEICkiX3M7CiBjb25zdGV4cHIgYXV0byBjcmVhdGVV
bmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVBVEUgVU5JUVVF
IElOREVYIElGIE5PVCBFWElTVFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tX3N1YnJl
c291cmNlRG9tYWluSURfZnJvbURvbWFpbklEIG9uIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbSAoIHN1YnJlc291cmNlRG9tYWluSUQsIGZyb21Eb21haW5JRCApIl9zOwogY29uc3RleHBy
IGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcyA9ICJDUkVBVEUgVU5JUVVFIElO
REVYIElGIE5PVCBFWElTVFMgT3BlcmF0aW5nRGF0ZXNfeWVhcl9tb250aF9tb250aERheSBvbiBP
cGVyYXRpbmdEYXRlcyAoIHllYXIsIG1vbnRoLCBtb250aERheSApIl9zOwotY29uc3RleHByIGF1
dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9
ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklE
IG9uIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFp
bklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOwotY29uc3RleHByIGF1dG8gY3JlYXRl
VW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVO
SVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQgb24gQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCApIl9zOwogCiAvLyBBZGQgb25lIHRvIHRoZSBjb3VudCBvZiB0aGUgYWJv
dmUgaW5kZXggcXVlcmllcyB0byBhY2NvdW50IGZvciB0aGUgT2JzZXJ2ZWREb21haW5zIHRhYmxl
LCB3aGljaCBoYXMgYW4gaW5kZXggYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IFNRTGl0ZSBiZWNh
dXNlIG9mIGl0cyBwcmltYXJ5IGtleS4KLWNvbnN0IGludCBleHBlY3RlZEluZGV4Q291bnQgPSAx
NDsKK2NvbnN0ZXhwciBpbnQgZXhwZWN0ZWRJbmRleENvdW50ID0gMTI7CiAKIHN0YXRpYyBjb25z
dCBTdHJpbmcgT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMSgpCiB7CkBAIC0yODEsMTggKzI0
Nyw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMUFs
dGVybmF0ZSgpCiAgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJPYnNlcnZlZERvbWFpbnNcIiAo
ZG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgcmVnaXN0cmFibGVEb21haW4gVEVYVCBOT1Qg
TlVMTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgbGFzdFNlZW4gUkVBTCBOT1QgTlVMTCwgaGFk
VXNlckludGVyYWN0aW9uIElOVEVHRVIgTk9UIE5VTEwsIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25UaW1lIFJFQUwgTk9UIE5VTEwsIGdyYW5kZmF0aGVyZWQgSU5URUdFUiBOT1QgTlVMTCwgaXNQ
cmV2YWxlbnQgSU5URUdFUiBOT1QgTlVMTCwgaXNWZXJ5UHJldmFsZW50IElOVEVHRVIgTk9UIE5V
TEwsIGRhdGFSZWNvcmRzUmVtb3ZlZCBJTlRFR0VSIE5PVCBOVUxMLHRpbWVzQWNjZXNzZWRBc0Zp
cnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiBJTlRFR0VSIE5PVCBOVUxMLCB0aW1lc0FjY2Vz
c2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIElOVEVHRVIgTk9UIE5VTEwsaXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCBJTlRFR0VSIE5PVCBOVUxMKSJfczsK
IH0KIAotc3RhdGljIGNvbnN0IEV4cGVjdGVkQ29sdW1ucyYgZXhwZWN0ZWRVbmF0dHJpYnV0ZWRD
b2x1bW5zKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjb2x1bW5zID0gbWFrZU5ldmVyRGVz
dHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgInNvdXJjZVNpdGVEb21haW5JRCJfcywgImRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEIl9zLCAic291cmNlSUQiX3MsICJ0aW1lT2ZBZENsaWNrIl9zLCAidG9r
ZW4iX3MsICJzaWduYXR1cmUiX3MsICJrZXlJRCJfcyB9KTsKLSAgICByZXR1cm4gY29sdW1ucy5n
ZXQoKTsKLX0KLQotc3RhdGljIGNvbnN0IEV4cGVjdGVkQ29sdW1ucyYgZXhwZWN0ZWRBdHRyaWJ1
dGVkQ29sdW1ucygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY29sdW1ucyA9IG1ha2VOZXZl
ckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7ICJzb3VyY2VTaXRlRG9tYWluSUQiX3MsICJkZXN0
aW5hdGlvblNpdGVEb21haW5JRCJfcywgInNvdXJjZUlEIl9zLCAiYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSJfcywgInByaW9yaXR5Il9zLCAidGltZU9mQWRDbGljayJfcywgImVhcmxpZXN0VGltZVRv
U2VuZFRvU291cmNlIl9zLCAidG9rZW4iX3MsICJzaWduYXR1cmUiX3MsICJrZXlJRCJfcywgImVh
cmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24iX3MgfSk7Ci0gICAgcmV0dXJuIGNvbHVtbnMu
Z2V0KCk7Ci19Ci0KIHN0YXRpYyBib29sIG5lZWRzTmV3Q3JlYXRlVGFibGVTY2hlbWEoY29uc3Qg
U3RyaW5nJiBzY2hlbWEpCiB7CiAgICAgcmV0dXJuIHNjaGVtYS5jb250YWlucygiUkVGRVJFTkNF
UyBUb3BMZXZlbERvbWFpbnMiKTsKQEAgLTMxOSw4ICsyNzMsNiBAQCBzdGF0aWMgY29uc3QgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRl
eFBhaXI+JgogICAgICAgICB7ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBzdGQ6
Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUbywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNy
ZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpIH0sCiAgICAgICAg
IHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3Ry
aW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUlu
ZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKSkgfSwKICAgICAgICAgeyAiT3BlcmF0
aW5nRGF0ZXMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+
PihjcmVhdGVPcGVyYXRpbmdEYXRlcywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVl
KGNyZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMpKSB9LAotICAgICAgICB7ICJVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5k
ZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCi0gICAgICAgIHsgIkF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5n
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUlu
ZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgfQogICAgIH0pOwogICAgIAog
ICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzOwpAQCAtMzM5LDcgKzI5MSw3
IEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRMaXN0KGNvbnN0IENvbnRhaW5lclR5cGUmIHZhbHVlcykK
ICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1IYXNoU2V0PFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKj4mIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjphbGxTdG9yZXMoKQorc3RhdGljIEhhc2hTZXQ8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUqPiYgYWxsU3RvcmVzKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMzQ5LDE3ICszMDEsMTMgQEAgSGFzaFNldDxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZSo+JiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG8K
IAogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUs
IFN1c3BlbmRhYmxlV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qg
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0
aCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKHN0b3JlLCB3b3JrUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCi0gICAgLCBt
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChzdG9yYWdlRGlyZWN0b3J5UGF0aCwgIm9ic2VydmF0aW9ucy5kYiJfcykpCi0gICAgLCBtX3Ry
YW5zYWN0aW9uKG1fZGF0YWJhc2UpCisgICAgLCBEYXRhYmFzZVV0aWxpdGllcyhGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeVBhdGgsICJvYnNlcnZh
dGlvbnMuZGIiX3MpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgb3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNz
YXJ5KCk7CiAgICAgZW5hYmxlRm9yZWlnbktleXMoKTsKLQotICAgIC8vIFNpbmNlIHdlIGFyZSB1
c2luZyBhIHdvcmtlclF1ZXVlLCB0aGUgc2VxdWVudGlhbCBkaXNwYXRjaCBibG9ja3MgbWF5IGJl
IGNhbGxlZCBieSBkaWZmZXJlbnQgdGhyZWFkcy4KLSAgICBtX2RhdGFiYXNlLmRpc2FibGVUaHJl
YWRpbmdDaGVja3MoKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UudHVybk9uSW5jcmVtZW50
YWxBdXRvVmFjdXVtKCkpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp0dXJuT25JbmNyZW1lbnRhbEF1
dG9WYWN1dW0gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CkBAIC0zNzQsNDMgKzMyMiw5IEBAIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUoKQogICAgIGFsbFN0b3JlcygpLnJlbW92ZSh0aGlzKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xvc2UoKQotewotICAgIGRlc3Ry
b3lTdGF0ZW1lbnRzKCk7Ci0gICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCi0gICAgICAgIG1f
ZGF0YWJhc2UuY2xvc2UoKTsKLX0KLQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKIHsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCkpIHsKLSAgICAgICAgaWYgKCFGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChtX3N0b3JhZ2VEaXJl
Y3RvcnlQYXRoKSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuIGZhaWxlZCwgZXJy
b3IgbWVzc2FnZTogRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgZGF0YWJhc2UgcGF0aDogJSIg
UFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9pc05ld1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUgPSB0cnVlOwotICAgIH0gZWxzZQotICAg
ICAgICBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSA9IGZhbHNlOwot
Ci0gICAgaWYgKCFtX2RhdGFiYXNlLm9wZW4obV9zdG9yYWdlRGlyZWN0b3J5UGF0aCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om9wZW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNf
TE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIAotICAg
IGF1dG8gc2V0QnVzeVRpbWVvdXQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlBSQUdN
QSBidXN5X3RpbWVvdXQgPSA1MDAwIl9zKTsKLSAgICBpZiAoIXNldEJ1c3lUaW1lb3V0IHx8IHNl
dEJ1c3lUaW1lb3V0LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6c2V0QnVzeVRpbWVvdXQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2lzTmV3
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSkgewotICAgICAgICBpZiAoIWNyZWF0
ZVNjaGVtYSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1hIGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZGF0YWJhc2UgcGF0aDog
JSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1f
c3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KKyAg
ICBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSA9IG9wZW5EYXRhYmFz
ZUFuZENyZWF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkgPT0gQ3JlYXRlZE5ld0ZpbGU6OlllczsKIH0K
IAogc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCkKQEAgLTQzOSwxNiAr
MzUzLDYgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2kKICAgICByZXR1cm4gbWlzc2luZ1RhYmxl
czsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5hYmxl
Rm9yZWlnbktleXMoKQotewotICAgIGF1dG8gZW5hYmxlRm9yZWlnbktleXMgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBmb3JlaWduX2tleXMgPSBPTiJfcyk7Ci0gICAgaWYg
KCFlbmFibGVGb3JlaWduS2V5cyB8fCBlbmFibGVGb3JlaWduS2V5cy0+c3RlcCgpICE9IFNRTElU
RV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbmFibGVGb3JlaWduS2V5cyBmYWlsZWQs
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotfQotCiBUYWJsZUFuZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmlu
ZyYgdGFibGVOYW1lKQogewogICAgIGF1dG8gZ2V0VGFibGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRi
bF9uYW1lPT8gQU5EIHR5cGUgPSAndGFibGUnIl9zKTsKQEAgLTQ5NSwxNiArMzk5LDYgQEAgVGFi
bGVBbmRJbmRleFBhaXIgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJl
bnRUYWJsZUFuZEluZGV4UXVlcmkKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4+KFdURk1vdmUoY3JlYXRlVGFibGVRdWVyeSksIFdURk1vdmUo
aW5kZXgpKTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
bmVlZHNVcGRhdGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTY2hlbWEoKQotewotICAgIGF1dG8g
Y3VycmVudFNjaGVtYSA9IGN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcygiQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Il9zKS5maXJzdDsKLQotICAgIGlmICghY3VycmVudFNjaGVt
YS5pc0VtcHR5KCkgJiYgY3VycmVudFNjaGVtYSAhPSBjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaXNzaW5n
VW5pcXVlSW5kaWNlcygpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoIlNFTEVDVCBDT1VOVCgqKSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlw
ZSA9ICdpbmRleCciX3MpOwpAQCAtNTM3LDcgKzQzMSw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om5lZWRzVXBkYXRlZFNjaGVtYSgpCiB7CiAgICAgLy8gVGhl
cmUgYXJlIDMgY2FzZXMgd2hlcmUgd2UgZXhwZWN0IHBvdGVudGlhbCBzY2hlbWEgY2hhbmdlcyBk
dWUgdG8gdXBncmFkZXMuCiAgICAgLy8gQWxsIG90aGVyIHRhYmxlcyBzaG91bGQgYmUgdXAtdG8t
ZGF0ZSwgc28gd2Ugc2hvdWxkIEFTU0VSVCB0aGF0IHRoZXkgYXJlIGNvcnJlY3QuCi0gICAgaWYg
KG1pc3NpbmdSZWZlcmVuY2VUb09ic2VydmVkRG9tYWlucygpIHx8IG5lZWRzVXBkYXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50U2NoZW1hKCkgfHwgbWlzc2luZ1VuaXF1ZUluZGljZXMoKSkKKyAg
ICBpZiAobWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCkgfHwgbWlzc2luZ1VuaXF1
ZUluZGljZXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3IgKGF1dG8mIHRhYmxl
IDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkgewpAQCAtNTYyLDEyICs0
NTYsNiBAQCBzdGF0aWMgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IGluc2VydERpc3Rp
bmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChTUUxpdAogICAgIGlmICh0YWJsZSA9PSAiVG9wRnJh
bWVMaW5rRGVjb3JhdGlvbnNGcm9tIikKICAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIklOU0VSVCBJTlRPIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBTRUxFQ1Qg
dG9Eb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgZnJvbURvbWFpbklEIEZST00gX1RvcEZyYW1l
TGlua0RlY29yYXRpb25zRnJvbSBHUk9VUCBCWSB0b0RvbWFpbklELCBmcm9tRG9tYWluSUQiX3Mp
OwogCi0gICAgaWYgKHRhYmxlID09ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCIpCi0gICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5U
TyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxFQ1Qgc291cmNlU2l0ZURv
bWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQsIE1BWCh0aW1lT2ZBZENs
aWNrKSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQgRlJPTSBfVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgR1JPVVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNp
dGVEb21haW5JRCJfcyk7Ci0KLSAgICBpZiAodGFibGUgPT0gIkF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCIpCi0gICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KCJJTlNFUlQgSU5UTyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VMRUNUIHNv
dXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNvdXJjZUlELCBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwgTUFYKHRpbWVPZkFkQ2xpY2spLCBlYXJsaWVz
dFRpbWVUb1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVhcmxpZXN0VGlt
ZVRvU2VuZFRvRGVzdGluYXRpb24gRlJPTSBfQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IEdST1VQIEJZIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQi
X3MpOwotCiAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJp
bmcoIklOU0VSVCBJTlRPICIsIHRhYmxlLCAiIFNFTEVDVCBESVNUSU5DVCAqIEZST00gXyIsIHRh
YmxlKSk7CiB9CiAKQEAgLTYzNSw3OSArNTIzLDYgQEAgVmVjdG9yPFN0cmluZz4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvbHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcK
ICAgICByZXR1cm4gY29sdW1uczsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKFN0cmluZyYmIHRhYmxlTmFtZSwg
Y29uc3QgRXhpc3RpbmdDb2x1bW5zJiBleGlzdGluZ0NvbHVtbnMsIGNvbnN0IEV4cGVjdGVkQ29s
dW1ucyYgZXhwZWN0ZWRDb2x1bW5zKQotewotICAgIEFTU0VSVChleGlzdGluZ0NvbHVtbnMuc2l6
ZSgpIDw9IGV4cGVjdGVkQ29sdW1ucy5zaXplKCkpOwotCi0gICAgYXV0byB0cmFuc2FjdGlvbiA9
IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwotCi0gICAgZm9yIChhdXRvJiBjb2x1bW4g
OiBleHBlY3RlZENvbHVtbnMpIHsKLSAgICAgICAgaWYgKGV4aXN0aW5nQ29sdW1ucy5jb250YWlu
cyhjb2x1bW4pKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYXV0byBzdGF0ZW1l
bnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRB
QkxFICIsIHRhYmxlTmFtZSwgIiBBREQgQ09MVU1OICIsIGNvbHVtbikpOwotICAgICAgICBpZiAo
IXN0YXRlbWVudCkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5z
VG9UYWJsZSBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gYWRkIG1pc3NpbmcgY29sdW1u
cyB0byB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdGF0ZW1l
bnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFk
ZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBlcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGFkZCBt
aXNzaW5nIGNvbHVtbnMgdG8gdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBzdGF0ZW1lbnQtPnJlc2V0KCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc0lmTmVjZXNzYXJ5KCkKLXsKLSAg
ICBjb25zdCBhdXRvIHVuYXR0cmlidXRlZFRhYmxlTmFtZSA9ICJVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCJfczsKLSAgICBjb25zdCBhdXRvIGF0dHJpYnV0ZWRUYWJsZU5hbWUg
PSAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOwotCi0gICAgYWRkTWlzc2lu
Z0NvbHVtbnNUb1RhYmxlKHVuYXR0cmlidXRlZFRhYmxlTmFtZSwgY29sdW1uc0ZvclRhYmxlKHVu
YXR0cmlidXRlZFRhYmxlTmFtZSksIGV4cGVjdGVkVW5hdHRyaWJ1dGVkQ29sdW1ucygpKTsKLSAg
ICBhZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgY29sdW1uc0Zv
clRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUpLCBleHBlY3RlZEF0dHJpYnV0ZWRDb2x1bW5zKCkp
OwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVD
b2x1bW5JblRhYmxlKFN0cmluZyYmIHRhYmxlTmFtZSwgRXhpc3RpbmdDb2x1bW5OYW1lJiYgZXhp
c3RpbmdDb2x1bW5OYW1lLCBFeHBlY3RlZENvbHVtbk5hbWUmJiBleHBlY3RlZENvbHVtbk5hbWUp
Ci17Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93
KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlTmFtZSwgIiBSRU5BTUUgQ09MVU1OICIs
IGV4aXN0aW5nQ29sdW1uTmFtZSwgIiBUTyAiLCBleHBlY3RlZENvbHVtbk5hbWUpKTsKLSAgICBp
ZiAoIXN0YXRlbWVudCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNU
b1RhYmxlIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byByZW5hbWUgY29sdW1uIGluIHRh
YmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBlcnJv
ciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIHJlbmFtZSBjb2x1bW4gaW4gdGFibGUsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5h
bWVDb2x1bW5zSWZOZWNlc3NhcnkoKQotewotICAgIC8vIEF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudCBjYXNlLgotICAgIGNvbnN0IGF1dG8gYXR0cmlidXRlZFRhYmxlTmFtZSA9
ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci0gICAgY29uc3QgYXV0byBv
bGRFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4gPSAiZWFybGllc3RUaW1lVG9TZW5kIl9zOwotICAg
IGNvbnN0IGF1dG8gbmV3RWFybGllc3RUaW1lVG9TZW5kQ29sdW1uID0gImVhcmxpZXN0VGltZVRv
U2VuZFRvU291cmNlIl9zOwotICAgIGNvbnN0IGF1dG8gb2xkQXR0cmlidXRpb25EZXN0aW5hdGlv
bkNvbHVtbiA9ICJhdHRyaWJ1dGVPblNpdGVEb21haW5JRCJfczsKLSAgICBjb25zdCBhdXRvIG5l
d0F0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4gPSAiZGVzdGluYXRpb25TaXRlRG9tYWluSUQi
X3M7Ci0gICAgY29uc3QgYXV0byBmb3VuZEF0dHJpYnV0ZWRUYWJsZUNvbHVtbnMgPSBjb2x1bW5z
Rm9yVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSk7Ci0KLSAgICBpZiAoZm91bmRBdHRyaWJ1dGVk
VGFibGVDb2x1bW5zLmNvbnRhaW5zKG9sZEVhcmxpZXN0VGltZVRvU2VuZENvbHVtbikpCi0gICAg
ICAgIHJlbmFtZUNvbHVtbkluVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgb2xkRWFybGllc3RU
aW1lVG9TZW5kQ29sdW1uLCBuZXdFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4pOwotCi0gICAgaWYg
KGZvdW5kQXR0cmlidXRlZFRhYmxlQ29sdW1ucy5jb250YWlucyhvbGRBdHRyaWJ1dGlvbkRlc3Rp
bmF0aW9uQ29sdW1uKSkKLSAgICAgICAgcmVuYW1lQ29sdW1uSW5UYWJsZShhdHRyaWJ1dGVkVGFi
bGVOYW1lLCBvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uLCBuZXdBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uQ29sdW1uKTsKLQotICAgIC8vIFVuYXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1l
YXN1cmVtZW50IGNhc2UuCi0gICAgYXV0byB1bmF0dHJpYnV0ZWRUYWJsZU5hbWUgPSAiVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci0gICAgYXV0byBmb3VuZFVuYXR0cmli
dXRlZFRhYmxlQ29sdW1ucyA9IGNvbHVtbnNGb3JUYWJsZSh1bmF0dHJpYnV0ZWRUYWJsZU5hbWUp
OwotCi0gICAgaWYgKGZvdW5kVW5hdHRyaWJ1dGVkVGFibGVDb2x1bW5zLmNvbnRhaW5zKG9sZEF0
dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4pKQotICAgICAgICByZW5hbWVDb2x1bW5JblRhYmxl
KHVuYXR0cmlidXRlZFRhYmxlTmFtZSwgb2xkQXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbiwg
bmV3QXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbik7Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdUYWJsZXNJZk5lY2Vzc2FyeSgpCiB7
CiAgICAgYXV0byBtaXNzaW5nVGFibGVzID0gY2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEo
KTsKQEAgLTc0OCw3ICs1NjMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKQogICAgICAgICBpZiAoc3Rh
dGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJF
cnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIE9ic2VydmVk
IERvbWFpbnMgdGFibGUuIik7CiAgICAgICAgICAgICBjbG9zZSgpOwotICAgICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKKyAgICAgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRmlsZVBhdGgpOwogICAgICAgICAgICAg
b3BlbklUUERhdGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTc2
MiwzNiArNTc3LDIwIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpCiAgICAgLy8gRklYTUU6IE1pZ3JhdGUg
b2xkIE9ic2VydmVkRG9tYWlucyBkYXRhIHRvIG5ldyB0YWJsZSBzY2hlbWEuCiAgICAgaWYgKGN1
cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMSgpICYmIGN1cnJlbnRT
Y2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMUFsdGVybmF0ZSgpKSB7CiAgICAg
ICAgIGNsb3NlKCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRGly
ZWN0b3J5UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRmls
ZVBhdGgpOwogICAgICAgICBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIC8vIFJlbmFtaW5nIGFuZCBhZGRpbmcgY29sdW1ucyBzaG91bGQgYmUgZG9uZSBi
ZWZvcmUgbWlncmF0aW5nIHRvIGF2b2lkIG1pc21hdGNoZWQgb3IgbWlzc2luZyBjb2x1bW5zLgot
ICAgIHJlbmFtZUNvbHVtbnNJZk5lY2Vzc2FyeSgpOwotICAgIGFkZE1pc3NpbmdDb2x1bW5zSWZO
ZWNlc3NhcnkoKTsKICAgICBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKIH0K
IAotU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnNjb3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBBU0NJSUxpdGVyYWwgcXVlcnksIGNvbnN0IFN0cmlu
ZyYgbG9nU3RyaW5nKSBjb25zdAotewotICAgIGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gc3RhdGVtZW50T3JFcnJvciA9IG1fZGF0YWJhc2UucHJlcGFyZUhlYXBTdGF0ZW1lbnQocXVl
cnkpOwotICAgICAgICBpZiAoIXN0YXRlbWVudE9yRXJyb3IpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjolcyBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUi
IFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBsb2dTdHJpbmcuYXNjaWkoKS5kYXRhKCksIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgeyB9Owot
ICAgICAgICB9Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudE9yRXJyb3IudmFsdWUoKS5t
b3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOwot
ICAgIH0KLSAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgeyBzdGF0ZW1l
bnQuZ2V0KCkgfTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aW50ZXJydXB0KCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmludGVycnVwdEFsbERhdGFiYXNlcygpCiB7Ci0gICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkp
Ci0gICAgICAgIG1fZGF0YWJhc2UuaW50ZXJydXB0KCk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgZm9yIChhdXRvIHN0b3JlIDogYWxsU3RvcmVzKCkpCisgICAgICAgIHN0
b3JlLT5pbnRlcnJ1cHQoKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aXNFbXB0eSgpIGNvbnN0CkBAIC04MjEsOSArNjIwLDcgQEAgYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlVW5pcXVlSW5kaWNlcygpCiAgICAg
ICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbykKICAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNv
bW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pCiAg
ICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4U3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucykKLSAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhl
Y3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcykKLSAgICAgICAgfHwg
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKLSAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNv
bW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
KSB7CisgICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUlu
ZGV4T3BlcmF0aW5nRGF0ZXMpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVVbmlxdWVJ
bmRpY2VzIGZhaWxlZCB0byBleGVjdXRlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC04OTksMTYgKzY5Niw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVtYSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGNyZWF0ZSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCB0YWJsZSBp
biBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlm
ICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVz
IiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBpZiAoIWNyZWF0ZVVuaXF1ZUluZGlj
ZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05NTYsMjEgKzc0Myw2IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRlc3Ryb3lTdGF0ZW1lbnRzKCkK
ICAgICBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKICAgICBtX29i
c2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CiAgICAgbV9yZW1vdmVBbGxE
YXRhU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2luc2VydFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2luc2VydEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9zZXRV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFN0YXRlbWVudCA9IG51
bGxwdHI7Ci0gICAgbV9jbGVhclVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rh
dGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2NsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2NsZWFyRXhwaXJlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2FsbFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAg
ICBtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCA9IG51bGxw
dHI7Ci0gICAgbV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2Zp
bmRBdHRyaWJ1dGVkU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX3VwZGF0ZUF0dHJpYnV0aW9u
c0VhcmxpZXN0VGltZVRvU2VuZFN0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9yZW1vdmVVbmF0
dHJpYnV0ZWRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1fbWFya1JlcG9ydEFzU2VudFRvU291
cmNlU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX21hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0
aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1l
bnQgPSBudWxscHRyOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBs
b2FkU3RhdGlzdGljcykKQEAgLTIyODcsNyArMjA1OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cygpCiAgICAgbV9kYXRh
YmFzZS5jbGVhckFsbFRhYmxlcygpOwogCiAgICAgaWYgKCFjcmVhdGVTY2hlbWEoKSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRzIGZhaWxlZCwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGly
ZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0
d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0
YWJhc2VDb250ZW50cyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklO
RyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZUZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMx
NTUsNTEzICsyOTI3LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QKICAgICB9CiB9CiAKLVBy
aXZhdGVDbGlja01lYXN1cmVtZW50IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VHlwZSBhdHRyaWJ1dGlvblR5cGUpCi17Ci0gICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0
RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDApKTsKLSAgICBh
dXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChz
dGF0ZW1lbnQtPmNvbHVtbkludCgxKSk7Ci0gICAgYXV0byBzb3VyY2VJRCA9IHN0YXRlbWVudC0+
Y29sdW1uSW50KDIpOwotICAgIGF1dG8gdGltZU9mQWRDbGljayA9IGF0dHJpYnV0aW9uVHlwZSA9
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0
YXRlbWVudC0+Y29sdW1uRG91YmxlKDUpIDogc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMyk7Ci0g
ICAgYXV0byB0b2tlbiA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KSA6
IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg0KTsKLSAgICBhdXRvIHNpZ25hdHVyZSA9IGF0dHJpYnV0
aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg4KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg1
KTsKLSAgICBhdXRvIGtleUlEID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDkpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDYpOwotCi0gICAgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgYXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZUlEKHNvdXJjZUlEKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGUoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFp
blN0cmluZyhzb3VyY2VTaXRlRG9tYWluKSksIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZShSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKGRlc3RpbmF0aW9uU2l0ZURvbWFp
bikpLCB7IH0sIHsgfSwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWVPZkFkQ2xpY2spKTsK
LSAgICAKLSAgICBpZiAoYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDMpOwotICAgICAgICBhdXRvIHByaW9y
aXR5ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNCk7Ci0gICAgICAgIGF1dG8gc291cmNlRWFybGll
c3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSg2KTsKLSAgICAgICAg
YXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID0gc3RhdGVtZW50LT5jb2x1
bW5Eb3VibGUoMTApOwotCi0gICAgICAgIGlmIChhdHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0x
KQotICAgICAgICAgICAgYXR0cmlidXRpb24uc2V0QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgeyBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpQcmlvcml0eShwcmlvcml0eSkgfSk7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25h
bDxXYWxsVGltZT4gc291cmNlRWFybGllc3RUaW1lVG9TZW5kOwotICAgICAgICBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKLSAgICAgICAgCi0g
ICAgICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRlcyB0aGF0IHRoZSByZXBvcnQgaGFzIGJl
ZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgotICAgICAgICBpZiAoc291cmNlRWFybGll
c3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCi0gICAgICAgICAgICBzb3VyY2VFYXJsaWVzdFRpbWVU
b1NlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc291cmNlRWFybGllc3RUaW1lVG9TZW5k
VmFsdWUpOwotCi0gICAgICAgIGlmIChkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVl
ID4gMC4wKQotICAgICAgICAgICAgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMoZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSk7
Ci0KLSAgICAgICAgYXR0cmlidXRpb24uc2V0VGltZXNUb1NlbmQoeyBzb3VyY2VFYXJsaWVzdFRp
bWVUb1NlbmQsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIH0pOwotICAgIH0KLQotICAg
IGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsgdG9rZW4sIHNpZ25hdHVyZSwga2V5
SUQgfSk7Ci0KLSAgICByZXR1cm4gYXR0cmlidXRpb247Ci19Ci0KLXN0ZDo6cGFpcjxzdGQ6Om9w
dGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25h
bDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25z
dCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGUmIGRlc3RpbmF0aW9uU2l0ZSkKLXsKLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW5JRCA9
IGRvbWFpbklEKHNvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4pOwotICAgIGF1dG8gZGVzdGlu
YXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChkZXN0aW5hdGlvblNpdGUucmVnaXN0cmFibGVE
b21haW4pOwotCi0gICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQpOwotCi0gICAgYXV0byBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50
ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudCwgZmlu
ZFVuYXR0cmlidXRlZFF1ZXJ5LCAiZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKLSAg
ICBpZiAoIWZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQKLSAgICAgICAgfHwgZmluZFVu
YXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklE
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVu
dC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSykgewot
ICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
ZmluZFVuYXR0cmlidXRlZFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZmluZEF0dHJpYnV0ZWRTdGF0ZW1lbnQsIGZp
bmRBdHRyaWJ1dGVkUXVlcnksICJmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOwotICAg
IGlmICghZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQKLSAgICAgICAgfHwgZmluZEF0dHJp
YnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0g
U1FMSVRFX09LCi0gICAgICAgIHx8IGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5k
SW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAg
IElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kQXR0
cmlidXRlZFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiB1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKLSAgICBpZiAo
ZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0g
ICAgICAgIHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gYnVpbGRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRy
aWJ1dGVkKTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7Ci0gICAgaWYgKGZpbmRB
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAg
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEZyb21EYXRhYmFzZShmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOwotCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOwotfQotCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCi17Ci0gICAgYXV0byB0
cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7Ci0KLSAgICBh
dXRvIHNvdXJjZURhdGEgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbihhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotICAgIGF1
dG8gYXR0cmlidXRpb25EZXN0aW5hdGlvbkRhdGEgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JSZWdpc3RyYWJsZURvbWFpbihhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3Ry
YWJsZURvbWFpbik7Ci0KLSAgICBpZiAoIXNvdXJjZURhdGEuc2Vjb25kIHx8ICFhdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uRGF0YS5zZWNvbmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIHNv
dXJjZVVubGlua2FibGVUb2tlbiA9IGF0dHJpYnV0aW9uLnNvdXJjZVVubGlua2FibGVUb2tlbigp
OwotICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRp
b24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCkuZGF0YSA6IC0xOwotICAgICAgICBh
dXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0
cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCkucHJpb3JpdHkgOiAtMTsK
LSAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1l
c1RvU2VuZCgpLnNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA/IGF0dHJpYnV0aW9uLnRpbWVzVG9T
ZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2go
KS52YWx1ZSgpIDogLTE7Ci0gICAgICAgIGF1dG8gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1Nl
bmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5kZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZC52YWx1ZSgpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSA6IC0xOwotCi0gICAgICAg
IC8vIFdlIHNob3VsZCBuZXZlciBiZSBpbnNlcnRpbmcgYW4gYXR0cmlidXRlZCBwcml2YXRlIGNs
aWNrIG1lYXN1cmVtZW50IHZhbHVlIGludG8gdGhlIGRhdGFiYXNlIHdpdGhvdXQgdmFsaWQgcmVw
b3J0IHRpbWVzLgotICAgICAgICBBU1NFUlQoc291cmNlRWFybGllc3RUaW1lVG9TZW5kICE9IC0x
ICYmIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kICE9IC0xKTsKLQotICAgICAgICBhdXRv
IHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChpbnNlcnRBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSk7Ci0gICAgICAgIGlmICghc3RhdGVtZW50Ci0g
ICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZURhdGEuc2Vjb25kKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgyLCAqYXR0cmli
dXRpb25EZXN0aW5hdGlvbkRhdGEuc2Vjb25kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IHN0YXRlbWVudC0+YmluZEludCgzLCBhdHRyaWJ1dGlvbi5zb3VyY2VJRCgpLmlkKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCg0LCBhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZElu
dCg1LCBwcmlvcml0eSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJp
bmREb3VibGUoNiwgYXR0cmlidXRpb24udGltZU9mQWRDbGljaygpLnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRE
b3VibGUoNywgc291cmNlRWFybGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
ICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoOCwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291
cmNlVW5saW5rYWJsZVRva2VuLT50b2tlbkJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNR
TElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg5LCBzb3VyY2VVbmxp
bmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnNpZ25hdHVyZUJhc2U2NFVSTCA6
IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5i
aW5kVGV4dCgxMCwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2Vu
LT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAg
ICAgfHwgc3RhdGVtZW50LT5iaW5kRG91YmxlKDExLCBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBzdGF0ZW1l
bnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoaW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSk7Ci0gICAgaWYgKCFzdGF0ZW1lbnQKLSAgICAgICAgfHwg
c3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VEYXRhLnNlY29uZCkgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgyLCAqYXR0cmlidXRpb25EZXN0aW5hdGlvbkRh
dGEuc2Vjb25kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDMs
IGF0dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0
ZW1lbnQtPmJpbmREb3VibGUoNCwgYXR0cmlidXRpb24udGltZU9mQWRDbGljaygpLnNlY29uZHNT
aW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+
YmluZFRleHQoNSwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2Vu
LT50b2tlbkJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDYsIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVu
bGlua2FibGVUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoNywgc291cmNlVW5saW5rYWJs
ZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3Ry
aW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1
ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBbGxV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKQot
ewotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fc2V0
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQsIHNl
dFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkUXVlcnksICJtYXJr
QWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5n
Il9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50IHx8IHNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtB
bGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3Rpbmcs
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0K
LQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVtb3ZlVW5hdHRy
aWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiBhdHRyaWJ1dGlvbikKLXsKLSAgICBhdXRv
IHNvdXJjZVNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5y
ZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRv
bWFpbklEKGF0dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsK
LQotICAgIGlmICghc291cmNlU2l0ZURvbWFpbklEIHx8ICFkZXN0aW5hdGlvblNpdGVEb21haW5J
RCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhp
cy0+c2NvcGVkU3RhdGVtZW50KG1fcmVtb3ZlVW5hdHRyaWJ1dGVkU3RhdGVtZW50LCByZW1vdmVV
bmF0dHJpYnV0ZWRRdWVyeSwgInJlbW92ZVVuYXR0cmlidXRlZCJfcyk7Ci0KLSAgICBpZiAoIXNj
b3BlZFN0YXRlbWVudAotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNv
dXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVu
dC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAg
ICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVVbmF0dHJpYnV0ZWQsIGVycm9yIG1lc3NhZ2U6
ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotc3RkOjpvcHRpb25h
bDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0
YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50KGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IEF0dHJp
YnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQotewotICAgIC8vIFdlIHNob3VsZCBhbHdh
eXMgY2xlYXIgZXhwaXJlZCBjbGlja3MgZnJvbSB0aGUgZGF0YWJhc2UgYmVmb3JlIHNjaGVkdWxp
bmcgYW4gYXR0cmlidXRpb24uCi0gICAgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKTsKLQotICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3QgYW4gaW52YWxpZCBh
dHRyaWJ1dGlvbi4iKTsKLSAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gR290IGFuIGludmFsaWQgYXR0cmlidXRp
b24uIl9zKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0K
LQotICAgIGF1dG8gZGF0YSA9IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGF0YTsKLSAgICBhdXRv
IHByaW9yaXR5ID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5wcmlvcml0eTsKLQotICAgIGlmIChV
TkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lORk8o
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3QgYW4gYXR0cmlidXRpb24gd2l0aCBhdHRyaWJ1
dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAle3B1YmxpY311LiIs
IGRhdGEsIHByaW9yaXR5KTsKLSAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpJbmZv
LCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gR290IGFuIGF0dHJpYnV0
aW9uIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJp
b3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJy4iX3MpKTsKLSAgICB9Ci0KLSAgICBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSBzZWNvbmRzVW50
aWxTZW5kIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKLQotICAgIGF1dG8gYXR0cmli
dXRpb24gPSBmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRp
b25TaXRlKTsKLSAgICBhdXRvJiBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkID0gYXR0cmlidXRpb24u
Zmlyc3Q7Ci0gICAgYXV0byYgcHJldmlvdXNseUF0dHJpYnV0ZWQgPSBhdHRyaWJ1dGlvbi5zZWNv
bmQ7Ci0KLSAgICBpZiAocHJldmlvdXNseVVuYXR0cmlidXRlZCkgewotICAgICAgICAvLyBBbHdh
eXMgY29udmVydCB0aGUgcGVuZGluZyBhdHRyaWJ1dGlvbiBhbmQgcmVtb3ZlIGl0IGZyb20gdGhl
IHVuYXR0cmlidXRlZCBtYXAuCi0gICAgICAgIHJlbW92ZVVuYXR0cmlidXRlZCgqcHJldmlvdXNs
eVVuYXR0cmlidXRlZCk7Ci0gICAgICAgIHNlY29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5VW5h
dHRyaWJ1dGVkLnZhbHVlKCkuYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdURk1v
dmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkpOwotCi0gICAgICAgIC8vIFdlIHNob3VsZCBhbHdh
eXMgaGF2ZSBhIHZhbGlkIHNlY29uZHNVbnRpbFNlbmQgdmFsdWUgZm9yIGEgcHJldmlvdXNseVVu
YXR0cmlidXRlZCB2YWx1ZSBiZWNhdXNlIHRoZXJlIGNhbiBiZSBubyBwcmV2aW91cyBhdHRyaWJ1
dGlvbiB3aXRoIGEgaGlnaGVyIHByaW9yaXR5LgotICAgICAgICBpZiAoIXNlY29uZHNVbnRpbFNl
bmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQ29udmVy
dGVkIGEgc3RvcmVkIGFkIGNsaWNrIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAle3B1
YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dS4iLCBkYXRhLCBwcmlvcml0eSk7Ci0gICAg
ICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJ0ZWQgYSBzdG9yZWQgYWQgY2xpY2sgd2l0aCBh
dHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJf
cywgcHJpb3JpdHksICInLiJfcykpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gcHJldmlvdXMgYXR0cmlidXRpb24sIG9yIHRoZSBuZXcgYXR0cmlidXRpb24gaGFzIGhp
Z2hlciBwcmlvcml0eSwgaW5zZXJ0L3VwZGF0ZSB0aGUgZGF0YWJhc2UuCi0gICAgICAgIGlmICgh
cHJldmlvdXNseUF0dHJpYnV0ZWQgfHwgcHJldmlvdXNseVVuYXR0cmlidXRlZC52YWx1ZSgpLmhh
c0hpZ2hlclByaW9yaXR5VGhhbigqcHJldmlvdXNseUF0dHJpYnV0ZWQpKSB7Ci0gICAgICAgICAg
ICBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKCpwcmV2aW91c2x5VW5hdHRy
aWJ1dGVkKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0
ZWQpOwotCi0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
ICJSZXBsYWNlZCBhIHByZXZpb3VzbHkgY29udmVydGVkIGFkIGNsaWNrIHdpdGggYSBuZXcgb25l
IHdpdGggYXR0cmlidXRpb24gZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGlj
fXUgYmVjYXVzZSBpdCBoYWQgaGlnaGVyIHByaW9yaXR5LiIsIGRhdGEsIHByaW9yaXR5KTsKLSAg
ICAgICAgICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmco
IltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZXBsYWNlZCBhIHByZXZpb3VzbHkgY29udmVy
dGVkIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRh
OiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJyBiZWNhdXNl
IGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIl9zKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKHByZXZpb3VzbHlBdHRyaWJ1dGVkKSB7Ci0gICAgICAgIC8vIElmIHdl
IGhhdmUgbm8gbmV3IGF0dHJpYnV0aW9uLCByZS1hdHRyaWJ1dGUgdGhlIG9sZCBvbmUgdG8gcmVz
cGVjdCB0aGUgbmV3IHByaW9yaXR5LCBidXQgb25seSBpZiB0aGlzIHJlcG9ydCBoYXMKLSAgICAg
ICAgLy8gbm90IGJlZW4gc2VudCB0byB0aGUgc291cmNlIG9yIGRlc3RpbmF0aW9uIHNpdGUgeWV0
LgotICAgICAgICBpZiAoIXByZXZpb3VzbHlBdHRyaWJ1dGVkLnZhbHVlKCkuaGFzUHJldmlvdXNs
eUJlZW5SZXBvcnRlZCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSBw
cmV2aW91c2x5QXR0cmlidXRlZC52YWx1ZSgpLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRv
U2VuZChXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKLSAgICAgICAgICAgIGlmICgh
c2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgICAgICBpbnNlcnRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKCpwcmV2aW91c2x5QXR0cmlidXRlZCksIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKLQotICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiUmUtY29udmVydGVk
IGFuIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRh
OiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dSBiZWNhdXNlIGl0IGhhZCBoaWdo
ZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOwotICAgICAgICAgICAgICAgIGRlYnVnQnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnRdIFJlLWNvbnZlcnRlZCBhbiBhZCBjbGljayB3aXRoIGEgbmV3IG9uZSB3aXRoIGF0dHJp
YnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBw
cmlvcml0eSwgIicnIGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iX3MpKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5o
YXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgIHJldHVybiBzZWNvbmRzVW50aWxTZW5kOwotfQotCi1WZWN0b3I8V2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQotewotICAgIGF1
dG8gYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2Fs
bEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgYWxsQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nIl9zKTsKLQotICAgIGlmICghYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgewotICAg
ICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5n
LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+IGF0dHJpYnV0aW9uczsKLSAgICB3aGlsZSAoYXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIGF0dHJpYnV0aW9ucy5hcHBlbmQo
YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShhdHRyaWJ1dGVkU2NvcGVk
U3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6
QXR0cmlidXRlZCkpOwotCi0gICAgcmV0dXJuIGF0dHJpYnV0aW9uczsKLX0KLQotdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW4pCi17Ci0gICAgLy8g
RGVmYXVsdCB0byBjbGVhciBhbGwgZW50cmllcyBpZiBubyBkb21haW4gaXMgc3BlY2lmaWVkLgot
ICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyID0gIiUiOwotICAgIGlmIChkb21haW4pIHsKLSAgICAg
ICAgYXV0byBkb21haW5JRFRvTWF0Y2ggPSBkb21haW5JRCgqZG9tYWluKTsKLSAgICAgICAgaWYg
KCFkb21haW5JRFRvTWF0Y2gpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYmluZFBh
cmFtZXRlciA9IFN0cmluZzo6bnVtYmVyKCpkb21haW5JRFRvTWF0Y2gpOwotICAgIH0KLQotICAg
IGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwot
Ci0gICAgYXV0byBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3Bl
ZFN0YXRlbWVudChtX2NsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0
ZW1lbnQsIGNsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNs
ZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOwotCi0gICAgaWYgKCFjbGVhclVuYXR0cmli
dXRlZFNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudC0+YmluZFRleHQoMSwgYmluZFBhcmFtZXRlcikgIT0gU1FMSVRFX09LCi0gICAgICAg
IHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBiaW5kUGFy
YW1ldGVyKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRT
dGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9M
T0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50IGNsZWFyVW5hdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Ci0KLSAgICBhdXRvIGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRo
aXMtPnNjb3BlZFN0YXRlbWVudChtX2NsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RhdGVtZW50LCBjbGVhckF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5
LCAiY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7Ci0KLSAgICBpZiAoIWNsZWFyQXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRT
dGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGJpbmRQYXJh
bWV0ZXIpICE9IFNRTElURV9PSwotICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0
ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0df
RVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVh
ckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCi17Ci0gICAgYXV0byBleHBpcmF0aW9u
VGltZUZyYW1lID0gV2FsbFRpbWU6Om5vdygpIC0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6Om1heEFnZSgpOwotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVk
U3RhdGVtZW50KG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQs
IGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJjbGVhckV4cGlyZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7Ci0KLSAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAot
ICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmREb3VibGUoMSwgZXhwaXJhdGlvblRpbWVG
cmFtZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBf
UkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi1T
dHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0aW9uVG9T
dHJpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQsIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKLXsKLSAgICBhdXRvIHNv
dXJjZVNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50LT5j
b2x1bW5JbnQoMCkpOwotICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluID0gZ2V0RG9tYWlu
U3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDEpKTsKLSAgICBhdXRvIHNv
dXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMik7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoIlNvdXJjZSBzaXRlOiAiLCBzb3VyY2VTaXRlRG9t
YWluLCAiXG5BdHRyaWJ1dGUgb24gc2l0ZTogIiwgZGVzdGluYXRpb25TaXRlRG9tYWluLCAiXG5T
b3VyY2UgSUQ6ICIsIHNvdXJjZUlEKTsKLQotICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKLSAgICAg
ICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMyk7
Ci0gICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCg0KTsKLSAgICAg
ICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCg2KTsKLQot
ICAgICAgICBpZiAoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSAhPSAtMSkgewotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIlxuQXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAiLCBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLCAiXG5BdHRyaWJ1dGlvbiBwcmlvcml0eTogIiwgcHJpb3JpdHksICJcbkF0
dHJpYnV0aW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogIik7Ci0gICAgICAgICAgICBpZiAoZWFy
bGllc3RUaW1lVG9TZW5kID09IC0xKQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJO
b3Qgc2V0Iik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdXRvIHNlY29u
ZHNVbnRpbFNlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZWFybGllc3RUaW1lVG9TZW5k
KSAtIFdhbGxUaW1lOjpub3coKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgoc2Vj
b25kc1VudGlsU2VuZCA+PSAyNF9oICYmIHNlY29uZHNVbnRpbFNlbmQgPD0gNDhfaCkgPyAiV2l0
aGluIDI0LTQ4IGhvdXJzIiA6ICJPdXRzaWRlIDI0LTQ4IGhvdXJzIik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuTm8gYXR0cmli
dXRpb24gdHJpZ2dlciBkYXRhLiIpOwotICAgIH0gZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7Ci0gICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1TdHJpbmcgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9TdHJpbmcoKQotewotICAgIGF1dG8gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3Rz
ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgKFNFTEVDVCBDT1VOVCgqKSBG
Uk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSBhcyBjbnQxLCAoU0VMRUNU
IENPVU5UKCopIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSBhcyBjbnQy
Il9zKTsKLSAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cyB8fCBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFFeGlzdHMtPmNvbHVtbkludCgwKSAmJiAhcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhp
c3RzLT5jb2x1bW5JbnQoMSkpCi0gICAgICAgIHJldHVybiAiXG5ObyBzdG9yZWQgUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudCBkYXRhLlxuIl9zOwotCi0gICAgYXV0byB1bmF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9hbGxVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1N0YXRlbWVudCwgYWxsVW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNRdWVyeSwgInByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9TdHJpbmciX3MpOwotCi0gICAgaWYgKCF1bmF0dHJpYnV0ZWRTY29wZWRTdGF0
ZW1lbnQpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUb1N0cmluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdW5hdHRyaWJ1dGVkTnVtYmVyID0gMDsKLSAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgd2hpbGUgKHVuYXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgY29uc3QgY2hhciogcHJlZml4
ID0gdW5hdHRyaWJ1dGVkTnVtYmVyID8gIiIgOiAiVW5hdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRzOiI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHByZWZpeCwgIlxuV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKyt1bmF0dHJpYnV0ZWROdW1iZXIsICdcbics
Ci0gICAgICAgICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nKHVuYXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0
cmlidXRlZCkpOwotICAgIH0KLQotICAgIGF1dG8gYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9
IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0YXRlbWVudCwgYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnks
ICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIl9zKTsKLQotICAgIGlmICghYXR0cmli
dXRlZFNjb3BlZFN0YXRlbWVudCkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVkTnVtYmVy
ID0gMDsKLSAgICB3aGlsZSAoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNR
TElURV9ST1cpIHsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVkTnVtYmVyKQotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQodW5hdHRyaWJ1dGVkTnVtYmVyID8gIlxuIiA6ICIiLCAiQXR0cmlidXRl
ZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50czoiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
IlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKythdHRyaWJ1dGVkTnVtYmVy
ICsgdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAotICAgICAgICAgICAgYXR0cmlidXRpb25Ub1N0
cmluZyhhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkpOwotICAgIH0KLSAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwotfQotCi1zdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVhcmxpZXN0VGltZXNU
b1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9u
KQotewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24u
c291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0
cmFibGVEb21haW4pOwotCi0gICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQpOwotCi0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5z
Y29wZWRTdGF0ZW1lbnQobV9lYXJsaWVzdFRpbWVzVG9TZW5kU3RhdGVtZW50LCBlYXJsaWVzdFRp
bWVzVG9TZW5kUXVlcnksICJlYXJsaWVzdFRpbWVzVG9TZW5kIl9zKTsKLQotICAgIGlmICghc2Nv
cGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291
cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjplYXJsaWVzdFRpbWVzVG9TZW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9H
X1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1l
VG9TZW5kPiBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPiBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0
aW9uOwotICAgIAotICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRlcyB0aGF0IHRoZSByZXBv
cnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgotICAgIGlmIChzY29wZWRT
dGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgwKSA+IDAuMCkKLSAgICAgICAgZWFybGllc3RUaW1lVG9T
ZW5kVG9Tb3VyY2UgPSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgwKTsKLSAgICAKLSAg
ICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMSkgPiAwLjApCi0gICAgICAgIGVh
cmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gPSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRv
dWJsZSgxKTsKLSAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZWFybGllc3RUaW1lVG9T
ZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24pOwotfQotCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrUmVwb3J0QXNTZW50VG9T
b3VyY2UoU291cmNlRG9tYWluSUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFp
bklEIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotewotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50
ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVt
ZW50LCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VRdWVyeSwgIm1hcmtSZXBvcnRBc1NlbnRUb1Nv
dXJjZSJfcyk7Ci0KLSAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBzY29wZWRT
dGF0ZW1lbnQtPmJpbmRJbnQoMSwgc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2Us
IGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrUmVwb3J0QXNTZW50VG9E
ZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCBzb3VyY2VTaXRlRG9tYWluSUQsIERlc3RpbmF0aW9u
RG9tYWluSUQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi17Ci0gICAgYXV0byBzY29wZWRTdGF0
ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9tYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5h
dGlvblN0YXRlbWVudCwgbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25RdWVyeSwgIm1hcmtS
ZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uIl9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50
Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCBzb3VyY2VTaXRlRG9tYWlu
SUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwg
ZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRT
dGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtS
ZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NU
UklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVw
b3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkKLXsgICAgCi0gICAgYXV0byB0
aW1lc1RvU2VuZCA9IGVhcmxpZXN0VGltZXNUb1NlbmQoYXR0cmlidXRpb24pOwotICAgIGF1dG8g
c291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gdGltZXNUb1NlbmQuZmlyc3Q7Ci0gICAgYXV0byBk
ZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IHRpbWVzVG9TZW5kLnNlY29uZDsKLQotICAg
IGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0
ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
ID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21h
aW4pOwotCi0gICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzd2l0Y2ggKGF0dHJpYnV0aW9uUmVwb3J0
RW5kcG9pbnQpIHsKLSAgICBjYXNlIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blJlcG9ydEVuZHBvaW50OjpTb3VyY2U6Ci0gICAgICAgIGlmICghc291cmNlRWFybGllc3RUaW1l
VG9TZW5kKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoKnNv
dXJjZVNpdGVEb21haW5JRCwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKTsKLSAgICAgICAgc291
cmNlRWFybGllc3RUaW1lVG9TZW5kID0gc3RkOjpudWxsb3B0OwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
OjpEZXN0aW5hdGlvbjoKLSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZCkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oKnNv
dXJjZVNpdGVEb21haW5JRCwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKTsKLSAgICAgICAgZGVz
dGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAg
Ly8gRG9uJ3QgY2xlYXIgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBkYXRhYmFzZSB1bmxlc3MgaXQg
aGFzIGJlZW4gcmVwb3J0ZWQgYm90aCB0byB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBzaXRl
LgotICAgIGlmIChkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCB8fCBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY2xlYXJBdHRyaWJ1dGVk
U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJERUxFVEUgRlJPTSBBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0g
PyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zKTsKLSAgICBpZiAoIWNsZWFyQXR0
cmlidXRlZFN0YXRlbWVudAotICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQtPmJp
bmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGNs
ZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQtPnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVh
clNlbnRBdHRyaWJ1dGlvbiBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
c0FzRXhwaXJlZEZvclRlc3RpbmcoKQotewotICAgIGF1dG8gZXhwaXJlZFRpbWVUb1NlbmQgPSBX
YWxsVGltZTo6bm93KCkgLSAxX2g7Ci0KLSAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdp
blRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAgIGF1dG8gZWFybGllc3RUaW1lVG9TZW5k
VG9Tb3VyY2VTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlVQREFURSBB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIGVhcmxpZXN0VGltZVRvU2VuZFRv
U291cmNlID0gPyJfcyk7Ci0gICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9u
U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJVUERBVEUgQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0
aW9uID0gbnVsbCJfcyk7Ci0KLSAgICBpZiAoIWVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3Rh
dGVtZW50Ci0gICAgICAgIHx8IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50LT5i
aW5kSW50KDEsIGV4cGlyZWRUaW1lVG9TZW5kLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkg
IT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VS
Uk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci0KLSAgICBpZiAoIWVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb25TdGF0ZW1lbnQgfHwg
ZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElU
RV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTog
JSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi1TY29wZUV4aXQ8RnVu
Y3Rpb248dm9pZCgpPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmJlZ2lu
VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpCi17Ci0gICAgaWYgKG1fdHJhbnNhY3Rpb24uaW5Qcm9n
cmVzcygpKQotICAgICAgICByZXR1cm4gbWFrZVNjb3BlRXhpdChGdW5jdGlvbjx2b2lkKCk+IHsg
W10geyB9IH0pOwotCi0gICAgbV90cmFuc2FjdGlvbi5iZWdpbigpOwotICAgIHJldHVybiBtYWtl
U2NvcGVFeGl0KEZ1bmN0aW9uPHZvaWQoKT4geyBbdGhpc10gewotICAgICAgICBtX3RyYW5zYWN0
aW9uLmNvbW1pdCgpOwotICAgIH0gfSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgSVRQX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDM1MTI5ODY4Mzg3MWM3ZWJkM2NhNzk0OWIwNThi
NDM4MDUxZGViMTEuLjViNWVhMjY3ODNmNjFhZDJlMDFkNGQ0Mzg2MmEwODlmYTBhOTE5OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
CkBAIC0yNywyMSArMjcsMTYgQEAKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAKKyNpbmNsdWRlICJEYXRhYmFzZVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0
aW9uLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgotI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIFNRTGl0ZURhdGFiYXNlOwotY2xhc3MgU1FMaXRlU3RhdGVtZW50OwogZW51bSBjbGFzcyBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKQEAg
LTU2LDM0ICs1MSwyMiBAQCBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8dW5zaWduZWQsIG51
bWJlck9mQnVja2V0c1BlclN0YXRpc3RpYz4gYnVja2V0U2l6ZXMgewogY2xhc3MgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOwogCi11c2luZyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKLXVzaW5nIFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiB1c2lu
ZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGU7CiB1c2luZyBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZTsKIHVzaW5nIEF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25UcmlnZ2VyRGF0YTsKLXVzaW5nIEV4aXN0aW5nQ29sdW1ucyA9IFZlY3RvcjxTdHJp
bmc+OwotdXNpbmcgRXhwZWN0ZWRDb2x1bW5zID0gVmVjdG9yPFN0cmluZz47Ci11c2luZyBFeGlz
dGluZ0NvbHVtbk5hbWUgPSBTdHJpbmc7Ci11c2luZyBFeHBlY3RlZENvbHVtbk5hbWUgPSBTdHJp
bmc7Ci11c2luZyBTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBkb3VibGU7Ci11c2luZyBEZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IGRvdWJsZTsKLXVzaW5nIFNvdXJjZURvbWFpbklE
ID0gdW5zaWduZWQ7Ci11c2luZyBEZXN0aW5hdGlvbkRvbWFpbklEID0gdW5zaWduZWQ7CiAKIHR5
cGVkZWYgc3RkOjpwYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZElu
ZGV4UGFpcjsKIAogLy8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJv
eWVkIG9uIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1
ZXVlLgotY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUgZmluYWwgOiBw
dWJsaWMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHsKK2NsYXNzIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSwgcHVibGljIERhdGFiYXNlVXRpbGl0aWVzIHsKIHB1YmxpYzoKICAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUmLCBTdXNwZW5kYWJsZVdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0
IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB+UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoKTsKIAotICAgIHN0YXRpYyBIYXNoU2V0
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKj4mIGFsbFN0b3JlcygpOwogICAg
IHZvaWQgcG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwpAQCAtMTQwLDE4ICsxMjMsOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBkb21haW5JREV4aXN0c0luRGF0YWJhc2UoaW50KTsKICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxTdHJpbmc+PiBjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVtYSgpOwogICAg
IHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFzVXNl
ckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWws
IGJvb2wgaXNQcmV2YWxlbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgaW50ZXJydXB0KCk7Ci0KLSAg
ICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50LgotICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFy
a0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGlu
ZygpIG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IGF0dHJpYnV0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJikgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4pIG92ZXJyaWRlOwotICAgIHZvaWQg
Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSBvdmVycmlkZTsKLSAgICBTdHJp
bmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkgb3ZlcnJpZGU7CisgICAgc3RhdGljIHZvaWQgaW50
ZXJydXB0QWxsRGF0YWJhc2VzKCk7CisKICAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5zRm9yVGFi
bGUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CkBAIC0xNjQsMTkgKzEzNywxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgYWRkTWlzc2luZ1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBt
aXNzaW5nVW5pcXVlSW5kaWNlcygpOwogICAgIGJvb2wgbmVlZHNVcGRhdGVkU2NoZW1hKCk7Ci0g
ICAgYm9vbCBuZWVkc1VwZGF0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFNjaGVtYSgpOwotICAg
IHZvaWQgcmVuYW1lQ29sdW1uSW5UYWJsZShTdHJpbmcmJiwgRXhpc3RpbmdDb2x1bW5OYW1lJiYs
IEV4cGVjdGVkQ29sdW1uTmFtZSYmKTsKLSAgICB2b2lkIGFkZE1pc3NpbmdDb2x1bW5zVG9UYWJs
ZShTdHJpbmcmJiwgY29uc3QgRXhpc3RpbmdDb2x1bW5zJiwgY29uc3QgRXhwZWN0ZWRDb2x1bW5z
Jik7Ci0gICAgdm9pZCBhZGRNaXNzaW5nQ29sdW1uc0lmTmVjZXNzYXJ5KCk7Ci0gICAgdm9pZCBy
ZW5hbWVDb2x1bW5zSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lkIHJlbmFtZUNvbHVtbkluVGFibGUo
KTsKICAgICBUYWJsZUFuZEluZGV4UGFpciBjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFNjaGVt
YUlmTmVjZXNzYXJ5KCk7Ci0gICAgdm9pZCBlbmFibGVGb3JlaWduS2V5cygpOwogICAgIGJvb2wg
bWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCk7CiAgICAgdm9pZCBtaWdyYXRlRGF0
YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lkIGRlc3Ryb3lTdGF0ZW1lbnRzKCk7
Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgc2NvcGVkU3RhdGVt
ZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+JiwgQVNDSUlMaXRl
cmFsLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2b2lkIGRlc3Ryb3lTdGF0ZW1lbnRzKCkg
ZmluYWw7CiAKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJhbWVEb21haW4m
LCBjb25zdCBTdWJGcmFtZURvbWFpbiYpIGNvbnN0OwogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBn
ZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CkBAIC0yMDEsMTAgKzE2NSw2IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRlcmFj
dGlvbkFzRmlyc3RQYXJ0eSgpIGNvbnN0OwogICAgIEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1
YlJlc291cmNlRG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MoKSBjb25zdDsKIAotICAg
IHZvaWQgbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oU291cmNlRG9tYWluSUQsIERlc3Rp
bmF0aW9uRG9tYWluSUQpOwotICAgIHZvaWQgbWFya1JlcG9ydEFzU2VudFRvU291cmNlKFNvdXJj
ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEKTsKLSAgICBzdGQ6OnBhaXI8c3RkOjpvcHRp
b25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9u
RWFybGllc3RUaW1lVG9TZW5kPj4gZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOwotCiAgICAgc3RydWN0IERvbWFpbkRhdGEgewogICAg
ICAgICB1bnNpZ25lZCBkb21haW5JRDsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0
cmFibGVEb21haW47CkBAIC0yNTMsMjAgKzIxMywxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNE
YXRhYmFzZVN0b3JlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBj
cmVhdGVVbmlxdWVJbmRpY2VzKCk7Ci0gICAgYm9vbCBjcmVhdGVTY2hlbWEoKTsKKyAgICBib29s
IGNyZWF0ZVNjaGVtYSgpIGZpbmFsOwogICAgIFN0cmluZyBlbnN1cmVBbmRNYWtlRG9tYWluTGlz
dChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8
V2FsbFRpbWU+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKGNvbnN0IERvbWFpbkRhdGEm
KTsKLSAgICAKLSAgICB2b2lkIHJlbW92ZVVuYXR0cmlidXRlZChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYpOwotICAgIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IGJ1
aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50KiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwotICAgIFN0
cmluZyBhdHRyaWJ1dGlvblRvU3RyaW5nKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKLSAgICBzdGQ6OnBhaXI8c3RkOjpv
cHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9u
YWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gZmluZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VT
aXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlJik7Ci0KLSAgICBTY29wZUV4aXQ8RnVuY3Rpb248dm9pZCgpPj4gV0FS
Tl9VTlVTRURfUkVUVVJOIGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwogCi0gICAgY29u
c3QgU3RyaW5nIG1fc3RvcmFnZURpcmVjdG9yeVBhdGg7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlVHJh
bnNhY3Rpb24gbV90cmFuc2FjdGlvbjsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRlbWVudDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2luc2VydE9ic2Vy
dmVkRG9tYWluU3RhdGVtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+IG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQ7CkBAIC0zMDQsMjEgKzI1
NCw2IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50OwogICAgIG11dGFi
bGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9vYnNlcnZlZERv
bWFpbnNFeGlzdHNTdGF0ZW1lbnQ7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50PiBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2VhcmxpZXN0VGlt
ZXNUb1NlbmRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4gbV9pbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRl
bWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lu
c2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3NldFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX2NsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1N0YXRlbWVudDsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2FsbEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX2ZpbmRVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9maW5kQXR0cmlidXRlZFN0YXRl
bWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3Vw
ZGF0ZUF0dHJpYnV0aW9uc0VhcmxpZXN0VGltZVRvU2VuZFN0YXRlbWVudDsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3JlbW92ZVVuYXR0cmlidXRlZFN0
YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X21hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZVN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX21hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9u
U3RhdGVtZW50OwogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9vbCBt
X2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggYTc3
ZTA5ODBhZWEzZDI2NWExNmExODUyNGI0N2VlY2JjYmIzYzY5Ny4uM2Q3Zjc1YTAxNjA0ZmU2ZTE4
NGJkZWUwYTgzYTI5NmEyOGI4MGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtMTA3LDE3ICsxMDcsNiBAQCBwdWJsaWM6CiAgICAg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBhbGxEb21haW5zKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYXNVc2Vy
SW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwg
Ym9vbCBpc1ByZXZhbGVudCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50IGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgSVRQIG1lbW9yeSBzdG9yZS4KLSAgICB2
b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBvdmVy
cmlkZSB7IH07Ci0gICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkgb3ZlcnJpZGUgeyB9OwotICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1Vu
dGlsU2VuZERhdGE+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSBv
dmVycmlkZSB7IHJldHVybiB7IH07IH07Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSBvdmVy
cmlkZSB7IHJldHVybiB7IH07IH07Ci0gICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVycmlkZSB7IH07Ci0gICAg
dm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlIHsgfTsK
LSAgICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpIG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9OwotICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpIG92ZXJyaWRlIHsgfTsKLSAgICB2b2lk
IG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGlu
ZygpIG92ZXJyaWRlIHsgfTsKLQogcHJpdmF0ZToKICAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3Bl
cmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CiAgICAgY29uc3QgVmVjdG9yPE9wZXJh
dGluZ0RhdGU+JiBvcGVyYXRpbmdEYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nRGF0
ZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAyNDIy
ZmM4NGY1NGVlN2NkMzBlZTQwZjE0MjA0MmQ0MWViZjUxYjNmLi5jMWVkZjU2ZDM1YmJiNjczODhi
NzczMzU0NGQ0ZTExZmViNjc3MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCkBAIC0yMDIsMTcgKzIwMiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJPcGVyYXRpbmdEYXRlcygpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzU3RhdGlzdGlj
c0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGlu
Z0RhdGVzV2luZG93KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVt
YmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBp
c1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sKSA9IDA7Ci0gICAgCi0g
ICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4KLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQm
JiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBp
cmVkRm9yVGVzdGluZygpID0gMDsKLSAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+
IGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJikgPSAwOwotICAgIHZp
cnR1YWwgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4p
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0
cmluZygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVJbXBvcnRh
bmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNGRiODA3YTdkOWQ3
MDU0MDFlZDU5YTZjZWVlMmFkN2IyNDA2Nzc0MC4uOWQzM2VjZWNiNGY4NzFkYWRiOTVmZDRjMDJl
ZTVjZWY2MTIwNTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTE1MCwxMSArMTUwLDIzIEBAIHN0YXRpYyBSZWY8U3VzcGVuZGFibGVX
b3JrUXVldWU+IHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpCiAgICAgcmV0dXJuIHF1ZXVlLmdldCgp
LmNvcHlSZWYoKTsKIH0KIAotV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBj
b25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3VsZEluY2x1
ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCitzdGF0aWMgU3RyaW5nIHBjbVN0b3JlRGlyZWN0
b3J5KGNvbnN0IE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5KQoreworICAgIGlmIChzZXNzaW9uLnNlc3Npb25JRCgpLmlz
RXBoZW1lcmFsKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIXByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4gcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKK30KKworV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24m
IG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0
b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKQogICAgIDogbV9uZXR3
b3JrU2Vzc2lvbihtYWtlV2Vha1B0cihuZXR3b3JrU2Vzc2lvbikpCiAgICAgLCBtX3N0YXRpc3Rp
Y3NRdWV1ZShzaGFyZWRTdGF0aXN0aWNzUXVldWUoKSkKICAgICAsIG1fZGFpbHlUYXNrc1RpbWVy
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cGVyZm9ybURhaWx5VGFza3MpCiAgICAgLCBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFsKQorICAg
ICwgbV9wY21TdG9yZShQQ006OlN0b3JlOjpjcmVhdGUocGNtU3RvcmVEaXJlY3RvcnkobmV0d29y
a1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSkpKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtMTg2LDkgKzE5OCw5IEBAIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6fldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCiAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fc3RhdGlzdGljc1N0b3JlKTsKIH0KIAotUmVmPFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZT4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoTmV0
d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNF
cGhlbWVyYWwpCitSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Np
b24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgY29uc3Qg
U3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9u
LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0
LCBpc0VwaGVtZXJhbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZShuZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0LCBpc0VwaGVtZXJhbCkpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6ZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIwMSw2ICsyMTMsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9u
KENvbXBsZXRpb25IYW5kbGVyPAogCiAgICAgbV9uZXR3b3JrU2Vzc2lvbiA9IG51bGxwdHI7CiAg
ICAgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0pOworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5jbG9zZShbY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiBpbmxpbmUgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCkBAIC0x
NDQ2LDExICsxNDU5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFn
Z3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YShDb21wbGV0aW9uSGFuZGxlcjwKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCktPnN1c3BlbmQoW10oKSBtdXRhYmxlIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZVN0b3JlIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmFsbFN0b3JlcygpKQotICAgICAgICAgICAgZGF0YWJhc2VTdG9yZS0+aW50
ZXJydXB0KCk7Ci0gICAgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNoYXJl
ZFN0YXRpc3RpY3NRdWV1ZSgpLT5zdXNwZW5kKFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSgpCkBA
IC0xNDcxLDE5MSArMTQ4MCw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpCiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbnNlcnRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCi17Ci0g
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgYXR0cmlidXRpb24gPSBXVEZN
b3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRpb25UeXBlXSgpIG11dGFibGUgewotICAgICAgICBp
ZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1f
c3RhdGlzdGljc1N0b3JlLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKGF0
dHJpYnV0aW9uKSwgYXR0cmlidXRpb25UeXBlKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgcG9zdFRhc2soW3RoaXNdKCkgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5tYXJrQWxs
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphdHRy
aWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxN
ZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRh
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgc291
cmNlU2l0ZSA9IHNvdXJjZVNpdGUuaXNvbGF0ZWRDb3B5KCksIGRlc3RpbmF0aW9uU2l0ZSA9IGRl
c3RpbmF0aW9uU2l0ZS5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdU
Rk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIGVwaGVtZXJhbE1lYXN1cmVtZW50ID0gV1RG
TW92ZShlcGhlbWVyYWxNZWFzdXJlbWVudCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNz
U3RvcmUpIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSW5zZXJ0IGVwaGVtZXJhbCBt
ZWFzdXJlbWVudCByaWdodCBiZWZvcmUgYXR0cmlidXRpb24uCi0gICAgICAgIGlmIChlcGhlbWVy
YWxNZWFzdXJlbWVudCkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXBoZW1lcmFsTWVh
c3VyZW1lbnQtPmlzRXBoZW1lcmFsKCkpOwotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUt
Pmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoKmVwaGVtZXJhbE1lYXN1cmVt
ZW50KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRl
ZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIHNlY29uZHMgPSBtX3N0YXRpc3RpY3NTdG9y
ZS0+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRp
b25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKLSAgICAgICAgcG9zdFRh
c2tSZXBseShbc2Vjb25kcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlY29u
ZHMpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAg
IGlmIChpc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGNvbnZlcnRl
ZEF0dHJpYnV0aW9ucyA9IG1fc3RhdGlzdGljc1N0b3JlLT5hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKTsKLSAgICAgICAgcG9zdFRhc2tSZXBseShbY29udmVydGVkQXR0cmli
dXRpb25zID0gV1RGTW92ZShjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMpKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHBvc3RUYXNrKFt0aGlzXSgpIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om51bGxvcHQpOwotICAgIH0pOwotfQotICAgIAot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhl
bWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9
IGRvbWFpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRp
c3RpY3NTdG9yZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3N0YXRpc3RpY3NT
dG9yZS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChkb21haW4pOwotICAgIH0pOwotfQot
Ci12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJFeHBpcmVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0K
LSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcG9zdFRhc2so
W3RoaXNdKCkgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhckV4cGlyZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCgpOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCJcbk5vIHN0b3JlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
IGRhdGEuXG4iX3MpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcG9zdFRhc2soW3Ro
aXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIHBv
c3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYXV0byByZXN1bHQgPSBtX3N0YXRpc3RpY3NTdG9yZS0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb1N0cmluZygpOwotICAgICAgICBwb3N0VGFza1JlcGx5KFtyZXN1bHQgPSByZXN1bHQuaXNv
bGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwot
ICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50JiYgYXR0cmlidXRpb25Ub0NsZWFyLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KQotewotICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgcG9zdFRhc2soW3RoaXMsIGF0dHJpYnV0aW9uVG9DbGVhciA9IFdU
Rk1vdmUoYXR0cmlidXRpb25Ub0NsZWFyKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludF0oKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2xlYXJTZW50QXR0cmlidXRpb24o
V1RGTW92ZShhdHRyaWJ1dGlvblRvQ2xlYXIpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsK
LSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0
VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAg
ICAgbV9zdGF0aXN0aWNzU3RvcmUtPm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOwotCi0gICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0pOwotfQotCiBTdHJpbmcgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6
dG9TdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtYWtlU3RyaW5nKCJIYXMgYmVlbiBncmFu
dGVkIHN0b3JhZ2UgYWNjZXNzIHVuZGVyICIsIGZpcnN0UGFydHlEb21haW4uc3RyaW5nKCksICI6
ICIsIHN0b3JhZ2VBY2Nlc3NHcmFudGVkID8gJzEnIDogJzAnLCAiOyBIYXMgYmVlbiBzZWVuIHVu
ZGVyICIsIGZpcnN0UGFydHlEb21haW4uc3RyaW5nKCksICIgaW4gdGhlIGxhc3QgMjQgaG91cnM6
ICIsIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpIC0gdGltZUxhc3RVcGRhdGVk
IDwgMjRfaCA/ICcxJyA6ICcwJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKaW5kZXggYjM0OGUzMTZiMDgxMjE4NjExMjFkYjU0NzYzZDFiOTg2OTNhNWI1
MS4uMWI5MjMyZWI3ZjVkZWVjNzIyMzg5MjViYmY0MzNjNDk2NDRmNjIwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1
ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKQEAgLTEwOCw3ICsx
MDksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1Njb3BlID0gV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Njb3BlOwogICAgIHVzaW5nIFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0
ID0gV2ViQ29yZTo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQ7CiAKLSAgICBzdGF0aWMgUmVm
PFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBTaG91bGRJbmNs
dWRlTG9jYWxob3N0LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCk7CisgICAg
c3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShOZXR3b3Jr
U2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwg
Y29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFs
KTsKIAogICAgIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKTsKIApAQCAtMjM5LDIw
ICsyNDAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNFcGhlbWVyYWwgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhl
bWVyYWw6OlllczsgfTsKICAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5n
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlz
UGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCi0gICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4KLSAgICB2b2lk
IGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKLSAgICB2
b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZv
clRlc3RpbmcoKTsKLSAgICB2b2lkIGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNv
bnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4m
JiBlcGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNV
bnRpbFNlbmREYXRhPik+JiYpOwotICAgIHZvaWQgYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50PiYmKT4mJik7Ci0gICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50KCk7Ci0gICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKLSAgICB2b2lk
IGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgdm9pZCBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4m
Jik7Ci0gICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludCk7Ci0gICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLQorICAgIFBDTTo6U3RvcmUmIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKSB7IHJl
dHVybiBtX3BjbVN0b3JlLmdldCgpOyB9CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYsIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Oklz
RXBoZW1lcmFsKTsKKyAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
TmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTaG91bGRJbmNs
dWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJh
bCk7CiAKICAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBz
dGF0aWMgdm9pZCBwb3N0VGFza1JlcGx5KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKQEAgLTI4
Nyw2ICsyNzcsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNTY2hlZHVsZWRQcm9jZXNzU3Rh
dHMgeyBmYWxzZSB9OwogCiAgICAgYm9vbCBtX2ZpcnN0TmV0d29ya1Byb2Nlc3NDcmVhdGVkIHsg
ZmFsc2UgfTsKKyAgICAKKyAgICBSZWY8UENNOjpTdG9yZT4gbV9wY21TdG9yZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0RhdGFiYXNlVXRpbGl0aWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWQyMDcxZTVkOWNlZGJmMWYzMWJk
MjY3OGEwN2FmOTA4ZTc5NDU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VVdGlsaXRpZXMu
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRl
bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitEYXRhYmFzZVV0aWxpdGllczo6RGF0YWJhc2VVdGls
aXRpZXMoU3RyaW5nJiYgc3RvcmFnZUZpbGVQYXRoKQorICAgIDogbV9zdG9yYWdlRmlsZVBhdGgo
V1RGTW92ZShzdG9yYWdlRmlsZVBhdGgpKQorICAgICwgbV90cmFuc2FjdGlvbihtX2RhdGFiYXNl
KQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworfQorCitEYXRhYmFzZVV0aWxp
dGllczo6fkRhdGFiYXNlVXRpbGl0aWVzKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKK30KKworV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgRGF0YWJh
c2VVdGlsaXRpZXM6OnNjb3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBBU0NJSUxpdGVyYWwgcXVlcnksIEFTQ0lJTGl0ZXJh
bCBsb2dTdHJpbmcpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgaWYgKCFzdGF0ZW1lbnQpIHsKKyAgICAgICAgYXV0byBzdGF0ZW1lbnRPckVycm9yID0gbV9k
YXRhYmFzZS5wcmVwYXJlSGVhcFN0YXRlbWVudChxdWVyeSk7CisgICAgICAgIGlmICghc3RhdGVt
ZW50T3JFcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlVXRpbGl0aWVzOjolcyBmYWlsZWQgdG8gcHJlcGFy
ZSBzdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBs
b2dTdHJpbmcuY2hhcmFjdGVycygpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHsgfTsKKyAgICAgICAgfQorICAgICAgICBz
dGF0ZW1lbnQgPSBzdGF0ZW1lbnRPckVycm9yLnZhbHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7Cisg
ICAgICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsKKyAgICB9CisgICAgcmV0dXJuIFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHsgc3RhdGVtZW50LmdldCgpIH07
Cit9CisKK1Njb3BlRXhpdDxGdW5jdGlvbjx2b2lkKCk+PiBEYXRhYmFzZVV0aWxpdGllczo6YmVn
aW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBpZiAobV90cmFuc2FjdGlvbi5pblByb2dyZXNzKCkpCisgICAgICAgIHJldHVy
biBtYWtlU2NvcGVFeGl0KEZ1bmN0aW9uPHZvaWQoKT4geyBbXSB7IH0gfSk7CisKKyAgICBtX3Ry
YW5zYWN0aW9uLmJlZ2luKCk7CisgICAgcmV0dXJuIG1ha2VTY29wZUV4aXQoRnVuY3Rpb248dm9p
ZCgpPiB7IFt0aGlzXSB7CisgICAgICAgIG1fdHJhbnNhY3Rpb24uY29tbWl0KCk7CisgICAgfSB9
KTsKK30KKworYXV0byBEYXRhYmFzZVV0aWxpdGllczo6b3BlbkRhdGFiYXNlQW5kQ3JlYXRlU2No
ZW1hSWZOZWNlc3NhcnkoKSAtPiBDcmVhdGVkTmV3RmlsZQoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworICAgIENyZWF0ZWROZXdGaWxlIGNyZWF0ZWROZXdGaWxlID0gQ3JlYXRl
ZE5ld0ZpbGU6Ok5vOworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3N0b3JhZ2VG
aWxlUGF0aCkpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
RmlsZVN5c3RlbTo6cGFyZW50UGF0aChtX3N0b3JhZ2VGaWxlUGF0aCkpKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJh
c2VVdGlsaXRpZXM6Om9wZW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiBGYWlsZWQgdG8gY3JlYXRl
IGRpcmVjdG9yeSBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9z
dG9yYWdlRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVkTmV3RmlsZTsKKyAgICAgICAgfQor
ICAgICAgICBjcmVhdGVkTmV3RmlsZSA9IENyZWF0ZWROZXdGaWxlOjpZZXM7CisgICAgfQorCisg
ICAgaWYgKCFtX2RhdGFiYXNlLm9wZW4obV9zdG9yYWdlRmlsZVBhdGgpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZVV0
aWxpdGllczo6b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5H
ICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VGaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVkTmV3RmlsZTsK
KyAgICB9CisgICAgCisgICAgLy8gU2luY2Ugd2UgYXJlIHVzaW5nIGEgd29ya2VyUXVldWUsIHRo
ZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBtYXkgYmUgY2FsbGVkIGJ5IGRpZmZlcmVudCB0
aHJlYWRzLgorICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOworCisgICAg
YXV0byBzZXRCdXN5VGltZW91dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiUFJBR01B
IGJ1c3lfdGltZW91dCA9IDUwMDAiX3MpOworICAgIGlmICghc2V0QnVzeVRpbWVvdXQgfHwgc2V0
QnVzeVRpbWVvdXQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZVV0aWxpdGllczo6
c2V0QnVzeVRpbWVvdXQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAoY3JlYXRlZE5ld0ZpbGUgPT0gQ3JlYXRlZE5l
d0ZpbGU6OlllcykgeworICAgICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJh
c2VVdGlsaXRpZXM6OmNyZWF0ZVNjaGVtYSBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJ
Q19MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VGaWxlUGF0aC51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZWROZXdGaWxlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjcmVhdGVk
TmV3RmlsZTsKK30KKwordm9pZCBEYXRhYmFzZVV0aWxpdGllczo6ZW5hYmxlRm9yZWlnbktleXMo
KQoreworICAgIGF1dG8gZW5hYmxlRm9yZWlnbktleXMgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0
ZW1lbnQoIlBSQUdNQSBmb3JlaWduX2tleXMgPSBPTiJfcyk7CisgICAgaWYgKCFlbmFibGVGb3Jl
aWduS2V5cyB8fCBlbmFibGVGb3JlaWduS2V5cy0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZVV0aWxpdGllczo6ZW5hYmxlRm9yZWlnbktleXMgZmFpbGVkLCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJh
c2VVdGlsaXRpZXM6OmNsb3NlKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBkZXN0cm95U3RhdGVtZW50cygpOworICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQor
ICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VVdGlsaXRpZXM6
OmludGVycnVwdCgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgaWYg
KG1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAgIG1fZGF0YWJhc2UuaW50ZXJydXB0KCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiOTVjMGNjZjBkOTY0NTNiZTVm
MDAwODE0MTE5N2IxZTJjN2MxN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYv
U2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU1FMaXRlU3RhdGVtZW50QXV0
b1Jlc2V0U2NvcGU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEYXRhYmFzZVV0
aWxpdGllcyB7Citwcm90ZWN0ZWQ6CisgICAgRGF0YWJhc2VVdGlsaXRpZXMoU3RyaW5nJiYgc3Rv
cmFnZUZpbGVQYXRoKTsKKyAgICB+RGF0YWJhc2VVdGlsaXRpZXMoKTsKKworICAgIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHNjb3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiYsIEFTQ0lJTGl0ZXJhbCBxdWVyeSwgQVND
SUlMaXRlcmFsIGxvZ1N0cmluZykgY29uc3Q7CisgICAgU2NvcGVFeGl0PEZ1bmN0aW9uPHZvaWQo
KT4+IFdBUk5fVU5VU0VEX1JFVFVSTiBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKKyAg
ICBlbnVtIGNsYXNzIENyZWF0ZWROZXdGaWxlIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBDcmVh
dGVkTmV3RmlsZSBvcGVuRGF0YWJhc2VBbmRDcmVhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpOworICAg
IHZvaWQgZW5hYmxlRm9yZWlnbktleXMoKTsKKyAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBp
bnRlcnJ1cHQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlU2NoZW1hKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkZXN0cm95U3RhdGVtZW50cygpID0gMDsKKworICAgIGNvbnN0IFN0cmluZyBt
X3N0b3JhZ2VGaWxlUGF0aDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1f
ZGF0YWJhc2U7CisgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiBtX3RyYW5z
YWN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDVkNjgyOWIyODgwMjU0YmQw
MTEzMTBhOWZkMjlkNzg1ZWRiNmUwNTUuLjExYTVjMjc4NGNhOGVhYWUzYmQ4ZTNhNDlhYjE5YjE1
YWE1YmJjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIK
ICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
IlByZWNvbm5lY3RUYXNrLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
ZS5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1
cy5oIgpAQCAtMTYxNCwxMSArMTYxNSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAg
ICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKG1vZGlmaWVkU2lu
Y2UsIHN0ZDo6bnVsbG9wdCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpICYmICFz
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgY2xlYXJEaXNrQ2FjaGUobW9kaWZpZWRT
aW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcildIHsg
fSk7CisgICAgICAgIGNsZWFyRGlza0NhY2hlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzKSkgewogICAgICAgICBpZiAoYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAg
ICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9CiAKICNpZiBIQVZFKENGTkVUV09SS19BTFRF
Uk5BVElWRV9TRVJWSUNFKQpAQCAtMTY3NywxNCArMTY3OCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpbwogICAgIH0KICNlbmRpZgogCisgICAgYXV0byBjbGVhclRhc2tzSGFuZGxlciA9IFdU
Rjo6Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQotICAgICAgICAgICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21h
aW4oUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbkRhdGEu
aG9zdCkpOworICAgICAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhclByaXZhdGVDbGlj
a01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbkRhdGEuaG9zdCksIFtjbGVhclRhc2tzSGFuZGxlcl0g
eyB9KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBhdXRvIGNsZWFyVGFza3NIYW5kbGVy
ID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkRPTUNhY2hlKSkgewogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5E
YXRhcykKQEAgLTIyNDUsNiArMjI0Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICNlbmRpZgor
ICAgIFBDTTo6U3RvcmU6OnByZXBhcmVGb3JQcm9jZXNzVG9TdXNwZW5kKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CiAKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3
b3JrU2Vzc2lvbikgewogICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lv
bi5zZXNzaW9uSUQoKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKQEAgLTIyODcsNyArMjI4
OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
c3VtZSgpOwogI2VuZGlmCi0gICAgCisgICAgUENNOjpTdG9yZTo6cHJvY2Vzc0RpZFJlc3VtZSgp
OworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGZvciAoYXV0byYgc2VydmVyIDog
bV9zd1NlcnZlcnMudmFsdWVzKCkpCiAgICAgICAgIHNlcnZlci0+ZW5kU3VzcGVuc2lvbigpOwpA
QCAtMjU2OSw5ICsyNTcyLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAg
ICAgICBzZXNzaW9uLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgCi0gICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgc2Vzc2lvbi0+Y2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDgyZjFlNTMwMTQ0ZmEwZmYyZGFiMTFlNjQ0
YzA5YjdmNjg2MWEwMDAuLjUyZDM1YmM5YjNhMTYzMTMxZmU4N2M4ZGIyNjk4OTZlZjk1YWE2OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTg2Nyw5ICs4NjcsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LAogICAgICsrbV9yZWRpcmVjdENvdW50OwogICAgIG1fcmVkaXJlY3RSZXNwb25zZSA9IHJlZGly
ZWN0UmVzcG9uc2U7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKSkgewotICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKKyAgICAg
ICAgaWYgKGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBh
cnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpCiAgICAgICAgICAg
ICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSByZXN1bHQu
dmFsdWUoKTsKICAgICAgICAgZWxzZSBpZiAoIXJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCByZXN1bHQuZXJyb3IoKSk7CkBAIC05MzAs
NyArOTMwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBjb250aW51ZVdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlcXVl
c3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKICAgICByZWRpcmVjdFJlcXVlc3Quc2V0SXNBcHBJ
bml0aWF0ZWQocmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAzMzQ4OGU2OWVmZWJkNzFi
NmQzMGJkMmJjN2M4ZmM1MmE3MjgzMjdkLi43N2M5OTgwZDEzZTY3ZjI2MGFkNGQ0OTc2MzZiNTY4
MjAwZGJhY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcApAQCAtODIsNiArODIsNyBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Np
b24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogICAg
IDogbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9j
ZXNzKG5ldHdvcmtQcm9jZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9y
eSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1
ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRl
TG9jYWxob3N0OjpObykKICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURl
YnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAtMTE3LDYgKzExOCw4
IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OworICAgICAgICBpZiAoIXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCiAgICAgbV9pc1N0YWxl
V2hpbGVSZXZhbGlkYXRlRW5hYmxlZCA9IHBhcmFtZXRlcnMuc3RhbGVXaGlsZVJldmFsaWRhdGVF
bmFibGVkOwpAQCAtMTI1LDcgKzEyOCw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lv
bihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVkKTsKICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KCp0aGlzLCBu
ZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5zZXNzaW9uSUQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpXSAoYXV0byYmIGxvYWRQYXJhbWV0ZXJzLCBhdXRvJiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihSZXNvdXJjZUVycm9yKFJlc291cmNlRXJy
b3I6OlR5cGU6OkNhbmNlbGxhdGlvbiksIHsgfSwgeyB9KTsKIAogICAgICAgICBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OnN0YXJ0KCp3ZWFrVGhpcywgV1RGTW92ZShsb2Fk
UGFyYW1ldGVycyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTE3
OSw3ICsxODIsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChib29sIGVuYWJsZSkKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9h
ZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBo
ZW1lcmFsOjpObykpOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCp0aGlzLCBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnksIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCBt
X3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Np
b25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6
OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwogICAgIGlm
ICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5wb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2soW10geyB9KTsKIApAQCAtMTk2LDcg
KzE5OSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlY3JlYXRlUmVzb3VyY2VMb2FkU3RhdGlz
dGljU3RvcmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpCiAgICAgZGVzdHJveVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cigpOwotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3Ms
IChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNF
cGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykp
OworICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgIG1fc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgKG1fc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDog
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CiAgICAgICAgIGZvcndh
cmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0dGluZ3MoKTsKICAgICAgICAgaWYgKCFtX3Nlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5wb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpAQCAtMzE4LDE3ICszMjEsMTcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6aGFuZGxlUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9uKFByaXZhdGVDbGlja01lYXN1cmUKIAogdm9pZCBO
ZXR3b3JrU2Vzc2lvbjo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpLnRvU3RyaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnRvU3RyaW5nRm9yVGVzdGluZyhXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Npb246OmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5jbGVhcigpOworICAgIHByaXZh
dGVDbGlja01lYXN1cmVtZW50KCkuY2xlYXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9y
UmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pCit2
b2lkIE5ldHdvcmtTZXNzaW9uOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0
cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpLmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShkb21haW4p
KTsKKyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLmNsZWFyRm9yUmVnaXN0cmFibGVEb21h
aW4oV1RGTW92ZShkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1l
ckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaAppbmRleCBhNDk3MThkZWZkYTIzOTQ4NDZhZTg1YzRjNzg1MmFkYTE1
NjQxMzQ5Li5jMDFhYTI4MGY5MzY2ZDNhYzU3M2Q1MzVkMjZjNTJjYzY1MjE3YTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMjUsOCAr
MTI1LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKICAgICB2b2lkIGhhbmRsZVByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKICAgICB2b2lk
IGR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
Zyk+JiYpOwotICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotICAgIHZv
aWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOworICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUp
OwogICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGly
ZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJik7
CkBAIC0xOTEsNiArMTkxLDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4g
bV9uZXR3b3JrUHJvY2VzczsKICAgICBXZWFrSGFzaFNldDxOZXR3b3JrRGF0YVRhc2s+IG1fZGF0
YVRhc2tTZXQ7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBTdHJp
bmcgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5n
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBSZWZQdHI8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgU2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgeyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0
YWJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5Nzg4NDA0Mjk2Yjg3ZjAxMjU0ZGVjY2Q3ZjlhOTA4OWEy
N2MyZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3Bw
CkBAIC0wLDAgKzEsNzA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCIKKworI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIgor
I2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1l
bnRBdXRvUmVzZXRTY29wZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24u
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitjb25zdGV4cHIg
YXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5
ID0gIlVQREFURSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgdGltZU9m
QWRDbGljayA9IC0xLjAiX3M7Citjb25zdGV4cHIgYXV0byBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGlu
YXRpb25TaXRlRG9tYWluSUQsICIKKyAgICAic291cmNlSUQsIHRpbWVPZkFkQ2xpY2ssIHRva2Vu
LCBzaWduYXR1cmUsIGtleUlEKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8pIl9zOworY29u
c3RleHByIGF1dG8gaW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkg
PSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgKHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsICIKKyAgICAi
c291cmNlSUQsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCB0aW1lT2ZBZENsaWNr
LCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVh
cmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24pIFZBTFVFUyAoPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPykiX3M7Citjb25zdGV4cHIgYXV0byBmaW5kVW5hdHRyaWJ1dGVkUXVlcnkg
PSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVS
RSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8i
X3M7Citjb25zdGV4cHIgYXV0byBmaW5kQXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00g
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5J
RCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRv
IHJlbW92ZVVuYXR0cmlidXRlZFF1ZXJ5ID0gIkRFTEVURSBGUk9NIFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIGFsbEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIlNFTEVDVCAqLCBNSU4oZWFybGllc3RUaW1l
VG9TZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24pIGFzIG1pblZh
bCAiCisgICAgIkZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlIElTIE5PVCBOVUxMIEFORCBlYXJsaWVzdFRpbWVUb1Nl
bmRUb0Rlc3RpbmF0aW9uIElTIE5PVCBOVUxMICIKKyAgICAiVU5JT04gQUxMIFNFTEVDVCAqLCBl
YXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBhcyBtaW5WYWwgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBJ
UyBOVUxMICIKKyAgICAiVU5JT04gQUxMIFNFTEVDVCAqLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uIGFzIG1pblZhbCBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBXSEVSRSBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBJUyBOVUxMIE9SREVSIEJZIG1pblZh
bCJfczsKK2NvbnN0ZXhwciBhdXRvIGFsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25zUXVlcnkgPSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCJfczsKK2NvbnN0ZXhwciBhdXRvIGNsZWFyRXhwaXJlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50UXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgV0hFUkUgPyA+IHRpbWVPZkFkQ2xpY2siX3M7Citjb25zdGV4cHIgYXV0
byBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VRdWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9IG51bGwg
V0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQg
PSA/Il9zOworY29uc3RleHByIGF1dG8gbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25RdWVy
eSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVz
dFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gbnVsbCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQg
PSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBl
YXJsaWVzdFRpbWVzVG9TZW5kUXVlcnkgPSAiU0VMRUNUIGVhcmxpZXN0VGltZVRvU2VuZFRvU291
cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIEZST00gQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIGRvbWFpbklERnJvbVN0
cmluZ1F1ZXJ5ID0gIlNFTEVDVCBkb21haW5JRCBGUk9NIFBDTU9ic2VydmVkRG9tYWlucyBXSEVS
RSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBkb21haW5TdHJpbmdG
cm9tRG9tYWluSURRdWVyeSA9ICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBQQ01PYnNl
cnZlZERvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gY3JlYXRl
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICgiCisgICAgInNvdXJjZVNpdGVEb21haW5J
RCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBO
VUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBOVUxMLCAiCisgICAgInRpbWVPZkFkQ2xpY2sgUkVB
TCBOT1QgTlVMTCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIEZPUkVJ
R04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgIgorICAgICJSRUZFUkVOQ0VTIFBDTU9ic2VydmVk
RG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUsIEZPUkVJR04gS0VZKGRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VTICIKKyAgICAiUENNT2JzZXJ2ZWREb21haW5zKGRv
bWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSkiX3M7Citjb25zdGV4cHIgYXV0byBjcmVhdGVBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIgorICAgICJzb3VyY2VTaXRlRG9tYWluSUQgSU5URUdF
UiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgc291
cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgorICAgICJhdHRyaWJ1dGlvblRyaWdnZXJEYXRhIElO
VEVHRVIgTk9UIE5VTEwsIHByaW9yaXR5IElOVEVHRVIgTk9UIE5VTEwsIHRpbWVPZkFkQ2xpY2sg
UkVBTCBOT1QgTlVMTCwgIgorICAgICJlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBSRUFMLCB0
b2tlbiBURVhULCBzaWduYXR1cmUgVEVYVCwga2V5SUQgVEVYVCwgZWFybGllc3RUaW1lVG9TZW5k
VG9EZXN0aW5hdGlvbiBSRUFMLCAiCisgICAgIkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5J
RCkgUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVND
QURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCisg
ICAgIlBDTU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOwor
Y29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9u
U2l0ZURvbWFpbklEIG9uIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291
cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOworY29uc3RleHBy
IGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
PSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQg
b24gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklE
LCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlUENN
T2JzZXJ2ZWREb21haW4gPSAiQ1JFQVRFIFRBQkxFIFBDTU9ic2VydmVkRG9tYWlucyAoIgorICAg
ICJkb21haW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5P
VCBOVUxMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMKSJfczsKK2NvbnN0ZXhwciBhdXRvIGluc2Vy
dE9ic2VydmVkRG9tYWluUXVlcnkgPSAiSU5TRVJUIElOVE8gUENNT2JzZXJ2ZWREb21haW5zIChy
ZWdpc3RyYWJsZURvbWFpbikgVkFMVUVTICg/KSJfczsKK2NvbnN0ZXhwciBhdXRvIGNsZWFyQWxs
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJERUxFVEUgRlJPTSBQQ01PYnNlcnZlZERv
bWFpbnMgV0hFUkUgZG9tYWluSUQgTElLRSA/Il9zOworCitzdGF0aWMgSGFzaFNldDxEYXRhYmFz
ZSo+JiBhbGxEYXRhYmFzZXMoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PERhdGFiYXNlKj4+IHNldDsKKyAgICBy
ZXR1cm4gc2V0OworfQorCitEYXRhYmFzZTo6RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBzdG9yYWdl
RGlyZWN0b3J5KQorICAgIDogRGF0YWJhc2VVdGlsaXRpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksICJwY20uZGIiX3MpKQoreworICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG9wZW5EYXRhYmFzZUFuZENyZWF0ZVNjaGVt
YUlmTmVjZXNzYXJ5KCk7CisgICAgZW5hYmxlRm9yZWlnbktleXMoKTsKKyAgICBhbGxEYXRhYmFz
ZXMoKS5hZGQodGhpcyk7Cit9CisKK0RhdGFiYXNlOjp+RGF0YWJhc2UoKQoreworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGNsb3NlKCk7CisgICAgYWxsRGF0YWJhc2VzKCku
cmVtb3ZlKHRoaXMpOworfQorCit2b2lkIERhdGFiYXNlOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXMo
KQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGZvciAoYXV0byBkYXRh
YmFzZSA6IGFsbERhdGFiYXNlcygpKQorICAgICAgICBkYXRhYmFzZS0+aW50ZXJydXB0KCk7Cit9
CisKK2Jvb2wgRGF0YWJhc2U6OmNyZWF0ZVNjaGVtYSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRl
UENNT2JzZXJ2ZWREb21haW4pKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0
ZSBQQ01PYnNlcnZlZERvbWFpbnMgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYXRh
YmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
Y3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExP
R19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJvcigp
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGNyZWF0ZSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUgaW4gZGF0YWJh
c2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0
YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCkKKyAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
Y3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7Cisg
ICAgICAgIExPR19FUlJPUigiRXJyb3IgY3JlYXRpbmcgaW5kZXhlcyIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERhdGFiYXNlOjpp
bnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZSBhdHRyaWJ1dGlvblR5cGUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3Nhcnko
KTsKKworICAgIGF1dG8gc291cmNlSUQgPSBlbnN1cmVEb21haW5JRChhdHRyaWJ1dGlvbi5zb3Vy
Y2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8gYXR0cmlidXRpb25EZXN0aW5h
dGlvbklEID0gZW5zdXJlRG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVn
aXN0cmFibGVEb21haW4pOworICAgIGlmICghc291cmNlSUQgfHwgIWF0dHJpYnV0aW9uRGVzdGlu
YXRpb25JRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgc291cmNlVW5saW5rYWJsZVRv
a2VuID0gYXR0cmlidXRpb24uc291cmNlVW5saW5rYWJsZVRva2VuKCk7CisgICAgaWYgKGF0dHJp
YnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0
cmlidXRlZCkgeworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBhdHRyaWJ1
dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKCkudmFsdWUoKS5kYXRhIDogLTE7CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBh
dHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1
dGlvblRyaWdnZXJEYXRhKCkudmFsdWUoKS5wcmlvcml0eSA6IC0xOworICAgICAgICBhdXRvIHNv
dXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNl
RWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5zb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmQudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgOiAtMTsK
KyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9u
LnRpbWVzVG9TZW5kKCkuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPyBhdHRyaWJ1dGlv
bi50aW1lc1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG5l
dmVyIGJlIGluc2VydGluZyBhbiBhdHRyaWJ1dGVkIHByaXZhdGUgY2xpY2sgbWVhc3VyZW1lbnQg
dmFsdWUgaW50byB0aGUgZGF0YWJhc2Ugd2l0aG91dCB2YWxpZCByZXBvcnQgdGltZXMuCisgICAg
ICAgIEFTU0VSVChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEgJiYgZGVzdGluYXRpb25F
YXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEpOworCisgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFF1ZXJ5KTsKKyAgICAgICAgaWYgKCFzdGF0ZW1lbnQKKyAgICAgICAgICAgIHx8IHN0
YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlSUQpICE9IFNRTElURV9PSworICAgICAgICAgICAg
fHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9uSUQpICE9IFNR
TElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDMsIGF0dHJpYnV0aW9u
LnNvdXJjZUlEKCkuaWQpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5i
aW5kSW50KDQsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpICE9IFNRTElURV9PSworICAgICAgICAg
ICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDUsIHByaW9yaXR5KSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg2LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENs
aWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
ICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg3LCBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQp
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg4LCBzb3Vy
Y2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnRva2VuQmFzZTY0VVJM
IDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQt
PmJpbmRUZXh0KDksIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tl
bi0+c2lnbmF0dXJlQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAg
ICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEwLCBzb3VyY2VVbmxpbmthYmxlVG9rZW4g
PyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoMTEsIGRl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8
IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Omluc2Vy
dFByaXZhdGVDbGlja01lYXN1cmVtZW50IGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChh
dHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6
OlVuYXR0cmlidXRlZCk7CisKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFy
ZVN0YXRlbWVudChpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5
KTsKKyAgICBpZiAoIXN0YXRlbWVudAorICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
KnNvdXJjZUlEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIs
ICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9uSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0
ZW1lbnQtPmJpbmRJbnQoMywgYXR0cmlidXRpb24uc291cmNlSUQoKS5pZCkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZERvdWJsZSg0LCBhdHRyaWJ1dGlvbi50aW1lT2ZB
ZENsaWNrKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg1LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3Vy
Y2VVbmxpbmthYmxlVG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoNiwgc291cmNlVW5saW5rYWJs
ZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT5zaWduYXR1cmVCYXNlNjRVUkwgOiBlbXB0
eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg3
LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFz
ZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVu
dC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgaW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVy
eSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
fQorCit2b2lkIERhdGFiYXNlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudCht
X3NldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50
LCBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5LCAi
bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVz
dGluZyJfcyk7CisKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudCB8fCBzY29wZWRTdGF0ZW1lbnQt
PnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6
ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworc3RkOjpwYWlyPHN0
ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
Piwgc3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Pj4gRGF0YWJhc2U6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJiBkZXN0aW5hdGlvblNpdGUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChzb3VyY2VTaXRlLnJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWlu
SUQoZGVzdGluYXRpb25TaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIXNvdXJjZVNp
dGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCisgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRvIGZp
bmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9m
aW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnksICJmaW5kUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOworICAgIGlmICghZmluZFVuYXR0cmlidXRlZFNjb3Bl
ZFN0YXRlbWVudAorICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5i
aW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBm
aW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNp
dGVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6ZmluZFByaXZhdGVDbGlja01l
YXN1cmVtZW50IGZpbmRVbmF0dHJpYnV0ZWRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgYXV0byBmaW5kQXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2ZpbmRBdHRyaWJ1dGVkU3Rh
dGVtZW50LCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCAiZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50
Il9zKTsKKyAgICBpZiAoIWZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8
IGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9t
YWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSykg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVw
IC0gRGF0YWJhc2U6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kQXR0cmlidXRlZFF1
ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
PiB1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICBpZiAoZmluZFVuYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIHVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEZyb21EYXRhYmFzZShmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgp
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsK
KworICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBh
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgaWYgKGZpbmRBdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZy
b21EYXRhYmFzZShmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOworCisgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBhdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOworfQorCitzdGQ6OnBhaXI8c3RkOjpvcHRp
b25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5k
RGF0YT4sIERlYnVnSW5mbz4gRGF0YWJhc2U6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBz
b3VyY2VTaXRlLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgLy8gV2Ug
c2hvdWxkIGFsd2F5cyBjbGVhciBleHBpcmVkIGNsaWNrcyBmcm9tIHRoZSBkYXRhYmFzZSBiZWZv
cmUgc2NoZWR1bGluZyBhbiBhdHRyaWJ1dGlvbi4KKyAgICBjbGVhckV4cGlyZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpOworICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
IkdvdCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9uLiIpOworICAgICAgICByZXR1cm4geyBzdGQ6Om51
bGxvcHQsIHt7eyBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1l
bnRdIEdvdCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9uLiJfcyB9fX0gfTsKKyAgICB9CisKKyAgICBE
ZWJ1Z0luZm8gZGVidWdJbmZvOworICAgIGF1dG8gZGF0YSA9IGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEuZGF0YTsKKyAgICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5wcmlv
cml0eTsKKyAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290
IGFuIGF0dHJpYnV0aW9uIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAle3B1YmxpY311
IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dS4iLCBkYXRhLCBwcmlvcml0eSk7CisgICAgZGVidWdJ
bmZvLm1lc3NhZ2VzLmFwcGVuZCh7IE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1By
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBhbiBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJpYnV0
aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlv
cml0eSwgIicuIl9zKSB9KTsKKworICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblNlY29uZHNVbnRpbFNlbmREYXRhIHNlY29uZHNVbnRpbFNlbmQgeyBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCB9OworCisgICAgYXV0byBhdHRyaWJ1dGlvbiA9IGZpbmRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUpOworICAgIGF1dG8mIHBy
ZXZpb3VzbHlVbmF0dHJpYnV0ZWQgPSBhdHRyaWJ1dGlvbi5maXJzdDsKKyAgICBhdXRvJiBwcmV2
aW91c2x5QXR0cmlidXRlZCA9IGF0dHJpYnV0aW9uLnNlY29uZDsKKworICAgIGlmIChwcmV2aW91
c2x5VW5hdHRyaWJ1dGVkKSB7CisgICAgICAgIC8vIEFsd2F5cyBjb252ZXJ0IHRoZSBwZW5kaW5n
IGF0dHJpYnV0aW9uIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgdW5hdHRyaWJ1dGVkIG1hcC4KKyAg
ICAgICAgcmVtb3ZlVW5hdHRyaWJ1dGVkKCpwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKTsKKyAgICAg
ICAgc2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5hdHRy
aWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKSk7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgdmFsaWQgc2Vjb25k
c1VudGlsU2VuZCB2YWx1ZSBmb3IgYSBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkIHZhbHVlIGJlY2F1
c2UgdGhlcmUgY2FuIGJlIG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uIHdpdGggYSBoaWdoZXIgcHJp
b3JpdHkuCisgICAgICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRp
bFNlbmRWYWx1ZXMoKSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIFdURk1vdmUoZGVidWdJbmZvKSB9OworICAg
ICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIkNvbnZlcnRlZCBhIHN0b3JlZCBhZCBjbGljayB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIg
ZGF0YTogJXtwdWJsaWN9dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUuIiwgZGF0YSwgcHJpb3Jp
dHkpOworICAgICAgICBkZWJ1Z0luZm8ubWVzc2FnZXMuYXBwZW5kKHsgTWVzc2FnZUxldmVsOjpJ
bmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVydGVkIGEg
c3RvcmVkIGFkIGNsaWNrIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRh
LCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJy4iX3MpIH0pOworCisgICAgICAg
IC8vIElmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uLCBvciB0aGUgbmV3IGF0dHJp
YnV0aW9uIGhhcyBoaWdoZXIgcHJpb3JpdHksIGluc2VydC91cGRhdGUgdGhlIGRhdGFiYXNlLgor
ICAgICAgICBpZiAoIXByZXZpb3VzbHlBdHRyaWJ1dGVkIHx8IHByZXZpb3VzbHlVbmF0dHJpYnV0
ZWQudmFsdWUoKS5oYXNIaWdoZXJQcmlvcml0eVRoYW4oKnByZXZpb3VzbHlBdHRyaWJ1dGVkKSkg
eworICAgICAgICAgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgqcHJl
dmlvdXNseVVuYXR0cmlidXRlZCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlOjpBdHRyaWJ1dGVkKTsKKworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgIlJlcGxhY2VkIGEgcHJldmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xp
Y2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiBkYXRhOiAle3B1YmxpY311IGFuZCBw
cmlvcml0eTogJXtwdWJsaWN9dSBiZWNhdXNlIGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0
YSwgcHJpb3JpdHkpOworICAgICAgICAgICAgZGVidWdJbmZvLm1lc3NhZ2VzLmFwcGVuZCh7IE1l
c3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRd
IFJlcGxhY2VkIGEgcHJldmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUg
d2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0
eTogJyJfcywgcHJpb3JpdHksICInIGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iX3Mp
IH0pOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChwcmV2aW91c2x5QXR0cmlidXRlZCkgewor
ICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIG5ldyBhdHRyaWJ1dGlvbiwgcmUtYXR0cmlidXRlIHRo
ZSBvbGQgb25lIHRvIHJlc3BlY3QgdGhlIG5ldyBwcmlvcml0eSwgYnV0IG9ubHkgaWYgdGhpcyBy
ZXBvcnQgaGFzCisgICAgICAgIC8vIG5vdCBiZWVuIHNlbnQgdG8gdGhlIHNvdXJjZSBvciBkZXN0
aW5hdGlvbiBzaXRlIHlldC4KKyAgICAgICAgaWYgKCFwcmV2aW91c2x5QXR0cmlidXRlZC52YWx1
ZSgpLmhhc1ByZXZpb3VzbHlCZWVuUmVwb3J0ZWQoKSkgeworICAgICAgICAgICAgYXV0byBzZWNv
bmRzVW50aWxTZW5kID0gcHJldmlvdXNseUF0dHJpYnV0ZWQudmFsdWUoKS5hdHRyaWJ1dGVBbmRH
ZXRFYXJsaWVzdFRpbWVUb1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7Cisg
ICAgICAgICAgICBpZiAoIXNlY29uZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5k
VmFsdWVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBXVEZNb3Zl
KGRlYnVnSW5mbykgfTsKKworICAgICAgICAgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoV1RGTW92ZSgqcHJldmlvdXNseUF0dHJpYnV0ZWQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJSZS1jb252ZXJ0ZWQgYW4gYWQgY2xpY2sg
d2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUg
YW5kIHByaW9yaXR5OiAle3B1YmxpY311IGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4i
LCBkYXRhLCBwcmlvcml0eSk7CisgICAgICAgICAgICBkZWJ1Z0luZm8ubWVzc2FnZXMuYXBwZW5k
KHsgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gUmUtY29udmVydGVkIGFuIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmli
dXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHBy
aW9yaXR5LCAiJycgYmVjYXVzZSBpdCBoYWQgaGlnaGVyIHByaW9yaXR5LiJfcykgfSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXNlY29uZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRz
VW50aWxTZW5kVmFsdWVzKCkpCisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92
ZShkZWJ1Z0luZm8pIH07CisKKyAgICByZXR1cm4geyBzZWNvbmRzVW50aWxTZW5kLCBXVEZNb3Zl
KGRlYnVnSW5mbykgfTsKK30KKworV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgRGF0
YWJhc2U6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBhdXRvIHNvdXJjZVNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9t
YWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOworICAgIGF1dG8gZGVzdGluYXRpb25TaXRl
RG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50
KDEpKTsKKyAgICBhdXRvIHNvdXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMik7CisgICAg
YXV0byB0aW1lT2ZBZENsaWNrID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5Eb3Vi
bGUoNSkgOiBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgzKTsKKyAgICBhdXRvIHRva2VuID0gYXR0
cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpB
dHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpIDogc3RhdGVtZW50LT5jb2x1bW5U
ZXh0KDQpOworICAgIGF1dG8gc2lnbmF0dXJlID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5j
b2x1bW5UZXh0KDgpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDUpOworICAgIGF1dG8ga2V5SUQg
PSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtblRleHQoOSkgOiBzdGF0ZW1lbnQtPmNv
bHVtblRleHQoNik7CisKKyAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRy
aWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoc291cmNl
SUQpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZShSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHNv
dXJjZVNpdGVEb21haW4pKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uRGVzdGluYXRpb25TaXRlKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZGVzdGluYXRpb25TaXRlRG9tYWluKSksIHsgfSwg
eyB9LCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZU9mQWRDbGljaykpOworICAgIAorICAg
IGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGU6OkF0dHJpYnV0ZWQpIHsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMyk7CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0
ZW1lbnQtPmNvbHVtbkludCg0KTsKKyAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmRWYWx1ZSA9IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDYpOworICAgICAgICBhdXRvIGRlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgx
MCk7CisKKyAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEpCisgICAgICAg
ICAgICBhdHRyaWJ1dGlvbi5zZXRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRpY19jYXN0PHVpbnQzMl90Pihh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlByaW9yaXR5KHByaW9yaXR5KSB9KTsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1l
PiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRp
bWU+IGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kOworICAgICAgICAKKyAgICAgICAgLy8g
QSB2YWx1ZSBvZiAwLjAgaW5kaWNhdGVzIHRoYXQgdGhlIHJlcG9ydCBoYXMgYmVlbiBzZW50IHRv
IHRoZSByZXNwZWN0aXZlIHNpdGUuCisgICAgICAgIGlmIChzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmRWYWx1ZSA+IDAuMCkKKyAgICAgICAgICAgIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSk7CisK
KyAgICAgICAgaWYgKGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCisg
ICAgICAgICAgICBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyhkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlKTsKKworICAgICAg
ICBhdHRyaWJ1dGlvbi5zZXRUaW1lc1RvU2VuZCh7IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCwg
ZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgfSk7CisgICAgfQorCisgICAgYXR0cmlidXRp
b24uc2V0U291cmNlU2VjcmV0VG9rZW4oeyB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCB9KTsKKwor
ICAgIHJldHVybiBhdHRyaWJ1dGlvbjsKK30KKwordm9pZCBEYXRhYmFzZTo6cmVtb3ZlVW5hdHRy
aWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiBhdHRyaWJ1dGlvbikKK3sKKyAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHNvdXJjZVNpdGVEb21haW5JRCA9IGRv
bWFpbklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisgICAg
YXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLmRlc3Rp
bmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIXNvdXJjZVNpdGVEb21h
aW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fcmVtb3ZlVW5h
dHRyaWJ1dGVkU3RhdGVtZW50LCByZW1vdmVVbmF0dHJpYnV0ZWRRdWVyeSwgInJlbW92ZVVuYXR0
cmlidXRlZCJfcyk7CisKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRl
RG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OnJlbW92ZVVuYXR0cmlidXRlZCwgZXJyb3Ig
bWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitWZWN0
b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IERhdGFiYXNlOjphbGxBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGF1dG8gYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3Bl
ZFN0YXRlbWVudChtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVu
dCwgYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJhbGxBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOworCisgICAgaWYgKCFhdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01l
YXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+IGF0dHJpYnV0aW9uczsKKyAgICB3aGlsZSAoYXR0cmlidXRlZFNjb3Bl
ZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIGF0dHJpYnV0aW9ucy5h
cHBlbmQoYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShhdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VHlwZTo6QXR0cmlidXRlZCkpOworCisgICAgcmV0dXJuIGF0dHJpYnV0aW9uczsKK30KKworU3Ry
aW5nIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZygp
Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhdGFFeGlzdHMgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNF
TEVDVCAoU0VMRUNUIENPVU5UKCopIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpIGFzIGNudDEsIChTRUxFQ1QgQ09VTlQoKikgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpIGFzIGNudDIiX3MpOworICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYXRhRXhpc3RzIHx8IHByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+c3Rl
cCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
U3RyaW5nRm9yVGVzdGluZyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGlmICghcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzLT5jb2x1bW5JbnQoMCkgJiYgIXByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+Y29sdW1uSW50KDEpKQorICAgICAgICByZXR1cm4g
IlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiJfczsKKworICAg
IGF1dG8gdW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50
KG1fYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0
ZW1lbnQsIGFsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25z
UXVlcnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyJfcyk7CisK
KyAgICBpZiAoIXVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OnByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQ
UklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCB1bmF0dHJpYnV0ZWROdW1iZXIgPSAwOworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICB3aGlsZSAodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
PT0gU1FMSVRFX1JPVykgeworICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSB1bmF0dHJpYnV0
ZWROdW1iZXIgPyAiIiA6ICJVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6
IjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4LCAiXG5XZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCAiLCArK3VuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKKyAgICAgICAgICAg
IGF0dHJpYnV0aW9uVG9TdHJpbmdGb3JUZXN0aW5nKCp1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJp
YnV0ZWQpKTsKKyAgICB9CisKKyAgICBhdXRvIGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0
aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdGF0ZW1lbnQsIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAi
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmciX3MpOworCisgICAgaWYg
KCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6cHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZWROdW1iZXIgPSAwOworICAgIHdoaWxlIChhdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICBpZiAoIWF0dHJpYnV0ZWRO
dW1iZXIpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh1bmF0dHJpYnV0ZWROdW1iZXIgPyAi
XG4iIDogIiIsICJBdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOiIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiXG5XZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAi
LCArK2F0dHJpYnV0ZWROdW1iZXIgKyB1bmF0dHJpYnV0ZWROdW1iZXIsICdcbicsCisgICAgICAg
ICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nRm9yVGVzdGluZygqYXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJp
YnV0ZWQpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworU3Ry
aW5nIERhdGFiYXNlOjphdHRyaWJ1dGlvblRvU3RyaW5nRm9yVGVzdGluZyhXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQmIHN0YXRlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGUgYXR0cmlidXRpb25UeXBlKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5J
RChzdGF0ZW1lbnQuY29sdW1uSW50KDApKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFp
biA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQuY29sdW1uSW50KDEpKTsK
KyAgICBhdXRvIHNvdXJjZUlEID0gc3RhdGVtZW50LmNvbHVtbkludCgyKTsKKworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgiU291cmNlIHNpdGU6ICIsIHNv
dXJjZVNpdGVEb21haW4sICJcbkF0dHJpYnV0ZSBvbiBzaXRlOiAiLCBkZXN0aW5hdGlvblNpdGVE
b21haW4sICJcblNvdXJjZSBJRDogIiwgc291cmNlSUQpOworCisgICAgaWYgKGF0dHJpYnV0aW9u
VHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRl
ZCkgeworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBzdGF0ZW1lbnQuY29s
dW1uSW50KDMpOworICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LmNvbHVtbkludCg0
KTsKKyAgICAgICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGF0ZW1lbnQuY29sdW1uSW50
KDYpOworCisgICAgICAgIGlmIChhdHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKSB7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5BdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICIsIGF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEsICJcbkF0dHJpYnV0aW9uIHByaW9yaXR5OiAiLCBwcmlvcml0
eSwgIlxuQXR0cmlidXRpb24gZWFybGllc3QgdGltZSB0byBzZW5kOiAiKTsKKyAgICAgICAgICAg
IGlmIChlYXJsaWVzdFRpbWVUb1NlbmQgPT0gLTEpCisgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIk5vdCBzZXQiKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1
dG8gc2Vjb25kc1VudGlsU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhlYXJsaWVzdFRp
bWVUb1NlbmQpIC0gV2FsbFRpbWU6Om5vdygpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKChzZWNvbmRzVW50aWxTZW5kID49IDI0X2ggJiYgc2Vjb25kc1VudGlsU2VuZCA8PSA0OF9o
KSA/ICJXaXRoaW4gMjQtNDggaG91cnMiIDogIk91dHNpZGUgMjQtNDggaG91cnMiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5O
byBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7CisgICAgfSBlbHNlCisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJcbk5vIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsKKyAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3Zv
aWQgRGF0YWJhc2U6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBp
cmVkRm9yVGVzdGluZygpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAg
YXV0byBleHBpcmVkVGltZVRvU2VuZCA9IFdhbGxUaW1lOjpub3coKSAtIDFfaDsKKworICAgIGF1
dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOworCisg
ICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudCA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudCgiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBTRVQgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSA/Il9zKTsKKyAgICBhdXRvIGVhcmxp
ZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb25TdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIGVh
cmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gPSBudWxsIl9zKTsKKworICAgIGlmICghZWFy
bGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQKKyAgICAgICAgfHwgZWFybGllc3RUaW1l
VG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZXhwaXJlZFRpbWVUb1NlbmQuc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgZWFybGll
c3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0g
RGF0YWJhc2U6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVt
ZW50IHx8IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb25TdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNlOjpjbGVhclByaXZh
dGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGRvbWFp
bikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIC8vIERlZmF1bHQg
dG8gY2xlYXIgYWxsIGVudHJpZXMgaWYgbm8gZG9tYWluIGlzIHNwZWNpZmllZC4KKyAgICBTdHJp
bmcgYmluZFBhcmFtZXRlciA9ICIlIjsKKyAgICBpZiAoZG9tYWluKSB7CisgICAgICAgIGF1dG8g
ZG9tYWluSURUb01hdGNoID0gZG9tYWluSUQoKmRvbWFpbik7CisgICAgICAgIGlmICghZG9tYWlu
SURUb01hdGNoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGJpbmRQYXJhbWV0ZXIg
PSBTdHJpbmc6Om51bWJlcigqZG9tYWluSURUb01hdGNoKTsKKyAgICB9CisKKyAgICBhdXRvIHRy
YW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgIGF1
dG8gY2xlYXJBbGxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFNjb3BlZFN0YXRlbWVudCA9IHRoaXMt
PnNjb3BlZFN0YXRlbWVudChtX2NsZWFyQWxsUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1l
bnQsIGNsZWFyQWxsUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQiX3MpOworCisgICAgaWYgKCFjbGVhckFsbFByaXZhdGVDbGlja01lYXN1
cmVtZW50U2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IGNsZWFyQWxsUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJpbmRQYXJhbWV0ZXIpICE9IFNR
TElURV9PSworICAgICAgICB8fCBjbGVhckFsbFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NvcGVk
U3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjbGVhckFsbFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U2NvcGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJhc2U6OmNsZWFyRXhwaXJl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBhdXRvIGV4cGlyYXRpb25UaW1lRnJhbWUgPSBXYWxsVGltZTo6bm93KCkgLSBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6bWF4QWdlKCk7CisgICAgYXV0byBzY29w
ZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jbGVhckV4cGlyZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRRdWVyeSwgImNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKwor
ICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+Ymlu
ZERvdWJsZSgxLCBleHBpcmF0aW9uVGltZUZyYW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUo
KSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K30KKwordm9pZCBEYXRhYmFzZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHRpbWVzVG9TZW5kID0g
ZWFybGllc3RUaW1lc1RvU2VuZChhdHRyaWJ1dGlvbik7CisgICAgYXV0byBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQgPSB0aW1lc1RvU2VuZC5maXJzdDsKKyAgICBhdXRvIGRlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG9TZW5kID0gdGltZXNUb1NlbmQuc2Vjb25kOworCisgICAgYXV0byBzb3VyY2VT
aXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFi
bGVEb21haW4pOworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChh
dHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBp
ZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN3aXRjaCAoYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkgewor
ICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQ6OlNvdXJjZToKKyAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSgqc291cmNlU2l0ZURvbWFp
bklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOworICAgICAgICBzb3VyY2VFYXJsaWVzdFRp
bWVUb1NlbmQgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0aW9u
OgorICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSB7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbigqc291cmNlU2l0ZURvbWFp
bklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOworICAgICAgICBkZXN0aW5hdGlvbkVhcmxp
ZXN0VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBEb24ndCBjbGVh
ciB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGRhdGFiYXNlIHVubGVzcyBpdCBoYXMgYmVlbiByZXBv
cnRlZCBib3RoIHRvIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHNpdGUuCisgICAgaWYgKGRl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIHx8IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBt
X2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCA9ID8iX3MpOworICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU3RhdGVt
ZW50CisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291
cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVk
U3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElU
RV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCAiJXAgLSBEYXRhYmFzZTo6Y2xlYXJTZW50QXR0cmlidXRpb24gZmFpbGVkIHRvIHN0ZXAs
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30K
Kwordm9pZCBEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oU291cmNlRG9t
YWluSUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0aW9u
U2l0ZURvbWFpbklEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1
dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fbWFya1JlcG9ydEFz
U2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQsIG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9u
UXVlcnksICJtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbiJfcyk7CisKKyAgICBpZiAoIXNj
b3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgc291
cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6bWFy
a1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0df
U1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9T
b3VyY2UoU291cmNlRG9tYWluSUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFp
bklEIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50
KG1fbWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVtZW50LCBtYXJrUmVwb3J0QXNTZW50VG9T
b3VyY2VRdWVyeSwgIm1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSJfcyk7CisKKyAgICBpZiAoIXNj
b3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgc291
cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5iaW5kSW50KDIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6bWFy
a1JlcG9ydEFzU2VudFRvU291cmNlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklO
RywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KK30KKworc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OlNvdXJj
ZUVhcmxpZXN0VGltZVRvU2VuZD4sIHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OkRlc3RpbmF0aW9u
RWFybGllc3RUaW1lVG9TZW5kPj4gRGF0YWJhc2U6OmVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQoreworICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0g
ZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVz
dGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKCFzb3VyY2VTaXRl
RG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQorICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworCisgICAgYXV0byBzY29w
ZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9lYXJsaWVzdFRpbWVzVG9TZW5k
U3RhdGVtZW50LCBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnksICJlYXJsaWVzdFRpbWVzVG9TZW5k
Il9zKTsKKworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRl
bWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5J
RCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsICJEYXRhYmFzZTo6ZWFybGllc3RUaW1lc1RvU2VuZCwgZXJyb3IgbWVzc2FnZTogJSIg
UFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUVh
cmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2U7CisgICAgc3RkOjpv
cHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5k
VG9EZXN0aW5hdGlvbjsKKyAgICAKKyAgICAvLyBBIHZhbHVlIG9mIDAuMCBpbmRpY2F0ZXMgdGhh
dCB0aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8gdGhlIHJlc3BlY3RpdmUgc2l0ZS4KKyAgICBp
ZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMCkgPiAwLjApCisgICAgICAgIGVhcmxp
ZXN0VGltZVRvU2VuZFRvU291cmNlID0gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMCk7
CisgICAgCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDEpID4gMC4wKQor
ICAgICAgICBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gc2NvcGVkU3RhdGVtZW50
LT5jb2x1bW5Eb3VibGUoMSk7CisgICAgCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGVhcmxp
ZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKTsK
K30KKworc3RkOjpvcHRpb25hbDxEYXRhYmFzZTo6RG9tYWluSUQ+IERhdGFiYXNlOjpkb21haW5J
RChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlz
LT5zY29wZWRTdGF0ZW1lbnQobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQsIGRvbWFpbklE
RnJvbVN0cmluZ1F1ZXJ5LCAiZG9tYWluSUQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50
IHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJ
VEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsICIlcCAtIERhdGFiYXNlOjpkb21haW5JREZyb21TdHJpbmcgZmFpbGVkLiBFcnJvciBtZXNz
YWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9CisgICAgCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ST1cpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
c2NvcGVkU3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6Z2V0
RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERvbWFpbklEIGRvbWFpbklEKQoreworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gcmVzdWx0ID0gZW1wdHlTdHJpbmcoKTsK
KyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudCht
X2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudCwgZG9tYWluU3RyaW5nRnJvbURvbWFp
bklEUXVlcnksICJnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQiX3MpOworICAgIGlmICghc2Nv
cGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCBkb21h
aW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFp
bklELiBTdGF0ZW1lbnQgZmFpbGVkIHRvIHByZXBhcmUgb3IgYmluZCwgZXJyb3IgbWVzc2FnZTog
JSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIAorICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KQorICAgICAgICByZXN1bHQgPSBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudC0+
Y29sdW1uVGV4dCgwKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGQ6Om9wdGlv
bmFsPERhdGFiYXNlOjpEb21haW5JRD4gRGF0YWJhc2U6OmVuc3VyZURvbWFpbklEKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAgaWYgKGF1dG8gZXhpc3Rp
bmdJRCA9IGRvbWFpbklEKGRvbWFpbikpCisgICAgICAgIHJldHVybiBleGlzdGluZ0lEOworCisg
ICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9pbnNlcnRP
YnNlcnZlZERvbWFpblN0YXRlbWVudCwgaW5zZXJ0T2JzZXJ2ZWREb21haW5RdWVyeSwgImluc2Vy
dE9ic2VydmVkRG9tYWluIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCAiJXAgLSBEYXRhYmFzZTo6ZW5zdXJlRG9tYWluSUQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIH0KKworICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmVuc3VyZURvbWFpbklEIGZhaWxlZCB0byBjb21taXQs
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1cm4gZG9tYWluSUQoZG9tYWluKTsK
K30KKwordm9pZCBEYXRhYmFzZTo6ZGVzdHJveVN0YXRlbWVudHMoKQoreworICAgIG1fc2V0VW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQgPSBudWxs
cHRyOworICAgIG1fZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9m
aW5kQXR0cmlidXRlZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9yZW1vdmVVbmF0dHJpYnV0
ZWRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2FsbFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBt
X2NsZWFyQWxsUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRy
OworICAgIG1fZWFybGllc3RUaW1lc1RvU2VuZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9t
YXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fbWFya1Jl
cG9ydEFzU2VudFRvRGVzdGluYXRpb25TdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZG9tYWlu
SURGcm9tU3RyaW5nU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2RvbWFpblN0cmluZ0Zyb21E
b21haW5JRFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0
YXRlbWVudCA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIzZDliNjYyYTM3MTc4
YTFiZGE5ODM0YTY0OTA3OGYyNzk0MDRjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYXRhYmFzZS5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRhdGFiYXNlVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2Ug
UENNIHsKKworc3RydWN0IERlYnVnSW5mbzsKKworLy8gVGhpcyBpcyBjcmVhdGVkLCB1c2VkLCBh
bmQgZGVzdHJveWVkIG9uIHRoZSBTdG9yZSdzIHF1ZXVlLgorY2xhc3MgRGF0YWJhc2UgOiBwdWJs
aWMgRGF0YWJhc2VVdGlsaXRpZXMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIERhdGFiYXNlKGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSk7CisgICAg
dmlydHVhbCB+RGF0YWJhc2UoKTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBpbnRlcnJ1cHRBbGxE
YXRhYmFzZXMoKTsKKworICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblR5cGUpOworICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiwg
RGVidWdJbmZvPiBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpOwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYWxsQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+KTsKKyAg
ICB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgdm9pZCBj
bGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2lu
dCk7CisKKyAgICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3Rp
bmcoKTsKKyAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOworCitwcml2YXRlOgorICAgIHVz
aW5nIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgdXNpbmcgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgdXNpbmcgRG9t
YWluSUQgPSB1bnNpZ25lZDsKKyAgICB1c2luZyBTb3VyY2VEb21haW5JRCA9IHVuc2lnbmVkOwor
ICAgIHVzaW5nIERlc3RpbmF0aW9uRG9tYWluSUQgPSB1bnNpZ25lZDsKKyAgICB1c2luZyBTb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBkb3VibGU7CisgICAgdXNpbmcgRGVzdGluYXRpb25FYXJs
aWVzdFRpbWVUb1NlbmQgPSBkb3VibGU7CisKKyAgICBib29sIGNyZWF0ZVNjaGVtYSgpIGZpbmFs
OworICAgIHZvaWQgZGVzdHJveVN0YXRlbWVudHMoKSBmaW5hbDsKKyAgICBzdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0
aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gZmluZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3Vy
Y2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uRGVzdGluYXRpb25TaXRlJik7CisgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQqLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7Cisg
ICAgdm9pZCByZW1vdmVVbmF0dHJpYnV0ZWQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmKTsKKyAgICBTdHJpbmcgYXR0cmlidXRpb25Ub1N0cmluZ0ZvclRlc3RpbmcoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50JiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUp
OworICAgIHZvaWQgbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oU291cmNlRG9tYWluSUQs
IERlc3RpbmF0aW9uRG9tYWluSUQpOworICAgIHZvaWQgbWFya1JlcG9ydEFzU2VudFRvU291cmNl
KFNvdXJjZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEKTsKKyAgICBzdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOworICAgIHN0ZDo6b3B0aW9uYWw8RG9tYWlu
SUQ+IGVuc3VyZURvbWFpbklEKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxEb21haW5JRD4gZG9tYWluSUQoY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKTsKKyAgICBTdHJpbmcgZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERv
bWFpbklEKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1l
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9maW5k
VW5hdHRyaWJ1dGVkU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQ+IG1fZmluZEF0dHJpYnV0ZWRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1l
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NsZWFyQWxsUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4gbV9jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2VhcmxpZXN0VGlt
ZXNUb1NlbmRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4gbV9tYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9tYXJrUmVwb3J0QXNTZW50VG9E
ZXN0aW5hdGlvblN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5J
RFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
PiBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
UENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERlYnVnSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNWQzOTdiYjcwNzI1MTA3ZTg4MWU0MjE0ZmI2MTZjNDc5MzIzYTk1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFt
ZXNwYWNlIFBDTSB7CisKK0RlYnVnSW5mbyBEZWJ1Z0luZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsgbWVzc2FnZXMuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKworRGVidWdJ
bmZvOjpNZXNzYWdlIERlYnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4geyBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
YnVnSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZjExNjAwODMxMDU4MDc5NTA4MjI3NjE1OWE2ZmM3YTJk
NTg0NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworc3RydWN0
IERlYnVnSW5mbyB7CisKKyAgICBzdHJ1Y3QgTWVzc2FnZSB7CisgICAgICAgIEpTQzo6TWVzc2Fn
ZUxldmVsIG1lc3NhZ2VMZXZlbDsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CisKKyAgICAgICAg
TWVzc2FnZSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICB9OworCisgICAgVmVjdG9yPE1lc3Nh
Z2U+IG1lc3NhZ2VzOworCisgICAgRGVidWdJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworfTsK
KworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2UyZmVlNDQxNDI4M2M0NTBmODNkZmI3ZjQ2NmVkZDYwYTgyYWM5
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKQEAgLTAs
MCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIgorCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYXRhYmFzZS5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
RGVidWdJbmZvLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworc3RhdGljIFJlZjxTdXNw
ZW5kYWJsZVdvcmtRdWV1ZT4gc2hhcmVkV29ya1F1ZXVlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPj4gcXVldWUoU3VzcGVuZGFibGVXb3Jr
UXVldWU6OmNyZWF0ZSgiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgUHJvY2VzcyBEYXRhIFF1ZXVl
IiwgIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSk7CisgICAgcmV0dXJuIHF1ZXVlLmdldCgpLmNv
cHlSZWYoKTsKK30KKwordm9pZCBTdG9yZTo6cHJlcGFyZUZvclByb2Nlc3NUb1N1c3BlbmQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgc2hhcmVkV29ya1F1ZXVlKCktPnN1c3BlbmQoRGF0
YWJhc2U6OmludGVycnVwdEFsbERhdGFiYXNlcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQorCit2b2lkIFN0b3JlOjpwcm9jZXNzRGlkUmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgIHNoYXJlZFdvcmtRdWV1ZSgpLT5yZXN1bWUoKTsKK30KKwor
U3RvcmU6OlN0b3JlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCisgICAgOiBtX3F1
ZXVlKHNoYXJlZFdvcmtRdWV1ZSgpKQoreworICAgIGlmICghZGF0YWJhc2VEaXJlY3RvcnkuaXNF
bXB0eSgpKSB7CisgICAgICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGRhdGFiYXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRD
b3B5KCldICgpIG11dGFibGUgeworICAgICAgICAgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8
RGF0YWJhc2U+KFdURk1vdmUoZGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICAgICAgfSk7CisgICAg
fQorfQorCitTdG9yZTo6flN0b3JlKCkgPSBkZWZhdWx0OworCit2b2lkIFN0b3JlOjpwb3N0VGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOworfQorCit2b2lkIFN0
b3JlOjpwb3N0VGFza1JlcGx5KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHJlcGx5KQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChXVEZNb3ZlKHJlcGx5KSk7Cit9CisKK3ZvaWQgU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01l
YXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24s
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkK
K3sKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBh
dHRyaWJ1dGlvbiA9IFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGVdICgpIG11
dGFibGUgeworICAgICAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2Ut
Pmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRy
aWJ1dGlvblR5cGUpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjptYXJrQWxsVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBw
b3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAg
IGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+bWFya0FsbFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIH0p
OworfQorCit2b2lkIFN0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25z
dCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0
ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVz
dGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVy
YWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmRE
YXRhPiYmLCBEZWJ1Z0luZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc291cmNlU2l0ZSA9IHNv
dXJjZVNpdGUuaXNvbGF0ZWRDb3B5KCksIGRlc3RpbmF0aW9uU2l0ZSA9IGRlc3RpbmF0aW9uU2l0
ZS5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdURk1vdmUoYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSksIGVwaGVtZXJhbE1lYXN1cmVtZW50ID0gY3Jvc3NUaHJlYWRDb3B5
KGVwaGVtZXJhbE1lYXN1cmVtZW50KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9kYXRhYmFzZSkgewor
ICAgICAgICAgICAgcmV0dXJuIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgeyB9KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gSW5zZXJ0IGVwaGVtZXJhbCBtZWFzdXJlbWVudCByaWdodCBi
ZWZvcmUgYXR0cmlidXRpb24uCisgICAgICAgIGlmIChlcGhlbWVyYWxNZWFzdXJlbWVudCkgewor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXBoZW1lcmFsTWVhc3VyZW1lbnQtPmlzRXBoZW1l
cmFsKCkpOworICAgICAgICAgICAgbV9kYXRhYmFzZS0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoV1RGTW92ZSgqZXBoZW1lcmFsTWVhc3VyZW1lbnQpLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKKyAgICAgICAgfQorCisgICAgICAg
IGF1dG8gW3NlY29uZHMsIGRlYnVnSW5mb10gPSBtX2RhdGFiYXNlLT5hdHRyaWJ1dGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1vdmUoYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSkpOworCisgICAgICAgIHBvc3RUYXNrUmVwbHkoW3NlY29uZHMg
PSBXVEZNb3ZlKHNlY29uZHMpLCBkZWJ1Z0luZm8gPSBkZWJ1Z0luZm8uaXNvbGF0ZWRDb3B5KCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlY29uZHMpLCBXVEZN
b3ZlKGRlYnVnSW5mbykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yZTo6
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHBvc3RUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFN0cmluZyBy
ZXN1bHQ7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgcmVzdWx0ID0gbV9k
YXRhYmFzZS0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoKTsKKyAg
ICAgICAgcG9zdFRhc2tSZXBseShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xhdGVkQ29weSgpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnM7CisgICAg
ICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgY29udmVydGVkQXR0cmlidXRpb25zID0g
bV9kYXRhYmFzZS0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAg
ICAgIHBvc3RUYXNrUmVwbHkoW2NvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IGNvbnZlcnRlZEF0dHJp
YnV0aW9ucy5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29udmVydGVkQXR0cmlidXRpb25zKSk7CisgICAgICAgIH0pOworICAgIH0pOwor
fQorCit2b2lkIFN0b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFz
ZS0+bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKCk7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBw
b3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclByaXZhdGVD
bGlja01lYXN1cmVtZW50KHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChkb21haW4pOworICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yZTo6Y2xlYXJF
eHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgeworICAgICAgICBpZiAobV9kYXRhYmFz
ZSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9u
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb25Ub0NsZWFyLCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2lu
dCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGF0dHJpYnV0aW9uVG9DbGVhciA9IGF0dHJpYnV0
aW9uVG9DbGVhci5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludF0oKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNl
LT5jbGVhclNlbnRBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhciksIGF0dHJp
YnV0aW9uUmVwb3J0RW5kcG9pbnQpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbG9zZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9z
dFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IG1fZGF0YWJhc2UgPSBudWxscHRyOworICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTUxZWQwYWJkMWNh
OGI3YjFjMzU0Njc2YWM0NWYzMzMyMWE0YjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUgOiBib29sOworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3MgRGF0
YWJhc2U7CitzdHJ1Y3QgRGVidWdJbmZvOworCitjbGFzcyBTdG9yZSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTdG9yZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RvcmU+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmUoZGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICB9CisKKyAg
ICB+U3RvcmUoKTsKKworICAgIHN0YXRpYyB2b2lkIHByZXBhcmVGb3JQcm9jZXNzVG9TdXNwZW5k
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc0Rp
ZFJlc3VtZSgpOworCisgICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlKTsKKyAgICB2b2lkIGF0dHJpYnV0ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VT
aXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiYmLCBEZWJ1Z0luZm8mJik+JiYpOworCisgICAgdm9p
ZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyk+JiYpOworICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIHZvaWQgbWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKKyAgICB2b2lkIGFsbEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJik+JiYpOworICAgIHZvaWQgY2xlYXJFeHBpcmVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBj
bGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0
dHJpYnV0aW9uVG9DbGVhciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uUmVwb3J0RW5kcG9pbnQpOworCisgICAgdm9pZCBjbG9zZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworCitwcml2YXRlOgorICAgIFN0b3JlKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VEaXJlY3RvcnkpOworCisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgcG9zdFRhc2tSZXBseShGdW5jdGlvbjx2b2lkKCk+JiYpOworCisgICAgc3RkOjp1
bmlxdWVfcHRyPERhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIFJlZjxTdXNwZW5kYWJsZVdvcmtR
dWV1ZT4gbV9xdWV1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCA2YTYzNWQ4OWQ3NzMw
ODA4NTJjM2ExZGZmMWE4ZGU4NzZlYWU2MDczLi43OTc0OGE2ODNlZjg3NjZiZjdjYzhiN2VhYjA2
NDk1ZGJjOGY5Yjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24u
aCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0
Y2hPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb3JtRGF0YS5oPgpAQCAtMjUwLDcgKzI1
MSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNlcnRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNCiAgICAgfQogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoV1RGTW92ZShtZWFzdXJlbWVudCksIHR5cGUpOworICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmluc2VydFByaXZhdGVD
bGlja01lYXN1cmVtZW50KFdURk1vdmUobWVhc3VyZW1lbnQpLCB0eXBlKTsKICNlbmRpZgogfQog
CkBAIC0yOTcsMTMgKzI5OCwxOCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjo6YXR0cmlidXRlKGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbgogICAgIH0KICAg
ICAgICAgCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtT
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwg
ZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBzdGQ6OmV4
Y2hhbmdlKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCksIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRzVW50aWxT
ZW5kRGF0YSkgeworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JlKCkuYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNl
U2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBz
dGQ6OmV4Y2hhbmdlKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCksIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YSwgYXV0byBkZWJ1Z0luZm8pIHsKICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBp
ZiAoIWF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewor
ICAgICAgICAgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IGRlYnVnSW5mby5tZXNzYWdlcykK
KyAgICAgICAgICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBtZXNzYWdlLm1lc3NhZ2VMZXZlbCwgbWVzc2FnZS5tZXNzYWdlKTsKKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEudmFsdWUo
KS5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkgewogICAgICAgICAgICAgICAgIGF1
dG8gbWluU2Vjb25kc1VudGlsU2VuZCA9IGF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEu
dmFsdWUoKS5taW5TZWNvbmRzVW50aWxTZW5kKCk7CiAKQEAgLTM5NSw3ICs0MDEsNyBAQCB2b2lk
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmlidXRpb24oUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJTZW50QXR0cmli
dXRpb24oV1RGTW92ZShzZW50Q29udmVyc2lvbiksIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQp
OworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JlKCkuY2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShzZW50Q29udmVyc2lvbiksIGF0
dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwogI2VuZGlmCiB9CiAKQEAgLTQwOSw3ICs0MTUsNyBA
QCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZVBlbmRpbmdBdHRyaWJ1
dGlvblJlcXVlc3RzKCkKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmFsbEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
IChhdXRvJiYgYXR0cmlidXRpb25zKSB7CisgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvJiYgYXR0
cmlidXRpb25zKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGF1dG8gbmV4dFRpbWVUb0ZpcmUgPSBTZWNvbmRzOjppbmZpbml0eSgpOwpAQCAt
NDYyLDcgKzQ2OCw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJl
UGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhcigpCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzVGltZXIuc3Rv
cCgpOwogICAgIG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQgPSBzdGQ6Om51bGxvcHQ7CkBAIC00NzAs
MjIgKzQ3NiwyNCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXIo
KQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIWZlYXR1
cmVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgICAgICBy
ZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
ZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogI2VuZGlmCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICghZmVhdHVy
ZUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoKTsKIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVE
b21haW4oZG9tYWluKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
Rm9yUmVnaXN0cmFibGVEb21haW4oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAjZW5kaWYKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJFeHBpcmVkKCkKQEAgLTQ5NSwxMSArNTAzLDExIEBA
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckV4cGlyZWQoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1f
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsK
KyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yZSgpLmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CiAjZW5kaWYKIH0K
IAotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3ZvaWQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjp0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFmZWF0dXJlRW5h
YmxlZCgpKSB7CkBAIC01MDgsNyArNTE2LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6OnRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJgogICAg
IH0KIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JlKCkucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRl
c3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogI2VuZGlmCkBAIC01NDUsNyArNTUzLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICNlbmRpZgogfQogCkBAIC01
NzUsNyArNTgzLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHAKICAgICB9CiAKICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5tYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkubWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmgKaW5kZXggY2Q3MmYyNTFhZWViYTFkZmNjZTBhNjcwM2EyZTVkODQzMzllZGI5ZS4uZjQ5
NTlkNWVhNGQ0NDcyNDRkODBhZWE4YzI0MjBmMDZmMjEwNzcyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RvcmVVbmF0
dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7CiAgICAgdm9pZCBoYW5kbGVBdHRy
aWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwotICAgIHZv
aWQgY2xlYXIoKTsKLSAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mKTsKLSAgICB2b2lkIHRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJikgY29uc3Q7CisgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB0
b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25z
dDsKICAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIHsgbV9p
c1J1bm5pbmdUZXN0ID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZyhVUkwmJik7CiAgICAgdm9pZCBzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmco
VVJMJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwCmluZGV4IGI1
YzdjNWMxNTViZGJhYTA5ZDI0YzI1ZDRlZWE0YzhhNTFhNWQ2NGEuLmVjYmI0ZTJkMDg4NzQ1NmM0
ZDE5ZTQyMzAzYWRiZjc1NmJhYjVlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29y
a0xvYWRlci5jcHAKQEAgLTUxLDYgKzUxLDExIEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0
d29ya0xvYWRlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKE5ldHdvCiAg
ICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKIH0KIAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRO
ZXR3b3JrTG9hZGVyOjp+UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKCkKK3sK
KyAgICBjYW5jZWwoKTsKK30KKwogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtM
b2FkZXI6OmZhaWwoUmVzb3VyY2VFcnJvciYmIGVycm9yKQogewogICAgIGlmICghbV9jb21wbGV0
aW9uSGFuZGxlcikKQEAgLTYwLDExICs2NSwxNiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlcjo6ZmFpbChSZXNvdXJjZUVycm9yJiYgZXJyb3IpCiAgICAgZGlkQ29t
cGxldGUoKTsKIH0KIAotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6
OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVx
dWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlcjo6Y2FuY2VsKCkKIHsKICAgICBmYWlsKFJlc291cmNlRXJyb3IgeyBSZXNv
dXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSk7CiB9CiAKK3ZvaWQgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKQorewor
ICAgIGNhbmNlbCgpOworfQorCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUocmVzcG9uc2UubWltZVR5
cGUoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oCmluZGV4IDE5NzJk
MDVlNWNiZmQ4OGVkNjM2OTMxOTdlNWQ2MDVmYjMwZDM0ZjAuLmM5ZmU5MGFiYTJjNjQwNjZmOWU3
N2EzYjgzOTQ0OTdlODU2Yzk3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2Fk
ZXIuaApAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVmUHRyPEpTT046Ok9iamVjdD4mKT47
CiAgICAgc3RhdGljIHZvaWQgc3RhcnQoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMmJiwgQ2FsbGJhY2smJik7CiAKKyAgICB+UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyKCk7CisKIHByaXZhdGU6CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYsIENhbGxi
YWNrJiYpOwogCkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKICAgICB2b2lkIGZh
aWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKKyAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZv
aWQgZGlkQ29tcGxldGUoKTsKIAogICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1fc2Vzc2lv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCmluZGV4
IGQyODIwNDZjYmZiNjA2ZDlhZDE0ZTQ3MTE5OTFlNjllOGQwODI0YzcuLjYyNzczNzBkODU2ODVm
NGM4NDAxYjBiMThlY2RmOTg5MzU0Njg0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgi
CiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9n
Z2luZ0tleXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggNDczY2U1MzY2N2RkODgzZGI4MWUyZmU1
OTk0MjdlODVmODA0NjA0YS4uMWNlYWUxODMwNWE3Njg4MTFlZGYzYjZmMDBkOWUzMDIxOGQxNjdm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShMSUJXRUJS
VEMpCiAKKyNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJSVENOZXR3b3JrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcAppbmRleCAz
MDgwMzQzODZmZmNiMjY5ZmUyOWIzMTQwOWUxODMxOThiMmNhZTAyLi5lMTRmODczYjdjODE3Yzc5
N2VjNGYzYjU2ODBiMjEyZTNjZjZiOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3Bw
CkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9z
dFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyCiAKICAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKICAgICAgICAgQ0ZEYXRh
UmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRy
ZXNzZXMsIGluZGV4KTsKLSAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IElQQWRkcmVzczo6ZnJv
bVNvY2tBZGRySW42KCpyZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbjYq
PihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKSkpCisgICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBX
ZWJDb3JlOjpJUEFkZHJlc3M6OmZyb21Tb2NrQWRkckluNigqcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBzdHJ1Y3Qgc29ja2FkZHJfaW42Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSkpKQogICAgICAg
ICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZCgqYWRkcmVzcyk7CiAgICAgfQogICAgIGlm
IChhZGRyZXNzZXMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA5N2Q1MTQ4NzRkZDYw
ZDU5N2NmZjc4MzhjZDgzNjk3MmZhOWFkMzJkLi4yODhhYzdkNTFjNTY2MDMxNjgwMGY2NmExMTEx
YzgxMjE0NmUwZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTM3LDYgKzM3LDggQEAgc3RydWN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBkaXJlY3Rvcnk7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
KyAgICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgYm9vbCBlbmFibGVkIHsgZmFsc2UgfTsKICAg
ICBib29sIGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0IHsgZmFsc2UgfTsKICAgICBib29sIGVuYWJs
ZUxvZ1Rlc3RpbmdFdmVudCB7IGZhbHNlIH07CkBAIC01NSw2ICs1Nyw4IEBAIHN0cnVjdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8
IGRpcmVjdG9yeTsKICAgICAgICAgZW5jb2RlciA8PCBkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CisgICAgICAgIGVuY29kZXIgPDwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0
b3J5OworICAgICAgICBlbmNvZGVyIDw8IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgZW5jb2RlciA8PCBlbmFibGVkOwogICAg
ICAgICBlbmNvZGVyIDw8IGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OwogICAgICAgICBlbmNvZGVy
IDw8IGVuYWJsZUxvZ1Rlc3RpbmdFdmVudDsKQEAgLTgxLDcgKzg1LDE3IEBAIHN0cnVjdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGRlY29kZXIgPj4gZGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIWRpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKKyAg
ICAgICAgZGVjb2RlciA+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7
CisgICAgICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGRlY29kZXIgPj4gcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAg
ICAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAg
ICAgICAgIGlmICghZW5hYmxlZCkKQEAgLTE0Miw2ICsxNTYsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAg
IFdURk1vdmUoKmRpcmVjdG9yeSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpkaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpLAorICAgICAgICAgICAgV1RGTW92ZSgqcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yYWdlRGlyZWN0b3J5KSwKKyAgICAgICAgICAgIFdURk1vdmUoKnByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAgICAgICAgICBX
VEZNb3ZlKCplbmFibGVkKSwKICAgICAgICAgICAgIFdURk1vdmUoKmlzSXRwU3RhdGVFeHBsaWNp
dGx5U2V0KSwKICAgICAgICAgICAgIFdURk1vdmUoKmVuYWJsZUxvZ1Rlc3RpbmdFdmVudCksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCA2NmFlZGE0M2M4MmQ4YmZiMzM1YmJmZWY2MDk1ZDA0ZWZhZGI4NjIwLi4z
ZDUwOTdjMjQ4OWZlZmJkY2E3NTQxN2M0ZGM4MTdkMGJkMTU4NDRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTU3LDYgKzU3LDcgQEAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Y3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyLmNwcAogCitOZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAKIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwCkBAIC05OCw2ICs5OSwxMCBAQCBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWRE
Qi9XZWJJREJTZXJ2ZXIuY3BwCiAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCitOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5j
cHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmUuY3BwCisKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmlu
ZGV4IDhjYTI0MTJlNjhhMTk3NDdhNTU0YTNkODViYzlkMTkzNDBjYzQzMjkuLjkxYmM2ZmJmNTA1
YzRjNGQyYzViNDQyNWVhMDM0ZGE2ODIzZTkyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNzMxLDkg
KzczMSw5IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJz
aXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjptYWtlTmV4dE5ldHdvcmtQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcoKTsKIH0K
IAotKyAodm9pZClfcHJldmVudE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkZvclRlc3RpbmcKKysg
KHZvaWQpX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nOihCT09M
KWFsbG93ZWQKIHsKLSAgICBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByZXZlbnRTdXNw
ZW5zaW9uRm9yVGVzdGluZygpOworICAgIFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0
U3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nKGFsbG93ZWQpOwogfQogCiAtIChCT09MKV9uZXR3
b3JrUHJvY2Vzc0V4aXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggYmViNGMyODU4
Y2U5ZDA5NzgwZjc2YjgzOThjYWRhNzI2N2U2Mzc4YS4uMDE3MTNlNjAxN2Q1ZDE3MGYwNmQ1OWFh
MDk2OWRmZGU4ZDM0N2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC05NSw3ICs5
NSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3Jl
RmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9zZW5kTmV0d29ya1Byb2Nlc3NQcmVwYXJlVG9TdXNw
ZW5kOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTIuMCksIGlvcygxNS4wKSk7CiAtICh2b2lkKV9zZW5kTmV0d29ya1Byb2Nlc3NXaWxsU3Vz
cGVuZEltbWluZW50bHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsK
IC0gKHZvaWQpX3NlbmROZXR3b3JrUHJvY2Vzc0RpZFJlc3VtZSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjApLCBpb3MoMTUuMCkpOwotKyAodm9pZClfcHJldmVudE5ldHdvcmtQcm9jZXNzU3Vz
cGVuc2lvbkZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKysgKHZvaWQpX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93
ZWRGb3JUZXN0aW5nOihCT09MKWFsbG93ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3N5bnRoZXNpemVBcHBJc0JhY2tncm91
bmQ6KEJPT0wpYmFja2dyb3VuZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUu
MCkpOwogLSAocGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogKyAodm9pZClfbWFrZU5leHROZXR3b3JrUHJvY2Vz
c0xhdW5jaEZhaWxGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygx
NS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGFjZDA0
ZDg2N2ZkMWEwODAxYmFkYWRjNTYzNTc3ZTI1ZDg3N2NkODAuLjc3ODU5NTllZjU2NjMxYzVhNTFh
NDFhYjgzZTQ5NWVmOTZlZDE0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyks
IGlvcygxMS4wKSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5OikgTlNVUkwgKl93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldENvb2tpZVN0b3JhZ2VGaWxlOikg
TlNVUkwgKl9jb29raWVTdG9yYWdlRmlsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBz
ZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk6KSBOU1VSTCAqX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSwgaW9zKDExLjMpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNV
UkwgKnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHksIHNldHRlcj1fc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OikgTlNVUkwgKl9j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9z
KDExLjMpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6KSBOU1VSTCAqX3NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEz
LjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQppbmRleCA2YTNi
NjNjYjY5MDhlYmI5YWU4MzYxZjQzNjgzOWMwM2VkN2Q2MzZkLi42NTlkNmZkMjVmNGIwYmQ2ZjU4
MjRhMTJmZTA2YjljNDhkNTdlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLm1tCkBAIC0xODYsNiArMTg2LDIyIEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMQXJndW1l
bnQoTlNVUkwgKnVybCkKICAgICBfY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKKy0gKE5TVVJMICopcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5Cit7CisgICAgYXV0byYgZGlyZWN0b3J5ID0gX2NvbmZp
Z3VyYXRpb24tPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSgpOworICAg
IGlmIChkaXJlY3RvcnkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJu
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU107Cit9CisK
Ky0gKHZvaWQpc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OihOU1VS
TCAqKXVybAoreworICAgIGlmICghX2NvbmZpZ3VyYXRpb24tPmlzUGVyc2lzdGVudCgpKQorICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiQ2Fubm90IHNldCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnkgb24g
YSBub24tcGVyc2lzdGVudCBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi4iXTsKKyAg
ICBjaGVja1VSTEFyZ3VtZW50KHVybCk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSh1cmwucGF0aCk7Cit9CisKIC0gKE5TVVJM
ICopX2NhY2hlU3RvcmFnZURpcmVjdG9yeQogewogICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOl9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9y
eTpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNjcxYWRkNGFhMjdjZDE3ZWJiNjc5MGVmZTE2YTU1
YTFjMTQzNjZlYi4uY2IwZDJkYWNkZmNiYWYyNjhjYmJiZWFiMmRhZmQyZWQwZWEyMzFhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xMjUxLDE1ICsxMjUxLDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nKCkKICAgICAg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5Rm9yVGVzdGluZ1N5bmMoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmM6OlJlcGx5KCksIDApOwogfQog
Ci1zdGF0aWMgYm9vbCBzX3N1c3BlbnNpb25QcmV2ZW50ZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJldmVudFN1c3BlbnNpb25Gb3JUZXN0aW5nKCkK
K3N0YXRpYyBib29sIHNfc3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nIHsgdHJ1ZSB9Owordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTdXNwZW5zaW9uQWxsb3dlZEZvclRlc3RpbmcoYm9v
bCBhbGxvd2VkKQogewotICAgIHNfc3VzcGVuc2lvblByZXZlbnRlZEZvclRlc3RpbmcgPSB0cnVl
OworICAgIHNfc3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nID0gYWxsb3dlZDsKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25J
bW1pbmVudCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChzX3N1c3BlbnNpb25QcmV2ZW50ZWRGb3JU
ZXN0aW5nKQorICAgIGlmICghc19zdXNwZW5zaW9uQWxsb3dlZEZvclRlc3RpbmcpCiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZXBhcmVUb1N1c3BlbmQoaXNTdXNwZW5zaW9uSW1taW5l
bnQgPT0gSXNTdXNwZW5zaW9uSW1taW5lbnQ6OlllcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCAwLCB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpObyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCmluZGV4IDU4YThhOGU5NGJmM2NmZTdiZjhjNzc5Nzk4NWNjMTJiZDNhYjY4YmUu
LjFmZjVlYThhM2M3YzU2MjQzOGQwMGY4MTRiNWNiYjllZGZhMDgzZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBA
IC0yMzEsNyArMjMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUo
KSBmaW5hbDsKICAgICBBU0NJSUxpdGVyYWwgY2xpZW50TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJOZXR3b3JrUHJvY2VzcyJfczsgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHByZXZlbnRT
dXNwZW5zaW9uRm9yVGVzdGluZygpOworICAgIHN0YXRpYyB2b2lkIHNldFN1c3BlbnNpb25BbGxv
d2VkRm9yVGVzdGluZyhib29sKTsKICAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5Rm9yVGVzdGluZygpOwogCiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckxlZ2FjeUN1
c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAyMWJlMjU4
MTBiMzI2YjFiMDAwYTE0Y2FhZWZkZDcyZTgzNzdlNWYxLi5mOTQxYjAxZWJmZWI3ZmFiY2YxMTBh
OTE1MzEzYzZlMjg4Mjg1YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjYxLDYgKzI2MSw4IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKQog
ICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1f
Y29uZmlndXJhdGlvbi0+bmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29u
ZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpLmlzRW1wdHkoKSkK
ICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KHJlc29sdmVB
bmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJh
dGlvbi0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCkpKTsKICAgICBp
ZiAoIW1fY29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgp
LmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkocmVzb2x2ZUFuZENy
ZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9u
LT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29u
ZmlndXJhdGlvbi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5KCkp
CkBAIC0xOTY0LDEzICsxOTY2LDIwIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogCiAgICAgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNl
c3NhcnkoKTsKIAotICAgIGF1dG8gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1f
Y29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGF1
dG8gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGU7CiAgICAg
aWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkgewogICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpCiAgICAgICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlID0gV1RGTW92ZSgqaGFu
ZGxlKTsKICAgICB9CiAKKyAgICBhdXRvIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURp
cmVjdG9yeSA9IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5SGFuZGxlOworICAgIGlmICghcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBp
ZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSkKKyAg
ICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUhhbmRsZSA9
IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQorCiAgICAgYXV0byBuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkgPSByZXNvbHZlZE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYg
KCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CkBAIC0yMDAwLDYgKzIwMDksOCBA
QCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJz
KCkKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycyA9IHsKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5SGFuZGxlKSwKKyAgICAgICAgV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JhZ2VEaXJlY3RvcnkpLAorICAgICAgICBXVEZNb3ZlKHByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RvcmFnZURpcmVjdG9yeUhhbmRsZSksCiAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCksCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAg
aXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAppbmRleCBjNzAyZDRhN2EzZWU1ZWNiZmFhNjkwYjRjM2FkYTBiMjNkNzBmMzk1
Li41ZjUxNjZiNzI4ZTNiZGFlZDlkMjU4MzY5NDRiMWQzZGU4M2EyM2FiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC03Niw2ICs3Niw3IEBAIFJlZjxXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246
OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSA9
IHRoaXMtPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeTsKICAgICBjb3B5LT5tX2Rldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKKyAgICBjb3B5
LT5tX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1famF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5tX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5OwogICAgIGNvcHktPm1fY29va2llU3RvcmFnZUZpbGUgPSB0aGlzLT5tX2Nv
b2tpZVN0b3JhZ2VGaWxlOwogICAgIGNvcHktPm1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyID0gdGhpcy0+bV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCBlZmFhOWM4MGEwYzgyMGRlM2Nj
YzI2ODE0OWM4NjZhZjAzYTg0NWFlLi5kNjBiNTlmNGQ5OTJhZDg0ZmEzMTgwYmE0NmIyMjE5MGYw
N2FhOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTExNyw2
ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFN0
cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBX
VEZNb3ZlKGRpcmVjdG9yeSk7IH0KIAorICAgIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0K
KwogICAgIGNvbnN0IFN0cmluZyYgbmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBX
VEZNb3ZlKGRpcmVjdG9yeSk7IH0KICAgICAKQEAgLTIwMSw2ICsyMDQsNyBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2Nvb2tpZVN0b3JhZ2VGaWxlOwogICAgIFN0cmlu
ZyBtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZlM2QzMmIzMjk1YzJjNDRm
ZDQ0NDRjZGQ3ZjE0MWYyNDAwNGNhMDIuLmRjZTE5MzNmZjNkNGMwZjE1OTQwMjU3ZjAxMmZkNTY4
MWRkMDM0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTI3MSw2ICsxMjcxLDggQEAKIAkJNUM3OTVENzAyMjlGMzczRjAwM0ZGMUM0
IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFMEMzNjkyMjlGMkQ0QTAwMzY5NUYwIC8qIFdLQ29udGV4
dE1lbnVFbGVtZW50SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJNUM3OTVENzEyMjlGMzc1NzAwM0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVt
ZW50SW5mb1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDRTBDMzZBMjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudElu
Zm9Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNUM3RkI0NzAyMUU5N0RDNTAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3RkI0NkYyMUU5N0MwQzAw
OUUzMjQxIC8qIFdlYkNvb2tpZUphci5oICovOyB9OworCQk1QzgyNkQ2QjI2RDQ4MkVGMDA4QUVD
OTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4MjZENjgyNkQ0NkI0NDAwOEFFQzkxIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCAqLzsgfTsKKwkJNUM4MjZENkMyNkQ0ODJGMjAw
OEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDODI2RDY5MjZENDgyRUEwMDhBRUM5
MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi87IH07CiAJCTVDOEJDNzk3
MjE4Q0JCNDgwMDgxMzg4NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEJDNzk2MjE4Q0I1OEEwMDgxMzg4
NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgKi87IH07CiAJCTVDOEREMzgwMUZFNDUyMTYwMEYy
QTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEREMzdGMUZFNDUxOTIwMEYyQTU1NiAvKiBXZWJzaXRl
QXV0b3BsYXlQb2xpY3kuaCAqLzsgfTsKIAkJNUM5QTkxMTEyMjhGNjlDQzAwNUM1QjE3IC8qIFhQ
Q1NlcnZpY2VNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM4MjgzOTYxNkI0N0VDNDAwQTI3OEZFIC8qIFhQQ1NlcnZpY2VNYWluLm1tICovOyB9
OwpAQCAtNDUwOSw2ICs0NTExLDEyIEBACiAJCTVDN0ZCNDZGMjFFOTdDMEMwMDlFMzI0MSAvKiBX
ZWJDb29raWVKYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29va2ll
SmFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODBCM0RCMjM2OTBEOEQwMDg2
RTZERSAvKiBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4MEIzREQyMzY5MEYxMDAwODZFNkRFIC8qIFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDY3MjZENDZCNDMwMDhBRUM5MSAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzgyNkQ2ODI2RDQ2QjQ0MDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDODI2RDY5MjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50RGF0YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM4MjZENkEy
NkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDZFMjZE
NThBMTYwMDhBRUM5MSAvKiBEYXRhYmFzZVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDODI2RDZGMjZENThBMTYwMDhBRUM5MSAvKiBEYXRhYmFzZVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVV0aWxpdGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzg0Q0Y5MDFGOTZBQzRFMDBCNjcw
NUEgLyogTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4NUM3ODYxQzNGMjNDNTAwNjFBNEZBIC8qIFBl
bmRpbmdEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
ZW5kaW5nRG93bmxvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzg5REY1
NjIxQUY2MUZGMDA0NjQ1RTggLyogTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU0Niw2
ICs0NTU0LDggQEAKIAkJNUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0Yg
LyogTmV0d29ya0RhdGFUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5l
dHdvcmtEYXRhVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4QjFD
NjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCRTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQkU5MDkwMjZEN0ZCN0MwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJD
b3B5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZEJ1ZmZlckNvcHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNEMjg2NDkxRTcyMkY0NDAwOTRGREM4
IC8qIF9XS1VzZXJDb250ZW50RmlsdGVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tVc2VyQ29udGVudEZpbHRlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNEMjg2NEExRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGVudFJ1bGVMaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjcyLDkgKzg2ODIsMTIgQEAKIAkJ
CQk5MzkyODhFMDIxNDA0REYwMDBFQkJBMzMgLyogSW5kZXhlZERCICovLAogCQkJCTJEQTk0NEJC
MTg4NTExREQwMEVEODZEQiAvKiBpb3MgKi8sCiAJCQkJNTEwQ0M3REMxNjEzOEUyOTAwRDAzRUQz
IC8qIG1hYyAqLywKKwkJCQk1QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0MkYgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgKi8sCiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VX
b3JrZXIgKi8sCiAJCQkJNDEzMDc1OTcxREU4NEVENzAwMzlFQzY5IC8qIHdlYnJ0YyAqLywKIAkJ
CQk5M0IyNjE0MzIyN0QxNDMxMDBCOTdBNzYgLyogV2ViU3RvcmFnZSAqLywKKwkJCQk1QzgyNkQ2
RTI2RDU4QTE2MDA4QUVDOTEgLyogRGF0YWJhc2VVdGlsaXRpZXMuY3BwICovLAorCQkJCTVDODI2
RDZGMjZENThBMTYwMDhBRUM5MSAvKiBEYXRhYmFzZVV0aWxpdGllcy5oICovLAogCQkJCTUzRjND
QUE1MjA2QzQ0M0UwMDg2NDkwRSAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcCAqLywKIAkJ
CQk1MzVCQ0I5MDIwNjlDNDlDMDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oICov
LAogCQkJCTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmNwcCAqLywKQEAgLTkyNDMsNiArOTI1NiwxOSBAQAogCQkJcGF0aCA9IFNPQXV0
aG9yaXphdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTVDMDFCQzM1
MjZENDZBRDQwMEZFQjQyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM4MjZENkEyNkQ0ODJFQTAwOEFF
QzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwICovLAorCQkJCTVDODI2
RDY5MjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgg
Ki8sCisJCQkJNUNCRTkwOTAyNkQ3RkI3QzAwNUEyRTk1IC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdJbmZvLmNwcCAqLywKKwkJCQk1Q0JFOTA4RjI2RDdGQjYyMDA1QTJFOTUgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaCAqLywKKwkJCQk1QzgyNkQ2NzI2RDQ2QjQz
MDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgKi8sCisJCQkJNUM4
MjZENjgyNkQ0NkI0NDAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCAq
LywKKwkJCSk7CisJCQlwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OwogCQk1QzE0MjZGMTFDMjNGODE3MDBENDExODMgLyogRG93
bmxvYWRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEy
MzA2LDggKzEyMzMyLDEwIEBACiAJCQkJQzE1Q0JCMzYyM0YzNzc3MTAwMzAwQ0M3IC8qIFByZWZl
cmVuY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFCMTQ1RTYyMjNGOTMxMjAwRTQ4
OUQ4IC8qIFByZWZldGNoQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQ0MxQjkwMTJEN0VB
REYwMDYyNTgzOCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTVDODI2RDZDMjZE
NDgyRjIwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2QkQwNTg2NTIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZFNjg4QzI2MEFCQjNEMDBC
RjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1QzgyNkQ2QjI2RDQ4MkVGMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVG
IC8qIFByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4MTEzNkUx
OUMwMEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2M0ZE
NDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDY3YzBmMjViOWFjODQ0MzljYjdmNTAzOWQ2MjdhYTkxODI2Y2U1M2UuLmM3YzM2MjM1MTEy
YWQ5NTMzYzI5MTAwNDgxOTg5YjIxZTg1MjRlNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wOC0yNyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFNlcGFy
YXRlIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGRhdGFiYXNlIGZyb20gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyBkYXRhYmFzZSBhbmQgYWRkIFNQSSB0byBzZXQgaXRzIGxvY2F0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk1MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTA4LTI1
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdl
YmtpdF0gVXNlIFB5dGhvbiAzIGluIENJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0KaW5kZXggYzgwY2E3MTZj
YzAyMWE0Yjg5NjFlODAzNGViNDAwODAzZTQ4ZjUxNC4uZTAyMmEwZjNhNzFhODM3MzVmMzdlYzI0
MTY2M2VlZjhjYmU2YjllNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQpAQCAtMjgsMTAgKzI4LDEyIEBA
CiAjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAKICNpZiBIQVZFKFJTQV9C
U1NBKQogCkBAIC03OCw5ICs4MCw5IEBAIHN0YXRpYyBOU1VSTCAqZXhhbXBsZVVSTCgpCiAgICAg
cmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iXTsKIH0K
IAotdm9pZCBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KEZ1bmN0aW9uPHZvaWQoV0tXZWJW
aWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXImKT4mJiBhZGRBdHRyaWJ1dGlvblRvV2ViVmlldykKK3Zv
aWQgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKFdLV2ViVmlldyAqLCBjb25zdCBIVFRQU2VydmVy
Jik+JiYgYWRkQXR0cmlidXRpb25Ub1dlYlZpZXcpCiB7Ci0gICAgW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfcHJldmVudE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkZvclRlc3RpbmddOworICAgIFtXS1dl
YnNpdGVEYXRhU3RvcmUgX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0
aW5nOk5PXTsKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBIVFRQU2VydmVyIHNlcnZlcihb
JmRvbmUsIGNvbm5lY3Rpb25Db3VudCA9IDBdIChDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFi
bGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CkBAIC0xMTMsNyArMTE1
LDcgQEAgdm9pZCBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KEZ1bmN0aW9uPHZvaWQoV0tX
ZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXImKT4KICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMpOwogICAgIE5TVVJMICpzZXJ2ZXJVUkwgPSBzZXJ2ZXIucmVxdWVzdCgpLlVSTDsK
IAotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBjb25maWd1cmF0aW9uID8gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pIDogYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIGFkZEF0dHJpYnV0aW9uVG9XZWJWaWV3KHdlYlZp
ZXcuZ2V0KCksIHNlcnZlcik7CiAgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVE
YXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CiAgICAgW1t3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUgX2FsbG93VExTQ2VydGlmaWNh
dGVDaGFpbjpAWyhpZCl0ZXN0Q2VydGlmaWNhdGUoKS5nZXQoKV0gZm9ySG9zdDpzZXJ2ZXJVUkwu
aG9zdF07CkBAIC0xMjksNyArMTMxLDcgQEAgdm9pZCBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25U
ZXN0KEZ1bmN0aW9uPHZvaWQoV0tXZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXImKT4KICNpZiBI
QVZFKFJTQV9CU1NBKQogVEVTVChFdmVudEF0dHJpYnV0aW9uLCBGcmF1ZFByZXZlbnRpb24pCiB7
Ci0gICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfcHJldmVudE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lv
bkZvclRlc3RpbmddOworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldE5ldHdvcmtQcm9jZXNz
U3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nOk5PXTsKICAgICBib29sIGRvbmUgPSBmYWxzZTsK
IAogICAgIC8vIEdlbmVyYXRlIHRoZSBzZXJ2ZXIga2V5IHBhaXIuCkBAIC0yODIsMTYgKzI4NCw2
MSBAQCBURVNUKEV2ZW50QXR0cmlidXRpb24sIEZyYXVkUHJldmVudGlvbikKIAogVEVTVChFdmVu
dEF0dHJpYnV0aW9uLCBCYXNpYykKIHsKLSAgICBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0
KFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAg
cnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChuaWwsIFtdKFdLV2ViVmlldyAqd2ViVmlldywg
Y29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CiAgICAgICAgIFt3ZWJWaWV3IF9hZGRFdmVudEF0
dHJpYnV0aW9uV2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBzb3Vy
Y2VEZXNjcmlwdGlvbjpAInRlc3Qgc291cmNlIGRlc2NyaXB0aW9uIiBwdXJjaGFzZXI6QCJ0ZXN0
IHB1cmNoYXNlciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgb3B0aW9uYWxO
b25jZTpuaWxdOwogICAgIH0pOwogfQogCitURVNUKEV2ZW50QXR0cmlidXRpb24sIERhdGFiYXNl
TG9jYXRpb24pCit7CisgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl07CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkV2ZW50QXR0cmlidXRpb25EYXRhYmFzZUxvY2F0aW9uVGVzdCJdIGlzRGlyZWN0
b3J5OllFU107CisgICAgaWYgKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOnRlbXBEaXIu
cGF0aF0pCisgICAgICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJv
cjpuaWxdOworCisgICAgYXV0byB3ZWJWaWV3VG9LZWVwTmV0d29ya1Byb2Nlc3NBbGl2ZSA9IGFk
b3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXdUb0tlZXBOZXR3b3JrUHJv
Y2Vzc0FsaXZlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInN0YXJ0IG5ldHdvcmsgcHJv
Y2VzcyJdOworCisgICAgcGlkX3Qgb3JpZ2luYWxOZXR3b3JrUHJvY2Vzc1BpZCA9IDA7CisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10pOworICAgICAg
ICBkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLnByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmFnZURpcmVjdG9yeSA9IHRlbXBEaXI7CisgICAgICAgIGF1dG8gdmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgICAgICBhdXRvIGRh
dGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICB2aWV3
Q29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0b3JlLmdldCgpOwor
ICAgICAgICBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KHZpZXdDb25maWd1cmF0aW9uLmdl
dCgpLCBbXShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgewor
ICAgICAgICAgICAgW3dlYlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25XaXRoU291cmNlSUQ6NDIg
ZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0aW9uOkAidGVzdCBzb3Vy
Y2UgZGVzY3JpcHRpb24iIHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2VyIiByZXBvcnRFbmRwb2lu
dDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBvcHRpb25hbE5vbmNlOm5pbF07CisgICAgICAgIH0pOwor
ICAgICAgICBvcmlnaW5hbE5ldHdvcmtQcm9jZXNzUGlkID0gW2RhdGFTdG9yZSBfbmV0d29ya1By
b2Nlc3NJZGVudGlmaWVyXTsKKyAgICAgICAgRVhQRUNUX0dUKG9yaWdpbmFsTmV0d29ya1Byb2Nl
c3NQaWQsIDApOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBzdXNwZW5kZWQgPSBmYWxzZTsKKyAg
ICAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0TmV0d29ya1Byb2Nlc3NTdXNwZW5zaW9uQWxs
b3dlZEZvclRlc3Rpbmc6WUVTXTsKKyAgICAgICAgW2RhdGFTdG9yZSBfc2VuZE5ldHdvcmtQcm9j
ZXNzUHJlcGFyZVRvU3VzcGVuZDpeeworICAgICAgICAgICAgc3VzcGVuZGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIFtkYXRhU3RvcmUgX3NlbmROZXR3b3JrUHJvY2Vzc0RpZFJlc3VtZV07CisgICAg
ICAgIH1dOworICAgICAgICBVdGlsOjpydW4oJnN1c3BlbmRlZCk7CisgICAgICAgIFV0aWw6OnNw
aW5SdW5Mb29wKDEwKTsKKyAgICB9CisgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTApOworICAgIHVz
bGVlcCgxMDAwMDApOworICAgIFV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKworICAgIEVYUEVDVF9U
UlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOworICAgIEVY
UEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOlt0ZW1wRGlyLnBhdGggc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicGNtLmRiIl1dKTsKKworICAgIFt3ZWJWaWV3
VG9LZWVwTmV0d29ya1Byb2Nlc3NBbGl2ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJz
dGFydCBuZXR3b3JrIHByb2Nlc3MgYWdhaW4gaWYgaXQgY3Jhc2hlZCBkdXJpbmcgdGVhcmRvd24i
XTsKKyAgICBFWFBFQ1RfRVEod2ViVmlld1RvS2VlcE5ldHdvcmtQcm9jZXNzQWxpdmUuZ2V0KCku
Y29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLl9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIs
IG9yaWdpbmFsTmV0d29ya1Byb2Nlc3NQaWQpOworfQorCisvLyBGSVhNRTogV3JpdGUgYSB0ZXN0
IHRoYXQgdmVyaWZpZXMgdGhhdCBkYXRhIGlzIG1pZ3JhdGVkIGZyb20gb2xkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgZGF0YWJhc2VzIHRvIHRoZSBuZXcgUENNIGRhdGFiYXNlLgorCiAjaWYgSEFW
RShVSV9FVkVOVF9BVFRSSUJVVElPTikKIAogVEVTVChFdmVudEF0dHJpYnV0aW9uLCBCYXNpY1dp
dGhJT1NTUEkpCiB7Ci0gICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChbXShXS1dlYlZp
ZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgeworICAgIHJ1bkJhc2ljRXZl
bnRBdHRyaWJ1dGlvblRlc3QobmlsLCBbXShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBT
ZXJ2ZXImIHNlcnZlcikgewogICAgICAgICBhdXRvIGF0dHJpYnV0aW9uID0gYWRvcHROUyhbW01v
Y2tFdmVudEF0dHJpYnV0aW9uIGFsbG9jXSBpbml0V2l0aFJlcG9ydEVuZHBvaW50OnNlcnZlci5y
ZXF1ZXN0KCkuVVJMIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKV0pOwogICAgICAgICB3ZWJW
aWV3Ll91aUV2ZW50QXR0cmlidXRpb24gPSAoVUlFdmVudEF0dHJpYnV0aW9uICopYXR0cmlidXRp
b24uZ2V0KCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQppbmRleCBi
ZDFlMjdhOTEwMmQxNzJiZWY5YjQ4ZDAzY2JhMDZhMDllYzUwNDZkLi41NjBkMTMwMDBiZWJkMDEy
MDU2YzI0NjQyNTE3ZDQ2ZTRiZmIyOTc1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQu
bW0KQEAgLTMyLDYgKzMyLDggQEAKICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCisvLyBGSVhNRTog
SW1wbGVtZW50IG1pZ3JhdGlvbiBmcm9tIG9sZGVyIGRhdGFiYXNlcyBhbmQgZ2V0IHRoZXNlIHRl
c3RzIHdvcmtpbmcgYXMgdGhleSBzaG91bGQgYWdhaW4uCisKIFRFU1QoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIEFkZE1pc3NpbmdQQ01GcmF1ZFByZXZlbnRpb25Db2x1bW5zKQogewogICAgIGF1
dG8gKnNoYXJlZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bvb2wgX3NoYXJlZFByb2Nlc3NQb29s
XTsKQEAgLTYyLDkgKzY0LDkgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgQWRkTWlz
c2luZ1BDTUZyYXVkUHJldmVudGlvbkNvbHVtbnMpCiAgICAgLy8gQ2hlY2sgdGhlIGNvbHVtbnMg
b2YgUENNIHRhYmxlcyB0byBtYWtlIHN1cmUgZnJhdWQgcHJldmVudGlvbiBjb2x1bW5zIHdlcmUg
YWRkZWQuCiAgICAgX19ibG9jayBib29sIGRvbmVGbGFnID0gZmFsc2U7CiAgICAgW2RhdGFTdG9y
ZSBfc3RhdGlzdGljc0RhdGFiYXNlQ29sdW1uc0ZvclRhYmxlOkAiVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQiIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAq
PiAqdGFibGVTY2hlbWEpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoW3RhYmxlU2NoZW1hIGNvbnRh
aW5zT2JqZWN0OkAidG9rZW4iXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFt0YWJsZVNjaGVtYSBj
b250YWluc09iamVjdDpAImtleUlEIl0pOwotICAgICAgICBFWFBFQ1RfVFJVRShbdGFibGVTY2hl
bWEgY29udGFpbnNPYmplY3Q6QCJzaWduYXR1cmUiXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShb
dGFibGVTY2hlbWEgY29udGFpbnNPYmplY3Q6QCJ0b2tlbiJdKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKFt0YWJsZVNjaGVtYSBjb250YWluc09iamVjdDpAImtleUlEIl0pOworICAgICAgICBFWFBF
Q1RfRkFMU0UoW3RhYmxlU2NoZW1hIGNvbnRhaW5zT2JqZWN0OkAic2lnbmF0dXJlIl0pOwogICAg
ICAgICBkb25lRmxhZyA9IHRydWU7CiAgICAgfV07CiAKQEAgLTcyLDkgKzc0LDkgQEAgVEVTVChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgQWRkTWlzc2luZ1BDTUZyYXVkUHJldmVudGlvbkNvbHVt
bnMpCiAKICAgICBkb25lRmxhZyA9IGZhbHNlOwogICAgIFtkYXRhU3RvcmUgX3N0YXRpc3RpY3NE
YXRhYmFzZUNvbHVtbnNGb3JUYWJsZTpAIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCIgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICp0YWJsZVNjaGVtYSkg
ewotICAgICAgICBFWFBFQ1RfVFJVRShbdGFibGVTY2hlbWEgY29udGFpbnNPYmplY3Q6QCJ0b2tl
biJdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW3RhYmxlU2NoZW1hIGNvbnRhaW5zT2JqZWN0OkAi
a2V5SUQiXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFt0YWJsZVNjaGVtYSBjb250YWluc09iamVj
dDpAInNpZ25hdHVyZSJdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFt0YWJsZVNjaGVtYSBjb250
YWluc09iamVjdDpAInRva2VuIl0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW3RhYmxlU2NoZW1h
IGNvbnRhaW5zT2JqZWN0OkAia2V5SUQiXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbdGFibGVT
Y2hlbWEgY29udGFpbnNPYmplY3Q6QCJzaWduYXR1cmUiXSk7CiAgICAgICAgIGRvbmVGbGFnID0g
dHJ1ZTsKICAgICB9XTsKIApAQCAtMTExLDggKzExMyw4IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIEFkZE1pc3NpbmdQQ01SZXBvcnRpbmdDb2x1bW5zKQogICAgIC8vIENoZWNrIHRo
ZSBjb2x1bW5zIG9mIHRoZSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUg
dG8gbWFrZSBzdXJlIG5ldyByZXBvcnRpbmcgY29sdW1ucyB3ZXJlIGFkZGVkLgogICAgIF9fYmxv
Y2sgYm9vbCBkb25lRmxhZyA9IGZhbHNlOwogICAgIFtkYXRhU3RvcmUgX3N0YXRpc3RpY3NEYXRh
YmFzZUNvbHVtbnNGb3JUYWJsZTpAIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICp0YWJsZVNjaGVtYSkgewot
ICAgICAgICBFWFBFQ1RfVFJVRShbdGFibGVTY2hlbWEgY29udGFpbnNPYmplY3Q6QCJlYXJsaWVz
dFRpbWVUb1NlbmRUb1NvdXJjZSJdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW3RhYmxlU2NoZW1h
IGNvbnRhaW5zT2JqZWN0OkAiZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiJdKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKFt0YWJsZVNjaGVtYSBjb250YWluc09iamVjdDpAImVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlIl0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW3RhYmxlU2NoZW1h
IGNvbnRhaW5zT2JqZWN0OkAiZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiJdKTsKICAg
ICAgICAgZG9uZUZsYWcgPSB0cnVlOwogICAgIH1dOwogCkBAIC0xNDksNyArMTUxLDcgQEAgVEVT
VChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgUmVuYW1lRGVzdGluYXRpb25TaXRlQ29sdW1uKQog
ICAgIC8vIENoZWNrIHRoZSBjb2x1bW5zIG9mIHRoZSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgdGFibGUgdG8gbWFrZSBzdXJlIG5ldyByZXBvcnRpbmcgY29sdW1ucyB3ZXJlIGFk
ZGVkLgogICAgIF9fYmxvY2sgYm9vbCBkb25lRmxhZyA9IGZhbHNlOwogICAgIFtkYXRhU3RvcmUg
X3N0YXRpc3RpY3NEYXRhYmFzZUNvbHVtbnNGb3JUYWJsZTpAIkF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCIgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICp0
YWJsZVNjaGVtYSkgewotICAgICAgICBFWFBFQ1RfVFJVRShbdGFibGVTY2hlbWEgY29udGFpbnNP
YmplY3Q6QCJkZXN0aW5hdGlvblNpdGVEb21haW5JRCJdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KFt0YWJsZVNjaGVtYSBjb250YWluc09iamVjdDpAImRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl0p
OwogICAgICAgICBkb25lRmxhZyA9IHRydWU7CiAgICAgfV07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436654</attachid>
            <date>2021-08-27 12:08:45 -0700</date>
            <delta_ts>2021-08-27 12:10:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229527-20210827120844.patch</filename>
            <type>text/plain</type>
            <size>248055</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU1MDU2MDRjYmIyNGUy
ZWQ1MGJkZmNiMTI3MGE0NmE1OTI0YWE1OS4uNmM1ZGFjZjVlNzlkMjNkMTZkOGMyMDgxYWQzMDA3
NmM0ZDYzOTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA4LTI3ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJh
dGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZGF0YWJhc2UgZnJvbSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIGRhdGFiYXNlIGFuZCBhZGQgU1BJIHRvIHNldCBpdHMgbG9jYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IEthdGUgQ2hlbmV5LgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaDoKKwogMjAyMS0wOC0y
NyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDYXNj
YWRlIExheWVyc10gSW5pdGlhbCBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUzZmQyMjkyN2ZkYmM2OTcw
NzdkYzgzZWU1NzY3MTdjMjJjMDY5YmQuLmE1Y2I5YWY4ZmQ4NGI3ODcxOWQ4MGEwZGM1MTY1Mjhh
ZDBjMjQ0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIzIEBACisyMDIxLTA4LTI3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJhdGUg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZGF0YWJhc2UgZnJvbSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIGRhdGFiYXNlIGFuZCBhZGQgU1BJIHRvIHNldCBpdHMgbG9jYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTUyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IEthdGUgQ2hlbmV5LgorCisgICAgICAgIFRoaXMgd2lsbCBiZSB1c2VkIGJ5IHJk
YXI6Ly84MDgwNjI4MworCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMsIEkgbW92ZWQgY29t
bW9uIGNvZGUgdG8gRGF0YWJhc2VVdGlsaXRpZXMgYW5kIG1vdmVkIHRoZSBQQ00gbG9naWMgZnJv
bSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZQorICAgICAgICB0byBhIG5ldyBj
bGFzcy4gIEl0IHB1dHMgdGhlIGRhdGEgaW4gYSBkaWZmZXJlbnQgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkgdW5sZXNzIFNQSSB0ZWxscyBpdCB0byBwdXQgaXQgaW4gYSBkaWZmZXJlbnQgZGly
ZWN0b3J5LgorCisgICAgICAgIFRoZSBiaWdnZXN0IGZ1bmN0aW9uYWwgY2hhbmdlIEkgbmVlZGVk
IHRvIGRvIHdhcyB0byBtYWtlIGEgUENNT2JzZXJ2ZWREb21haW5zIHRhYmxlIGluIHRoZSBuZXcg
REIgaW5zdGVhZCBvZiBhbiBPYnNlcnZlZERvbWFpbnMgdGFibGUsCisgICAgICAgIHdoaWNoIGNv
bnRhaW5lZCBtb3JlIGluZm9ybWF0aW9uIHRoYW4gSSBuZWVkZWQuICBJIG5lZWQganVzdCBhbiBp
bmRleCBhbmQgYSBsaXN0IG9mIGRvbWFpbnMuCisKKyAgICAgICAgQW5vdGhlciBzbGlnaHQgaW1w
bGVtZW50YXRpb24gY2hhbmdlIGlzIHRoYXQgaW5zdGVhZCBvZiBjaGVja2luZyBpc0VwaGVtZXJh
bCBpbiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIEkganVzdCBwYXNzIGFuIGVtcHR5
CisgICAgICAgIFN0cmluZyB0byB0aGUgU3RvcmUgaWYgaXQncyBlcGhlbWVyYWwsIHdoaWNoIGNh
dXNlcyBubyBEQiB0byBiZSBjcmVhdGVkLCB3aGljaCBjYXVzZXMgZXF1aXZhbGVudCBiZWhhdmlv
ci4KKworICAgICAgICBJIGFsc28gbW92ZWQgdGhlIGRlYnVnIG1lc3NhZ2UgYnJvYWRjYXN0aW5n
IHRvIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlIGluIG9yZGVyIHRv
IG1ha2UgdGhlIERhdGFiYXNlIG9iamVjdCBub3QKKyAgICAgICAgbmVlZCB0byBrbm93IGFib3V0
IHRoZSBOZXR3b3JrUHJvY2VzcyBhbmQgbm90IG5lZWQgdG8ga2VlcCBzdGF0ZSBvZiB3aGV0aGVy
IGRlYnVnIG1vZGUgaXMgZW5hYmxlZC4gIERhdGFiYXNlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudAorICAgICAgICBub3cgcmV0dXJucyBhIERlYnVnSW5mbyBvYmplY3QgYW5kIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlIGNoZWNrcyB3aGV0aGVyIGRl
YnVnIG1vZGUgaXMgZW5hYmxlZCBhbmQgYnJvYWRjYXN0cyB0aGUgbWVzc2FnZXMuCisKKyAgICAg
ICAgSSBhZGRlZCBhIGZldyBjYWxscyB0byBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0
ZWRDb3B5IHdoZW4gbW92aW5nIGFuIFByaXZhdGVDbGlja01lYXN1cmVtZW50IG9iamVjdCB0byBh
bm90aGVyIHRocmVhZC4KKworICAgICAgICBJIGFkZGVkIGEgQ29tcGxldGlvbkhhbmRsZXIgdG8g
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhbmQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEZvclJlZ2lzdHJhYmxlRG9tYWluCisgICAgICAgIHNvIHRoYXQgY2xlYXJpbmcgd2Vic2l0
ZSBkYXRhIGRvZXNuJ3Qgc2F5IGl0J3MgZG9uZSB1bnRpbCBpdCdzIGRvbmUuCisKKyAgICAgICAg
QW4gZXZlbiBzbWFsbGVyIGNoYW5nZSBpcyBJIGFkZGVkIGEgIkZvclRlc3RpbmciIHN1ZmZpeCBv
biBzb21lIGZ1bmN0aW9uIG5hbWVzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBvbmx5IHVzZWQgaW4g
dGVzdHMuCisKKyAgICAgICAgVGhlIHJlc3Qgb2YgdGhpcyBwYXRjaCBqdXN0IG1vdmVzIGNvZGUg
ZnJvbSBvbmUgbG9jYXRpb24gdG8gYW5vdGhlci4KKworICAgICAgICBJIHN0aWxsIG5lZWQgdG8g
aW1wbGVtZW50IG1pZ3JhdGluZyBkYXRhIGZyb20gdGhlIG9sZCBEQiB0byB0aGUgbmV3IERCLiAg
SSdsbCBkbyB0aGF0IGluIGFub3RoZXIgcGF0Y2ggc29vbi4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpleHBlY3RlZFRh
YmxlQW5kSW5kZXhRdWVyaWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9w
ZW5JVFBEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpuZWVkc1VwZGF0ZWRTY2hlbWEpOgorICAgICAgICAoV2ViS2l0OjppbnNl
cnREaXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmludGVycnVwdEFsbERhdGFiYXNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNj
aGVtYSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpkZXN0cm95U3RhdGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMpOgorICAgICAgICAo
V2ViS2l0OjpleHBlY3RlZFVuYXR0cmlidXRlZENvbHVtbnMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpleHBlY3RlZEF0dHJpYnV0ZWRDb2x1bW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsb3NlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmVuYWJsZUZvcmVpZ25LZXlzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50U2NoZW1hKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjph
ZGRNaXNzaW5nQ29sdW1uc0lmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbmFtZUNvbHVtbkluVGFibGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVuYW1lQ29sdW1uc0lmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNjb3BlZFN0YXRlbWVu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjppbnRlcnJ1cHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YnVpbGRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEZyb21EYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FsbFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZW1vdmVVbmF0dHJpYnV0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRpb25Ub1N0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVhcmxpZXN0VGlt
ZXNUb1NlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bWFya1JlcG9ydEFzU2VudFRvU291cmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtS
ZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkpOiBEZWxldGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmRpZERlc3Ryb3lOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJl
ZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphbGxB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURv
bWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByaXZhdGVD
bGlja01lYXN1cmVtZW50VG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VV
dGlsaXRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRpZXM6
OkRhdGFiYXNlVXRpbGl0aWVzKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRpZXM6
On5EYXRhYmFzZVV0aWxpdGllcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVz
OjpzY29wZWRTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVV0aWxp
dGllczo6YmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6RGF0
YWJhc2VVdGlsaXRpZXM6Om9wZW5EYXRhYmFzZUFuZENyZWF0ZVNjaGVtYUlmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRpZXM6OmVuYWJsZUZvcmVpZ25LZXlzKToK
KyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRpZXM6OmNsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6RGF0YWJhc2VVdGlsaXRpZXM6OmludGVycnVwdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmR1bXBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbGVhclByaXZhdGVD
bGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6fkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YktpdDo6UENNOjpEYXRhYmFzZTo6aW50ZXJydXB0QWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdl
YktpdDo6UENNOjpEYXRhYmFzZTo6Y3JlYXRlU2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkRhdGFiYXNlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFz
ZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YXRhYmFzZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkRhdGFiYXNlOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFi
YXNlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6cmVtb3ZlVW5hdHRyaWJ1dGVk
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6cHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006OkRhdGFiYXNlOjphdHRyaWJ1dGlvblRvU3RyaW5nRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RGF0YWJhc2U6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6
OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRh
dGFiYXNlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmNsZWFyU2VudEF0dHJpYnV0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UENNOjpEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjplYXJsaWVzdFRpbWVzVG9TZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6ZG9tYWluSUQpOgorICAgICAgICAoV2ViS2l0
OjpQQ006OkRhdGFiYXNlOjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQpOgorICAgICAgICAo
V2ViS2l0OjpQQ006OkRhdGFiYXNlOjplbnN1cmVEb21haW5JRCk6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6RGF0YWJhc2U6OmRlc3Ryb3lTdGF0ZW1lbnRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgu
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVidWdJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlYnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2hhcmVkV29y
a1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6cHJlcGFyZUZvclByb2Nlc3NU
b1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpwcm9jZXNzRGlkUmVzdW1l
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6U3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpQQ006OlN0b3JlOjpwb3N0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OnBv
c3RUYXNrUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjppbnNlcnRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6Om1hcmtBbGxV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVt
ZW50VG9TdHJpbmdGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YWxs
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6Y2xlYXJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6U3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpQQ006OlN0b3JlOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Omluc2VydFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjphdHRyaWJ1dGUpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmNsZWFyU2VudEF0dHJpYnV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVz
dHMpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpj
bGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckV4cGlyZWQpOgorICAgICAgICAoV2ViS2l0OjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nRm9yVGVzdGluZyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6bWFya0FsbFVu
YXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcjo6dG9TdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
cjo6flByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6Y2FuY2VsKToKKyAgICAg
ICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjp3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6cmVzb2x2ZWROYW1lKToKKyAgICAgICAgKiBTaGFyZWQvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgor
ICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lv
bkFsbG93ZWRGb3JUZXN0aW5nOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX3By
ZXZlbnROZXR3b3JrUHJvY2Vzc1N1c3BlbnNpb25Gb3JUZXN0aW5nXSk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeV0pOgorICAgICAg
ICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldFN1c3BlbnNpb25BbGxvd2VkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJldmVudFN1c3BlbnNpb25Gb3JUZXN0aW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRl
cnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVj
dG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA4LTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gUmV1c2UgdGhlIHNh
bWUgbmV0d29yayBsb2FkIHdoZW4gcHJvY2Vzcy1zd2FwcGluZyBvbiByZXNvdXJjZSByZXNwb25z
ZSBkdWUgdG8gQ09PUApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5jcHAKaW5kZXggNmRmMjQ3OTFjMjI2ZjBiYjhiMTE0MzA1ZTZhNjFiOWIzYjEz
NzZmYS4uYjY2YmYzYTQ4ZTFlZjEyZGY2MDA4NWMzZjAwODA3NzY2ZDRmOTNmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCkBAIC01
OSw2ICs1OSw1MCBAQCBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc1ZhbGlkKCkgY29u
c3QKICAgICAgICAgJiYgKG1fdGltZXNUb1NlbmQuc291cmNlRWFybGllc3RUaW1lVG9TZW5kIHx8
IG1fdGltZXNUb1NlbmQuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpOwogfQogCitQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJl
dHVybiB7CisgICAgICAgIHRva2VuQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBz
aWduYXR1cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIGtleUlEQmFzZTY0VVJM
Lmlzb2xhdGVkQ29weSgpLAorICAgIH07Cit9CisKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpF
cGhlbWVyYWxTb3VyY2VOb25jZSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291
cmNlTm9uY2U6Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgbm9uY2UuaXNv
bGF0ZWRDb3B5KCkgfTsKK30KKworUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlu
a2FibGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2Vu
Ojppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgICAgIGJsaW5kZXIsCisgICAgICAgIHdhaXRpbmdUb2tlbiwKKyAgICAgICAgcmVh
ZHlUb2tlbiwKKyNlbmRpZgorICAgICAgICB2YWx1ZUJhc2U2NFVSTC5pc29sYXRlZENvcHkoKQor
ICAgIH07Cit9CisKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50
IGNvcHk7CisgICAgY29weS5tX3NvdXJjZUlEID0gbV9zb3VyY2VJRDsKKyAgICBjb3B5Lm1fc291
cmNlU2l0ZSA9IG1fc291cmNlU2l0ZS5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5Lm1fZGVzdGlu
YXRpb25TaXRlID0gbV9kZXN0aW5hdGlvblNpdGUuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5t
X3NvdXJjZURlc2NyaXB0aW9uID0gbV9zb3VyY2VEZXNjcmlwdGlvbi5pc29sYXRlZENvcHkoKTsK
KyAgICBjb3B5Lm1fcHVyY2hhc2VyID0gbV9wdXJjaGFzZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAg
Y29weS5tX3RpbWVPZkFkQ2xpY2sgPSBtX3RpbWVPZkFkQ2xpY2suaXNvbGF0ZWRDb3B5KCk7Cisg
ICAgY29weS5tX2lzRXBoZW1lcmFsID0gbV9pc0VwaGVtZXJhbDsKKyAgICBjb3B5Lm1fYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSA9IG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICBjb3B5Lm1f
dGltZXNUb1NlbmQgPSBtX3RpbWVzVG9TZW5kOworICAgIGNvcHkubV9lcGhlbWVyYWxTb3VyY2VO
b25jZSA9IGNyb3NzVGhyZWFkQ29weShtX2VwaGVtZXJhbFNvdXJjZU5vbmNlKTsKKyAgICBjb3B5
Lm1fc291cmNlVW5saW5rYWJsZVRva2VuID0gbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4uaXNvbGF0
ZWRDb3B5KCk7CisgICAgY29weS5tX3NvdXJjZVNlY3JldFRva2VuID0gY3Jvc3NUaHJlYWRDb3B5
KG1fc291cmNlU2VjcmV0VG9rZW4pOworICAgIHJldHVybiBjb3B5OworfQorCiBFeHBlY3RlZDxQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QoY29uc3QgVVJM
JiByZWRpcmVjdFVSTCkKIHsKICAgICBhdXRvIHBhdGggPSBTdHJpbmdWaWV3KHJlZGlyZWN0VVJM
LnN0cmluZygpKS5zdWJzdHJpbmcocmVkaXJlY3RVUkwucGF0aFN0YXJ0KCksIHJlZGlyZWN0VVJM
LnBhdGhFbmQoKSAtIHJlZGlyZWN0VVJMLnBhdGhTdGFydCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXggZWI4NjA4N2JlZTU4OTRl
YWIwYmViZjJlOGY2YzJmYjcwZGFmYmM3NC4uNGI0NjMxYWIxMzFjNjg5NGM2NDU5NTFiZTZlNGM0
YjA3MjM3ZWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmgKQEAgLTM1NCw2ICszNTQsOCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IEVwaGVt
ZXJhbFNvdXJjZU5vbmNlIHsKICAgICAgICAgU3RyaW5nIG5vbmNlOwogCisgICAgICAgIEVwaGVt
ZXJhbFNvdXJjZU5vbmNlIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCiAgICAgICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTM2OSw2ICszNzEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFN0cmluZyBzaWduYXR1cmVCYXNlNjRVUkw7CiAgICAgICAgIFN0cmlu
ZyBrZXlJREJhc2U2NFVSTDsKIAorICAgICAgICBTb3VyY2VTZWNyZXRUb2tlbiBpc29sYXRlZENv
cHkoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgfTsKIApAQCAt
Mzg0LDYgKzM4Nyw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGRlY29kZShEZWNvZGVy
Jik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIApA
QCAtNDA1LDYgKzQxMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9r
ZW5SZWFkeT4gcmVhZHlUb2tlbjsKICNlbmRpZgogICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRV
Ukw7CisKKyAgICAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0
OwogICAgIH07CiAKICAgICBzdGQ6Om9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBtX2Vw
aGVtZXJhbFNvdXJjZU5vbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggOTVkOGE5NjZmZmRkM2U0
NDNmZTJiNWQ2ZDY1NGY0ZmExZTEwZjg2ZS4uYjRmMTk4M2IyMThlYzU0MThmMjBjZjkyY2UwNjMw
OWJmZTE5ZGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yMyw2ICsyMyw3IEBAIHNldChXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2FkcyIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJIgog
ICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQiIKKyAgICAiJHtXRUJL
SVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIKICAgICAiJHtX
RUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyIgogICAgICIke1dFQktJVF9E
SVJ9L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29y
a1Byb2Nlc3MvY2FjaGUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCBiYmU4ZDJkYjNjNzVkOWNiMmQ2ODdiMjViOWFlYmUw
MGMyMGM5ZmIzLi41MDM3NjlhM2ZjYWM0NTMyYWRiYTg2MzBlNjhkYjczNzViNGNmYjk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5
LmgiCi0jaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtNDQsNiAr
NDMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0
ZVN0YXRlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0
U2NvcGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVh
ZENvcGllci5oPgpAQCAtODgsMTAgKzg4LDYgQEAgY29uc3RleHByIGF1dG8gc3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWluc1F1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIGludG8gU3ViZnIKIGNv
bnN0ZXhwciBhdXRvIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbVF1ZXJ5ID0gIklOU0VSVCBP
UiBSRVBMQUNFIElOVE8gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tICh0b0RvbWFpbklELCBs
YXN0VXBkYXRlZCwgZnJvbURvbWFpbklEKSBTRUxFQ1QgPywgPywgZG9tYWluSUQgRlJPTSBPYnNl
cnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gaW4gKCAiX3M7CiBjb25zdGV4cHIg
YXV0byBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5TRVJUIE9SIFJF
UExBQ0UgSU5UTyBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIChzdWJyZXNvdXJjZURv
bWFpbklELCBsYXN0VXBkYXRlZCwgdG9wRnJhbWVEb21haW5JRCkgU0VMRUNUID8sID8sIGRvbWFp
bklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluIGluICggIl9z
OwogY29uc3RleHByIGF1dG8gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb1F1ZXJ5ID0gIklO
U0VSVCBPUiBSRVBMQUNFIElOVE8gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyAoc3VicmVz
b3VyY2VEb21haW5JRCwgbGFzdFVwZGF0ZWQsIHRvRG9tYWluSUQpIFNFTEVDVCA/LCA/LCBkb21h
aW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBpbiAoICJf
czsKLWNvbnN0ZXhwciBhdXRvIGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50UXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCwgIgotICAgICJzb3VyY2VJRCwgdGltZU9mQWRDbGljaywgdG9rZW4sIHNpZ25hdHVyZSwga2V5
SUQpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPykiX3M7Ci1jb25zdGV4cHIgYXV0byBpbnNl
cnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQ
TEFDRSBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURv
bWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgotICAgICJzb3VyY2VJRCwgYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSwgcHJpb3JpdHksIHRpbWVPZkFkQ2xpY2ssIGVhcmxpZXN0VGltZVRv
U2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1lVG9TZW5k
VG9EZXN0aW5hdGlvbikgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJf
czsKIAogLy8gRVhJU1RTIFF1ZXJpZXMKIGNvbnN0ZXhwciBhdXRvIHN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbkV4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gU3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyAiCkBA
IC0xMTYsOSArMTEyLDYgQEAgY29uc3RleHByIGF1dG8gdXBkYXRlVmVyeVByZXZhbGVudFJlc291
cmNlUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXMKIGNvbnN0ZXhwciBhdXRv
IGNsZWFyUHJldmFsZW50UmVzb3VyY2VRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNF
VCBpc1ByZXZhbGVudCA9IDAsIGlzVmVyeVByZXZhbGVudCA9IDAgV0hFUkUgcmVnaXN0cmFibGVE
b21haW4gPSA/Il9zOwogY29uc3RleHByIGF1dG8gdXBkYXRlR3JhbmRmYXRoZXJlZFF1ZXJ5ID0g
IlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSA/IFdIRVJFIHJlZ2lz
dHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZUlzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWxRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNF
VCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gPyBXSEVSRSByZWdpc3Ry
YWJsZURvbWFpbiA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5ID0gIlVQREFURSBVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgdGltZU9mQWRDbGljayA9IC0xLjAiX3M7Ci1jb25zdGV4
cHIgYXV0byBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VRdWVyeSA9ICJVUERBVEUgQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9
IG51bGwgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQgPSA/Il9zOwotY29uc3RleHByIGF1dG8gbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRp
b25RdWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBl
YXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gbnVsbCBXSEVSRSBzb3VyY2VTaXRlRG9t
YWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7CiAKIC8vIFNFTEVD
VCBRdWVyaWVzCiBjb25zdGV4cHIgYXV0byBkb21haW5JREZyb21TdHJpbmdRdWVyeSA9ICJTRUxF
Q1QgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4g
PSA/Il9zOwpAQCAtMTM3LDE0ICsxMzAsNiBAQCBjb25zdGV4cHIgYXV0byBnZXRBbGxEb21haW5z
UXVlcnkgPSAiU0VMRUNUIHJlZ2lzdHJhYmxlRG9tYWluIEZST00gT2JzZXJ2ZWREb21haQogY29u
c3RleHByIGF1dG8gZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVyRG9tYWluUXVlcnkgPSAiU0VMRUNU
IHRvcEZyYW1lRG9tYWluSUQgRlJPTSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJF
IHN1YkZyYW1lRG9tYWluSUQgPSA/IgogICAgICJVTklPTiBBTEwgU0VMRUNUIHRvcEZyYW1lRG9t
YWluSUQgRlJPTSBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291
cmNlRG9tYWluSUQgPSA/IgogICAgICJVTklPTiBBTEwgU0VMRUNUIHRvRG9tYWluSUQgRlJPTSBT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/
Il9zOwotY29uc3RleHByIGF1dG8gYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvbnNRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50Il9zOwotY29uc3RleHByIGF1dG8gYWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50UXVlcnkgPSAiU0VMRUNUICosIE1JTihlYXJsaWVzdFRpbWVUb1NlbmRU
b1NvdXJjZSwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbikgYXMgbWluVmFsICIKLSAg
ICAiRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgZWFybGllc3RU
aW1lVG9TZW5kVG9Tb3VyY2UgSVMgTk9UIE5VTEwgQU5EIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb24gSVMgTk9UIE5VTEwgIgotICAgICJVTklPTiBBTEwgU0VMRUNUICosIGVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlIGFzIG1pblZhbCBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBXSEVSRSBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIElTIE5VTEwg
IgotICAgICJVTklPTiBBTEwgU0VMRUNUICosIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRp
b24gYXMgbWluVmFsIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJF
IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIElTIE5VTEwgT1JERVIgQlkgbWluVmFsIl9zOwot
Y29uc3RleHByIGF1dG8gZmluZFVuYXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklE
ID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOwotY29uc3RleHByIGF1dG8g
ZmluZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCA9ID8iX3M7Ci1jb25zdGV4cHIgYXV0byBlYXJsaWVzdFRpbWVzVG9TZW5k
UXVlcnkgPSAiU0VMRUNUIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRpbWVU
b1NlbmRUb0Rlc3RpbmF0aW9uIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
ID0gPyJfczsKIAogLy8gRVhJU1RTIGZvciB0ZXN0aW5nIHF1ZXJpZXMKIGNvbnN0ZXhwciBhdXRv
IGxpbmtEZWNvcmF0aW9uRXhpc3RzUXVlcnkgPSAiU0VMRUNUIEVYSVNUUyAoU0VMRUNUICogRlJP
TSBUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20gV0hFUkUgdG9Eb21haW5JRCA9ID8gT1IgZnJv
bURvbWFpbklEID0gPykiX3M7CkBAIC0xNTYsMTAgKzE0MSw2IEBAIGNvbnN0ZXhwciBhdXRvIG9i
c2VydmVkRG9tYWluc0V4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00g
T2JzZXJ2CiAKIC8vIERFTEVURSBRdWVyaWVzCiBjb25zdGV4cHIgYXV0byByZW1vdmVBbGxEYXRh
UXVlcnkgPSAiREVMRVRFIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJf
czsKLWNvbnN0ZXhwciBhdXRvIGNsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRRdWVyeSA9ICJERUxFVEUgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgTElLRSA/IE9SIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEIExJS0UgPyJfczsKLWNvbnN0ZXhwciBhdXRvIGNsZWFyQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50UXVlcnkgPSAiREVMRVRFIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCBMSUtFID8gT1IgZGVzdGluYXRpb25T
aXRlRG9tYWluSUQgTElLRSA/Il9zOwotY29uc3RleHByIGF1dG8gY2xlYXJFeHBpcmVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJERUxFVEUgRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBXSEVSRSA/ID4gdGltZU9mQWRDbGljayJfczsKLWNvbnN0ZXhwciBh
dXRvIHJlbW92ZVVuYXR0cmlidXRlZFF1ZXJ5ID0gIkRFTEVURSBGUk9NIFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRl
c3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKIAogY29uc3RleHByIGF1dG8gY3JlYXRlT2Jz
ZXJ2ZWREb21haW4gPSAiQ1JFQVRFIFRBQkxFIE9ic2VydmVkRG9tYWlucyAoIgogICAgICJkb21h
aW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxM
IFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBsYXN0U2VlbiBSRUFMIE5PVCBOVUxMLCAiCkBAIC0y
NDAsMTkgKzIyMSw2IEBAIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzRnJvbSA9ICJDUkVBVEUgVEFCTEUgU3VicmVzb3VyY2VVCiBjb25zdGV4cHIgYXV0byBj
cmVhdGVPcGVyYXRpbmdEYXRlcyA9ICJDUkVBVEUgVEFCTEUgT3BlcmF0aW5nRGF0ZXMgKCIKICAg
ICAieWVhciBJTlRFR0VSIE5PVCBOVUxMLCBtb250aCBJTlRFR0VSIE5PVCBOVUxMLCBtb250aERh
eSBJTlRFR0VSIE5PVCBOVUxMKSJfczsKIAotY29uc3RleHByIGF1dG8gY3JlYXRlVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50ICgiCi0gICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VS
IE5PVCBOVUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3Vy
Y2VJRCBJTlRFR0VSIE5PVCBOVUxMLCAiCi0gICAgInRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVM
TCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIEZPUkVJR04gS0VZKHNv
dXJjZVNpdGVEb21haW5JRCkgIgotICAgICJSRUZFUkVOQ0VTIE9ic2VydmVkRG9tYWlucyhkb21h
aW5JRCkgT04gREVMRVRFIENBU0NBREUsIEZPUkVJR04gS0VZKGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEKSBSRUZFUkVOQ0VTICIKLSAgICAiT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxF
VEUgQ0FTQ0FERSkiX3M7Ci0KLWNvbnN0ZXhwciBhdXRvIGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVEFCTEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50ICgiCi0gICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBk
ZXN0aW5hdGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJTlRFR0VS
IE5PVCBOVUxMLCAiCi0gICAgImF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgSU5URUdFUiBOT1QgTlVM
TCwgcHJpb3JpdHkgSU5URUdFUiBOT1QgTlVMTCwgdGltZU9mQWRDbGljayBSRUFMIE5PVCBOVUxM
LCAiCi0gICAgImVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIFJFQUwsIHRva2VuIFRFWFQsIHNp
Z25hdHVyZSBURVhULCBrZXlJRCBURVhULCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9u
IFJFQUwsICIKLSAgICAiRk9SRUlHTiBLRVkoc291cmNlU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VT
IE9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUsIEZPUkVJR04gS0VZ
KGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VTICIKLSAgICAiT2JzZXJ2ZWREb21h
aW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSkiX3M7Ci0KIC8vIENSRUFURSBVTklRVUUg
SU5ERVggUXVlcmllcy4KIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVY
SVNUUyBTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNfZG9tYWluSURfdG9wTGV2ZWxE
b21haW5JRCBvbiBTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgKCBkb21haW5JRCwg
dG9wTGV2ZWxEb21haW5JRCApIl9zOwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVY
SVNUUyBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvX3NvdXJjZURvbWFpbklEX3RvRG9tYWluSUQg
b24gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyAoIHNvdXJjZURvbWFpbklELCB0b0RvbWFpbklE
ICkiX3M7CkBAIC0yNjUsMTEgKzIzMyw5IEBAIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUlu
ZGV4U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyA9ICJDUkVBVEUgVU5JUVVFCiBjb25z
dGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8g
PSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG9fc3VicmVzb3VyY2VEb21haW5JRF90b0RvbWFpbklEIG9uIFN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8gKCBzdWJyZXNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEICkiX3M7CiBj
b25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbSA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tX3N1YnJlc291cmNlRG9tYWluSURfZnJvbURvbWFpbklEIG9uIFN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSAoIHN1YnJlc291cmNlRG9tYWluSUQsIGZyb21Eb21h
aW5JRCApIl9zOwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRl
cyA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgT3BlcmF0aW5nRGF0ZXNfeWVh
cl9tb250aF9tb250aERheSBvbiBPcGVyYXRpbmdEYXRlcyAoIHllYXIsIG1vbnRoLCBtb250aERh
eSApIl9zOwotY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMg
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rl
c3RpbmF0aW9uU2l0ZURvbWFpbklEIG9uIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOwot
Y29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRl
RG9tYWluSUQgb24gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0
ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOwogCiAvLyBBZGQgb25lIHRv
IHRoZSBjb3VudCBvZiB0aGUgYWJvdmUgaW5kZXggcXVlcmllcyB0byBhY2NvdW50IGZvciB0aGUg
T2JzZXJ2ZWREb21haW5zIHRhYmxlLCB3aGljaCBoYXMgYW4gaW5kZXggYXV0b21hdGljYWxseSBj
cmVhdGVkIGJ5IFNRTGl0ZSBiZWNhdXNlIG9mIGl0cyBwcmltYXJ5IGtleS4KLWNvbnN0IGludCBl
eHBlY3RlZEluZGV4Q291bnQgPSAxNDsKK2NvbnN0ZXhwciBpbnQgZXhwZWN0ZWRJbmRleENvdW50
ID0gMTI7CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFW
MSgpCiB7CkBAIC0yODEsMTggKzI0Nyw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgT2JzZXJ2ZWRE
b21haW5zVGFibGVTY2hlbWFWMUFsdGVybmF0ZSgpCiAgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUg
XCJPYnNlcnZlZERvbWFpbnNcIiAoZG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgcmVnaXN0
cmFibGVEb21haW4gVEVYVCBOT1QgTlVMTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgbGFzdFNl
ZW4gUkVBTCBOT1QgTlVMTCwgaGFkVXNlckludGVyYWN0aW9uIElOVEVHRVIgTk9UIE5VTEwsIG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIFJFQUwgTk9UIE5VTEwsIGdyYW5kZmF0aGVyZWQg
SU5URUdFUiBOT1QgTlVMTCwgaXNQcmV2YWxlbnQgSU5URUdFUiBOT1QgTlVMTCwgaXNWZXJ5UHJl
dmFsZW50IElOVEVHRVIgTk9UIE5VTEwsIGRhdGFSZWNvcmRzUmVtb3ZlZCBJTlRFR0VSIE5PVCBO
VUxMLHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiBJTlRFR0VS
IE5PVCBOVUxMLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJ
IElOVEVHRVIgTk9UIE5VTEwsaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCBJ
TlRFR0VSIE5PVCBOVUxMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IEV4cGVjdGVkQ29sdW1ucyYg
ZXhwZWN0ZWRVbmF0dHJpYnV0ZWRDb2x1bW5zKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBj
b2x1bW5zID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgInNvdXJjZVNpdGVE
b21haW5JRCJfcywgImRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl9zLCAic291cmNlSUQiX3MsICJ0
aW1lT2ZBZENsaWNrIl9zLCAidG9rZW4iX3MsICJzaWduYXR1cmUiX3MsICJrZXlJRCJfcyB9KTsK
LSAgICByZXR1cm4gY29sdW1ucy5nZXQoKTsKLX0KLQotc3RhdGljIGNvbnN0IEV4cGVjdGVkQ29s
dW1ucyYgZXhwZWN0ZWRBdHRyaWJ1dGVkQ29sdW1ucygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gY29sdW1ucyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7ICJzb3VyY2VT
aXRlRG9tYWluSUQiX3MsICJkZXN0aW5hdGlvblNpdGVEb21haW5JRCJfcywgInNvdXJjZUlEIl9z
LCAiYXR0cmlidXRpb25UcmlnZ2VyRGF0YSJfcywgInByaW9yaXR5Il9zLCAidGltZU9mQWRDbGlj
ayJfcywgImVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIl9zLCAidG9rZW4iX3MsICJzaWduYXR1
cmUiX3MsICJrZXlJRCJfcywgImVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24iX3MgfSk7
Ci0gICAgcmV0dXJuIGNvbHVtbnMuZ2V0KCk7Ci19Ci0KIHN0YXRpYyBib29sIG5lZWRzTmV3Q3Jl
YXRlVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiBzY2hlbWEpCiB7CiAgICAgcmV0dXJuIHNjaGVt
YS5jb250YWlucygiUkVGRVJFTkNFUyBUb3BMZXZlbERvbWFpbnMiKTsKQEAgLTMxOSw4ICsyNzMs
NiBAQCBzdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFw
PFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JgogICAgICAgICB7ICJTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgc3RyaXBJbmRleFF1ZXJ5
VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbykpIH0sCiAgICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJf
cywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3Jl
ZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKSkg
fSwKICAgICAgICAgeyAiT3BlcmF0aW5nRGF0ZXMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywg
c3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVPcGVyYXRpbmdEYXRlcywgc3RyaXBJbmRleFF1
ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMpKSB9
LAotICAgICAgICB7ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3Rk
OjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVk
VmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCkpIH0sCi0gICAgICAgIHsgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywg
c3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZUF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3Jl
ZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
KSkgfQogICAgIH0pOwogICAgIAogICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVy
aWVzOwpAQCAtMzM5LDcgKzI5MSw3IEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRMaXN0KGNvbnN0IENv
bnRhaW5lclR5cGUmIHZhbHVlcykKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQog
Ci1IYXNoU2V0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKj4mIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxTdG9yZXMoKQorc3RhdGljIEhhc2hTZXQ8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUqPiYgYWxsU3RvcmVzKCkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzQ5LDE3ICszMDEsMTMgQEAgSGFz
aFNldDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSo+JiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG8KIAogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFN1c3BlbmRhYmxlV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5n
JiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDog
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHN0b3JlLCB3b3JrUXVldWUsIHNob3VsZEluY2x1
ZGVMb2NhbGhvc3QpCi0gICAgLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5UGF0aCwgIm9ic2VydmF0aW9u
cy5kYiJfcykpCi0gICAgLCBtX3RyYW5zYWN0aW9uKG1fZGF0YWJhc2UpCisgICAgLCBEYXRhYmFz
ZVV0aWxpdGllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURp
cmVjdG9yeVBhdGgsICJvYnNlcnZhdGlvbnMuZGIiX3MpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgb3BlbkFu
ZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CiAgICAgZW5hYmxlRm9yZWlnbktleXMoKTsKLQot
ICAgIC8vIFNpbmNlIHdlIGFyZSB1c2luZyBhIHdvcmtlclF1ZXVlLCB0aGUgc2VxdWVudGlhbCBk
aXNwYXRjaCBibG9ja3MgbWF5IGJlIGNhbGxlZCBieSBkaWZmZXJlbnQgdGhyZWFkcy4KLSAgICBt
X2RhdGFiYXNlLmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKICAgICAKICAgICBpZiAoIW1fZGF0
YWJhc2UudHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCkpCiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojp0dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQ
VUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CkBAIC0z
NzQsNDMgKzMyMiw5IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp+UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoKQogICAgIGFsbFN0b3JlcygpLnJlbW92
ZSh0aGlzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y2xvc2UoKQotewotICAgIGRlc3Ryb3lTdGF0ZW1lbnRzKCk7Ci0gICAgaWYgKG1fZGF0YWJhc2Uu
aXNPcGVuKCkpCi0gICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKLX0KLQogdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKIHsKLSAgICBp
ZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCkpIHsKLSAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFy
ZW50UGF0aChtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpvcGVuIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3Rv
cnkgZGF0YWJhc2UgcGF0aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fc3RvcmFnZURp
cmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgbV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUgPSB0
cnVlOwotICAgIH0gZWxzZQotICAgICAgICBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlRmlsZSA9IGZhbHNlOwotCi0gICAgaWYgKCFtX2RhdGFiYXNlLm9wZW4obV9zdG9yYWdl
RGlyZWN0b3J5UGF0aCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW4gZmFpbGVkLCBlcnJv
ciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQVUJM
SUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdl
RGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfQotICAgIAotICAgIGF1dG8gc2V0QnVzeVRpbWVvdXQgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBidXN5X3RpbWVvdXQgPSA1MDAwIl9zKTsKLSAgICBpZiAo
IXNldEJ1c3lUaW1lb3V0IHx8IHNldEJ1c3lUaW1lb3V0LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0QnVzeVRpbWVvdXQgZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSkg
ewotICAgICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y3JlYXRlU2NoZW1hIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJ
TkcgIiwgZGF0YWJhc2UgcGF0aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgIH0KKyAgICBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlRmlsZSA9IG9wZW5EYXRhYmFzZUFuZENyZWF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkgPT0gQ3Jl
YXRlZE5ld0ZpbGU6OlllczsKIH0KIAogc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0lu
U2NoZW1hKCkKQEAgLTQzOSwxNiArMzUzLDYgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2kKICAg
ICByZXR1cm4gbWlzc2luZ1RhYmxlczsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6ZW5hYmxlRm9yZWlnbktleXMoKQotewotICAgIGF1dG8gZW5hYmxlRm9y
ZWlnbktleXMgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBmb3JlaWduX2tl
eXMgPSBPTiJfcyk7Ci0gICAgaWYgKCFlbmFibGVGb3JlaWduS2V5cyB8fCBlbmFibGVGb3JlaWdu
S2V5cy0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbmFi
bGVGb3JlaWduS2V5cyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklO
RywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCiBUYWJsZUFuZEluZGV4UGFp
ciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5k
ZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogewogICAgIGF1dG8gZ2V0VGFibGVT
dGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBz
cWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8gQU5EIHR5cGUgPSAndGFibGUnIl9zKTsKQEAg
LTQ5NSwxNiArMzk5LDYgQEAgVGFibGVBbmRJbmRleFBhaXIgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmkKICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KFdURk1vdmUoY3JlYXRl
VGFibGVRdWVyeSksIFdURk1vdmUoaW5kZXgpKTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bmVlZHNVcGRhdGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
Y2hlbWEoKQotewotICAgIGF1dG8gY3VycmVudFNjaGVtYSA9IGN1cnJlbnRUYWJsZUFuZEluZGV4
UXVlcmllcygiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKS5maXJzdDsKLQot
ICAgIGlmICghY3VycmVudFNjaGVtYS5pc0VtcHR5KCkgJiYgY3VycmVudFNjaGVtYSAhPSBjcmVh
dGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjptaXNzaW5nVW5pcXVlSW5kaWNlcygpCiB7CiAgICAgYXV0byBzdGF0ZW1l
bnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBDT1VOVCgqKSBGUk9NIHNx
bGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZSA9ICdpbmRleCciX3MpOwpAQCAtNTM3LDcgKzQzMSw3IEBA
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5lZWRzVXBkYXRlZFNj
aGVtYSgpCiB7CiAgICAgLy8gVGhlcmUgYXJlIDMgY2FzZXMgd2hlcmUgd2UgZXhwZWN0IHBvdGVu
dGlhbCBzY2hlbWEgY2hhbmdlcyBkdWUgdG8gdXBncmFkZXMuCiAgICAgLy8gQWxsIG90aGVyIHRh
YmxlcyBzaG91bGQgYmUgdXAtdG8tZGF0ZSwgc28gd2Ugc2hvdWxkIEFTU0VSVCB0aGF0IHRoZXkg
YXJlIGNvcnJlY3QuCi0gICAgaWYgKG1pc3NpbmdSZWZlcmVuY2VUb09ic2VydmVkRG9tYWlucygp
IHx8IG5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NoZW1hKCkgfHwgbWlzc2lu
Z1VuaXF1ZUluZGljZXMoKSkKKyAgICBpZiAobWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21h
aW5zKCkgfHwgbWlzc2luZ1VuaXF1ZUluZGljZXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBmb3IgKGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtl
eXMoKSkgewpAQCAtNTYyLDEyICs0NTYsNiBAQCBzdGF0aWMgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVt
ZW50LCBpbnQ+IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChTUUxpdAogICAg
IGlmICh0YWJsZSA9PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikKICAgICAgICAgcmV0
dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFRvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbSBTRUxFQ1QgdG9Eb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgZnJvbURv
bWFpbklEIEZST00gX1RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBHUk9VUCBCWSB0b0RvbWFp
bklELCBmcm9tRG9tYWluSUQiX3MpOwogCi0gICAgaWYgKHRhYmxlID09ICJVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpCi0gICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50KCJJTlNFUlQgSU5UTyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBTRUxFQ1Qgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291
cmNlSUQsIE1BWCh0aW1lT2ZBZENsaWNrKSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQgRlJPTSBf
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgR1JPVVAgQlkgc291cmNlU2l0ZURv
bWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCJfcyk7Ci0KLSAgICBpZiAodGFibGUgPT0g
IkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpCi0gICAgICAgIHJldHVybiBkYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgU0VMRUNUIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9t
YWluSUQsIHNvdXJjZUlELCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwgTUFYKHRp
bWVPZkFkQ2xpY2spLCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVy
ZSwga2V5SUQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gRlJPTSBfQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50IEdST1VQIEJZIHNvdXJjZVNpdGVEb21haW5JRCwgZGVz
dGluYXRpb25TaXRlRG9tYWluSUQiX3MpOwotCiAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPICIsIHRhYmxlLCAiIFNFTEVDVCBE
SVNUSU5DVCAqIEZST00gXyIsIHRhYmxlKSk7CiB9CiAKQEAgLTYzNSw3OSArNTIzLDYgQEAgVmVj
dG9yPFN0cmluZz4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvbHVtbnNG
b3JUYWJsZShjb25zdCBTdHJpbmcKICAgICByZXR1cm4gY29sdW1uczsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxl
KFN0cmluZyYmIHRhYmxlTmFtZSwgY29uc3QgRXhpc3RpbmdDb2x1bW5zJiBleGlzdGluZ0NvbHVt
bnMsIGNvbnN0IEV4cGVjdGVkQ29sdW1ucyYgZXhwZWN0ZWRDb2x1bW5zKQotewotICAgIEFTU0VS
VChleGlzdGluZ0NvbHVtbnMuc2l6ZSgpIDw9IGV4cGVjdGVkQ29sdW1ucy5zaXplKCkpOwotCi0g
ICAgYXV0byB0cmFuc2FjdGlvbiA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwotCi0g
ICAgZm9yIChhdXRvJiBjb2x1bW4gOiBleHBlY3RlZENvbHVtbnMpIHsKLSAgICAgICAgaWYgKGV4
aXN0aW5nQ29sdW1ucy5jb250YWlucyhjb2x1bW4pKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93
KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlTmFtZSwgIiBBREQgQ09MVU1OICIsIGNv
bHVtbikpOwotICAgICAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQg
dG8gYWRkIG1pc3NpbmcgY29sdW1ucyB0byB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBlcnJvciBleGVjdXRp
bmcgc3RhdGVtZW50IHRvIGFkZCBtaXNzaW5nIGNvbHVtbnMgdG8gdGFibGUsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBzdGF0ZW1lbnQtPnJlc2V0KCk7Ci0gICAgfQotfQotCi12
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1u
c0lmTmVjZXNzYXJ5KCkKLXsKLSAgICBjb25zdCBhdXRvIHVuYXR0cmlidXRlZFRhYmxlTmFtZSA9
ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLSAgICBjb25zdCBhdXRv
IGF0dHJpYnV0ZWRUYWJsZU5hbWUgPSAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
Il9zOwotCi0gICAgYWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKHVuYXR0cmlidXRlZFRhYmxlTmFt
ZSwgY29sdW1uc0ZvclRhYmxlKHVuYXR0cmlidXRlZFRhYmxlTmFtZSksIGV4cGVjdGVkVW5hdHRy
aWJ1dGVkQ29sdW1ucygpKTsKLSAgICBhZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUoYXR0cmlidXRl
ZFRhYmxlTmFtZSwgY29sdW1uc0ZvclRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUpLCBleHBlY3Rl
ZEF0dHJpYnV0ZWRDb2x1bW5zKCkpOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1bW5JblRhYmxlKFN0cmluZyYmIHRhYmxlTmFtZSwgRXhp
c3RpbmdDb2x1bW5OYW1lJiYgZXhpc3RpbmdDb2x1bW5OYW1lLCBFeHBlY3RlZENvbHVtbk5hbWUm
JiBleHBlY3RlZENvbHVtbk5hbWUpCi17Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlTmFt
ZSwgIiBSRU5BTUUgQ09MVU1OICIsIGV4aXN0aW5nQ29sdW1uTmFtZSwgIiBUTyAiLCBleHBlY3Rl
ZENvbHVtbk5hbWUpKTsKLSAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0
byByZW5hbWUgY29sdW1uIGluIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoc3RhdGVtZW50
LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0
d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3Np
bmdDb2x1bW5zVG9UYWJsZSBlcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIHJlbmFtZSBjb2x1
bW4gaW4gdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1bW5zSWZOZWNlc3NhcnkoKQotewotICAgIC8vIEF0
dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBjYXNlLgotICAgIGNvbnN0IGF1dG8g
YXR0cmlidXRlZFRhYmxlTmFtZSA9ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQi
X3M7Ci0gICAgY29uc3QgYXV0byBvbGRFYXJsaWVzdFRpbWVUb1NlbmRDb2x1bW4gPSAiZWFybGll
c3RUaW1lVG9TZW5kIl9zOwotICAgIGNvbnN0IGF1dG8gbmV3RWFybGllc3RUaW1lVG9TZW5kQ29s
dW1uID0gImVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIl9zOwotICAgIGNvbnN0IGF1dG8gb2xk
QXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbiA9ICJhdHRyaWJ1dGVPblNpdGVEb21haW5JRCJf
czsKLSAgICBjb25zdCBhdXRvIG5ld0F0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4gPSAiZGVz
dGluYXRpb25TaXRlRG9tYWluSUQiX3M7Ci0gICAgY29uc3QgYXV0byBmb3VuZEF0dHJpYnV0ZWRU
YWJsZUNvbHVtbnMgPSBjb2x1bW5zRm9yVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSk7Ci0KLSAg
ICBpZiAoZm91bmRBdHRyaWJ1dGVkVGFibGVDb2x1bW5zLmNvbnRhaW5zKG9sZEVhcmxpZXN0VGlt
ZVRvU2VuZENvbHVtbikpCi0gICAgICAgIHJlbmFtZUNvbHVtbkluVGFibGUoYXR0cmlidXRlZFRh
YmxlTmFtZSwgb2xkRWFybGllc3RUaW1lVG9TZW5kQ29sdW1uLCBuZXdFYXJsaWVzdFRpbWVUb1Nl
bmRDb2x1bW4pOwotCi0gICAgaWYgKGZvdW5kQXR0cmlidXRlZFRhYmxlQ29sdW1ucy5jb250YWlu
cyhvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uKSkKLSAgICAgICAgcmVuYW1lQ29sdW1u
SW5UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCBvbGRBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29s
dW1uLCBuZXdBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQ29sdW1uKTsKLQotICAgIC8vIFVuYXR0cmli
dXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGNhc2UuCi0gICAgYXV0byB1bmF0dHJpYnV0
ZWRUYWJsZU5hbWUgPSAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Ci0g
ICAgYXV0byBmb3VuZFVuYXR0cmlidXRlZFRhYmxlQ29sdW1ucyA9IGNvbHVtbnNGb3JUYWJsZSh1
bmF0dHJpYnV0ZWRUYWJsZU5hbWUpOwotCi0gICAgaWYgKGZvdW5kVW5hdHRyaWJ1dGVkVGFibGVD
b2x1bW5zLmNvbnRhaW5zKG9sZEF0dHJpYnV0aW9uRGVzdGluYXRpb25Db2x1bW4pKQotICAgICAg
ICByZW5hbWVDb2x1bW5JblRhYmxlKHVuYXR0cmlidXRlZFRhYmxlTmFtZSwgb2xkQXR0cmlidXRp
b25EZXN0aW5hdGlvbkNvbHVtbiwgbmV3QXR0cmlidXRpb25EZXN0aW5hdGlvbkNvbHVtbik7Ci19
Ci0KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdU
YWJsZXNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgYXV0byBtaXNzaW5nVGFibGVzID0gY2hlY2tGb3JN
aXNzaW5nVGFibGVzSW5TY2hlbWEoKTsKQEAgLTc0OCw3ICs1NjMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3Nh
cnkoKQogICAgICAgICBpZiAoc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHNj
aGVtYSBmb3IgdGhlIE9ic2VydmVkIERvbWFpbnMgdGFibGUuIik7CiAgICAgICAgICAgICBjbG9z
ZSgpOwotICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VEaXJlY3Rv
cnlQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRmls
ZVBhdGgpOwogICAgICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTc2MiwzNiArNTc3LDIwIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpCiAg
ICAgLy8gRklYTUU6IE1pZ3JhdGUgb2xkIE9ic2VydmVkRG9tYWlucyBkYXRhIHRvIG5ldyB0YWJs
ZSBzY2hlbWEuCiAgICAgaWYgKGN1cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVT
Y2hlbWFWMSgpICYmIGN1cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFW
MUFsdGVybmF0ZSgpKSB7CiAgICAgICAgIGNsb3NlKCk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV9zdG9yYWdlRmlsZVBhdGgpOwogICAgICAgICBvcGVuSVRQRGF0YWJhc2UoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFJlbmFtaW5nIGFuZCBhZGRpbmcgY29s
dW1ucyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgbWlncmF0aW5nIHRvIGF2b2lkIG1pc21hdGNoZWQg
b3IgbWlzc2luZyBjb2x1bW5zLgotICAgIHJlbmFtZUNvbHVtbnNJZk5lY2Vzc2FyeSgpOwotICAg
IGFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkoKTsKICAgICBtaWdyYXRlRGF0YVRvTmV3VGFi
bGVzSWZOZWNlc3NhcnkoKTsKIH0KIAotU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNjb3BlZFN0YXRlbWVudChzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBBU0NJSUxpdGVy
YWwgcXVlcnksIGNvbnN0IFN0cmluZyYgbG9nU3RyaW5nKSBjb25zdAotewotICAgIGlmICghc3Rh
dGVtZW50KSB7Ci0gICAgICAgIGF1dG8gc3RhdGVtZW50T3JFcnJvciA9IG1fZGF0YWJhc2UucHJl
cGFyZUhlYXBTdGF0ZW1lbnQocXVlcnkpOwotICAgICAgICBpZiAoIXN0YXRlbWVudE9yRXJyb3Ip
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjolcyBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1l
bnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBsb2dTdHJpbmcu
YXNjaWkoKS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50
QXV0b1Jlc2V0U2NvcGUgeyB9OwotICAgICAgICB9Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0YXRl
bWVudE9yRXJyb3IudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICAgICAgQVNTRVJUKG1f
ZGF0YWJhc2UuaXNPcGVuKCkpOwotICAgIH0KLSAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0
b1Jlc2V0U2NvcGUgeyBzdGF0ZW1lbnQuZ2V0KCkgfTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW50ZXJydXB0KCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmludGVycnVwdEFsbERhdGFiYXNlcygpCiB7Ci0gICAgaWYg
KG1fZGF0YWJhc2UuaXNPcGVuKCkpCi0gICAgICAgIG1fZGF0YWJhc2UuaW50ZXJydXB0KCk7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgZm9yIChhdXRvIHN0b3JlIDogYWxs
U3RvcmVzKCkpCisgICAgICAgIHN0b3JlLT5pbnRlcnJ1cHQoKTsKIH0KIAogYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNFbXB0eSgpIGNvbnN0CkBAIC04MjEsOSAr
NjIwLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRl
VW5pcXVlSW5kaWNlcygpCiAgICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNy
ZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykKICAgICAgICAgfHwg
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c0Zyb20pCiAgICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucykKLSAgICAg
ICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRp
bmdEYXRlcykKLSAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5p
cXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKLSAgICAgICAgfHwg
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMpKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzIGZhaWxlZCB0byBleGVjdXRlLCBlcnJvciBtZXNz
YWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04OTksMTYgKzY5Niw2IEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVtYSgpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0
ZUNvbW1hbmQoY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLmxh
c3RFcnJvcigpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7Ci0gICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IGNyZWF0ZSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUg
aW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBp
ZiAoIWNyZWF0ZVVuaXF1ZUluZGljZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05
NTYsMjEgKzc0Myw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKICAgICBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50
ID0gbnVsbHB0cjsKICAgICBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudCA9IG51bGxw
dHI7CiAgICAgbV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2luc2Vy
dFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsK
LSAgICBtX2luc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCA9
IG51bGxwdHI7Ci0gICAgbV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFz
RXhwaXJlZFN0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9jbGVhclVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2NsZWFyQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2Ns
ZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKLSAg
ICBtX2FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3Rh
dGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0YXRlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50
ID0gbnVsbHB0cjsKLSAgICBtX2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAg
ICBtX3VwZGF0ZUF0dHJpYnV0aW9uc0VhcmxpZXN0VGltZVRvU2VuZFN0YXRlbWVudCA9IG51bGxw
dHI7Ci0gICAgbV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBudWxscHRyOwotICAgIG1f
bWFya1JlcG9ydEFzU2VudFRvU291cmNlU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX21hcmtS
ZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsKLSAgICBtX2Vhcmxp
ZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQgPSBudWxscHRyOwogfQogCiBib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiBsb2FkU3RhdGlzdGljcykKQEAgLTIyODcsNyArMjA1OSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VD
b250ZW50cygpCiAgICAgbV9kYXRhYmFzZS5jbGVhckFsbFRhYmxlcygpOwogCiAgICAgaWYgKCFj
cmVhdGVTY2hlbWEoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRl
bnRzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HICIsIGRhdGFi
YXNlIHBhdGg6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6
ICUiIFBSSVZBVEVfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZUZpbGVQYXRo
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTMxNTUsNTEzICsyOTI3LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rpbmco
Y29uc3QKICAgICB9CiB9CiAKLVByaXZhdGVDbGlja01lYXN1cmVtZW50IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURh
dGFiYXNlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCi17Ci0gICAgYXV0byBz
b3VyY2VTaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+
Y29sdW1uSW50KDApKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9IGdldERvbWFp
blN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNvbHVtbkludCgxKSk7Ci0gICAgYXV0byBz
b3VyY2VJRCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDIpOwotICAgIGF1dG8gdGltZU9mQWRDbGlj
ayA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDUpIDogc3RhdGVtZW50
LT5jb2x1bW5Eb3VibGUoMyk7Ci0gICAgYXV0byB0b2tlbiA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRl
bWVudC0+Y29sdW1uVGV4dCg3KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg0KTsKLSAgICBhdXRv
IHNpZ25hdHVyZSA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg4KSA6IHN0
YXRlbWVudC0+Y29sdW1uVGV4dCg1KTsKLSAgICBhdXRvIGtleUlEID0gYXR0cmlidXRpb25UeXBl
ID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8g
c3RhdGVtZW50LT5jb2x1bW5UZXh0KDkpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDYpOwotCi0g
ICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEKHNvdXJjZUlEKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzb3VyY2VTaXRlRG9tYWluKSksIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZShSZWdp
c3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5n
KGRlc3RpbmF0aW9uU2l0ZURvbWFpbikpLCB7IH0sIHsgfSwgV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKHRpbWVPZkFkQ2xpY2spKTsKLSAgICAKLSAgICBpZiAoYXR0cmlidXRpb25UeXBlID09IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSB7Ci0gICAg
ICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDMp
OwotICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNCk7Ci0gICAg
ICAgIGF1dG8gc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNvbHVt
bkRvdWJsZSg2KTsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZh
bHVlID0gc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMTApOwotCi0gICAgICAgIGlmIChhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhICE9IC0xKQotICAgICAgICAgICAgYXR0cmlidXRpb24uc2V0QXR0cmli
dXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eShwcmlvcml0eSkgfSk7Ci0K
LSAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gc291cmNlRWFybGllc3RUaW1lVG9TZW5k
OwotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkZXN0aW5hdGlvbkVhcmxpZXN0VGlt
ZVRvU2VuZDsKLSAgICAgICAgCi0gICAgICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRlcyB0
aGF0IHRoZSByZXBvcnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgotICAg
ICAgICBpZiAoc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCi0gICAgICAgICAg
ICBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc291
cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUpOwotCi0gICAgICAgIGlmIChkZXN0aW5hdGlvbkVh
cmxpZXN0VGltZVRvU2VuZFZhbHVlID4gMC4wKQotICAgICAgICAgICAgZGVzdGluYXRpb25FYXJs
aWVzdFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGVzdGluYXRpb25FYXJs
aWVzdFRpbWVUb1NlbmRWYWx1ZSk7Ci0KLSAgICAgICAgYXR0cmlidXRpb24uc2V0VGltZXNUb1Nl
bmQoeyBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kIH0pOwotICAgIH0KLQotICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsg
dG9rZW4sIHNpZ25hdHVyZSwga2V5SUQgfSk7Ci0KLSAgICByZXR1cm4gYXR0cmlidXRpb247Ci19
Ci0KLXN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50Piwgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZmluZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VT
aXRlJiBzb3VyY2VTaXRlLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSkKLXsKLSAgICBhdXRv
IHNvdXJjZVNpdGVEb21haW5JRCA9IGRvbWFpbklEKHNvdXJjZVNpdGUucmVnaXN0cmFibGVEb21h
aW4pOwotICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChkZXN0aW5h
dGlvblNpdGUucmVnaXN0cmFibGVEb21haW4pOwotCi0gICAgaWYgKCFzb3VyY2VTaXRlRG9tYWlu
SUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwotCi0gICAgYXV0byBmaW5kVW5hdHRy
aWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZmluZFVuYXR0
cmlidXRlZFN0YXRlbWVudCwgZmluZFVuYXR0cmlidXRlZFF1ZXJ5LCAiZmluZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Il9zKTsKLSAgICBpZiAoIWZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQKLSAgICAgICAgfHwgZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgx
LCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgZmluZFVuYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQpICE9IFNRTElURV9PSykgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgZmluZFVuYXR0cmlidXRlZFF1ZXJ5LCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGZpbmRB
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZmluZEF0
dHJpYnV0ZWRTdGF0ZW1lbnQsIGZpbmRBdHRyaWJ1dGVkUXVlcnksICJmaW5kUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQiX3MpOwotICAgIGlmICghZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQK
LSAgICAgICAgfHwgZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNv
dXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGZpbmRBdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0g
U1FMSVRFX09LKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiB1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDsKLSAgICBpZiAoZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShmaW5kVW5h
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ7Ci0gICAgaWYgKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0g
U1FMSVRFX1JPVykKLSAgICAgICAgYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0g
YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShmaW5kQXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGU6OkF0dHJpYnV0ZWQpOwotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNl
cnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJp
YnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlv
blR5cGUpCi17Ci0gICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklm
TmVjZXNzYXJ5KCk7Ci0KLSAgICBhdXRvIHNvdXJjZURhdGEgPSBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0
cmFibGVEb21haW4pOwotICAgIGF1dG8gYXR0cmlidXRpb25EZXN0aW5hdGlvbkRhdGEgPSBlbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihhdHRyaWJ1dGlvbi5kZXN0
aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0KLSAgICBpZiAoIXNvdXJjZURhdGEu
c2Vjb25kIHx8ICFhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uRGF0YS5zZWNvbmQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8mIHNvdXJjZVVubGlua2FibGVUb2tlbiA9IGF0dHJpYnV0aW9uLnNv
dXJjZVVubGlua2FibGVUb2tlbigpOwotICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKLSAgICAgICAg
YXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCku
ZGF0YSA6IC0xOwotICAgICAgICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb24uYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZh
bHVlKCkucHJpb3JpdHkgOiAtMTsKLSAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLnNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA/
IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9TZW5kLnZhbHVl
KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7Ci0gICAgICAgIGF1dG8gZGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLmRlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5kZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZC52YWx1ZSgpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSA6IC0xOwotCi0gICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBpbnNlcnRpbmcgYW4g
YXR0cmlidXRlZCBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IHZhbHVlIGludG8gdGhlIGRhdGFi
YXNlIHdpdGhvdXQgdmFsaWQgcmVwb3J0IHRpbWVzLgotICAgICAgICBBU1NFUlQoc291cmNlRWFy
bGllc3RUaW1lVG9TZW5kICE9IC0xICYmIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kICE9
IC0xKTsKLQotICAgICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudChpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSk7Ci0gICAg
ICAgIGlmICghc3RhdGVtZW50Ci0gICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
KnNvdXJjZURhdGEuc2Vjb25kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVu
dC0+YmluZEludCgyLCAqYXR0cmlidXRpb25EZXN0aW5hdGlvbkRhdGEuc2Vjb25kKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgzLCBhdHRyaWJ1dGlvbi5z
b3VyY2VJRCgpLmlkKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+Ymlu
ZEludCg0LCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAg
IHx8IHN0YXRlbWVudC0+YmluZEludCg1LCBwcmlvcml0eSkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoNiwgYXR0cmlidXRpb24udGltZU9mQWRDbGlj
aygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAg
ICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoNywgc291cmNlRWFybGllc3RUaW1lVG9TZW5kKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoOCwgc291cmNl
VW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT50b2tlbkJhc2U2NFVSTCA6
IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5i
aW5kVGV4dCg5LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4t
PnNpZ25hdHVyZUJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAg
ICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCgxMCwgc291cmNlVW5saW5rYWJsZVRva2VuID8g
c291cmNlVW5saW5rYWJsZVRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9
IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kRG91YmxlKDExLCBkZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBz
dGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICAgICAgSVRQX1JFTEVB
U0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0QXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoaW5z
ZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSk7Ci0gICAgaWYgKCFz
dGF0ZW1lbnQKLSAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VEYXRhLnNl
Y29uZCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgyLCAqYXR0
cmlidXRpb25EZXN0aW5hdGlvbkRhdGEuc2Vjb25kKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
c3RhdGVtZW50LT5iaW5kSW50KDMsIGF0dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoNCwgYXR0cmlidXRpb24udGlt
ZU9mQWRDbGljaygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoNSwgc291cmNlVW5saW5rYWJsZVRva2VuID8g
c291cmNlVW5saW5rYWJsZVRva2VuLT50b2tlbkJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDYsIHNvdXJjZVVubGlu
a2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMIDog
ZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRl
eHQoNywgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT5rZXlJ
REJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0
ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0df
RVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFz
RXhwaXJlZEZvclRlc3RpbmcoKQotewotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+
c2NvcGVkU3RhdGVtZW50KG1fc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
c0V4cGlyZWRTdGF0ZW1lbnQsIHNldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXNFeHBpcmVkUXVlcnksICJtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBc0V4cGlyZWRGb3JUZXN0aW5nIl9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50IHx8
IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9S
RUxFQVNFX0xPR19FUlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEFzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklO
RywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVtb3ZlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiBhdHRy
aWJ1dGlvbikKLXsKLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJp
YnV0aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgYXV0byBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgp
LnJlZ2lzdHJhYmxlRG9tYWluKTsKLQotICAgIGlmICghc291cmNlU2l0ZURvbWFpbklEIHx8ICFk
ZXN0aW5hdGlvblNpdGVEb21haW5JRCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8g
c2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fcmVtb3ZlVW5hdHRyaWJ1
dGVkU3RhdGVtZW50LCByZW1vdmVVbmF0dHJpYnV0ZWRRdWVyeSwgInJlbW92ZVVuYXR0cmlidXRl
ZCJfcyk7Ci0KLSAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBzY29wZWRTdGF0
ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVVbmF0dHJp
YnV0ZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KLX0KLQotc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFNvdXJjZVNpdGUmIHNv
dXJjZVNpdGUsIGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNp
dGUsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQotewot
ICAgIC8vIFdlIHNob3VsZCBhbHdheXMgY2xlYXIgZXhwaXJlZCBjbGlja3MgZnJvbSB0aGUgZGF0
YWJhc2UgYmVmb3JlIHNjaGVkdWxpbmcgYW4gYXR0cmlidXRpb24uCi0gICAgY2xlYXJFeHBpcmVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLQotICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQo
KSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsICJHb3QgYW4gaW52YWxpZCBhdHRyaWJ1dGlvbi4iKTsKLSAgICAgICAgICAgIGRlYnVnQnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gR290
IGFuIGludmFsaWQgYXR0cmlidXRpb24uIl9zKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIGF1dG8gZGF0YSA9IGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEuZGF0YTsKLSAgICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5w
cmlvcml0eTsKLQotICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3QgYW4gYXR0
cmlidXRpb24gd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHBy
aW9yaXR5OiAle3B1YmxpY311LiIsIGRhdGEsIHByaW9yaXR5KTsKLSAgICAgICAgZGVidWdCcm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gR290IGFuIGF0dHJpYnV0aW9uIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAn
Il9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJy4iX3MpKTsKLSAg
ICB9Ci0KLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50
aWxTZW5kRGF0YSBzZWNvbmRzVW50aWxTZW5kIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQg
fTsKLQotICAgIGF1dG8gYXR0cmlidXRpb24gPSBmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
c291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlKTsKLSAgICBhdXRvJiBwcmV2aW91c2x5VW5hdHRy
aWJ1dGVkID0gYXR0cmlidXRpb24uZmlyc3Q7Ci0gICAgYXV0byYgcHJldmlvdXNseUF0dHJpYnV0
ZWQgPSBhdHRyaWJ1dGlvbi5zZWNvbmQ7Ci0KLSAgICBpZiAocHJldmlvdXNseVVuYXR0cmlidXRl
ZCkgewotICAgICAgICAvLyBBbHdheXMgY29udmVydCB0aGUgcGVuZGluZyBhdHRyaWJ1dGlvbiBh
bmQgcmVtb3ZlIGl0IGZyb20gdGhlIHVuYXR0cmlidXRlZCBtYXAuCi0gICAgICAgIHJlbW92ZVVu
YXR0cmlidXRlZCgqcHJldmlvdXNseVVuYXR0cmlidXRlZCk7Ci0gICAgICAgIHNlY29uZHNVbnRp
bFNlbmQgPSBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkLnZhbHVlKCkuYXR0cmlidXRlQW5kR2V0RWFy
bGllc3RUaW1lVG9TZW5kKFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkpOwotCi0gICAg
ICAgIC8vIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHZhbGlkIHNlY29uZHNVbnRpbFNlbmQgdmFs
dWUgZm9yIGEgcHJldmlvdXNseVVuYXR0cmlidXRlZCB2YWx1ZSBiZWNhdXNlIHRoZXJlIGNhbiBi
ZSBubyBwcmV2aW91cyBhdHRyaWJ1dGlvbiB3aXRoIGEgaGlnaGVyIHByaW9yaXR5LgotICAgICAg
ICBpZiAoIXNlY29uZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01v
ZGVFbmFibGVkKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCAiQ29udmVydGVkIGEgc3RvcmVkIGFkIGNsaWNrIHdpdGggYXR0cmlidXRp
b24gdHJpZ2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9dS4iLCBk
YXRhLCBwcmlvcml0eSk7Ci0gICAgICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6Oklu
Zm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJ0ZWQgYSBz
dG9yZWQgYWQgY2xpY2sgd2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEs
ICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICInLiJfcykpOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcHJldmlvdXMgYXR0cmlidXRpb24sIG9yIHRoZSBu
ZXcgYXR0cmlidXRpb24gaGFzIGhpZ2hlciBwcmlvcml0eSwgaW5zZXJ0L3VwZGF0ZSB0aGUgZGF0
YWJhc2UuCi0gICAgICAgIGlmICghcHJldmlvdXNseUF0dHJpYnV0ZWQgfHwgcHJldmlvdXNseVVu
YXR0cmlidXRlZC52YWx1ZSgpLmhhc0hpZ2hlclByaW9yaXR5VGhhbigqcHJldmlvdXNseUF0dHJp
YnV0ZWQpKSB7Ci0gICAgICAgICAgICBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZN
b3ZlKCpwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOwotCi0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoZGVi
dWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJSZXBsYWNlZCBhIHByZXZpb3VzbHkgY29udmVydGVkIGFk
IGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gZGF0YTogJXtwdWJsaWN9dSBh
bmQgcHJpb3JpdHk6ICV7cHVibGljfXUgYmVjYXVzZSBpdCBoYWQgaGlnaGVyIHByaW9yaXR5LiIs
IGRhdGEsIHByaW9yaXR5KTsKLSAgICAgICAgICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2
ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZXBsYWNl
ZCBhIHByZXZpb3VzbHkgY29udmVydGVkIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0
cmlidXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3Ms
IHByaW9yaXR5LCAiJyBiZWNhdXNlIGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIl9zKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHByZXZpb3VzbHlBdHRyaWJ1dGVk
KSB7Ci0gICAgICAgIC8vIElmIHdlIGhhdmUgbm8gbmV3IGF0dHJpYnV0aW9uLCByZS1hdHRyaWJ1
dGUgdGhlIG9sZCBvbmUgdG8gcmVzcGVjdCB0aGUgbmV3IHByaW9yaXR5LCBidXQgb25seSBpZiB0
aGlzIHJlcG9ydCBoYXMKLSAgICAgICAgLy8gbm90IGJlZW4gc2VudCB0byB0aGUgc291cmNlIG9y
IGRlc3RpbmF0aW9uIHNpdGUgeWV0LgotICAgICAgICBpZiAoIXByZXZpb3VzbHlBdHRyaWJ1dGVk
LnZhbHVlKCkuaGFzUHJldmlvdXNseUJlZW5SZXBvcnRlZCgpKSB7Ci0gICAgICAgICAgICBhdXRv
IHNlY29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5QXR0cmlidXRlZC52YWx1ZSgpLmF0dHJpYnV0
ZUFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEp
KTsKLSAgICAgICAgICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRp
bFNlbmRWYWx1ZXMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgICAgICAgICBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKCpwcmV2aW91
c2x5QXR0cmlidXRlZCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpB
dHRyaWJ1dGVkKTsKLQotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQo
KSkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCAiUmUtY29udmVydGVkIGFuIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0
cmlidXRpb24gdHJpZ2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJsaWN9
dSBiZWNhdXNlIGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOwotICAg
ICAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygi
W1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlLWNvbnZlcnRlZCBhbiBhZCBjbGljayB3aXRo
IGEgbmV3IG9uZSB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicg
YW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicnIGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBw
cmlvcml0eS4iX3MpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
ICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBzZWNvbmRzVW50aWxTZW5k
OwotfQotCi1WZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoKQotewotICAgIGF1dG8gYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMt
PnNjb3BlZFN0YXRlbWVudChtX2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
YXRlbWVudCwgYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIl9zKTsKLQotICAgIGlmICghYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudCkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8V2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGF0dHJpYnV0aW9uczsKLSAgICB3aGlsZSAo
YXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAg
IGF0dHJpYnV0aW9ucy5hcHBlbmQoYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRh
YmFzZShhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkpOwotCi0gICAgcmV0dXJuIGF0dHJpYnV0
aW9uczsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWlu
PiBkb21haW4pCi17Ci0gICAgLy8gRGVmYXVsdCB0byBjbGVhciBhbGwgZW50cmllcyBpZiBubyBk
b21haW4gaXMgc3BlY2lmaWVkLgotICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyID0gIiUiOwotICAg
IGlmIChkb21haW4pIHsKLSAgICAgICAgYXV0byBkb21haW5JRFRvTWF0Y2ggPSBkb21haW5JRCgq
ZG9tYWluKTsKLSAgICAgICAgaWYgKCFkb21haW5JRFRvTWF0Y2gpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgYmluZFBhcmFtZXRlciA9IFN0cmluZzo6bnVtYmVyKCpkb21haW5JRFRv
TWF0Y2gpOwotICAgIH0KLQotICAgIGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJlZ2luVHJhbnNh
Y3Rpb25JZk5lY2Vzc2FyeSgpOwotCi0gICAgYXV0byBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGNsZWFyVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOwotCi0g
ICAgaWYgKCFjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBjbGVh
clVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgYmluZFBhcmFtZXRlcikg
IT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50
LT5iaW5kVGV4dCgyLCBiaW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgY2xl
YXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewot
ICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGNsZWFyQXR0cmlidXRl
ZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NsZWFyQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50LCBjbGVhckF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAiY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7
Ci0KLSAgICBpZiAoIWNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBj
bGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJpbmRQYXJhbWV0ZXIp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQt
PmJpbmRUZXh0KDIsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSwotICAgICAgICB8fCBjbGVh
ckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAg
ICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50IGNs
ZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCi17
Ci0gICAgYXV0byBleHBpcmF0aW9uVGltZUZyYW1lID0gV2FsbFRpbWU6Om5vdygpIC0gV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Om1heEFnZSgpOwotICAgIGF1dG8gc2NvcGVkU3Rh
dGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
UXVlcnksICJjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7Ci0KLSAgICBp
ZiAoIXNjb3BlZFN0YXRlbWVudAotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmREb3Vi
bGUoMSwgZXhwaXJhdGlvblRpbWVGcmFtZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICBJVFBfUkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQotfQotCi1TdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBzdGF0
ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9u
VHlwZSkKLXsKLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9t
RG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOwotICAgIGF1dG8gZGVzdGluYXRpb25T
aXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1u
SW50KDEpKTsKLSAgICBhdXRvIHNvdXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMik7Ci0K
LSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoIlNvdXJjZSBz
aXRlOiAiLCBzb3VyY2VTaXRlRG9tYWluLCAiXG5BdHRyaWJ1dGUgb24gc2l0ZTogIiwgZGVzdGlu
YXRpb25TaXRlRG9tYWluLCAiXG5Tb3VyY2UgSUQ6ICIsIHNvdXJjZUlEKTsKLQotICAgIGlmIChh
dHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6
OkF0dHJpYnV0ZWQpIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gc3Rh
dGVtZW50LT5jb2x1bW5JbnQoMyk7Ci0gICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0ZW1lbnQt
PmNvbHVtbkludCg0KTsKLSAgICAgICAgYXV0byBlYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGF0ZW1l
bnQtPmNvbHVtbkludCg2KTsKLQotICAgICAgICBpZiAoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSAh
PSAtMSkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuQXR0cmlidXRpb24gdHJpZ2dl
ciBkYXRhOiAiLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCAiXG5BdHRyaWJ1dGlvbiBwcmlvcml0
eTogIiwgcHJpb3JpdHksICJcbkF0dHJpYnV0aW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogIik7
Ci0gICAgICAgICAgICBpZiAoZWFybGllc3RUaW1lVG9TZW5kID09IC0xKQotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJOb3Qgc2V0Iik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHMoZWFybGllc3RUaW1lVG9TZW5kKSAtIFdhbGxUaW1lOjpub3coKTsKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgoc2Vjb25kc1VudGlsU2VuZCA+PSAyNF9oICYmIHNlY29uZHNVbnRp
bFNlbmQgPD0gNDhfaCkgPyAiV2l0aGluIDI0LTQ4IGhvdXJzIiA6ICJPdXRzaWRlIDI0LTQ4IGhv
dXJzIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIlxuTm8gYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhLiIpOwotICAgIH0gZWxzZQot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7
Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwotfQotCi1TdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKQotewotICAgIGF1dG8gcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYXRhRXhpc3RzID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxF
Q1QgKFNFTEVDVCBDT1VOVCgqKSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KSBhcyBjbnQxLCAoU0VMRUNUIENPVU5UKCopIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KSBhcyBjbnQyIl9zKTsKLSAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGF0YUV4aXN0cyB8fCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPnN0ZXAo
KSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRvU3RyaW5nIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKCFwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmNvbHVtbkludCgwKSAmJiAhcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzLT5jb2x1bW5JbnQoMSkpCi0gICAgICAgIHJldHVybiAi
XG5ObyBzdG9yZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBkYXRhLlxuIl9zOwotCi0gICAg
YXV0byB1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQo
bV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1N0YXRl
bWVudCwgYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNR
dWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmciX3MpOwotCi0gICAgaWYgKCF1
bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQpIHsKLSAgICAgICAgSVRQX1JFTEVBU0VfTE9HX0VS
Uk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdW5hdHRyaWJ1
dGVkTnVtYmVyID0gMDsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgd2hpbGUgKHVu
YXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAg
ICAgY29uc3QgY2hhciogcHJlZml4ID0gdW5hdHRyaWJ1dGVkTnVtYmVyID8gIiIgOiAiVW5hdHRy
aWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOiI7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHByZWZpeCwgIlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKyt1bmF0
dHJpYnV0ZWROdW1iZXIsICdcbicsCi0gICAgICAgICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nKHVu
YXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCkpOwotICAgIH0KLQotICAgIGF1dG8gYXR0cmli
dXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgYWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50UXVlcnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIl9z
KTsKLQotICAgIGlmICghYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgewotICAgICAgICBJVFBf
UkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVkTnVtYmVyID0gMDsKLSAgICB3aGlsZSAoYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVk
TnVtYmVyKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodW5hdHRyaWJ1dGVkTnVtYmVyID8g
IlxuIiA6ICIiLCAiQXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50czoiKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
IiwgKythdHRyaWJ1dGVkTnVtYmVyICsgdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAotICAgICAg
ICAgICAgYXR0cmlidXRpb25Ub1N0cmluZyhhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgp
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkpOwot
ICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1zdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmIGF0dHJpYnV0aW9uKQotewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0g
ZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLSAg
ICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVz
dGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotCi0gICAgaWYgKCFzb3VyY2VTaXRl
RG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwotCi0gICAgYXV0byBzY29w
ZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9lYXJsaWVzdFRpbWVzVG9TZW5k
U3RhdGVtZW50LCBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnksICJlYXJsaWVzdFRpbWVzVG9TZW5k
Il9zKTsKLQotICAgIGlmICghc2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRl
bWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5J
RCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplYXJsaWVzdFRpbWVzVG9TZW5kLCBlcnJvciBt
ZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHN0ZDo6b3B0aW9u
YWw8U291cmNlRWFybGllc3RUaW1lVG9TZW5kPiBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZTsK
LSAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPiBlYXJsaWVz
dFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uOwotICAgIAotICAgIC8vIEEgdmFsdWUgb2YgMC4wIGlu
ZGljYXRlcyB0aGF0IHRoZSByZXBvcnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBz
aXRlLgotICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgwKSA+IDAuMCkKLSAg
ICAgICAgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVt
bkRvdWJsZSgwKTsKLSAgICAKLSAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUo
MSkgPiAwLjApCi0gICAgICAgIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gPSBzY29w
ZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxKTsKLSAgICAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb24pOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9tYWluSUQgc291cmNlU2l0ZURvbWFp
bklELCBEZXN0aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotewotICAg
IGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fbWFya1JlcG9y
dEFzU2VudFRvU291cmNlU3RhdGVtZW50LCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VRdWVyeSwg
Im1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSJfcyk7Ci0KLSAgICBpZiAoIXNjb3BlZFN0YXRlbWVu
dAotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgc291cmNlU2l0ZURvbWFp
bklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIs
IGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJr
UmVwb3J0QXNTZW50VG9Tb3VyY2UsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5H
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCBzb3VyY2VTaXRl
RG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi17
Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9tYXJr
UmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblN0YXRlbWVudCwgbWFya1JlcG9ydEFzU2VudFRvRGVz
dGluYXRpb25RdWVyeSwgIm1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uIl9zKTsKLQotICAg
IGlmICghc2NvcGVkU3RhdGVtZW50Ci0gICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZElu
dCgxLCBzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzY29wZWRT
dGF0ZW1lbnQtPmJpbmRJbnQoMiwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uLCBlcnJvciBtZXNz
YWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBvcnRFbmRwb2lu
dCkKLXsgICAgCi0gICAgYXV0byB0aW1lc1RvU2VuZCA9IGVhcmxpZXN0VGltZXNUb1NlbmQoYXR0
cmlidXRpb24pOwotICAgIGF1dG8gc291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gdGltZXNUb1Nl
bmQuZmlyc3Q7Ci0gICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IHRpbWVz
VG9TZW5kLnNlY29uZDsKLQotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQo
YXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBhdXRvIGRl
c3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25T
aXRlKCkucmVnaXN0cmFibGVEb21haW4pOwotCi0gICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQg
fHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzd2l0
Y2ggKGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpIHsKLSAgICBjYXNlIFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50OjpTb3VyY2U6Ci0gICAgICAgIGlm
ICghc291cmNlRWFybGllc3RUaW1lVG9TZW5kKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtYXJrUmVw
b3J0QXNTZW50VG9Tb3VyY2UoKnNvdXJjZVNpdGVEb21haW5JRCwgKmRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEKTsKLSAgICAgICAgc291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gc3RkOjpudWxsb3B0
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblJlcG9ydEVuZHBvaW50OjpEZXN0aW5hdGlvbjoKLSAgICAgICAgaWYgKCFkZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZCkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbWFya1JlcG9ydEFz
U2VudFRvRGVzdGluYXRpb24oKnNvdXJjZVNpdGVEb21haW5JRCwgKmRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEKTsKLSAgICAgICAgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgY2xlYXIgdGhlIGF0dHJpYnV0ZSBmcm9tIHRo
ZSBkYXRhYmFzZSB1bmxlc3MgaXQgaGFzIGJlZW4gcmVwb3J0ZWQgYm90aCB0byB0aGUgc291cmNl
IGFuZCBkZXN0aW5hdGlvbiBzaXRlLgotICAgIGlmIChkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZCB8fCBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGF1dG8gY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJERUxFVEUgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUg
c291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9z
KTsKLSAgICBpZiAoIWNsZWFyQXR0cmlidXRlZFN0YXRlbWVudAotICAgICAgICB8fCBjbGVhckF0
dHJpYnV0ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+YmluZEludCgyLCAq
ZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBjbGVhckF0
dHJpYnV0ZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBJVFBf
UkVMRUFTRV9MT0dfRVJST1IobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbiBmYWlsZWQgdG8gc3RlcCwgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKQotewotICAgIGF1dG8g
ZXhwaXJlZFRpbWVUb1NlbmQgPSBXYWxsVGltZTo6bm93KCkgLSAxX2g7Ci0KLSAgICBhdXRvIHRy
YW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAgIGF1
dG8gZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VU
IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gPyJfcyk7Ci0gICAgYXV0byBlYXJsaWVzdFRp
bWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVz
dFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gbnVsbCJfcyk7Ci0KLSAgICBpZiAoIWVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50Ci0gICAgICAgIHx8IGVhcmxpZXN0VGltZVRvU2Vu
ZFRvU291cmNlU3RhdGVtZW50LT5iaW5kSW50KDEsIGV4cGlyZWRUaW1lVG9TZW5kLnNlY29uZHNT
aW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IGVhcmxpZXN0VGlt
ZVRvU2VuZFRvU291cmNlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAg
ICAgSVRQX1JFTEVBU0VfTE9HX0VSUk9SKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19T
VFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb25TdGF0ZW1lbnQgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRl
bWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIElUUF9SRUxFQVNFX0xPR19F
UlJPUihtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVz
dGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
fQotfQotCi1TY29wZUV4aXQ8RnVuY3Rpb248dm9pZCgpPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpCi17Ci0gICAgaWYg
KG1fdHJhbnNhY3Rpb24uaW5Qcm9ncmVzcygpKQotICAgICAgICByZXR1cm4gbWFrZVNjb3BlRXhp
dChGdW5jdGlvbjx2b2lkKCk+IHsgW10geyB9IH0pOwotCi0gICAgbV90cmFuc2FjdGlvbi5iZWdp
bigpOwotICAgIHJldHVybiBtYWtlU2NvcGVFeGl0KEZ1bmN0aW9uPHZvaWQoKT4geyBbdGhpc10g
ewotICAgICAgICBtX3RyYW5zYWN0aW9uLmNvbW1pdCgpOwotICAgIH0gfSk7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgSVRQX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDM1MTI5ODY4
Mzg3MWM3ZWJkM2NhNzk0OWIwNThiNDM4MDUxZGViMTEuLjViNWVhMjY3ODNmNjFhZDJlMDFkNGQ0
Mzg2MmEwODlmYTBhOTE5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0yNywyMSArMjcsMTYgQEAKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKKyNpbmNsdWRlICJEYXRhYmFzZVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRl
RGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2luY2x1ZGUgPHd0Zi9TY29wZS5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNRTGl0ZURhdGFiYXNlOwotY2xhc3MgU1FMaXRlU3Rh
dGVtZW50OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOwog
ZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczsKQEAgLTU2LDM0ICs1MSwyMiBAQCBzdGF0aWMgY29uc3RleHByIHN0
ZDo6YXJyYXk8dW5zaWduZWQsIG51bWJlck9mQnVja2V0c1BlclN0YXRpc3RpYz4gYnVja2V0U2l6
ZXMgewogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogY2xhc3MgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOwogCi11c2luZyBBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKLXVzaW5n
IFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ7CiB1c2luZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7CiB1c2luZyBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0
ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uU2l0ZTsKIHVzaW5nIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKLXVzaW5nIEV4aXN0aW5n
Q29sdW1ucyA9IFZlY3RvcjxTdHJpbmc+OwotdXNpbmcgRXhwZWN0ZWRDb2x1bW5zID0gVmVjdG9y
PFN0cmluZz47Ci11c2luZyBFeGlzdGluZ0NvbHVtbk5hbWUgPSBTdHJpbmc7Ci11c2luZyBFeHBl
Y3RlZENvbHVtbk5hbWUgPSBTdHJpbmc7Ci11c2luZyBTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQg
PSBkb3VibGU7Ci11c2luZyBEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IGRvdWJsZTsK
LXVzaW5nIFNvdXJjZURvbWFpbklEID0gdW5zaWduZWQ7Ci11c2luZyBEZXN0aW5hdGlvbkRvbWFp
bklEID0gdW5zaWduZWQ7CiAKIHR5cGVkZWYgc3RkOjpwYWlyPFN0cmluZywgc3RkOjpvcHRpb25h
bDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKIAogLy8gVGhpcyBpcyBhbHdheXMgY29uc3Ry
dWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVkIG9uIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVlLgotY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHsK
K2NsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVibGlj
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwgcHVibGljIERhdGFiYXNlVXRpbGl0aWVzIHsK
IHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBTdXNwZW5kYWJsZVdvcmtRdWV1ZSYsIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6
U2Vzc2lvbklEKTsKICAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoKTsK
IAotICAgIHN0YXRpYyBIYXNoU2V0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Kj4mIGFsbFN0b3JlcygpOwogICAgIHZvaWQgcG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUoY29uc3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlJik7CiAgICAgdm9pZCBtZXJnZVN0YXRp
c3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBWZWN0
b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVn
YXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVDb29r
aWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwpAQCAtMTQw
LDE4ICsxMjMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkb21haW5JREV4aXN0c0luRGF0YWJhc2Uo
aW50KTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjaGVja0Zvck1pc3NpbmdU
YWJsZXNJblNjaGVtYSgpOwogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0Rh
eXNQYXNzZWQsIGJvb2wgaGFzVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpIG92ZXJyaWRlOwotICAgIHZv
aWQgaW50ZXJydXB0KCk7Ci0KLSAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50LgotICAg
IHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXNFeHBpcmVkRm9yVGVzdGluZygpIG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2Vu
ZERhdGE+IGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJikgb3ZlcnJp
ZGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4p
IG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
KSBvdmVycmlkZTsKLSAgICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygp
IG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkgb3ZlcnJpZGU7
CisgICAgc3RhdGljIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzKCk7CisKICAgICBWZWN0b3I8
U3RyaW5nPiBjb2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CkBAIC0x
NjQsMTkgKzEzNywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkTWlzc2luZ1RhYmxlc0lmTmVj
ZXNzYXJ5KCk7CiAgICAgYm9vbCBtaXNzaW5nVW5pcXVlSW5kaWNlcygpOwogICAgIGJvb2wgbmVl
ZHNVcGRhdGVkU2NoZW1hKCk7Ci0gICAgYm9vbCBuZWVkc1VwZGF0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFNjaGVtYSgpOwotICAgIHZvaWQgcmVuYW1lQ29sdW1uSW5UYWJsZShTdHJpbmcmJiwg
RXhpc3RpbmdDb2x1bW5OYW1lJiYsIEV4cGVjdGVkQ29sdW1uTmFtZSYmKTsKLSAgICB2b2lkIGFk
ZE1pc3NpbmdDb2x1bW5zVG9UYWJsZShTdHJpbmcmJiwgY29uc3QgRXhpc3RpbmdDb2x1bW5zJiwg
Y29uc3QgRXhwZWN0ZWRDb2x1bW5zJik7Ci0gICAgdm9pZCBhZGRNaXNzaW5nQ29sdW1uc0lmTmVj
ZXNzYXJ5KCk7Ci0gICAgdm9pZCByZW5hbWVDb2x1bW5zSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lk
IHJlbmFtZUNvbHVtbkluVGFibGUoKTsKICAgICBUYWJsZUFuZEluZGV4UGFpciBjdXJyZW50VGFi
bGVBbmRJbmRleFF1ZXJpZXMoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFNjaGVtYUlmTmVjZXNzYXJ5KCk7Ci0gICAgdm9pZCBlbmFibGVGb3Jl
aWduS2V5cygpOwogICAgIGJvb2wgbWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCk7
CiAgICAgdm9pZCBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lk
IGRlc3Ryb3lTdGF0ZW1lbnRzKCk7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jl
c2V0U2NvcGUgc2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+JiwgQVNDSUlMaXRlcmFsLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2b2lk
IGRlc3Ryb3lTdGF0ZW1lbnRzKCkgZmluYWw7CiAKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3Mo
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJGcmFtZURvbWFpbiYpIGNvbnN0OwogICAg
IFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CkBAIC0y
MDEsMTAgKzE2NSw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBk
b21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSgpIGNvbnN0OwogICAgIEhhc2hN
YXA8VG9wRnJhbWVEb21haW4sIFN1YlJlc291cmNlRG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VB
Y2Nlc3MoKSBjb25zdDsKIAotICAgIHZvaWQgbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24o
U291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQpOwotICAgIHZvaWQgbWFya1JlcG9y
dEFzU2VudFRvU291cmNlKFNvdXJjZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEKTsKLSAg
ICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6
Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gZWFybGllc3RUaW1lc1Rv
U2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOwotCiAgICAgc3Ry
dWN0IERvbWFpbkRhdGEgewogICAgICAgICB1bnNpZ25lZCBkb21haW5JRDsKICAgICAgICAgUmVn
aXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW47CkBAIC0yNTMsMjAgKzIxMywxMCBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNEYXRhYmFzZVN0b3JlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgYm9vbCBjcmVhdGVVbmlxdWVJbmRpY2VzKCk7Ci0gICAgYm9vbCBjcmVh
dGVTY2hlbWEoKTsKKyAgICBib29sIGNyZWF0ZVNjaGVtYSgpIGZpbmFsOwogICAgIFN0cmluZyBl
bnN1cmVBbmRNYWtlRG9tYWluTGlzdChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYp
OwogICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lKGNvbnN0IERvbWFpbkRhdGEmKTsKLSAgICAKLSAgICB2b2lkIHJlbW92ZVVuYXR0cmlidXRl
ZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOwotICAgIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJh
c2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGUpOwotICAgIFN0cmluZyBhdHRyaWJ1dGlvblRvU3RyaW5nKFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudCosIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsK
LSAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
Pj4gZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJik7Ci0KLSAgICBTY29wZUV4aXQ8
RnVuY3Rpb248dm9pZCgpPj4gV0FSTl9VTlVTRURfUkVUVVJOIGJlZ2luVHJhbnNhY3Rpb25JZk5l
Y2Vzc2FyeSgpOwogCi0gICAgY29uc3QgU3RyaW5nIG1fc3RvcmFnZURpcmVjdG9yeVBhdGg7Ci0g
ICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOwotICAgIG11dGFi
bGUgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24gbV90cmFuc2FjdGlvbjsKICAgICBtdXRhYmxl
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fb2JzZXJ2ZWREb21h
aW5Db3VudFN0YXRlbWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PiBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0
ZW1lbnQ7CkBAIC0zMDQsMjEgKzI1NCw2IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3VuaXF1ZVJlZGlyZWN0RXhpc3Rz
U3RhdGVtZW50OwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4gbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQ7CiAgICAgbXV0YWJsZSBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3JlbW92ZUFsbERhdGFT
dGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PiBtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX2luc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
PiBtX3NldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVt
ZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xl
YXJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NsZWFyQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVtZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4gbV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1N0
YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X2FsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2ZpbmRVbmF0dHJpYnV0ZWRT
dGF0ZW1lbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4g
bV9maW5kQXR0cmlidXRlZFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX3VwZGF0ZUF0dHJpYnV0aW9uc0VhcmxpZXN0VGltZVRvU2VuZFN0
YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X3JlbW92ZVVuYXR0cmlidXRlZFN0YXRlbWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50PiBtX21hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZVN0YXRlbWVudDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX21hcmtSZXBv
cnRBc1NlbnRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50OwogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiAgICAgYm9vbCBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
RmlsZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmgKaW5kZXggYTc3ZTA5ODBhZWEzZDI2NWExNmExODUyNGI0N2VlY2JjYmIzYzY5
Ny4uM2Q3Zjc1YTAxNjA0ZmU2ZTE4NGJkZWUwYTgzYTI5NmEyOGI4MGM0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtMTA3LDE3ICsx
MDcsNiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBhbGxEb21haW5z
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGlu
Zyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5
c1Bhc3NlZCwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgb3ZlcnJpZGU7CiAKLSAgICAv
LyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgSVRQ
IG1lbW9yeSBzdG9yZS4KLSAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkgb3ZlcnJpZGUg
eyB9OwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25E
ZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25UcmlnZ2VyRGF0YSYmKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH07Ci0gICAgVmVjdG9y
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH07Ci0gICAgdm9pZCBjbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+
KSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpIG92ZXJyaWRlIHsgfTsKLSAgICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b1N0cmluZygpIG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9OwotICAgIHZvaWQgY2xlYXJT
ZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpIG92
ZXJyaWRlIHsgfTsKLSAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZygpIG92ZXJyaWRlIHsgfTsKLQogcHJpdmF0ZToKICAgICB2
b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CiAg
ICAgY29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBvcGVyYXRpbmdEYXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fb3BlcmF0aW5nRGF0ZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAppbmRleCAyNDIyZmM4NGY1NGVlN2NkMzBlZTQwZjE0MjA0MmQ0MWViZjUxYjNm
Li5jMWVkZjU2ZDM1YmJiNjczODhiNzczMzU0NGQ0ZTExZmViNjc3MjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yMDIsMTcgKzIwMiw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPcGVyYXRpbmdEYXRlcygpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhc1Vz
ZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBib29sKSA9IDA7Ci0gICAgCi0gICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4KLSAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpID0gMDsKLSAgICB2aXJ0dWFsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
U2Vjb25kc1VudGlsU2VuZERhdGE+IGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNv
bnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEmJikgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25h
bDxSZWdpc3RyYWJsZURvbWFpbj4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJFeHBpcmVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJT
ZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVu
c2lnbmVkIGNvbXB1dGVJbXBvcnRhbmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKaW5kZXggNGRiODA3YTdkOWQ3MDU0MDFlZDU5YTZjZWVlMmFkN2IyNDA2Nzc0MC4uOWQzM2Vj
ZWNiNGY4NzFkYWRiOTVmZDRjMDJlZTVjZWY2MTIwNTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE1MCwxMSArMTUwLDIzIEBAIHN0
YXRpYyBSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+IHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpCiAg
ICAgcmV0dXJuIHF1ZXVlLmdldCgpLmNvcHlSZWYoKTsKIH0KIAotV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Np
b24mIG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCitzdGF0aWMg
U3RyaW5nIHBjbVN0b3JlRGlyZWN0b3J5KGNvbnN0IE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGNvbnN0IFN0cmlu
ZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KQoreworICAgIGlmIChz
ZXNzaW9uLnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rv
cnk7CisKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKK30KKwor
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsIGlzRXBo
ZW1lcmFsKQogICAgIDogbV9uZXR3b3JrU2Vzc2lvbihtYWtlV2Vha1B0cihuZXR3b3JrU2Vzc2lv
bikpCiAgICAgLCBtX3N0YXRpc3RpY3NRdWV1ZShzaGFyZWRTdGF0aXN0aWNzUXVldWUoKSkKICAg
ICAsIG1fZGFpbHlUYXNrc1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MpCiAgICAgLCBtX2lzRXBoZW1l
cmFsKGlzRXBoZW1lcmFsKQorICAgICwgbV9wY21TdG9yZShQQ006OlN0b3JlOjpjcmVhdGUocGNt
U3RvcmVEaXJlY3RvcnkobmV0d29ya1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSkpKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTg2LDkgKzE5OCw5IEBA
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSgpCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGlzdGljc1N0b3JlKTsKIH0KIAot
UmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjcmVhdGUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBjb25zdCBT
dHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2Nh
bGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCitSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShOZXR3b3Jr
U2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jh
Z2VEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVy
YWwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBz
aG91bGRJbmNsdWRlTG9jYWxob3N0LCBpc0VwaGVtZXJhbCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShuZXR3b3JrU2Vzc2lvbiwgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBpc0VwaGVtZXJhbCkpOwogfQog
CiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkRGVzdHJveU5ldHdvcmtT
ZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTIwMSw2ICsyMTMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlk
RGVzdHJveU5ldHdvcmtTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPAogCiAgICAgbV9uZXR3b3Jr
U2Vzc2lvbiA9IG51bGxwdHI7CiAgICAgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RvcmUoKS5jbG9zZShbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiBpbmxpbmUgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBvc3RUYXNrKFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIHRhc2spCkBAIC0xNDQ2LDExICsxNDU5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YShDb21wbGV0aW9uSGFu
ZGxlcjwKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCktPnN1c3Bl
bmQoW10oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZVN0b3JlIDogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFsbFN0b3JlcygpKQotICAgICAgICAg
ICAgZGF0YWJhc2VTdG9yZS0+aW50ZXJydXB0KCk7Ci0gICAgfSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpLT5zdXNwZW5kKFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXMsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlc3VtZSgpCkBAIC0xNDcxLDE5MSArMTQ4MCw2IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhj
b25zdCBSZWdpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBh
dHRyaWJ1dGlvblR5cGUpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAg
IGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwb3N0VGFzayhbdGhp
cywgYXR0cmlidXRpb24gPSBXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRpb25UeXBlXSgp
IG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5pbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRpb25UeXBlKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtBbGxVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgcG9zdFRhc2soW3RoaXNdKCkgewotICAgICAgICBpZiAo
IW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc3Rh
dGlzdGljc1N0b3JlLT5tYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
c0V4cGlyZWRGb3JUZXN0aW5nKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5h
dGlvblNpdGUsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
JiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBwb3N0VGFzayhbdGhpcywgc291cmNlU2l0ZSA9IHNvdXJjZVNpdGUuaXNvbGF0ZWRDb3B5KCks
IGRlc3RpbmF0aW9uU2l0ZSA9IGRlc3RpbmF0aW9uU2l0ZS5pc29sYXRlZENvcHkoKSwgYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSA9IFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIGVwaGVt
ZXJhbE1lYXN1cmVtZW50ID0gV1RGTW92ZShlcGhlbWVyYWxNZWFzdXJlbWVudCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHko
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gSW5zZXJ0IGVwaGVtZXJhbCBtZWFzdXJlbWVudCByaWdodCBiZWZvcmUgYXR0cmlidXRpb24u
Ci0gICAgICAgIGlmIChlcGhlbWVyYWxNZWFzdXJlbWVudCkgewotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZXBoZW1lcmFsTWVhc3VyZW1lbnQtPmlzRXBoZW1lcmFsKCkpOwotICAgICAgICAg
ICAgbV9zdGF0aXN0aWNzU3RvcmUtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1v
dmUoKmVwaGVtZXJhbE1lYXN1cmVtZW50KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIHNlY29u
ZHMgPSBtX3N0YXRpc3RpY3NTdG9yZS0+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
c291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpKTsKLSAgICAgICAgcG9zdFRhc2tSZXBseShbc2Vjb25kcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHNlY29uZHMpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFz
ayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewotICAgICAgICAg
ICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBhdXRvIGNvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IG1fc3RhdGlzdGljc1N0b3JlLT5h
bGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLSAgICAgICAgcG9zdFRhc2tS
ZXBseShbY29udmVydGVkQXR0cmlidXRpb25zID0gV1RGTW92ZShjb252ZXJ0ZWRBdHRyaWJ1dGlv
bnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb252ZXJ0ZWRB
dHRyaWJ1dGlvbnMpKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGlzRXBoZW1lcmFsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHBvc3RUYXNrKFt0aGlzXSgpIHsKLSAgICAgICAgaWYg
KCFtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3N0
YXRpc3RpY3NTdG9yZS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om51bGxvcHQp
OwotICAgIH0pOwotfQotICAgIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcG9z
dFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChk
b21haW4pOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQotewotICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgcG9zdFRhc2soW3RoaXNdKCkgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGlj
c1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3Jl
LT5jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotICAgIH0pOwotfQotCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0Vw
aGVtZXJhbCgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCJcbk5vIHN0b3JlZCBQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50IGRhdGEuXG4iX3MpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3Rv
cmUpIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3N0YXRpc3RpY3NTdG9yZS0+
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpOwotICAgICAgICBwb3N0VGFza1JlcGx5
KFtyZXN1bHQgPSByZXN1bHQuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXN1bHQpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb25Ub0NsZWFyLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9y
dEVuZHBvaW50KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAo
aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcG9zdFRhc2soW3RoaXMsIGF0
dHJpYnV0aW9uVG9DbGVhciA9IFdURk1vdmUoYXR0cmlidXRpb25Ub0NsZWFyKSwgYXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludF0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NT
dG9yZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+
Y2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShhdHRyaWJ1dGlvblRvQ2xlYXIpLCBhdHRyaWJ1
dGlvblJlcG9ydEVuZHBvaW50KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNF
eHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChpc0Vw
aGVtZXJhbCgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKG1fc3RhdGlz
dGljc1N0b3JlKQotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPm1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOwotCi0gICAgICAg
IHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0pOwotfQot
CiBTdHJpbmcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtYWtl
U3RyaW5nKCJIYXMgYmVlbiBncmFudGVkIHN0b3JhZ2UgYWNjZXNzIHVuZGVyICIsIGZpcnN0UGFy
dHlEb21haW4uc3RyaW5nKCksICI6ICIsIHN0b3JhZ2VBY2Nlc3NHcmFudGVkID8gJzEnIDogJzAn
LCAiOyBIYXMgYmVlbiBzZWVuIHVuZGVyICIsIGZpcnN0UGFydHlEb21haW4uc3RyaW5nKCksICIg
aW4gdGhlIGxhc3QgMjQgaG91cnM6ICIsIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpIC0gdGltZUxhc3RVcGRhdGVkIDwgMjRfaCA/ICcxJyA6ICcwJyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggYjM0OGUzMTZiMDgxMjE4NjEx
MjFkYjU0NzYzZDFiOTg2OTNhNWI1MS4uMWI5MjMyZWI3ZjVkZWVjNzIyMzg5MjViYmY0MzNjNDk2
NDRmNjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVR5cGUuaCIKQEAgLTEwOCw3ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgU3RvcmFnZUFj
Y2Vzc1Njb3BlID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Njb3BlOwogICAgIHVzaW5nIFJlcXVl
c3RTdG9yYWdlQWNjZXNzUmVzdWx0ID0gV2ViQ29yZTo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1
bHQ7CiAKLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3Jl
YXRlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpJc0VwaGVtZXJhbCk7CisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OklzRXBoZW1lcmFsKTsKIAogICAgIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoKTsKIApAQCAtMjM5LDIwICsyNDAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VwaGVt
ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFcGhlbWVyYWwgPT0gV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllczsgfTsKICAgICB2b2lkIGluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQg
bnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9v
bCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgLy8gUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudC4KLSAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlKTsKLSAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKLSAgICB2b2lkIGF0dHJpYnV0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYpOwotICAgIHZvaWQgYWxsQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJik7Ci0gICAgdm9pZCBj
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgdm9pZCBjbGVhclByaXZhdGVDbGlj
a01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKTsKLSAgICB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
KCk7Ci0gICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7Ci0gICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7Ci0gICAgdm9pZCBtYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLQorICAgIFBDTTo6U3RvcmUmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmUoKSB7IHJldHVybiBtX3BjbVN0b3JlLmdldCgpOyB9CiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lv
biYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsKTsKKyAgICBleHBsaWNpdCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjpJc0VwaGVtZXJhbCk7CiAKICAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0VGFza1JlcGx5KFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmKTsKQEAgLTI4Nyw2ICsyNzcsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9o
YXNTY2hlZHVsZWRQcm9jZXNzU3RhdHMgeyBmYWxzZSB9OwogCiAgICAgYm9vbCBtX2ZpcnN0TmV0
d29ya1Byb2Nlc3NDcmVhdGVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICBSZWY8UENNOjpTdG9yZT4g
bV9wY21TdG9yZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTUyMTU3NTkzMzgwZDZiMGE1MDNmZjI0YWM3NmQ1NzE2MGVjZjlkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKQEAg
LTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitEYXRhYmFzZVV0
aWxpdGllczo6RGF0YWJhc2VVdGlsaXRpZXMoU3RyaW5nJiYgc3RvcmFnZUZpbGVQYXRoKQorICAg
IDogbV9zdG9yYWdlRmlsZVBhdGgoV1RGTW92ZShzdG9yYWdlRmlsZVBhdGgpKQorICAgICwgbV90
cmFuc2FjdGlvbihtX2RhdGFiYXNlKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworfQorCitEYXRhYmFzZVV0aWxpdGllczo6fkRhdGFiYXNlVXRpbGl0aWVzKCkKK3sKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKK30KKworV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
QXV0b1Jlc2V0U2NvcGUgRGF0YWJhc2VVdGlsaXRpZXM6OnNjb3BlZFN0YXRlbWVudChzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBBU0NJSUxpdGVy
YWwgcXVlcnksIEFTQ0lJTGl0ZXJhbCBsb2dTdHJpbmcpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisgICAgaWYgKCFzdGF0ZW1lbnQpIHsKKyAgICAgICAgYXV0byBz
dGF0ZW1lbnRPckVycm9yID0gbV9kYXRhYmFzZS5wcmVwYXJlSGVhcFN0YXRlbWVudChxdWVyeSk7
CisgICAgICAgIGlmICghc3RhdGVtZW50T3JFcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlVXRpbGl0aWVz
OjolcyBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJ
Q19MT0dfU1RSSU5HLCB0aGlzLCBsb2dTdHJpbmcuY2hhcmFjdGVycygpLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHsgfTsK
KyAgICAgICAgfQorICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRPckVycm9yLnZhbHVlKCku
bW92ZVRvVW5pcXVlUHRyKCk7CisgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsK
KyAgICB9CisgICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
IHsgc3RhdGVtZW50LmdldCgpIH07Cit9CisKK1Njb3BlRXhpdDxGdW5jdGlvbjx2b2lkKCk+PiBE
YXRhYmFzZVV0aWxpdGllczo6YmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCkKK3sKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAobV90cmFuc2FjdGlvbi5pblByb2dy
ZXNzKCkpCisgICAgICAgIHJldHVybiBtYWtlU2NvcGVFeGl0KEZ1bmN0aW9uPHZvaWQoKT4geyBb
XSB7IH0gfSk7CisKKyAgICBtX3RyYW5zYWN0aW9uLmJlZ2luKCk7CisgICAgcmV0dXJuIG1ha2VT
Y29wZUV4aXQoRnVuY3Rpb248dm9pZCgpPiB7IFt0aGlzXSB7CisgICAgICAgIG1fdHJhbnNhY3Rp
b24uY29tbWl0KCk7CisgICAgfSB9KTsKK30KKworYXV0byBEYXRhYmFzZVV0aWxpdGllczo6b3Bl
bkRhdGFiYXNlQW5kQ3JlYXRlU2NoZW1hSWZOZWNlc3NhcnkoKSAtPiBDcmVhdGVkTmV3RmlsZQor
eworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIENyZWF0ZWROZXdGaWxlIGNy
ZWF0ZWROZXdGaWxlID0gQ3JlYXRlZE5ld0ZpbGU6Ok5vOworICAgIGlmICghRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhtX3N0b3JhZ2VGaWxlUGF0aCkpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChtX3N0b3JhZ2VGaWxl
UGF0aCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6Om9wZW4gZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiBGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNf
TE9HX1NUUklORywgdGhpcywgbV9zdG9yYWdlRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVk
TmV3RmlsZTsKKyAgICAgICAgfQorICAgICAgICBjcmVhdGVkTmV3RmlsZSA9IENyZWF0ZWROZXdG
aWxlOjpZZXM7CisgICAgfQorCisgICAgaWYgKCFtX2RhdGFiYXNlLm9wZW4obV9zdG9yYWdlRmls
ZVBhdGgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCAiJXAgLSBEYXRhYmFzZVV0aWxpdGllczo6b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6
ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VGaWxlUGF0aC51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVkTmV3RmlsZTsKKyAgICB9CisgICAgCisgICAgLy8gU2luY2Ugd2UgYXJlIHVz
aW5nIGEgd29ya2VyUXVldWUsIHRoZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBtYXkgYmUg
Y2FsbGVkIGJ5IGRpZmZlcmVudCB0aHJlYWRzLgorICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVh
ZGluZ0NoZWNrcygpOworCisgICAgYXV0byBzZXRCdXN5VGltZW91dCA9IG1fZGF0YWJhc2UucHJl
cGFyZVN0YXRlbWVudCgiUFJBR01BIGJ1c3lfdGltZW91dCA9IDUwMDAiX3MpOworICAgIGlmICgh
c2V0QnVzeVRpbWVvdXQgfHwgc2V0QnVzeVRpbWVvdXQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAg
LSBEYXRhYmFzZVV0aWxpdGllczo6c2V0QnVzeVRpbWVvdXQgZmFpbGVkLCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAoY3JlYXRl
ZE5ld0ZpbGUgPT0gQ3JlYXRlZE5ld0ZpbGU6OlllcykgeworICAgICAgICBpZiAoIWNyZWF0ZVNj
aGVtYSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6OmNyZWF0ZVNjaGVtYSBmYWlsZWQsIGVy
cm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBV
QkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3Jh
Z2VGaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjcmVhdGVkTmV3RmlsZTsKK30KKwor
dm9pZCBEYXRhYmFzZVV0aWxpdGllczo6ZW5hYmxlRm9yZWlnbktleXMoKQoreworICAgIGF1dG8g
ZW5hYmxlRm9yZWlnbktleXMgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBm
b3JlaWduX2tleXMgPSBPTiJfcyk7CisgICAgaWYgKCFlbmFibGVGb3JlaWduS2V5cyB8fCBlbmFi
bGVGb3JlaWduS2V5cy0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZVV0aWxpdGll
czo6ZW5hYmxlRm9yZWlnbktleXMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJhc2VVdGlsaXRpZXM6OmNs
b3NlKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBkZXN0cm95U3Rh
dGVtZW50cygpOworICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICBtX2RhdGFi
YXNlLmNsb3NlKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VVdGlsaXRpZXM6OmludGVycnVwdCgpCit7
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgaWYgKG1fZGF0YWJhc2UuaXNP
cGVuKCkpCisgICAgICAgIG1fZGF0YWJhc2UuaW50ZXJydXB0KCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRh
YmFzZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0
aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiOTVjMGNjZjBkOTY0NTNiZTVmMDAwODE0MTE5N2IxZTJj
N2MxN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGU7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEYXRhYmFzZVV0aWxpdGllcyB7Citwcm90
ZWN0ZWQ6CisgICAgRGF0YWJhc2VVdGlsaXRpZXMoU3RyaW5nJiYgc3RvcmFnZUZpbGVQYXRoKTsK
KyAgICB+RGF0YWJhc2VVdGlsaXRpZXMoKTsKKworICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dEF1dG9SZXNldFNjb3BlIHNjb3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiYsIEFTQ0lJTGl0ZXJhbCBxdWVyeSwgQVNDSUlMaXRlcmFsIGxvZ1N0
cmluZykgY29uc3Q7CisgICAgU2NvcGVFeGl0PEZ1bmN0aW9uPHZvaWQoKT4+IFdBUk5fVU5VU0VE
X1JFVFVSTiBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICBlbnVtIGNsYXNzIENy
ZWF0ZWROZXdGaWxlIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBDcmVhdGVkTmV3RmlsZSBvcGVu
RGF0YWJhc2VBbmRDcmVhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgZW5hYmxlRm9y
ZWlnbktleXMoKTsKKyAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBpbnRlcnJ1cHQoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlU2NoZW1hKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXN0
cm95U3RhdGVtZW50cygpID0gMDsKKworICAgIGNvbnN0IFN0cmluZyBtX3N0b3JhZ2VGaWxlUGF0
aDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7CisgICAg
bXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiBtX3RyYW5zYWN0aW9uOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGQ1YWMwZTM1ZjliMjM1Njk3MjEyYmNkMTM2MWQ2NmM4
NDM5NjZlZTMuLjc0NmJkYzZlZmE5ODkyZDY1OGE4YThiMWY3ZWMwYjZkM2UzYTZjNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00
OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNr
LmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIgogI2luY2x1ZGUg
IlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgpAQCAtMTYxNCwx
MSArMTYxNSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgICAgICBuZXR3b3JrU2Vz
c2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKG1vZGlmaWVkU2luY2UsIHN0ZDo6bnVsbG9w
dCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpICYmICFzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKLSAgICAgICAgY2xlYXJEaXNrQ2FjaGUobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFz
a3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcildIHsgfSk7CisgICAgICAgIGNs
ZWFyRGlza0NhY2hlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgbmV0d29ya1Nl
c3Npb24tPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICAgICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKICAgICB9CiAKICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNF
KQpAQCAtMTY3NywxNCArMTY3OCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgIH0K
ICNlbmRpZgogCisgICAgYXV0byBjbGVhclRhc2tzSGFuZGxlciA9IFdURjo6Q2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2lu
RGF0YSA6IG9yaWdpbkRhdGFzKQotICAgICAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbkRhdGEuaG9zdCkpOworICAgICAg
ICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9y
UmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21I
b3N0KG9yaWdpbkRhdGEuaG9zdCksIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICAgICAg
fQogICAgIH0KLSAgICAKLSAgICBhdXRvIGNsZWFyVGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFj
a0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkg
ewogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKQEAgLTIyNDUs
NiArMjI0Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBp
c1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1
c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICNlbmRpZgorICAgIFBDTTo6U3RvcmU6
OnByZXBhcmVGb3JQcm9jZXNzVG9TdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAK
ICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewog
ICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwg
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKQEAgLTIyODcsNyArMjI4OSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSgpOwogI2VuZGlm
Ci0gICAgCisgICAgUENNOjpTdG9yZTo6cHJvY2Vzc0RpZFJlc3VtZSgpOworCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9zd1NlcnZlcnMudmFs
dWVzKCkpCiAgICAgICAgIHNlcnZlci0+ZW5kU3VzcGVuc2lvbigpOwpAQCAtMjU2OSw5ICsyNTcy
LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBzZXNzaW9uLT5j
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgCi0gICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgc2Vzc2lvbi0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9v
bCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDI5NmQ0NTEwMmJkMThkM2ZlZmRjZjMwMTU0MzdmZDhjM2ZjMGUyOGYu
LjIyOGQzOWQ5ZTQ2ZmU2MzA2NDNjMDJhMWZkYTJkYWZmNWRhYzI0ZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTg3Nyw5ICs4NzcsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgICsrbV9yZWRp
cmVjdENvdW50OwogICAgIG1fcmVkaXJlY3RSZXNwb25zZSA9IHJlZGlyZWN0UmVzcG9uc2U7CiAK
LSAgICBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgewotICAgICAg
ICBpZiAoYXV0byByZXN1bHQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1
dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKKyAgICAgICAgaWYgKGF1dG8gcmVz
dWx0ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25S
ZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpCiAgICAgICAgICAgICBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSByZXN1bHQudmFsdWUoKTsKICAgICAg
ICAgZWxzZSBpZiAoIXJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCByZXN1bHQuZXJyb3IoKSk7CkBAIC05NDAsNyArOTQwLDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHJl
ZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UcmlnZ2VyRGF0YSkpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGlu
dWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGE+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25Ucmln
Z2VyRGF0YSkKIHsKICAgICByZWRpcmVjdFJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQocmVxdWVz
dC5pc0FwcEluaXRpYXRlZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBiZGFjZWUxMzJmOTBlYzJkZTkzN2EwOTJkNzI2ZTVm
YWEwNDg4NmM3Li40ZTBjNTQ0MjBhN2Y2OWQ4NzYzZjk1NTc4NGU0MjQ5MzE3ZWUxMzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAt
ODQsNiArODQsNyBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogICAgIDogbV9zZXNzaW9uSUQo
cGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9j
ZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgLCBtX3ByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVj
dG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeSkKICAgICAsIG1fc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPyBT
aG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpObykK
ICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURlYnVnTW9kZSA/IEVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAtMTE5LDYgKzEyMCw4IEBAIE5ldHdvcmtTZXNz
aW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0
IE5ldHdvcmtTZXNzCiAKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBpZiAo
IXBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCiAgICAgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRl
RW5hYmxlZCA9IHBhcmFtZXRlcnMuc3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkOwpAQCAtMTI3
LDcgKzEzMCw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5lbmFibGVkKTsKICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1
ZTxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KCp0aGlzLCBuZXR3b3JrUHJvY2Vzcywg
cGFyYW1ldGVycy5zZXNzaW9uSUQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoYXV0
byYmIGxvYWRQYXJhbWV0ZXJzLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNl
bGxhdGlvbiksIHsgfSwgeyB9KTsKIAogICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5l
dHdvcmtMb2FkZXI6OnN0YXJ0KCp3ZWFrVGhpcywgV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTE4MSw3ICsxODQsNyBAQCB2
b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29s
IGVuYWJsZSkKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsICht
X3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhl
bWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwor
ICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y3JlYXRlKCp0aGlzLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVM
b2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJh
bCgpID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNl
TG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwogICAgIGlmICghbV9zZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSkKICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wb3B1bGF0
ZU1lbW9yeVN0b3JlRnJvbURpc2soW10geyB9KTsKIApAQCAtMTk4LDcgKzIwMSw3IEBAIHZvaWQg
TmV0d29ya1Nlc3Npb246OnJlY3JlYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljU3RvcmUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpCiAgICAgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3Vs
ZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5p
c0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOworICAgICAgICBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNy
ZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CiAgICAgICAgIGZvcndhcmRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0dGluZ3MoKTsKICAgICAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wb3B1bGF0ZU1lbW9y
eVN0b3JlRnJvbURpc2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMzIwLDE3ICsz
MjMsMTcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6aGFuZGxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRDb252ZXJzaW9uKFByaXZhdGVDbGlja01lYXN1cmUKIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6
ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgp
LnRvU3RyaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpLnRvU3RyaW5nRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Npb246OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5jbGVhcigpOworICAgIHByaXZhdGVDbGlja01lYXN1cmVt
ZW50KCkuY2xlYXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdv
cmtTZXNzaW9uOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21h
aW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pCit2b2lkIE5ldHdvcmtTZXNz
aW9uOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgp
LmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShkb21haW4pKTsKKyAgICBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCgpLmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShkb21h
aW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Np
b246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9v
bCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aAppbmRleCAzZDU4ODc3MjlkZTEzNDM3MGUxOWJhODRjOWQzNDc1NGEwZTI5YWI2Li5hNmRjZDJh
M2ViY2YxNmZlYWVmNTM4NjkyMDI5ZTBjOGM0NjEyMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMjYsOCArMTI2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc3RvcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYmKTsKICAgICB2b2lkIGhhbmRsZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50Q29udmVyc2lvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKICAgICB2b2lkIGR1bXBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwotICAgIHZv
aWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotICAgIHZvaWQgY2xlYXJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYpOworICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgbWFy
a0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJik7CkBAIC0xOTUsNiArMTk1
LDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2Vz
czsKICAgICBXZWFrSGFzaFNldDxOZXR3b3JrRGF0YVRhc2s+IG1fZGF0YVRhc2tTZXQ7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBTdHJpbmcgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgU2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyBT
aG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5Nzg4NDA0Mjk2Yjg3ZjAxMjU0ZGVjY2Q3ZjlhOTA4OWEyN2MyZWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC0wLDAgKzEsNzA0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIgorI2luY2x1ZGUgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3Rh
dGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29w
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitjb25zdGV4cHIgYXV0byBzZXRVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5ID0gIlVQREFURSBVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgdGltZU9mQWRDbGljayA9IC0xLjAi
X3M7Citjb25zdGV4cHIgYXV0byBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgKHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQsICIKKyAgICAic291cmNlSUQsIHRpbWVPZkFkQ2xpY2ssIHRva2VuLCBzaWduYXR1cmUsIGtl
eUlEKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8pIl9zOworY29uc3RleHByIGF1dG8gaW5z
ZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiSU5TRVJUIE9SIFJF
UExBQ0UgSU5UTyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKHNvdXJjZVNpdGVE
b21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsICIKKyAgICAic291cmNlSUQsIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCB0aW1lT2ZBZENsaWNrLCBlYXJsaWVzdFRpbWVU
b1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvRGVzdGluYXRpb24pIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPyki
X3M7Citjb25zdGV4cHIgYXV0byBmaW5kVW5hdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICogRlJP
TSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9t
YWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIg
YXV0byBmaW5kQXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIHJlbW92ZVVuYXR0cmli
dXRlZFF1ZXJ5ID0gIkRFTEVURSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFF1ZXJ5ID0gIlNFTEVDVCAqLCBNSU4oZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2Us
IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24pIGFzIG1pblZhbCAiCisgICAgIkZST00g
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvU291cmNlIElTIE5PVCBOVUxMIEFORCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9u
IElTIE5PVCBOVUxMICIKKyAgICAiVU5JT04gQUxMIFNFTEVDVCAqLCBlYXJsaWVzdFRpbWVUb1Nl
bmRUb1NvdXJjZSBhcyBtaW5WYWwgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgV0hFUkUgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBJUyBOVUxMICIKKyAgICAi
VU5JT04gQUxMIFNFTEVDVCAqLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIGFzIG1p
blZhbCBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBlYXJsaWVz
dFRpbWVUb1NlbmRUb1NvdXJjZSBJUyBOVUxMIE9SREVSIEJZIG1pblZhbCJfczsKK2NvbnN0ZXhw
ciBhdXRvIGFsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25z
UXVlcnkgPSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCJfczsKK2NvbnN0ZXhwciBhdXRvIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
UXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
V0hFUkUgPyA+IHRpbWVPZkFkQ2xpY2siX3M7Citjb25zdGV4cHIgYXV0byBtYXJrUmVwb3J0QXNT
ZW50VG9Tb3VyY2VRdWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSA9IG51bGwgV0hFUkUgc291cmNlU2l0
ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/Il9zOworY29uc3Rl
eHByIGF1dG8gbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb25RdWVyeSA9ICJVUERBVEUgQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uID0gbnVsbCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBlYXJsaWVzdFRpbWVzVG9T
ZW5kUXVlcnkgPSAiU0VMRUNUIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBlYXJsaWVzdFRp
bWVUb1NlbmRUb0Rlc3RpbmF0aW9uIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEID0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5ID0gIlNF
TEVDVCBkb21haW5JRCBGUk9NIFBDTU9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURv
bWFpbiA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBkb21haW5TdHJpbmdGcm9tRG9tYWluSURRdWVy
eSA9ICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBQQ01PYnNlcnZlZERvbWFpbnMgV0hF
UkUgZG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gY3JlYXRlVW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50ICgiCisgICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBO
VUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJ
TlRFR0VSIE5PVCBOVUxMLCAiCisgICAgInRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwgdG9r
ZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIEZPUkVJR04gS0VZKHNvdXJjZVNp
dGVEb21haW5JRCkgIgorICAgICJSRUZFUkVOQ0VTIFBDTU9ic2VydmVkRG9tYWlucyhkb21haW5J
RCkgT04gREVMRVRFIENBU0NBREUsIEZPUkVJR04gS0VZKGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
KSBSRUZFUkVOQ0VTICIKKyAgICAiUENNT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxF
VEUgQ0FTQ0FERSkiX3M7Citjb25zdGV4cHIgYXV0byBjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCAoIgorICAgICJzb3VyY2VTaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVz
dGluYXRpb25TaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBO
T1QgTlVMTCwgIgorICAgICJhdHRyaWJ1dGlvblRyaWdnZXJEYXRhIElOVEVHRVIgTk9UIE5VTEws
IHByaW9yaXR5IElOVEVHRVIgTk9UIE5VTEwsIHRpbWVPZkFkQ2xpY2sgUkVBTCBOT1QgTlVMTCwg
IgorICAgICJlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBSRUFMLCB0b2tlbiBURVhULCBzaWdu
YXR1cmUgVEVYVCwga2V5SUQgVEVYVCwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBS
RUFMLCAiCisgICAgIkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyBQ
Q01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JFSUdOIEtF
WShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCisgICAgIlBDTU9ic2VydmVk
RG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOworY29uc3RleHByIGF1dG8g
Y3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJD
UkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEIG9u
IFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklE
LCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlVW5p
cXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFV
RSBJTkRFWCBJRiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudF9z
b3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQgb24gQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNp
dGVEb21haW5JRCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlUENNT2JzZXJ2ZWREb21haW4g
PSAiQ1JFQVRFIFRBQkxFIFBDTU9ic2VydmVkRG9tYWlucyAoIgorICAgICJkb21haW5JRCBJTlRF
R0VSIFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBP
TiBDT05GTElDVCBGQUlMKSJfczsKK2NvbnN0ZXhwciBhdXRvIGluc2VydE9ic2VydmVkRG9tYWlu
UXVlcnkgPSAiSU5TRVJUIElOVE8gUENNT2JzZXJ2ZWREb21haW5zIChyZWdpc3RyYWJsZURvbWFp
bikgVkFMVUVTICg/KSJfczsKK2NvbnN0ZXhwciBhdXRvIGNsZWFyQWxsUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRRdWVyeSA9ICJERUxFVEUgRlJPTSBQQ01PYnNlcnZlZERvbWFpbnMgV0hFUkUgZG9t
YWluSUQgTElLRSA/Il9zOworCitzdGF0aWMgSGFzaFNldDxEYXRhYmFzZSo+JiBhbGxEYXRhYmFz
ZXMoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PERhdGFiYXNlKj4+IHNldDsKKyAgICByZXR1cm4gc2V0OworfQor
CitEYXRhYmFzZTo6RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KQorICAg
IDogRGF0YWJhc2VVdGlsaXRpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHN0b3JhZ2VEaXJlY3RvcnksICJwY20uZGIiX3MpKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIG9wZW5EYXRhYmFzZUFuZENyZWF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7
CisgICAgZW5hYmxlRm9yZWlnbktleXMoKTsKKyAgICBhbGxEYXRhYmFzZXMoKS5hZGQodGhpcyk7
Cit9CisKK0RhdGFiYXNlOjp+RGF0YWJhc2UoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGNsb3NlKCk7CisgICAgYWxsRGF0YWJhc2VzKCkucmVtb3ZlKHRoaXMpOwor
fQorCit2b2lkIERhdGFiYXNlOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXMoKQoreworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGZvciAoYXV0byBkYXRhYmFzZSA6IGFsbERhdGFi
YXNlcygpKQorICAgICAgICBkYXRhYmFzZS0+aW50ZXJydXB0KCk7Cit9CisKK2Jvb2wgRGF0YWJh
c2U6OmNyZWF0ZVNjaGVtYSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlUENNT2JzZXJ2ZWREb21h
aW4pKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBQQ01PYnNlcnZlZERv
bWFpbnMgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3Io
KSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQg
bm90IGNyZWF0ZSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCB0YWJsZSBpbiBk
YXRhYmFzZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICgh
bV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwg
bV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNv
bW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCkKKyAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5k
ZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExPR19FUlJP
UigiRXJyb3IgY3JlYXRpbmcgaW5kZXhlcyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0
aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5
cGUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvIHRyYW5z
YWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8g
c291cmNlSUQgPSBlbnN1cmVEb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0
cmFibGVEb21haW4pOworICAgIGF1dG8gYXR0cmlidXRpb25EZXN0aW5hdGlvbklEID0gZW5zdXJl
RG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4p
OworICAgIGlmICghc291cmNlSUQgfHwgIWF0dHJpYnV0aW9uRGVzdGluYXRpb25JRCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byYgc291cmNlVW5saW5rYWJsZVRva2VuID0gYXR0cmlidXRp
b24uc291cmNlVW5saW5rYWJsZVRva2VuKCk7CisgICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgeworICAg
ICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkudmFs
dWUoKS5kYXRhIDogLTE7CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBhdHRyaWJ1dGlvbi5hdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRh
KCkudmFsdWUoKS5wcmlvcml0eSA6IC0xOworICAgICAgICBhdXRvIHNvdXJjZUVhcmxpZXN0VGlt
ZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9T
ZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5zb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQu
dmFsdWUoKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgOiAtMTsKKyAgICAgICAgYXV0byBk
ZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCku
ZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPyBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgp
LmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2go
KS52YWx1ZSgpIDogLTE7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGluc2VydGlu
ZyBhbiBhdHRyaWJ1dGVkIHByaXZhdGUgY2xpY2sgbWVhc3VyZW1lbnQgdmFsdWUgaW50byB0aGUg
ZGF0YWJhc2Ugd2l0aG91dCB2YWxpZCByZXBvcnQgdGltZXMuCisgICAgICAgIEFTU0VSVChzb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmQgIT0gLTEgJiYgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1Nl
bmQgIT0gLTEpOworCisgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50KGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5KTsK
KyAgICAgICAgaWYgKCFzdGF0ZW1lbnQKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZElu
dCgxLCAqc291cmNlSUQpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5i
aW5kSW50KDIsICphdHRyaWJ1dGlvbkRlc3RpbmF0aW9uSUQpICE9IFNRTElURV9PSworICAgICAg
ICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDMsIGF0dHJpYnV0aW9uLnNvdXJjZUlEKCkuaWQp
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDQsIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50
LT5iaW5kSW50KDUsIHByaW9yaXR5KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRl
bWVudC0+YmluZERvdWJsZSg2LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVu
dC0+YmluZERvdWJsZSg3LCBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpICE9IFNRTElURV9PSwor
ICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg4LCBzb3VyY2VVbmxpbmthYmxlVG9r
ZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmco
KSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDksIHNv
dXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+c2lnbmF0dXJlQmFz
ZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0
ZW1lbnQtPmJpbmRUZXh0KDEwLCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmth
YmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9uRWFybGll
c3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+c3Rl
cCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01l
YXN1cmVtZW50IGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChhdHRyaWJ1dGlvblR5cGUg
PT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7
CisKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChpbnNl
cnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5KTsKKyAgICBpZiAoIXN0
YXRlbWVudAorICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZUlEKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50KDIsICphdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQo
MywgYXR0cmlidXRpb24uc291cmNlSUQoKS5pZCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0
YXRlbWVudC0+YmluZERvdWJsZSg0LCBhdHRyaWJ1dGlvbi50aW1lT2ZBZENsaWNrKCkuc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50
LT5iaW5kVGV4dCg1LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9r
ZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IHN0YXRlbWVudC0+YmluZFRleHQoNiwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNl
VW5saW5rYWJsZVRva2VuLT5zaWduYXR1cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCg3LCBzb3VyY2VVbmxpbmth
YmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlT
dHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5z
ZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIERhdGFi
YXNlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRG
b3JUZXN0aW5nKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRv
IHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3NldFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50LCBzZXRVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5LCAibWFya0FsbFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZyJfcyk7CisKKyAg
ICBpZiAoIXNjb3BlZFN0YXRlbWVudCB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgIiVwIC0gRGF0YWJhc2U6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8RGF0
YWJhc2U6OlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25h
bDxEYXRhYmFzZTo6QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gRGF0YWJhc2U6
OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlv
blNpdGUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBzb3Vy
Y2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChzb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoZGVzdGluYXRpb25T
aXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAh
ZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRvIGZpbmRVbmF0dHJpYnV0ZWRT
Y29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9maW5kVW5hdHRyaWJ1dGVk
U3RhdGVtZW50LCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnksICJmaW5kUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQiX3MpOworICAgIGlmICghZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAorICAg
ICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3Vy
Y2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBmaW5kVW5hdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0g
U1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRV
bmF0dHJpYnV0ZWRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorCisgICAgYXV0byBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9
IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2ZpbmRBdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kQXR0
cmlidXRlZFF1ZXJ5LCAiZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKyAgICBpZiAo
IWZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IGZpbmRBdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgy
LCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmZp
bmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kQXR0cmlidXRlZFF1ZXJ5LCBlcnJvciBtZXNz
YWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9w
dGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiB1bmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICBpZiAoZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIHVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRh
YmFzZShmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKKworICAgIHN0ZDo6b3B0
aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgaWYgKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50ID0gYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShmaW5k
QXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBhdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpOworfQorCitzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4sIERlYnVnSW5m
bz4gRGF0YWJhc2U6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25z
dCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBj
bGVhciBleHBpcmVkIGNsaWNrcyBmcm9tIHRoZSBkYXRhYmFzZSBiZWZvcmUgc2NoZWR1bGluZyBh
biBhdHRyaWJ1dGlvbi4KKyAgICBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgp
OworICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCBhbiBpbnZhbGlk
IGF0dHJpYnV0aW9uLiIpOworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHt7eyBNZXNz
YWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBhbiBpbnZh
bGlkIGF0dHJpYnV0aW9uLiJfcyB9fX0gfTsKKyAgICB9CisKKyAgICBEZWJ1Z0luZm8gZGVidWdJ
bmZvOworICAgIGF1dG8gZGF0YSA9IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGF0YTsKKyAgICBh
dXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5wcmlvcml0eTsKKyAgICBSRUxF
QVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IGFuIGF0dHJpYnV0aW9u
IHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTog
JXtwdWJsaWN9dS4iLCBkYXRhLCBwcmlvcml0eSk7CisgICAgZGVidWdJbmZvLm1lc3NhZ2VzLmFw
cGVuZCh7IE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdIEdvdCBhbiBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0
YTogJyJfcywgZGF0YSwgIicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicuIl9zKSB9
KTsKKworICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRp
bFNlbmREYXRhIHNlY29uZHNVbnRpbFNlbmQgeyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9
OworCisgICAgYXV0byBhdHRyaWJ1dGlvbiA9IGZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChz
b3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUpOworICAgIGF1dG8mIHByZXZpb3VzbHlVbmF0dHJp
YnV0ZWQgPSBhdHRyaWJ1dGlvbi5maXJzdDsKKyAgICBhdXRvJiBwcmV2aW91c2x5QXR0cmlidXRl
ZCA9IGF0dHJpYnV0aW9uLnNlY29uZDsKKworICAgIGlmIChwcmV2aW91c2x5VW5hdHRyaWJ1dGVk
KSB7CisgICAgICAgIC8vIEFsd2F5cyBjb252ZXJ0IHRoZSBwZW5kaW5nIGF0dHJpYnV0aW9uIGFu
ZCByZW1vdmUgaXQgZnJvbSB0aGUgdW5hdHRyaWJ1dGVkIG1hcC4KKyAgICAgICAgcmVtb3ZlVW5h
dHRyaWJ1dGVkKCpwcmV2aW91c2x5VW5hdHRyaWJ1dGVkKTsKKyAgICAgICAgc2Vjb25kc1VudGls
U2VuZCA9IHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJs
aWVzdFRpbWVUb1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7CisKKyAgICAg
ICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgdmFsaWQgc2Vjb25kc1VudGlsU2VuZCB2YWx1
ZSBmb3IgYSBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkIHZhbHVlIGJlY2F1c2UgdGhlcmUgY2FuIGJl
IG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uIHdpdGggYSBoaWdoZXIgcHJpb3JpdHkuCisgICAgICAg
IGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkg
eworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
eyBzdGQ6Om51bGxvcHQsIFdURk1vdmUoZGVidWdJbmZvKSB9OworICAgICAgICB9CisKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkNvbnZlcnRlZCBh
IHN0b3JlZCBhZCBjbGljayB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJXtwdWJsaWN9
dSBhbmQgcHJpb3JpdHk6ICV7cHVibGljfXUuIiwgZGF0YSwgcHJpb3JpdHkpOworICAgICAgICBk
ZWJ1Z0luZm8ubWVzc2FnZXMuYXBwZW5kKHsgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5n
KCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVydGVkIGEgc3RvcmVkIGFkIGNsaWNr
IHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3Jp
dHk6ICciX3MsIHByaW9yaXR5LCAiJy4iX3MpIH0pOworCisgICAgICAgIC8vIElmIHRoZXJlIGlz
IG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uLCBvciB0aGUgbmV3IGF0dHJpYnV0aW9uIGhhcyBoaWdo
ZXIgcHJpb3JpdHksIGluc2VydC91cGRhdGUgdGhlIGRhdGFiYXNlLgorICAgICAgICBpZiAoIXBy
ZXZpb3VzbHlBdHRyaWJ1dGVkIHx8IHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQudmFsdWUoKS5oYXNI
aWdoZXJQcmlvcml0eVRoYW4oKnByZXZpb3VzbHlBdHRyaWJ1dGVkKSkgeworICAgICAgICAgICAg
aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgqcHJldmlvdXNseVVuYXR0cmli
dXRlZCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVk
KTsKKworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIlJlcGxhY2VkIGEgcHJldmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBv
bmUgd2l0aCBhdHRyaWJ1dGlvbiBkYXRhOiAle3B1YmxpY311IGFuZCBwcmlvcml0eTogJXtwdWJs
aWN9dSBiZWNhdXNlIGl0IGhhZCBoaWdoZXIgcHJpb3JpdHkuIiwgZGF0YSwgcHJpb3JpdHkpOwor
ICAgICAgICAgICAgZGVidWdJbmZvLm1lc3NhZ2VzLmFwcGVuZCh7IE1lc3NhZ2VMZXZlbDo6SW5m
bywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlcGxhY2VkIGEgcHJl
dmlvdXNseSBjb252ZXJ0ZWQgYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUgd2l0aCBhdHRyaWJ1dGlv
biB0cmlnZ2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3Jp
dHksICInIGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iX3MpIH0pOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChwcmV2aW91c2x5QXR0cmlidXRlZCkgeworICAgICAgICAvLyBJZiB3
ZSBoYXZlIG5vIG5ldyBhdHRyaWJ1dGlvbiwgcmUtYXR0cmlidXRlIHRoZSBvbGQgb25lIHRvIHJl
c3BlY3QgdGhlIG5ldyBwcmlvcml0eSwgYnV0IG9ubHkgaWYgdGhpcyByZXBvcnQgaGFzCisgICAg
ICAgIC8vIG5vdCBiZWVuIHNlbnQgdG8gdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBzaXRlIHll
dC4KKyAgICAgICAgaWYgKCFwcmV2aW91c2x5QXR0cmlidXRlZC52YWx1ZSgpLmhhc1ByZXZpb3Vz
bHlCZWVuUmVwb3J0ZWQoKSkgeworICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0g
cHJldmlvdXNseUF0dHJpYnV0ZWQudmFsdWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVU
b1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7CisgICAgICAgICAgICBpZiAo
IXNlY29uZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKGRlYnVnSW5mbykgfTsK
KworICAgICAgICAgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgqcHJl
dmlvdXNseUF0dHJpYnV0ZWQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZTo6QXR0cmlidXRlZCk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICJSZS1jb252ZXJ0ZWQgYW4gYWQgY2xpY2sgd2l0aCBhIG5ldyBvbmUg
d2l0aCBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICV7cHVibGljfXUgYW5kIHByaW9yaXR5OiAl
e3B1YmxpY311IGJlY2F1c2UgaXQgaGFkIGhpZ2hlciBwcmlvcml0eS4iLCBkYXRhLCBwcmlvcml0
eSk7CisgICAgICAgICAgICBkZWJ1Z0luZm8ubWVzc2FnZXMuYXBwZW5kKHsgTWVzc2FnZUxldmVs
OjpJbmZvLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gUmUtY29udmVy
dGVkIGFuIGFkIGNsaWNrIHdpdGggYSBuZXcgb25lIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBk
YXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJpb3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJycgYmVj
YXVzZSBpdCBoYWQgaGlnaGVyIHByaW9yaXR5LiJfcykgfSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAoIXNlY29uZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVz
KCkpCisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShkZWJ1Z0luZm8pIH07
CisKKyAgICByZXR1cm4geyBzZWNvbmRzVW50aWxTZW5kLCBXVEZNb3ZlKGRlYnVnSW5mbykgfTsK
K30KKworV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgRGF0YWJhc2U6OmJ1aWxkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
KiBzdGF0ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJp
YnV0aW9uVHlwZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRv
IHNvdXJjZVNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50
LT5jb2x1bW5JbnQoMCkpOworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluID0gZ2V0RG9t
YWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDEpKTsKKyAgICBhdXRv
IHNvdXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMik7CisgICAgYXV0byB0aW1lT2ZBZENs
aWNrID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoNSkgOiBzdGF0ZW1l
bnQtPmNvbHVtbkRvdWJsZSgzKTsKKyAgICBhdXRvIHRva2VuID0gYXR0cmlidXRpb25UeXBlID09
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3Rh
dGVtZW50LT5jb2x1bW5UZXh0KDcpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDQpOworICAgIGF1
dG8gc2lnbmF0dXJlID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDgpIDog
c3RhdGVtZW50LT5jb2x1bW5UZXh0KDUpOworICAgIGF1dG8ga2V5SUQgPSBhdHRyaWJ1dGlvblR5
cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQg
PyBzdGF0ZW1lbnQtPmNvbHVtblRleHQoOSkgOiBzdGF0ZW1lbnQtPmNvbHVtblRleHQoNik7CisK
KyAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbihXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoc291cmNlSUQpLCBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZShSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHNvdXJjZVNpdGVEb21haW4p
KSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRp
b25TaXRlKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVE
b21haW5TdHJpbmcoZGVzdGluYXRpb25TaXRlRG9tYWluKSksIHsgfSwgeyB9LCBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHModGltZU9mQWRDbGljaykpOworICAgIAorICAgIGlmIChhdHRyaWJ1dGlv
blR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0
ZWQpIHsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gc3RhdGVtZW50LT5j
b2x1bW5JbnQoMyk7CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0ZW1lbnQtPmNvbHVtbklu
dCg0KTsKKyAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA9IHN0YXRl
bWVudC0+Y29sdW1uRG91YmxlKDYpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RU
aW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxMCk7CisKKyAgICAgICAg
aWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEpCisgICAgICAgICAgICBhdHRyaWJ1dGlv
bi5zZXRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlByaW9yaXR5KHByaW9y
aXR5KSB9KTsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRlc3RpbmF0aW9u
RWFybGllc3RUaW1lVG9TZW5kOworICAgICAgICAKKyAgICAgICAgLy8gQSB2YWx1ZSBvZiAwLjAg
aW5kaWNhdGVzIHRoYXQgdGhlIHJlcG9ydCBoYXMgYmVlbiBzZW50IHRvIHRoZSByZXNwZWN0aXZl
IHNpdGUuCisgICAgICAgIGlmIChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA+IDAuMCkK
KyAgICAgICAgICAgIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcyhzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSk7CisKKyAgICAgICAgaWYgKGRl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCisgICAgICAgICAgICBkZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhkZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlKTsKKworICAgICAgICBhdHRyaWJ1dGlvbi5z
ZXRUaW1lc1RvU2VuZCh7IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCwgZGVzdGluYXRpb25FYXJs
aWVzdFRpbWVUb1NlbmQgfSk7CisgICAgfQorCisgICAgYXR0cmlidXRpb24uc2V0U291cmNlU2Vj
cmV0VG9rZW4oeyB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCB9KTsKKworICAgIHJldHVybiBhdHRy
aWJ1dGlvbjsKK30KKwordm9pZCBEYXRhYmFzZTo6cmVtb3ZlVW5hdHRyaWJ1dGVkKFByaXZhdGVD
bGlja01lYXN1cmVtZW50JiBhdHRyaWJ1dGlvbikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBhdXRvIHNvdXJjZVNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0
aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVzdGlu
YXRpb25TaXRlRG9tYWluSUQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2NvcGVkU3Rh
dGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fcmVtb3ZlVW5hdHRyaWJ1dGVkU3RhdGVt
ZW50LCByZW1vdmVVbmF0dHJpYnV0ZWRRdWVyeSwgInJlbW92ZVVuYXR0cmlidXRlZCJfcyk7CisK
KyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJp
bmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNj
b3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNR
TElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9O
RSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
IiVwIC0gRGF0YWJhc2U6OnJlbW92ZVVuYXR0cmlidXRlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitWZWN0b3I8V2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IERhdGFiYXNlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1
dG8gYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2Fs
bEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgYWxsQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksICJhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQiX3MpOworCisgICAgaWYgKCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAg
LSBEYXRhYmFzZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBlcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
IGF0dHJpYnV0aW9uczsKKyAgICB3aGlsZSAoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpID09IFNRTElURV9ST1cpCisgICAgICAgIGF0dHJpYnV0aW9ucy5hcHBlbmQoYnVpbGRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50
LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRl
ZCkpOworCisgICAgcmV0dXJuIGF0dHJpYnV0aW9uczsKK30KKworU3RyaW5nIERhdGFiYXNlOjpw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZygpCit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFFeGlzdHMgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCAoU0VMRUNUIENP
VU5UKCopIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDEs
IChTRUxFQ1QgQ09VTlQoKikgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQp
IGFzIGNudDIiX3MpOworICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3Rz
IHx8IHByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+c3RlcCgpICE9IFNRTElURV9S
T1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
ICIlcCAtIERhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGlu
ZyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYXRhRXhpc3RzLT5jb2x1bW5JbnQoMCkgJiYgIXByaXZhdGVDbGlja01lYXN1cmVtZW50
RGF0YUV4aXN0cy0+Y29sdW1uSW50KDEpKQorICAgICAgICByZXR1cm4gIlxuTm8gc3RvcmVkIFBy
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiJfczsKKworICAgIGF1dG8gdW5hdHRyaWJ1
dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fYWxsVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0ZW1lbnQsIGFsbFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zUXVlcnksICJwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyJfcyk7CisKKyAgICBpZiAoIXVuYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVt
ZW50VG9TdHJpbmdGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB1
bmF0dHJpYnV0ZWROdW1iZXIgPSAwOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICB3
aGlsZSAodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykg
eworICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSB1bmF0dHJpYnV0ZWROdW1iZXIgPyAiIiA6
ICJVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6IjsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQocHJlZml4LCAiXG5XZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAi
LCArK3VuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKKyAgICAgICAgICAgIGF0dHJpYnV0aW9uVG9T
dHJpbmdGb3JUZXN0aW5nKCp1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpKTsKKyAgICB9
CisKKyAgICBhdXRvIGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGFs
bEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmciX3MpOworCisgICAgaWYgKCFhdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01l
YXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmlu
Z0ZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZWRO
dW1iZXIgPSAwOworICAgIHdoaWxlIChhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
PT0gU1FMSVRFX1JPVykgeworICAgICAgICBpZiAoIWF0dHJpYnV0ZWROdW1iZXIpCisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCh1bmF0dHJpYnV0ZWROdW1iZXIgPyAiXG4iIDogIiIsICJBdHRy
aWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOiIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgiXG5XZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAiLCArK2F0dHJpYnV0ZWRO
dW1iZXIgKyB1bmF0dHJpYnV0ZWROdW1iZXIsICdcbicsCisgICAgICAgICAgICBhdHRyaWJ1dGlv
blRvU3RyaW5nRm9yVGVzdGluZygqYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpKTsKKyAgICB9
CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIERhdGFiYXNlOjph
dHRyaWJ1dGlvblRvU3RyaW5nRm9yVGVzdGluZyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmIHN0
YXRlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmlidXRp
b25UeXBlKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc291
cmNlU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQuY29s
dW1uSW50KDApKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9IGdldERvbWFpblN0
cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQuY29sdW1uSW50KDEpKTsKKyAgICBhdXRvIHNvdXJj
ZUlEID0gc3RhdGVtZW50LmNvbHVtbkludCgyKTsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKKyAgICBidWlsZGVyLmFwcGVuZCgiU291cmNlIHNpdGU6ICIsIHNvdXJjZVNpdGVEb21haW4s
ICJcbkF0dHJpYnV0ZSBvbiBzaXRlOiAiLCBkZXN0aW5hdGlvblNpdGVEb21haW4sICJcblNvdXJj
ZSBJRDogIiwgc291cmNlSUQpOworCisgICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgeworICAgICAgICBh
dXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBzdGF0ZW1lbnQuY29sdW1uSW50KDMpOworICAg
ICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LmNvbHVtbkludCg0KTsKKyAgICAgICAgYXV0
byBlYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGF0ZW1lbnQuY29sdW1uSW50KDYpOworCisgICAgICAg
IGlmIChhdHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKSB7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiXG5BdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICIsIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEsICJcbkF0dHJpYnV0aW9uIHByaW9yaXR5OiAiLCBwcmlvcml0eSwgIlxuQXR0cmlidXRp
b24gZWFybGllc3QgdGltZSB0byBzZW5kOiAiKTsKKyAgICAgICAgICAgIGlmIChlYXJsaWVzdFRp
bWVUb1NlbmQgPT0gLTEpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIk5vdCBzZXQi
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gc2Vjb25kc1VudGls
U2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhlYXJsaWVzdFRpbWVUb1NlbmQpIC0gV2Fs
bFRpbWU6Om5vdygpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChzZWNvbmRzVW50
aWxTZW5kID49IDI0X2ggJiYgc2Vjb25kc1VudGlsU2VuZCA8PSA0OF9oKSA/ICJXaXRoaW4gMjQt
NDggaG91cnMiIDogIk91dHNpZGUgMjQtNDggaG91cnMiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0
cmlnZ2VyIGRhdGEuIik7CisgICAgfSBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbk5v
IGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
KworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2U6Om1h
cmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygp
Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgYXV0byBleHBpcmVkVGlt
ZVRvU2VuZCA9IFdhbGxUaW1lOjpub3coKSAtIDFfaDsKKworICAgIGF1dG8gdHJhbnNhY3Rpb25T
Y29wZSA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOworCisgICAgYXV0byBlYXJsaWVz
dFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dCgiVVBEQVRFIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgZWFybGllc3RU
aW1lVG9TZW5kVG9Tb3VyY2UgPSA/Il9zKTsKKyAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZFRv
RGVzdGluYXRpb25TdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlVQREFU
RSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VUIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvRGVzdGluYXRpb24gPSBudWxsIl9zKTsKKworICAgIGlmICghZWFybGllc3RUaW1lVG9TZW5k
VG9Tb3VyY2VTdGF0ZW1lbnQKKyAgICAgICAgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VT
dGF0ZW1lbnQtPmJpbmRJbnQoMSwgZXhwaXJlZFRpbWVUb1NlbmQuc2Vjb25kc1NpbmNlRXBvY2go
KS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgZWFybGllc3RUaW1lVG9TZW5kVG9T
b3VyY2VTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6Om1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZywgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAg
aWYgKCFlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uU3RhdGVtZW50IHx8IGVhcmxpZXN0
VGltZVRvU2VuZFRvRGVzdGluYXRpb25TdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVw
IC0gRGF0YWJhc2U6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBp
cmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbikKK3sKKyAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIC8vIERlZmF1bHQgdG8gY2xlYXIgYWxsIGVu
dHJpZXMgaWYgbm8gZG9tYWluIGlzIHNwZWNpZmllZC4KKyAgICBTdHJpbmcgYmluZFBhcmFtZXRl
ciA9ICIlIjsKKyAgICBpZiAoZG9tYWluKSB7CisgICAgICAgIGF1dG8gZG9tYWluSURUb01hdGNo
ID0gZG9tYWluSUQoKmRvbWFpbik7CisgICAgICAgIGlmICghZG9tYWluSURUb01hdGNoKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGJpbmRQYXJhbWV0ZXIgPSBTdHJpbmc6Om51bWJl
cigqZG9tYWluSURUb01hdGNoKTsKKyAgICB9CisKKyAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUg
PSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8gY2xlYXJBbGxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVu
dChtX2NsZWFyQWxsUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGNsZWFyQWxsUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQi
X3MpOworCisgICAgaWYgKCFjbGVhckFsbFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NvcGVkU3Rh
dGVtZW50CisgICAgICAgIHx8IGNsZWFyQWxsUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTY29wZWRT
dGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSworICAgICAg
ICB8fCBjbGVhckFsbFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NvcGVkU3RhdGVtZW50LT5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjbGVhckFsbFByaXZhdGVDbGlja01lYXN1cmVtZW50U2Nv
cGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJhc2U6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRv
IGV4cGlyYXRpb25UaW1lRnJhbWUgPSBXYWxsVGltZTo6bm93KCkgLSBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6bWF4QWdlKCk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0
aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0YXRlbWVudCwgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgImNs
ZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKworICAgIGlmICghc2NvcGVk
U3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZERvdWJsZSgxLCBleHBp
cmF0aW9uVGltZUZyYW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBEYXRh
YmFzZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVw
b3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkKK3sKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHRpbWVzVG9TZW5kID0gZWFybGllc3RUaW1lc1Rv
U2VuZChhdHRyaWJ1dGlvbik7CisgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSB0
aW1lc1RvU2VuZC5maXJzdDsKKyAgICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5k
ID0gdGltZXNUb1NlbmQuc2Vjb25kOworCisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBk
b21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VTaXRlKCkucmVnaXN0cmFibGVEb21haW4pOworICAg
IGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5kZXN0
aW5hdGlvblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAoIXNvdXJjZVNpdGVE
b21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN3aXRjaCAoYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCkgeworICAgIGNhc2UgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OlNvdXJjZToKKyAg
ICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpIHsKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSgqc291cmNlU2l0ZURvbWFpbklELCAqZGVzdGluYXRp
b25TaXRlRG9tYWluSUQpOworICAgICAgICBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0aW9uOgorICAgICAgICBpZiAo
IWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtYXJr
UmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbigqc291cmNlU2l0ZURvbWFpbklELCAqZGVzdGluYXRp
b25TaXRlRG9tYWluSUQpOworICAgICAgICBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9
IHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBEb24ndCBjbGVhciB0aGUgYXR0cmlidXRl
IGZyb20gdGhlIGRhdGFiYXNlIHVubGVzcyBpdCBoYXMgYmVlbiByZXBvcnRlZCBib3RoIHRvIHRo
ZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHNpdGUuCisgICAgaWYgKGRlc3RpbmF0aW9uRWFybGll
c3RUaW1lVG9TZW5kIHx8IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCA9ID8iX3MpOworICAgIGlmICghY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50CisgICAgICAgIHx8
IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklE
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LT5iaW5k
SW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRh
YmFzZTo6Y2xlYXJTZW50QXR0cmlidXRpb24gZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6
ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBEYXRhYmFz
ZTo6bWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oU291cmNlRG9tYWluSUQgc291cmNlU2l0
ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQor
eworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc2NvcGVkU3RhdGVt
ZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRp
b25TdGF0ZW1lbnQsIG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uUXVlcnksICJtYXJrUmVw
b3J0QXNTZW50VG9EZXN0aW5hdGlvbiJfcyk7CisKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAor
ICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgc291cmNlU2l0ZURvbWFpbklE
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsIGRl
c3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3Rh
dGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRv
RGVzdGluYXRpb24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorfQorCit2b2lkIERhdGFiYXNlOjptYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9t
YWluSUQgc291cmNlU2l0ZURvbWFpbklELCBEZXN0aW5hdGlvbkRvbWFpbklEIGRlc3RpbmF0aW9u
U2l0ZURvbWFpbklEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1
dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fbWFya1JlcG9ydEFz
U2VudFRvU291cmNlU3RhdGVtZW50LCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2VRdWVyeSwgIm1h
cmtSZXBvcnRBc1NlbnRUb1NvdXJjZSJfcyk7CisKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAor
ICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgc291cmNlU2l0ZURvbWFpbklE
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsIGRl
c3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3Rh
dGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFzZTo6bWFya1JlcG9ydEFzU2VudFRv
U291cmNlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30K
Kworc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OlNvdXJjZUVhcmxpZXN0VGltZVRv
U2VuZD4sIHN0ZDo6b3B0aW9uYWw8RGF0YWJhc2U6OkRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kPj4gRGF0YWJhc2U6OmVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmli
dXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvIGRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCku
cmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRl
c3RpbmF0aW9uU2l0ZURvbWFpbklEKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0
aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9lYXJsaWVzdFRpbWVzVG9TZW5kU3RhdGVtZW50LCBlYXJs
aWVzdFRpbWVzVG9TZW5kUXVlcnksICJlYXJsaWVzdFRpbWVzVG9TZW5kIl9zKTsKKworICAgIGlm
ICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgx
LCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3Rh
dGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEYXRhYmFz
ZTo6ZWFybGllc3RUaW1lc1RvU2VuZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJ
TkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZD4gZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2U7CisgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbjsK
KyAgICAKKyAgICAvLyBBIHZhbHVlIG9mIDAuMCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVwb3J0IGhh
cyBiZWVuIHNlbnQgdG8gdGhlIHJlc3BlY3RpdmUgc2l0ZS4KKyAgICBpZiAoc2NvcGVkU3RhdGVt
ZW50LT5jb2x1bW5Eb3VibGUoMCkgPiAwLjApCisgICAgICAgIGVhcmxpZXN0VGltZVRvU2VuZFRv
U291cmNlID0gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMCk7CisgICAgCisgICAgaWYg
KHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDEpID4gMC4wKQorICAgICAgICBlYXJsaWVz
dFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uID0gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUo
MSk7CisgICAgCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGVhcmxpZXN0VGltZVRvU2VuZFRv
U291cmNlLCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKTsKK30KKworc3RkOjpvcHRp
b25hbDxEYXRhYmFzZTo6RG9tYWluSUQ+IERhdGFiYXNlOjpkb21haW5JRChjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1l
bnQobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQsIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5
LCAiZG9tYWluSUQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50IHx8IHNjb3BlZFN0YXRl
bWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFi
YXNlOjpkb21haW5JREZyb21TdHJpbmcgZmFpbGVkLiBFcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9
CisgICAgCisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc2NvcGVkU3RhdGVtZW50
LT5jb2x1bW5JbnQoMCk7Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6Z2V0RG9tYWluU3RyaW5nRnJv
bURvbWFpbklEKERvbWFpbklEIGRvbWFpbklEKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGF1dG8gcmVzdWx0ID0gZW1wdHlTdHJpbmcoKTsKKyAgICAKKyAgICBhdXRv
IHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2RvbWFpblN0cmluZ0Zy
b21Eb21haW5JRFN0YXRlbWVudCwgZG9tYWluU3RyaW5nRnJvbURvbWFpbklEUXVlcnksICJnZXRE
b21haW5TdHJpbmdGcm9tRG9tYWluSUQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50Cisg
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCAiJXAgLSBEYXRhYmFzZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklELiBTdGF0ZW1lbnQg
ZmFpbGVkIHRvIHByZXBhcmUgb3IgYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAg
IGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQorICAgICAgICByZXN1
bHQgPSBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsK
KyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGQ6Om9wdGlvbmFsPERhdGFiYXNlOjpE
b21haW5JRD4gRGF0YWJhc2U6OmVuc3VyZURvbWFpbklEKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW4pCit7CisgICAgaWYgKGF1dG8gZXhpc3RpbmdJRCA9IGRvbWFpbklE
KGRvbWFpbikpCisgICAgICAgIHJldHVybiBleGlzdGluZ0lEOworCisgICAgYXV0byBzY29wZWRT
dGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0
YXRlbWVudCwgaW5zZXJ0T2JzZXJ2ZWREb21haW5RdWVyeSwgImluc2VydE9ic2VydmVkRG9tYWlu
Il9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFz
ZTo6ZW5zdXJlRG9tYWluSUQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZB
VEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KKworICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0g
RGF0YWJhc2U6OmVuc3VyZURvbWFpbklEIGZhaWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6
ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH0KKyAgICByZXR1cm4gZG9tYWluSUQoZG9tYWluKTsKK30KKwordm9pZCBEYXRh
YmFzZTo6ZGVzdHJveVN0YXRlbWVudHMoKQoreworICAgIG1fc2V0VW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZmlu
ZFVuYXR0cmlidXRlZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9maW5kQXR0cmlidXRlZFN0
YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQgPSBu
dWxscHRyOworICAgIG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RhdGVt
ZW50ID0gbnVsbHB0cjsKKyAgICBtX2FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25zU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2NsZWFyQWxsUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fY2xlYXJFeHBpcmVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZWFybGll
c3RUaW1lc1RvU2VuZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9tYXJrUmVwb3J0QXNTZW50
VG9Tb3VyY2VTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fbWFya1JlcG9ydEFzU2VudFRvRGVz
dGluYXRpb25TdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZG9tYWluSURGcm9tU3RyaW5nU3Rh
dGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVu
dCA9IG51bGxwdHI7CisgICAgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudCA9IG51bGxw
dHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhdGFiYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIzZDliNjYyYTM3MTc4YTFiZGE5ODM0YTY0OTA3
OGYyNzk0MDRjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFz
ZS5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkRhdGFiYXNlVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworc3RydWN0
IERlYnVnSW5mbzsKKworLy8gVGhpcyBpcyBjcmVhdGVkLCB1c2VkLCBhbmQgZGVzdHJveWVkIG9u
IHRoZSBTdG9yZSdzIHF1ZXVlLgorY2xhc3MgRGF0YWJhc2UgOiBwdWJsaWMgRGF0YWJhc2VVdGls
aXRpZXMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIERhdGFi
YXNlKGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSk7CisgICAgdmlydHVhbCB+RGF0YWJh
c2UoKTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXMoKTsKKwor
ICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUp
OworICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiwgRGVidWdJbmZvPiBhdHRy
aWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpOworICAgIFZlY3RvcjxXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KCk7CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+KTsKKyAgICB2b2lkIGNsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1
dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CisKKyAgICBTdHJp
bmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoKTsKKyAgICB2b2lk
IG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRl
c3RpbmcoKTsKKyAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZygpOworCitwcml2YXRlOgorICAgIHVzaW5nIFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ7CisgICAgdXNpbmcgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgdXNpbmcgRG9tYWluSUQgPSB1bnNpZ25l
ZDsKKyAgICB1c2luZyBTb3VyY2VEb21haW5JRCA9IHVuc2lnbmVkOworICAgIHVzaW5nIERlc3Rp
bmF0aW9uRG9tYWluSUQgPSB1bnNpZ25lZDsKKyAgICB1c2luZyBTb3VyY2VFYXJsaWVzdFRpbWVU
b1NlbmQgPSBkb3VibGU7CisgICAgdXNpbmcgRGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQg
PSBkb3VibGU7CisKKyAgICBib29sIGNyZWF0ZVNjaGVtYSgpIGZpbmFsOworICAgIHZvaWQgZGVz
dHJveVN0YXRlbWVudHMoKSBmaW5hbDsKKyAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KGNv
bnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJik7CisgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYnVpbGRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CisgICAgdm9pZCByZW1vdmVV
bmF0dHJpYnV0ZWQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmKTsKKyAgICBTdHJp
bmcgYXR0cmlidXRpb25Ub1N0cmluZ0ZvclRlc3RpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
JiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOworICAgIHZvaWQgbWFy
a1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oU291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9t
YWluSUQpOworICAgIHZvaWQgbWFya1JlcG9ydEFzU2VudFRvU291cmNlKFNvdXJjZURvbWFpbklE
LCBEZXN0aW5hdGlvbkRvbWFpbklEKTsKKyAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RU
aW1lVG9TZW5kPj4gZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYpOworICAgIHN0ZDo6b3B0aW9uYWw8RG9tYWluSUQ+IGVuc3VyZURvbWFp
bklEKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgc3RkOjpvcHRpb25h
bDxEb21haW5JRD4gZG9tYWluSUQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsK
KyAgICBTdHJpbmcgZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERvbWFpbklEKTsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc2V0VW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9maW5kVW5hdHRyaWJ1dGVkU3Rh
dGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
ZmluZEF0dHJpYnV0ZWRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4gbV9yZW1vdmVVbmF0dHJpYnV0ZWRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudD4gbV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uc1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiBtX2NsZWFyQWxsUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jbGVhckV4
cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1l
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9tYXJr
UmVwb3J0QXNTZW50VG9Tb3VyY2VTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9tYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvblN0YXRl
bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2Rv
bWFpbklERnJvbVN0cmluZ1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2luc2VydE9ic2Vy
dmVkRG9tYWluU3RhdGVtZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWQzOTdi
YjcwNzI1MTA3ZTg4MWU0MjE0ZmI2MTZjNDc5MzIzYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERlYnVnSW5mby5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisK
K0RlYnVnSW5mbyBEZWJ1Z0luZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHsgbWVzc2FnZXMuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKworRGVidWdJbmZvOjpNZXNzYWdlIERl
YnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBt
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERlYnVnSW5mby5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk0ZjExNjAwODMxMDU4MDc5NTA4MjI3NjE1OWE2ZmM3YTJkNTg0NzMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
Q29uc29sZVR5cGVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworc3RydWN0IERlYnVnSW5mbyB7CisK
KyAgICBzdHJ1Y3QgTWVzc2FnZSB7CisgICAgICAgIEpTQzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VM
ZXZlbDsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CisKKyAgICAgICAgTWVzc2FnZSBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKyAgICB9OworCisgICAgVmVjdG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOwor
CisgICAgRGVidWdJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2UyZmVlNDQxNDI4M2M0NTBmODNkZmI3ZjQ2NmVkZDYwYTgyYWM5ZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKQEAgLTAsMCArMSwxOTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yZS5oIgorCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCituYW1lc3BhY2UgUENNIHsKKworc3RhdGljIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1
ZT4gc2hhcmVkV29ya1F1ZXVlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFN1
c3BlbmRhYmxlV29ya1F1ZXVlPj4gcXVldWUoU3VzcGVuZGFibGVXb3JrUXVldWU6OmNyZWF0ZSgi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgIFdvcmtRdWV1ZTo6
UU9TOjpVdGlsaXR5KSk7CisgICAgcmV0dXJuIHF1ZXVlLmdldCgpLmNvcHlSZWYoKTsKK30KKwor
dm9pZCBTdG9yZTo6cHJlcGFyZUZvclByb2Nlc3NUb1N1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgc2hhcmVkV29ya1F1ZXVlKCktPnN1c3BlbmQoRGF0YWJhc2U6OmludGVycnVw
dEFsbERhdGFiYXNlcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFN0
b3JlOjpwcm9jZXNzRGlkUmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIHNoYXJlZFdvcmtRdWV1ZSgpLT5yZXN1bWUoKTsKK30KKworU3RvcmU6OlN0b3JlKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCisgICAgOiBtX3F1ZXVlKHNoYXJlZFdvcmtR
dWV1ZSgpKQoreworICAgIGlmICghZGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAg
ICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFi
YXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFi
bGUgeworICAgICAgICAgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8RGF0YWJhc2U+KFdURk1v
dmUoZGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCitTdG9yZTo6
flN0b3JlKCkgPSBkZWZhdWx0OworCit2b2lkIFN0b3JlOjpwb3N0VGFzayhGdW5jdGlvbjx2b2lk
KCk+JiYgdGFzaykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOworfQorCit2b2lkIFN0b3JlOjpwb3N0VGFza1Jl
cGx5KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHJlcGx5KQoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHJlcGx5
KSk7Cit9CisKK3ZvaWQgU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKK3sKKyAgICBwb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhdHRyaWJ1dGlvbiA9IFdU
Rk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGVdICgpIG11dGFibGUgeworICAgICAg
ICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmluc2VydFByaXZhdGVD
bGlja01lYXN1cmVtZW50KFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGUpOwor
ICAgIH0pOworfQorCit2b2lkIFN0b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBwb3N0VGFzayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChtX2RhdGFiYXNl
KQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIH0pOworfQorCit2b2lkIFN0
b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBk
ZXN0aW5hdGlvblNpdGUsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJlbWVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiYmLCBEZWJ1Z0lu
Zm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc291cmNlU2l0ZSA9IHNvdXJjZVNpdGUuaXNvbGF0
ZWRDb3B5KCksIGRlc3RpbmF0aW9uU2l0ZSA9IGRlc3RpbmF0aW9uU2l0ZS5pc29sYXRlZENvcHko
KSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSksIGVwaGVtZXJhbE1lYXN1cmVtZW50ID0gY3Jvc3NUaHJlYWRDb3B5KGVwaGVtZXJhbE1lYXN1
cmVtZW50KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9kYXRhYmFzZSkgeworICAgICAgICAgICAgcmV0
dXJuIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0ZDo6bnVsbG9wdCwgeyB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gSW5zZXJ0IGVwaGVtZXJhbCBtZWFzdXJlbWVudCByaWdodCBiZWZvcmUgYXR0cmlidXRp
b24uCisgICAgICAgIGlmIChlcGhlbWVyYWxNZWFzdXJlbWVudCkgeworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZXBoZW1lcmFsTWVhc3VyZW1lbnQtPmlzRXBoZW1lcmFsKCkpOworICAgICAg
ICAgICAgbV9kYXRhYmFzZS0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgq
ZXBoZW1lcmFsTWVhc3VyZW1lbnQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VHlwZTo6VW5hdHRyaWJ1dGVkKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gW3NlY29uZHMs
IGRlYnVnSW5mb10gPSBtX2RhdGFiYXNlLT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSkpOworCisgICAgICAgIHBvc3RUYXNrUmVwbHkoW3NlY29uZHMgPSBXVEZNb3ZlKHNlY29u
ZHMpLCBkZWJ1Z0luZm8gPSBkZWJ1Z0luZm8uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlY29uZHMpLCBXVEZNb3ZlKGRlYnVnSW5mbykp
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yZTo6cHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFN0cmluZyByZXN1bHQ7CisgICAgICAg
IGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgcmVzdWx0ID0gbV9kYXRhYmFzZS0+cHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoKTsKKyAgICAgICAgcG9zdFRhc2tS
ZXBseShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
U3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnM7CisgICAgICAgIGlmIChtX2RhdGFi
YXNlKQorICAgICAgICAgICAgY29udmVydGVkQXR0cmlidXRpb25zID0gbV9kYXRhYmFzZS0+YWxs
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgICAgIHBvc3RUYXNrUmVw
bHkoW2NvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IGNvbnZlcnRlZEF0dHJpYnV0aW9ucy5pc29sYXRl
ZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29udmVy
dGVkQXR0cmlidXRpb25zKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFN0b3Jl
OjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+bWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisgICAgICAg
IHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQor
Cit2b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBwb3N0VGFzayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fZGF0YWJh
c2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
KHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2Rh
dGFiYXNlKQorICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChkb21haW4pOworICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBTdG9yZTo6Y2xlYXJFeHBpcmVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldKCkgeworICAgICAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgICAg
IG1fZGF0YWJhc2UtPmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb25Ub0NsZWFyLCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJl
cG9ydEVuZHBvaW50KQoreworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGF0dHJpYnV0aW9uVG9DbGVhciA9IGF0dHJpYnV0aW9uVG9DbGVhci5pc29s
YXRlZENvcHkoKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludF0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclNlbnRBdHRy
aWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhciksIGF0dHJpYnV0aW9uUmVwb3J0RW5k
cG9pbnQpOworICAgIH0pOworfQorCit2b2lkIFN0b3JlOjpjbG9zZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcG9zdFRhc2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIG1fZGF0YWJhc2UgPSBu
dWxscHRyOworICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTUxZWQwYWJkMWNhOGI3YjFjMzU0Njc2YWM0
NWYzMzMyMWE0YjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
LmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2VudW0gY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGUgOiBib29sOworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3MgRGF0YWJhc2U7CitzdHJ1Y3Qg
RGVidWdJbmZvOworCitjbGFzcyBTdG9yZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
dG9yZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RvcmU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RvcmUoZGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICB9CisKKyAgICB+U3RvcmUoKTsKKwor
ICAgIHN0YXRpYyB2b2lkIHByZXBhcmVGb3JQcm9jZXNzVG9TdXNwZW5kKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc0RpZFJlc3VtZSgpOworCisg
ICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYmLCBXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UeXBlKTsKKyAgICB2b2lkIGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRl
JiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBl
cGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRp
bFNlbmREYXRhPiYmLCBEZWJ1Z0luZm8mJik+JiYpOworCisgICAgdm9pZCBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
Zyk+JiYpOworICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisKKyAgICB2b2lkIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4mJik+JiYpOworICAgIHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoKTsKKyAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1
dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uVG9DbGVh
ciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5k
cG9pbnQpOworCisgICAgdm9pZCBjbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
Citwcml2YXRlOgorICAgIFN0b3JlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpOwor
CisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgcG9zdFRh
c2tSZXBseShGdW5jdGlvbjx2b2lkKCk+JiYpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFi
YXNlPiBtX2RhdGFiYXNlOworICAgIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCA2YTYzNWQ4OWQ3NzMwODA4NTJjM2ExZGZmMWE4
ZGU4NzZlYWU2MDczLi43OTc0OGE2ODNlZjg3NjZiZjdjYzhiN2VhYjA2NDk1ZGJjOGY5Yjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Gb3JtRGF0YS5oPgpAQCAtMjUwLDcgKzI1MSw3IEBAIHZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChQcml2YXRlQ2xpY2tNCiAgICAgfQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShtZWFz
dXJlbWVudCksIHR5cGUpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50
KFdURk1vdmUobWVhc3VyZW1lbnQpLCB0eXBlKTsKICNlbmRpZgogfQogCkBAIC0yOTcsMTMgKzI5
OCwxOCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlKGNv
bnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbgogICAgIH0KICAgICAgICAgCiAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+YXR0
cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRl
LCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBzdGQ6OmV4Y2hhbmdlKG1fZXBoZW1l
cmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSkgeworICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
KCkuYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRp
b25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBzdGQ6OmV4Y2hhbmdlKG1f
ZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSwg
YXV0byBkZWJ1Z0luZm8pIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWF0dHJpYnV0aW9u
U2Vjb25kc1VudGlsU2VuZERhdGEpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgeworICAgICAgICAgICAgICAg
IGZvciAoYXV0byYgbWVzc2FnZSA6IGRlYnVnSW5mby5tZXNzYWdlcykKKyAgICAgICAgICAgICAg
ICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9u
SUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBtZXNzYWdlLm1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZS5tZXNzYWdlKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
aWYgKGF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEudmFsdWUoKS5oYXNWYWxpZFNlY29u
ZHNVbnRpbFNlbmRWYWx1ZXMoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gbWluU2Vjb25kc1Vu
dGlsU2VuZCA9IGF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEudmFsdWUoKS5taW5TZWNv
bmRzVW50aWxTZW5kKCk7CiAKQEAgLTM5NSw3ICs0MDEsNyBAQCB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmlidXRpb24oUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShz
ZW50Q29udmVyc2lvbiksIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOworICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJT
ZW50QXR0cmlidXRpb24oV1RGTW92ZShzZW50Q29udmVyc2lvbiksIGF0dHJpYnV0aW9uUmVwb3J0
RW5kcG9pbnQpOwogI2VuZGlmCiB9CiAKQEAgLTQwOSw3ICs0MTUsNyBAQCB2b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzKCkK
ICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvJiYgYXR0cmli
dXRpb25zKSB7CisgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yZSgpLmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvJiYgYXR0cmlidXRpb25zKSB7CiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8g
bmV4dFRpbWVUb0ZpcmUgPSBTZWNvbmRzOjppbmZpbml0eSgpOwpAQCAtNDYyLDcgKzQ2OCw3IEBA
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0
aW9uUmVxdWVzdHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpjbGVhcigpCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xl
YXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzVGltZXIuc3RvcCgpOwogICAgIG1fZXBo
ZW1lcmFsTWVhc3VyZW1lbnQgPSBzdGQ6Om51bGxvcHQ7CkBAIC00NzAsMjIgKzQ3NiwyNCBAQCB2
b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXIoKQogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgICAgICByZXR1cm4gcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogI2VuZGlmCisg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbikKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKIAogICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5j
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oZG9tYWluKTsK
KyAgICAgICAgcmV0dXJuIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmUoKS5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVE
b21haW4oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAjZW5kaWYKKyAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlcjo6Y2xlYXJFeHBpcmVkKCkKQEAgLTQ5NSwxMSArNTAzLDExIEBAIHZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckV4cGlyZWQoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmNsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CiAjZW5kaWYKIH0KIAotdm9pZCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjp0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKSB7CkBAIC01
MDgsNyArNTE2LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3Ry
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJgogICAgIH0KIAogICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlKCkucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC01
NDUsNyArNTUzLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1hcmtB
bGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
Pm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRl
c3RpbmcoKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yZSgpLm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICNlbmRpZgogfQogCkBAIC01NzUsNyArNTgzLDcgQEAg
dm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHAKICAgICB9CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5tYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JlKCkubWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKaW5kZXggY2Q3
MmYyNTFhZWViYTFkZmNjZTBhNjcwM2EyZTVkODQzMzllZGI5ZS4uZjQ5NTlkNWVhNGQ0NDcyNDRk
ODBhZWE4YzI0MjBmMDZmMjEwNzcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCkBAIC01
Niw5ICs1Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmJik7CiAgICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwotICAgIHZvaWQgY2xlYXIoKTsKLSAg
ICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
KTsKLSAgICB2b2lkIHRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikg
Y29uc3Q7CisgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB0b1N0cmluZ0ZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdDsKICAgICB2b2lkIHNl
dE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIHsgbV9pc1J1bm5pbmdUZXN0ID0g
dmFsdWU7IH0KICAgICB2b2lkIHNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJik7
CiAgICAgdm9pZCBzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwCmluZGV4IGI1YzdjNWMxNTViZGJhYTA5
ZDI0YzI1ZDRlZWE0YzhhNTFhNWQ2NGEuLmVjYmI0ZTJkMDg4NzQ1NmM0ZDE5ZTQyMzAzYWRiZjc1
NmJhYjVlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAKQEAg
LTUxLDYgKzUxLDExIEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKE5ldHdvCiAgICAgbV9uZXR3b3JrTG9h
ZC0+c3RhcnQoKTsKIH0KIAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjp+
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKCkKK3sKKyAgICBjYW5jZWwoKTsK
K30KKwogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmZhaWwoUmVz
b3VyY2VFcnJvciYmIGVycm9yKQogewogICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlcikKQEAg
LTYwLDExICs2NSwxNiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
cjo6ZmFpbChSZXNvdXJjZUVycm9yJiYgZXJyb3IpCiAgICAgZGlkQ29tcGxldGUoKTsKIH0KIAot
dm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OndpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYpCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6
Y2FuY2VsKCkKIHsKICAgICBmYWlsKFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBl
OjpDYW5jZWxsYXRpb24gfSk7CiB9CiAKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKQoreworICAgIGNhbmNlbCgpOwor
fQorCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghTUlNRVR5cGVSZWdpc3Ry
eTo6aXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnROZXR3b3JrTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oCmluZGV4IDE5NzJkMDVlNWNiZmQ4OGVkNjM2
OTMxOTdlNWQ2MDVmYjMwZDM0ZjAuLmM5ZmU5MGFiYTJjNjQwNjZmOWU3N2EzYjgzOTQ0OTdlODU2
Yzk3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaApAQCAtNDIsNiAr
NDIsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgUmVmUHRyPEpTT046Ok9iamVjdD4mKT47CiAgICAgc3RhdGljIHZv
aWQgc3RhcnQoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgQ2FsbGJh
Y2smJik7CiAKKyAgICB+UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKCk7CisK
IHByaXZhdGU6CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKE5ldHdv
cmtTZXNzaW9uJiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYsIENhbGxiYWNrJiYpOwogCkBAIC01
Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKICAgICB2b2lkIGZhaWwoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmKTsKKyAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgZGlkQ29tcGxldGUo
KTsKIAogICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1fc2Vzc2lvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCmluZGV4IGQyODIwNDZjYmZiNjA2
ZDlhZDE0ZTQ3MTE5OTFlNjllOGQwODI0YzcuLjYyNzczNzBkODU2ODVmNGM4NDAxYjBiMThlY2Rm
OTg5MzU0Njg0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5Lmgi
CiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlByZWNvbm5l
Y3RUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyLmgKaW5kZXggNDczY2U1MzY2N2RkODgzZGI4MWUyZmU1OTk0MjdlODVmODA0NjA0
YS4uMWNlYWUxODMwNWE3Njg4MTFlZGYzYjZmMDBkOWUzMDIxOGQxNjdmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRl
ICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENOZXR3b3JrLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcAppbmRleCAzMDgwMzQzODZmZmNiMjY5
ZmUyOWIzMTQwOWUxODMxOThiMmNhZTAyLi5lMTRmODczYjdjODE3Yzc5N2VjNGYzYjU2ODBiMjEy
ZTNjZjZiOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5m
b1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyCiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKICAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZE
YXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsK
LSAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IElQQWRkcmVzczo6ZnJvbVNvY2tBZGRySW42KCpy
ZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbjYqPihDRkRhdGFHZXRCeXRl
UHRyKGRhdGEpKSkpCisgICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBXZWJDb3JlOjpJUEFkZHJl
c3M6OmZyb21Tb2NrQWRkckluNigqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2Fk
ZHJfaW42Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSkpKQogICAgICAgICAgICAgYWRkcmVzc2Vz
LnVuY2hlY2tlZEFwcGVuZCgqYWRkcmVzcyk7CiAgICAgfQogICAgIGlmIChhZGRyZXNzZXMuaXNF
bXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA5N2Q1MTQ4NzRkZDYwZDU5N2NmZjc4MzhjZDgz
Njk3MmZhOWFkMzJkLi4yODhhYzdkNTFjNTY2MDMxNjgwMGY2NmExMTExYzgxMjE0NmUwZDI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmgKQEAgLTM3LDYgKzM3LDggQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBkaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAgICAgYm9vbCBlbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGlzSXRwU3Rh
dGVFeHBsaWNpdGx5U2V0IHsgZmFsc2UgfTsKICAgICBib29sIGVuYWJsZUxvZ1Rlc3RpbmdFdmVu
dCB7IGZhbHNlIH07CkBAIC01NSw2ICs1Nyw4IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycyB7CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGRpcmVjdG9yeTsKICAg
ICAgICAgZW5jb2RlciA8PCBkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGVuY29k
ZXIgPDwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworICAgICAgICBl
bmNvZGVyIDw8IHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKICAgICAgICAgZW5jb2RlciA8PCBlbmFibGVkOwogICAgICAgICBlbmNvZGVyIDw8
IGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OwogICAgICAgICBlbmNvZGVyIDw8IGVuYWJsZUxvZ1Rl
c3RpbmdFdmVudDsKQEAgLTgxLDcgKzg1LDE3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGRlY29kZXIgPj4gZGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgICAgICBpZiAoIWRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgZGVjb2RlciA+
PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIGlmICgh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGRlY29kZXIgPj4gcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBpZiAoIXByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAgIGlmICghZW5h
YmxlZCkKQEAgLTE0Miw2ICsxNTYsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMgewogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmRpcmVj
dG9yeSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAor
ICAgICAgICAgICAgV1RGTW92ZSgqcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0
b3J5KSwKKyAgICAgICAgICAgIFdURk1vdmUoKnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCplbmFibGVk
KSwKICAgICAgICAgICAgIFdURk1vdmUoKmlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0KSwKICAgICAg
ICAgICAgIFdURk1vdmUoKmVuYWJsZUxvZ1Rlc3RpbmdFdmVudCksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2
NmFlZGE0M2M4MmQ4YmZiMzM1YmJmZWY2MDk1ZDA0ZWZhZGI4NjIwLi4zZDUwOTdjMjQ4OWZlZmJk
Y2E3NTQxN2M0ZGM4MTdkMGJkMTU4NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU3LDYgKzU3LDcgQEAg
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAogCitOZXR3
b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0
eVRyYWNrZXIuY3BwCkBAIC05OCw2ICs5OSwxMCBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudC5jcHAKIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
Y3BwCiAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAKK05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUu
Y3BwCisKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDhjYTI0MTJlNjhh
MTk3NDdhNTU0YTNkODViYzlkMTkzNDBjYzQzMjkuLjkxYmM2ZmJmNTA1YzRjNGQyYzViNDQyNWVh
MDM0ZGE2ODIzZTkyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNzMxLDkgKzczMSw5IEBAIHN0YXRp
YyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMo
TlNBcnJheSAqZGF0YVJlY29yCiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjptYWtlTmV4
dE5ldHdvcmtQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcoKTsKIH0KIAotKyAodm9pZClfcHJl
dmVudE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkZvclRlc3RpbmcKKysgKHZvaWQpX3NldE5ldHdv
cmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nOihCT09MKWFsbG93ZWQKIHsKLSAg
ICBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByZXZlbnRTdXNwZW5zaW9uRm9yVGVzdGlu
ZygpOworICAgIFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U3VzcGVuc2lvbkFsbG93
ZWRGb3JUZXN0aW5nKGFsbG93ZWQpOwogfQogCiAtIChCT09MKV9uZXR3b3JrUHJvY2Vzc0V4aXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggYmViNGMyODU4Y2U5ZDA5NzgwZjc2Yjgz
OThjYWRhNzI2N2U2Mzc4YS4uMDE3MTNlNjAxN2Q1ZDE3MGYwNmQ1OWFhMDk2OWRmZGU4ZDM0N2Zl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC05NSw3ICs5NSw3IEBAIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7
CiAtICh2b2lkKV9zZW5kTmV0d29ya1Byb2Nlc3NQcmVwYXJlVG9TdXNwZW5kOih2b2lkKF4pKHZv
aWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygx
NS4wKSk7CiAtICh2b2lkKV9zZW5kTmV0d29ya1Byb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NlbmRO
ZXR3b3JrUHJvY2Vzc0RpZFJlc3VtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3Mo
MTUuMCkpOwotKyAodm9pZClfcHJldmVudE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkZvclRlc3Rp
bmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
KysgKHZvaWQpX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nOihC
T09MKWFsbG93ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIC0gKHZvaWQpX3N5bnRoZXNpemVBcHBJc0JhY2tncm91bmQ6KEJPT0wpYmFja2dy
b3VuZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAocGlkX3Qp
X25ldHdvcmtQcm9jZXNzSWRlbnRpZmllciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBp
b3MoMTUuMCkpOwogKyAodm9pZClfbWFrZU5leHROZXR3b3JrUHJvY2Vzc0xhdW5jaEZhaWxGb3JU
ZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGFjZDA0ZDg2N2ZkMWEwODAxYmFk
YWRjNTYzNTc3ZTI1ZDg3N2NkODAuLjc3ODU5NTllZjU2NjMxYzVhNTFhNDFhYjgzZTQ5NWVmOTZl
ZDE0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC02MCw2
ICs2MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSkKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5OikgTlNVUkwgKl93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5LCBzZXR0ZXI9X3NldENvb2tpZVN0b3JhZ2VGaWxlOikgTlNVUkwgKl9jb29raWVT
dG9yYWdlRmlsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk6KSBOU1VSTCAqX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNVUkwgKnByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNl
dHRlcj1fc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OikgTlNVUkwgKl9jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3Rvcnk6KSBOU1VSTCAqX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnkg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQppbmRleCA2YTNiNjNjYjY5MDhlYmI5YWU4
MzYxZjQzNjgzOWMwM2VkN2Q2MzZkLi42NTlkNmZkMjVmNGIwYmQ2ZjU4MjRhMTJmZTA2YjljNDhk
NTdlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCkBAIC0x
ODYsNiArMTg2LDIyIEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMQXJndW1lbnQoTlNVUkwgKnVybCkK
ICAgICBfY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSh1
cmwucGF0aCk7CiB9CiAKKy0gKE5TVVJMICopcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdl
RGlyZWN0b3J5Cit7CisgICAgYXV0byYgZGlyZWN0b3J5ID0gX2NvbmZpZ3VyYXRpb24tPnByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSgpOworICAgIGlmIChkaXJlY3Rvcnku
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6ZGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU107Cit9CisKKy0gKHZvaWQpc2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAoreworICAg
IGlmICghX2NvbmZpZ3VyYXRpb24tPmlzUGVyc2lzdGVudCgpKQorICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQ2Fubm90IHNldCBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnkgb24gYSBub24tcGVyc2lzdGVu
dCBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi4iXTsKKyAgICBjaGVja1VSTEFyZ3Vt
ZW50KHVybCk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RvcmFnZURpcmVjdG9yeSh1cmwucGF0aCk7Cit9CisKIC0gKE5TVVJMICopX2NhY2hlU3RvcmFn
ZURpcmVjdG9yeQogewogICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1
cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKaW5kZXggYjFhYzNkNDM4YTJlYTA0NDBjZjIzY2FhNDc1ZDQ3OWY2OTlmN2I5Mi4uNmY3
Y2FkMTdlMTFhY2RhYjRjNjkxZDQzNDZjNzRiYzQwNDM3ODVmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBA
IC0xMjYyLDE1ICsxMjYyLDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nl
c3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nKCkKICAgICAgICAgc2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVz
dGluZ1N5bmMoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5Rm9yVGVzdGluZ1N5bmM6OlJlcGx5KCksIDApOwogfQogCi1zdGF0aWMgYm9vbCBz
X3N1c3BlbnNpb25QcmV2ZW50ZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cHJldmVudFN1c3BlbnNpb25Gb3JUZXN0aW5nKCkKK3N0YXRpYyBib29sIHNf
c3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nIHsgdHJ1ZSB9Owordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRTdXNwZW5zaW9uQWxsb3dlZEZvclRlc3RpbmcoYm9vbCBhbGxvd2VkKQogewot
ICAgIHNfc3VzcGVuc2lvblByZXZlbnRlZEZvclRlc3RpbmcgPSB0cnVlOworICAgIHNfc3VzcGVu
c2lvbkFsbG93ZWRGb3JUZXN0aW5nID0gYWxsb3dlZDsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25JbW1pbmVudCBpc1N1c3Bl
bnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmIChzX3N1c3BlbnNpb25QcmV2ZW50ZWRGb3JUZXN0aW5nKQorICAgIGlm
ICghc19zdXNwZW5zaW9uQWxsb3dlZEZvclRlc3RpbmcpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlByZXBhcmVUb1N1c3BlbmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNTdXNwZW5z
aW9uSW1taW5lbnQ6OlllcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwLCB7IH0sIFNo
b3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpObyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IDRlNWJiNDU5YTNkNzJlM2QxZGQ3MGIyZTVlZjIyYmY0NDA4MTcyMjAuLjZkZGYxNGFkMWI2ZDBj
YTNjZTkwODA2MDYzYWQxZjBhZjZmYzcxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMzQsNyArMjM0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUoKSBmaW5hbDsKICAgICBB
U0NJSUxpdGVyYWwgY2xpZW50TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJOZXR3b3JrUHJv
Y2VzcyJfczsgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHByZXZlbnRTdXNwZW5zaW9uRm9yVGVz
dGluZygpOworICAgIHN0YXRpYyB2b2lkIHNldFN1c3BlbnNpb25BbGxvd2VkRm9yVGVzdGluZyhi
b29sKTsKICAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGlu
ZygpOwogCiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckxlZ2FjeUN1c3RvbVByb3RvY29sKGNv
bnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAyMWJlMjU4MTBiMzI2YjFiMDAwYTE0
Y2FhZWZkZDcyZTgzNzdlNWYxLi5mOTQxYjAxZWJmZWI3ZmFiY2YxMTBhOTE1MzEzYzZlMjg4Mjg1
YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjYxLDYgKzI2MSw4IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKQogICAgICAgICBtX3Jlc29s
dmVkQ29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVh
dGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+
bmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkocmVz
b2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5
KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3Jp
dGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+cHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSAmJiBt
X3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+amF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5KCkpCkBAIC0xOTY0LDEzICsx
OTY2LDIwIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBh
cmFtZXRlcnMoKQogCiAgICAgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKIAotICAg
IGF1dG8gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGF1dG8gcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGU7CiAgICAgaWYgKCFyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rvcnko
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICB9CiAK
KyAgICBhdXRvIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSA9IG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rv
cnkoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yYWdlRGlyZWN0b3J5SGFuZGxlOworICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeUhhbmRsZSA9IFdURk1vdmUoKmhhbmRs
ZSk7CisgICAgfQorCiAgICAgYXV0byBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlZE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVE
aXJlY3RvcnkuaXNFbXB0eSgpKSB7CkBAIC0yMDAwLDYgKzIwMDksOCBAQCBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cyA9IHsKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSwK
ICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlKSwK
KyAgICAgICAgV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnkp
LAorICAgICAgICBXVEZNb3ZlKHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9y
eUhhbmRsZSksCiAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCksCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgaXNJdHBTdGF0ZUV4cGxp
Y2l0bHlTZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRl
eCBjNzAyZDRhN2EzZWU1ZWNiZmFhNjkwYjRjM2FkYTBiMjNkNzBmMzk1Li41ZjUxNjZiNzI4ZTNi
ZGFlZDlkMjU4MzY5NDRiMWQzZGU4M2EyM2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwCkBAIC03Niw2ICs3Niw3IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAog
ICAgIGNvcHktPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSA9IHRoaXMtPm1fYWx0ZXJu
YXRpdmVTZXJ2aWNlc0RpcmVjdG9yeTsKICAgICBjb3B5LT5tX2RldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
OwogICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKKyAgICBjb3B5LT5tX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1famF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkgPSB0aGlzLT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5Owog
ICAgIGNvcHktPm1fY29va2llU3RvcmFnZUZpbGUgPSB0aGlzLT5tX2Nvb2tpZVN0b3JhZ2VGaWxl
OwogICAgIGNvcHktPm1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gdGhpcy0+
bV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAppbmRleCBlZmFhOWM4MGEwYzgyMGRlM2NjYzI2ODE0OWM4NjZhZjAz
YTg0NWFlLi5kNjBiNTlmNGQ5OTJhZDg0ZmEzMTgwYmE0NmIyMjE5MGYwN2FhOWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTExNyw2ICsxMTcsOSBAQCBwdWJs
aWM6CiAgICAgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9CiAgICAg
dm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9y
eSkgeyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9y
eSk7IH0KIAorICAgIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jh
Z2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFn
ZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKwogICAgIGNvbnN0IFN0
cmluZyYgbmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrQ2Fj
aGVEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcm
JiBkaXJlY3RvcnkpIHsgbV9uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9y
eSk7IH0KICAgICAKQEAgLTIwMSw2ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2Fs
dGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGV2aWNlSWRIYXNoU2Fs
dHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGly
ZWN0b3J5OwogICAgIFN0cmluZyBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5Owog
ICAgIFN0cmluZyBtX2Nvb2tpZVN0b3JhZ2VGaWxlOwogICAgIFN0cmluZyBtX3NvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZlM2QzMmIzMjk1YzJjNDRmZDQ0NDRjZGQ3ZjE0MWYy
NDAwNGNhMDIuLmRjZTE5MzNmZjNkNGMwZjE1OTQwMjU3ZjAxMmZkNTY4MWRkMDM0OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3
MSw2ICsxMjcxLDggQEAKIAkJNUM3OTVENzAyMjlGMzczRjAwM0ZGMUM0IC8qIFdLQ29udGV4dE1l
bnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNFMEMzNjkyMjlGMkQ0QTAwMzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNUM3
OTVENzEyMjlGMzc1NzAwM0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTBDMzZB
MjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm9Qcml2YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM3RkI0NzAy
MUU5N0RDNTAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3RkI0NkYyMUU5N0MwQzAwOUUzMjQxIC8qIFdlYkNv
b2tpZUphci5oICovOyB9OworCQk1QzgyNkQ2QjI2RDQ4MkVGMDA4QUVDOTEgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUM4MjZENjgyNkQ0NkI0NDAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmUuaCAqLzsgfTsKKwkJNUM4MjZENkMyNkQ0ODJGMjAwOEFFQzkxIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDODI2RDY5MjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi87IH07CiAJCTVDOEJDNzk3MjE4Q0JCNDgwMDgxMzg4
NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEJDNzk2MjE4Q0I1OEEwMDgxMzg4NiAvKiBTYWZlQnJvd3Np
bmcueGNhc3NldHMgKi87IH07CiAJCTVDOEREMzgwMUZFNDUyMTYwMEYyQTU1NiAvKiBXZWJzaXRl
QXV0b3BsYXlQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDOEREMzdGMUZFNDUxOTIwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3ku
aCAqLzsgfTsKIAkJNUM5QTkxMTEyMjhGNjlDQzAwNUM1QjE3IC8qIFhQQ1NlcnZpY2VNYWluLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MjgzOTYx
NkI0N0VDNDAwQTI3OEZFIC8qIFhQQ1NlcnZpY2VNYWluLm1tICovOyB9OwpAQCAtNDUwOSw2ICs0
NTExLDEyIEBACiAJCTVDN0ZCNDZGMjFFOTdDMEMwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29va2llSmFyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODBCM0RCMjM2OTBEOEQwMDg2RTZERSAvKiBTZXJ2aWNl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM4MEIzREQyMzY5MEYxMDAwODZFNkRFIC8qIFNlcnZpY2VXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDODI2RDY3MjZENDZCNDMwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzgyNkQ2ODI2RDQ2QjQ0MDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDY5MjZENDgy
RUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM4MjZENkEyNkQ0ODJFQTAwOEFFQzkx
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDODI2RDZFMjZENThBMTYwMDhBRUM5MSAv
KiBEYXRhYmFzZVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEYXRhYmFzZVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDODI2RDZGMjZENThBMTYwMDhBRUM5MSAvKiBEYXRhYmFzZVV0aWxpdGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVV0aWxpdGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Qzg0Q0Y5MDFGOTZBQzRFMDBCNjcwNUEgLyogTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM4NUM3ODYxQzNGMjNDNTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZW5kaW5nRG93bmxvYWQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzg5REY1NjIxQUY2MUZGMDA0NjQ1
RTggLyogTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU0Niw2ICs0NTU0LDggQEAKIAkJ
NUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFU
YXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtEYXRhVGFzay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0Yg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNCRTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVD
bGlja01lYXN1cmVtZW50RGVidWdJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQkU5MDkwMjZEN0ZCN0MwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVn
SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZEJ1ZmZlckNvcHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUNEMjg2NDkxRTcyMkY0NDAwOTRGREM4IC8qIF9XS1VzZXJDb250
ZW50RmlsdGVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tV
c2VyQ29udGVudEZpbHRlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUNEMjg2NEExRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGVudFJ1bGVMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04NjcyLDkgKzg2ODIsMTIgQEAKIAkJCQk5MzkyODhFMDIxNDA0
REYwMDBFQkJBMzMgLyogSW5kZXhlZERCICovLAogCQkJCTJEQTk0NEJCMTg4NTExREQwMEVEODZE
QiAvKiBpb3MgKi8sCiAJCQkJNTEwQ0M3REMxNjEzOEUyOTAwRDAzRUQzIC8qIG1hYyAqLywKKwkJ
CQk1QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0MkYgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKi8s
CiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VXb3JrZXIgKi8sCiAJCQkJ
NDEzMDc1OTcxREU4NEVENzAwMzlFQzY5IC8qIHdlYnJ0YyAqLywKIAkJCQk5M0IyNjE0MzIyN0Qx
NDMxMDBCOTdBNzYgLyogV2ViU3RvcmFnZSAqLywKKwkJCQk1QzgyNkQ2RTI2RDU4QTE2MDA4QUVD
OTEgLyogRGF0YWJhc2VVdGlsaXRpZXMuY3BwICovLAorCQkJCTVDODI2RDZGMjZENThBMTYwMDhB
RUM5MSAvKiBEYXRhYmFzZVV0aWxpdGllcy5oICovLAogCQkJCTUzRjNDQUE1MjA2QzQ0M0UwMDg2
NDkwRSAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcCAqLywKIAkJCQk1MzVCQ0I5MDIwNjlD
NDlDMDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oICovLAogCQkJCTQ2RUUyODRC
MjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAq
LywKQEAgLTkyNDMsNiArOTI1NiwxOSBAQAogCQkJcGF0aCA9IFNPQXV0aG9yaXphdGlvbjsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTVDMDFCQzM1MjZENDZBRDQwMEZFQjQy
RiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJNUM4MjZENkEyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwICovLAorCQkJCTVDODI2RDY5MjZENDgyRUEwMDhB
RUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi8sCisJCQkJNUNCRTkw
OTAyNkQ3RkI3QzAwNUEyRTk1IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNw
cCAqLywKKwkJCQk1Q0JFOTA4RjI2RDdGQjYyMDA1QTJFOTUgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREZWJ1Z0luZm8uaCAqLywKKwkJCQk1QzgyNkQ2NzI2RDQ2QjQzMDA4QUVDOTEgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgKi8sCisJCQkJNUM4MjZENjgyNkQ0NkI0NDAw
OEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQk1QzE0MjZGMTFDMjNGODE3MDBENDExODMgLyogRG93bmxvYWRzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEyMzA2LDggKzEyMzMyLDEw
IEBACiAJCQkJQzE1Q0JCMzYyM0YzNzc3MTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUFCMTQ1RTYyMjNGOTMxMjAwRTQ4OUQ4IC8qIFByZWZldGNo
Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQ0MxQjkwMTJEN0VBREYwMDYyNTgzOCAvKiBQ
cmludEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTVDODI2RDZDMjZENDgyRjIwMDhBRUM5MSAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
QkQwNTg2NTIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZFNjg4QzI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Qzgy
NkQ2QjI2RDQ4MkVGMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFByb2Nlc3NBc3Nl
cnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4MTEzNkUxOUMwMEZCNzE2NyAvKiBQ
cm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2M0ZENDgyMUVCOTRFQzAwMEEy
OTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNlNGMwMjFmZDA5
MWY5OGJiYjBkNmYwZTcxMmJlYjgzOTJmYjJlYTIuLjVhZjRiYjNhOWUyYTgwNTFlY2U2Zjg0YjM2
ZmUxM2VmMzA3ZWJmODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wOC0yNyAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFNlcGFyYXRlIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50IGRhdGFiYXNlIGZyb20gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBkYXRhYmFz
ZSBhbmQgYWRkIFNQSSB0byBzZXQgaXRzIGxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBL
YXRlIENoZW5leS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RXZlbnRBdHRyaWJ1dGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkJhc2ljRXZl
bnRBdHRyaWJ1dGlvblRlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTA4LTI3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI4MTUxNik6IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL3NlcmlhbGl6ZS1zaGFyZWRhcnJheWJ1
ZmZlci10aHJvd3MuaHR0cHMuaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0KaW5kZXgg
YzgwY2E3MTZjYzAyMWE0Yjg5NjFlODAzNGViNDAwODAzZTQ4ZjUxNC4uZTAyMmEwZjNhNzFhODM3
MzVmMzdlYzI0MTY2M2VlZjhjYmU2YjllNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQpAQCAtMjgsMTAg
KzI4LDEyIEBACiAjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0
aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAKICNpZiBI
QVZFKFJTQV9CU1NBKQogCkBAIC03OCw5ICs4MCw5IEBAIHN0YXRpYyBOU1VSTCAqZXhhbXBsZVVS
TCgpCiAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNv
bS8iXTsKIH0KIAotdm9pZCBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KEZ1bmN0aW9uPHZv
aWQoV0tXZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXImKT4mJiBhZGRBdHRyaWJ1dGlvblRvV2Vi
VmlldykKK3ZvaWQgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChXS1dlYlZpZXdDb25maWd1
cmF0aW9uICpjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKFdLV2ViVmlldyAqLCBjb25zdCBI
VFRQU2VydmVyJik+JiYgYWRkQXR0cmlidXRpb25Ub1dlYlZpZXcpCiB7Ci0gICAgW1dLV2Vic2l0
ZURhdGFTdG9yZSBfcHJldmVudE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkZvclRlc3RpbmddOwor
ICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93
ZWRGb3JUZXN0aW5nOk5PXTsKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBIVFRQU2VydmVy
IHNlcnZlcihbJmRvbmUsIGNvbm5lY3Rpb25Db3VudCA9IDBdIChDb25uZWN0aW9uIGNvbm5lY3Rp
b24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CkBAIC0x
MTMsNyArMTE1LDcgQEAgdm9pZCBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KEZ1bmN0aW9u
PHZvaWQoV0tXZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXImKT4KICAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMpOwogICAgIE5TVVJMICpzZXJ2ZXJVUkwgPSBzZXJ2ZXIucmVxdWVz
dCgpLlVSTDsKIAotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBjb25maWd1cmF0aW9uID8gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pIDogYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIGFkZEF0dHJpYnV0aW9uVG9XZWJW
aWV3KHdlYlZpZXcuZ2V0KCksIHNlcnZlcik7CiAgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
LndlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107
CiAgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUgX2FsbG93VExT
Q2VydGlmaWNhdGVDaGFpbjpAWyhpZCl0ZXN0Q2VydGlmaWNhdGUoKS5nZXQoKV0gZm9ySG9zdDpz
ZXJ2ZXJVUkwuaG9zdF07CkBAIC0xMjksNyArMTMxLDcgQEAgdm9pZCBydW5CYXNpY0V2ZW50QXR0
cmlidXRpb25UZXN0KEZ1bmN0aW9uPHZvaWQoV0tXZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXIm
KT4KICNpZiBIQVZFKFJTQV9CU1NBKQogVEVTVChFdmVudEF0dHJpYnV0aW9uLCBGcmF1ZFByZXZl
bnRpb24pCiB7Ci0gICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfcHJldmVudE5ldHdvcmtQcm9jZXNz
U3VzcGVuc2lvbkZvclRlc3RpbmddOworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldE5ldHdv
cmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nOk5PXTsKICAgICBib29sIGRvbmUg
PSBmYWxzZTsKIAogICAgIC8vIEdlbmVyYXRlIHRoZSBzZXJ2ZXIga2V5IHBhaXIuCkBAIC0yODIs
MTYgKzI4NCw2MSBAQCBURVNUKEV2ZW50QXR0cmlidXRpb24sIEZyYXVkUHJldmVudGlvbikKIAog
VEVTVChFdmVudEF0dHJpYnV0aW9uLCBCYXNpYykKIHsKLSAgICBydW5CYXNpY0V2ZW50QXR0cmli
dXRpb25UZXN0KFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVy
KSB7CisgICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChuaWwsIFtdKFdLV2ViVmlldyAq
d2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CiAgICAgICAgIFt3ZWJWaWV3IF9h
ZGRFdmVudEF0dHJpYnV0aW9uV2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVV
UkwoKSBzb3VyY2VEZXNjcmlwdGlvbjpAInRlc3Qgc291cmNlIGRlc2NyaXB0aW9uIiBwdXJjaGFz
ZXI6QCJ0ZXN0IHB1cmNoYXNlciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwg
b3B0aW9uYWxOb25jZTpuaWxdOwogICAgIH0pOwogfQogCitURVNUKEV2ZW50QXR0cmlidXRpb24s
IERhdGFiYXNlTG9jYXRpb24pCit7CisgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIkV2ZW50QXR0cmlidXRpb25EYXRhYmFzZUxvY2F0aW9uVGVzdCJd
IGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRo
OnRlbXBEaXIucGF0aF0pCisgICAgICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6dGVt
cERpciBlcnJvcjpuaWxdOworCisgICAgYXV0byB3ZWJWaWV3VG9LZWVwTmV0d29ya1Byb2Nlc3NB
bGl2ZSA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXdUb0tlZXBO
ZXR3b3JrUHJvY2Vzc0FsaXZlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInN0YXJ0IG5l
dHdvcmsgcHJvY2VzcyJdOworCisgICAgcGlkX3Qgb3JpZ2luYWxOZXR3b3JrUHJvY2Vzc1BpZCA9
IDA7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gZGF0YVN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10p
OworICAgICAgICBkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLnByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmFnZURpcmVjdG9yeSA9IHRlbXBEaXI7CisgICAgICAgIGF1dG8gdmlld0NvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgICAg
ICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
ICAgICB2aWV3Q29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0b3Jl
LmdldCgpOworICAgICAgICBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KHZpZXdDb25maWd1
cmF0aW9uLmdldCgpLCBbXShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNl
cnZlcikgeworICAgICAgICAgICAgW3dlYlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25XaXRoU291
cmNlSUQ6NDIgZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0aW9uOkAi
dGVzdCBzb3VyY2UgZGVzY3JpcHRpb24iIHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2VyIiByZXBv
cnRFbmRwb2ludDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBvcHRpb25hbE5vbmNlOm5pbF07CisgICAg
ICAgIH0pOworICAgICAgICBvcmlnaW5hbE5ldHdvcmtQcm9jZXNzUGlkID0gW2RhdGFTdG9yZSBf
bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyXTsKKyAgICAgICAgRVhQRUNUX0dUKG9yaWdpbmFsTmV0
d29ya1Byb2Nlc3NQaWQsIDApOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBzdXNwZW5kZWQgPSBm
YWxzZTsKKyAgICAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0TmV0d29ya1Byb2Nlc3NTdXNw
ZW5zaW9uQWxsb3dlZEZvclRlc3Rpbmc6WUVTXTsKKyAgICAgICAgW2RhdGFTdG9yZSBfc2VuZE5l
dHdvcmtQcm9jZXNzUHJlcGFyZVRvU3VzcGVuZDpeeworICAgICAgICAgICAgc3VzcGVuZGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIFtkYXRhU3RvcmUgX3NlbmROZXR3b3JrUHJvY2Vzc0RpZFJlc3Vt
ZV07CisgICAgICAgIH1dOworICAgICAgICBVdGlsOjpydW4oJnN1c3BlbmRlZCk7CisgICAgICAg
IFV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICB9CisgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTAp
OworICAgIHVzbGVlcCgxMDAwMDApOworICAgIFV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKworICAg
IEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0p
OworICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOlt0ZW1wRGly
LnBhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicGNtLmRiIl1dKTsKKworICAg
IFt3ZWJWaWV3VG9LZWVwTmV0d29ya1Byb2Nlc3NBbGl2ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCJzdGFydCBuZXR3b3JrIHByb2Nlc3MgYWdhaW4gaWYgaXQgY3Jhc2hlZCBkdXJpbmcg
dGVhcmRvd24iXTsKKyAgICBFWFBFQ1RfRVEod2ViVmlld1RvS2VlcE5ldHdvcmtQcm9jZXNzQWxp
dmUuZ2V0KCkuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLl9uZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXIsIG9yaWdpbmFsTmV0d29ya1Byb2Nlc3NQaWQpOworfQorCisvLyBGSVhNRTogV3Jp
dGUgYSB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhhdCBkYXRhIGlzIG1pZ3JhdGVkIGZyb20gb2xkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MgZGF0YWJhc2VzIHRvIHRoZSBuZXcgUENNIGRhdGFiYXNlLgor
CiAjaWYgSEFWRShVSV9FVkVOVF9BVFRSSUJVVElPTikKIAogVEVTVChFdmVudEF0dHJpYnV0aW9u
LCBCYXNpY1dpdGhJT1NTUEkpCiB7Ci0gICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChb
XShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgeworICAgIHJ1
bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QobmlsLCBbXShXS1dlYlZpZXcgKndlYlZpZXcsIGNv
bnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgewogICAgICAgICBhdXRvIGF0dHJpYnV0aW9uID0gYWRv
cHROUyhbW01vY2tFdmVudEF0dHJpYnV0aW9uIGFsbG9jXSBpbml0V2l0aFJlcG9ydEVuZHBvaW50
OnNlcnZlci5yZXF1ZXN0KCkuVVJMIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKV0pOwogICAg
ICAgICB3ZWJWaWV3Ll91aUV2ZW50QXR0cmlidXRpb24gPSAoVUlFdmVudEF0dHJpYnV0aW9uICop
YXR0cmlidXRpb24uZ2V0KCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5t
bQppbmRleCBiZDFlMjdhOTEwMmQxNzJiZWY5YjQ4ZDAzY2JhMDZhMDllYzUwNDZkLi41NjBkMTMw
MDBiZWJkMDEyMDU2YzI0NjQyNTE3ZDQ2ZTRiZmIyOTc1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQubW0KQEAgLTMyLDYgKzMyLDggQEAKICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCisv
LyBGSVhNRTogSW1wbGVtZW50IG1pZ3JhdGlvbiBmcm9tIG9sZGVyIGRhdGFiYXNlcyBhbmQgZ2V0
IHRoZXNlIHRlc3RzIHdvcmtpbmcgYXMgdGhleSBzaG91bGQgYWdhaW4uCisKIFRFU1QoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsIEFkZE1pc3NpbmdQQ01GcmF1ZFByZXZlbnRpb25Db2x1bW5zKQog
ewogICAgIGF1dG8gKnNoYXJlZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bvb2wgX3NoYXJlZFBy
b2Nlc3NQb29sXTsKQEAgLTYyLDkgKzY0LDkgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgQWRkTWlzc2luZ1BDTUZyYXVkUHJldmVudGlvbkNvbHVtbnMpCiAgICAgLy8gQ2hlY2sgdGhl
IGNvbHVtbnMgb2YgUENNIHRhYmxlcyB0byBtYWtlIHN1cmUgZnJhdWQgcHJldmVudGlvbiBjb2x1
bW5zIHdlcmUgYWRkZWQuCiAgICAgX19ibG9jayBib29sIGRvbmVGbGFnID0gZmFsc2U7CiAgICAg
W2RhdGFTdG9yZSBfc3RhdGlzdGljc0RhdGFiYXNlQ29sdW1uc0ZvclRhYmxlOkAiVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxO
U1N0cmluZyAqPiAqdGFibGVTY2hlbWEpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoW3RhYmxlU2No
ZW1hIGNvbnRhaW5zT2JqZWN0OkAidG9rZW4iXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFt0YWJs
ZVNjaGVtYSBjb250YWluc09iamVjdDpAImtleUlEIl0pOwotICAgICAgICBFWFBFQ1RfVFJVRShb
dGFibGVTY2hlbWEgY29udGFpbnNPYmplY3Q6QCJzaWduYXR1cmUiXSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShbdGFibGVTY2hlbWEgY29udGFpbnNPYmplY3Q6QCJ0b2tlbiJdKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKFt0YWJsZVNjaGVtYSBjb250YWluc09iamVjdDpAImtleUlEIl0pOworICAg
ICAgICBFWFBFQ1RfRkFMU0UoW3RhYmxlU2NoZW1hIGNvbnRhaW5zT2JqZWN0OkAic2lnbmF0dXJl
Il0pOwogICAgICAgICBkb25lRmxhZyA9IHRydWU7CiAgICAgfV07CiAKQEAgLTcyLDkgKzc0LDkg
QEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgQWRkTWlzc2luZ1BDTUZyYXVkUHJldmVu
dGlvbkNvbHVtbnMpCiAKICAgICBkb25lRmxhZyA9IGZhbHNlOwogICAgIFtkYXRhU3RvcmUgX3N0
YXRpc3RpY3NEYXRhYmFzZUNvbHVtbnNGb3JUYWJsZTpAIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCIgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICp0YWJs
ZVNjaGVtYSkgewotICAgICAgICBFWFBFQ1RfVFJVRShbdGFibGVTY2hlbWEgY29udGFpbnNPYmpl
Y3Q6QCJ0b2tlbiJdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW3RhYmxlU2NoZW1hIGNvbnRhaW5z
T2JqZWN0OkAia2V5SUQiXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFt0YWJsZVNjaGVtYSBjb250
YWluc09iamVjdDpAInNpZ25hdHVyZSJdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFt0YWJsZVNj
aGVtYSBjb250YWluc09iamVjdDpAInRva2VuIl0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW3Rh
YmxlU2NoZW1hIGNvbnRhaW5zT2JqZWN0OkAia2V5SUQiXSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShbdGFibGVTY2hlbWEgY29udGFpbnNPYmplY3Q6QCJzaWduYXR1cmUiXSk7CiAgICAgICAgIGRv
bmVGbGFnID0gdHJ1ZTsKICAgICB9XTsKIApAQCAtMTExLDggKzExMyw4IEBAIFRFU1QoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsIEFkZE1pc3NpbmdQQ01SZXBvcnRpbmdDb2x1bW5zKQogICAgIC8v
IENoZWNrIHRoZSBjb2x1bW5zIG9mIHRoZSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgdGFibGUgdG8gbWFrZSBzdXJlIG5ldyByZXBvcnRpbmcgY29sdW1ucyB3ZXJlIGFkZGVkLgog
ICAgIF9fYmxvY2sgYm9vbCBkb25lRmxhZyA9IGZhbHNlOwogICAgIFtkYXRhU3RvcmUgX3N0YXRp
c3RpY3NEYXRhYmFzZUNvbHVtbnNGb3JUYWJsZTpAIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCIgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICp0YWJsZVNj
aGVtYSkgewotICAgICAgICBFWFBFQ1RfVFJVRShbdGFibGVTY2hlbWEgY29udGFpbnNPYmplY3Q6
QCJlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSJdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW3Rh
YmxlU2NoZW1hIGNvbnRhaW5zT2JqZWN0OkAiZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlv
biJdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFt0YWJsZVNjaGVtYSBjb250YWluc09iamVjdDpA
ImVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIl0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW3Rh
YmxlU2NoZW1hIGNvbnRhaW5zT2JqZWN0OkAiZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlv
biJdKTsKICAgICAgICAgZG9uZUZsYWcgPSB0cnVlOwogICAgIH1dOwogCkBAIC0xNDksNyArMTUx
LDcgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgUmVuYW1lRGVzdGluYXRpb25TaXRl
Q29sdW1uKQogICAgIC8vIENoZWNrIHRoZSBjb2x1bW5zIG9mIHRoZSBBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgdGFibGUgdG8gbWFrZSBzdXJlIG5ldyByZXBvcnRpbmcgY29sdW1u
cyB3ZXJlIGFkZGVkLgogICAgIF9fYmxvY2sgYm9vbCBkb25lRmxhZyA9IGZhbHNlOwogICAgIFtk
YXRhU3RvcmUgX3N0YXRpc3RpY3NEYXRhYmFzZUNvbHVtbnNGb3JUYWJsZTpAIkF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCIgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3Ry
aW5nICo+ICp0YWJsZVNjaGVtYSkgewotICAgICAgICBFWFBFQ1RfVFJVRShbdGFibGVTY2hlbWEg
Y29udGFpbnNPYmplY3Q6QCJkZXN0aW5hdGlvblNpdGVEb21haW5JRCJdKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKFt0YWJsZVNjaGVtYSBjb250YWluc09iamVjdDpAImRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEIl0pOwogICAgICAgICBkb25lRmxhZyA9IHRydWU7CiAgICAgfV07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>