<?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>175995</bug_id>
          
          <creation_ts>2017-08-25 14:10:19 -0700</creation_ts>
          <short_desc>[Cache API] Support cache names persistency</short_desc>
          <delta_ts>2017-08-31 14:21:36 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=176164</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=176185</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jlewis3</cc>
    
    <cc>koivisto</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1342517</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-25 14:10:19 -0700</bug_when>
    <thetext>Add support for cache names persistency</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342549</commentid>
    <comment_count>1</comment_count>
      <attachid>319106</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-25 15:43:57 -0700</bug_when>
    <thetext>Created attachment 319106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342550</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-25 15:46:28 -0700</bug_when>
    <thetext>Attachment 319106 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:125:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 3 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342552</commentid>
    <comment_count>3</comment_count>
      <attachid>319107</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-25 15:58:40 -0700</bug_when>
    <thetext>Created attachment 319107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342554</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-25 15:59:41 -0700</bug_when>
    <thetext>Attachment 319107 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:125:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 3 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342570</commentid>
    <comment_count>5</comment_count>
      <attachid>319114</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-25 16:28:50 -0700</bug_when>
    <thetext>Created attachment 319114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342571</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-25 16:31:20 -0700</bug_when>
    <thetext>Attachment 319114 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:125:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:123:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342589</commentid>
    <comment_count>7</comment_count>
      <attachid>319119</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-25 17:03:52 -0700</bug_when>
    <thetext>Created attachment 319119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342592</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-25 17:06:32 -0700</bug_when>
    <thetext>Attachment 319119 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:125:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:123:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342882</commentid>
    <comment_count>9</comment_count>
      <attachid>319119</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-28 12:15:01 -0700</bug_when>
    <thetext>Comment on attachment 319119
Patch

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

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.h:49
&gt; +    // Used only for testing purposes.
&gt; +    virtual void setPersistency(const String&amp; /* origin */, bool /* isPersistent */, DOMCache::CompletionCallback&amp;&amp; callback) { callback(DOMCache::Error::NotImplemented); }

Maybe we should call this setPersistencyForTesting, and I think we should do something similar to setPrivateBrowsingEnabled instead and use SessionID to determine whether a cache should touch the disk or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342919</commentid>
    <comment_count>10</comment_count>
      <attachid>319201</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-28 13:36:47 -0700</bug_when>
    <thetext>Created attachment 319201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342921</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-28 13:39:00 -0700</bug_when>
    <thetext>Attachment 319201 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:125:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:122:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342922</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-28 13:41:22 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 319119 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319119&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/cache/CacheStorageConnection.h:49
&gt; &gt; +    // Used only for testing purposes.
&gt; &gt; +    virtual void setPersistency(const String&amp; /* origin */, bool /* isPersistent */, DOMCache::CompletionCallback&amp;&amp; callback) { callback(DOMCache::Error::NotImplemented); }
&gt; 
&gt; Maybe we should call this setPersistencyForTesting, and I think we should do
&gt; something similar to setPrivateBrowsingEnabled instead and use SessionID to
&gt; determine whether a cache should touch the disk or not.

I was not sure whether we wanted to implement cache API in private browsing with in-memory-only caches. Let&apos;s do it then.
This will probably end up having a much smaller quota for private browsing than for regular sessions.

I removed setPersistencyForTesting and used setPrivateBrowsingEnabled in the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342938</commentid>
    <comment_count>13</comment_count>
      <attachid>319201</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-28 14:13:05 -0700</bug_when>
    <thetext>Comment on attachment 319201
Patch

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

&gt; Source/WebCore/Modules/cache/DOMCache.cpp:44
&gt; +        return Exception { TypeError, ASCIILiteral(&quot;Failed reading data from disk&quot;) };

I&apos;m not sure &apos;disk&apos; is the best name here, as many machines don&apos;t have hard-disks anymore. I like &apos;FileSystem&apos; as a modifier, but I am sure we could come up with others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342955</commentid>
    <comment_count>14</comment_count>
      <attachid>319201</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-28 14:54:34 -0700</bug_when>
    <thetext>Comment on attachment 319201
Patch

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

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:47
&gt; +    String sessionSubdirectory = ASCIILiteral(&quot;session&quot;) + String::number(sessionID.sessionID());
&gt; +    return WebCore::pathByAppendingComponent(NetworkProcess::singleton().cacheStorageDirectory(), sessionSubdirectory);

This should be a String from the WebsiteDataStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342991</commentid>
    <comment_count>15</comment_count>
      <attachid>319219</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-28 17:05:40 -0700</bug_when>
    <thetext>Created attachment 319219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342992</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-28 17:07:31 -0700</bug_when>
    <thetext>Attachment 319219 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:125:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:117:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342993</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-28 17:08:57 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #13)
&gt; Comment on attachment 319201 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319201&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/cache/DOMCache.cpp:44
&gt; &gt; +        return Exception { TypeError, ASCIILiteral(&quot;Failed reading data from disk&quot;) };
&gt; 
&gt; I&apos;m not sure &apos;disk&apos; is the best name here, as many machines don&apos;t have
&gt; hard-disks anymore. I like &apos;FileSystem&apos; as a modifier, but I am sure we
&gt; could come up with others.

Changed to &quot;file system&quot;.

(In reply to Alex Christensen from comment #14)
&gt; Comment on attachment 319201 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319201&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:47
&gt; &gt; +    String sessionSubdirectory = ASCIILiteral(&quot;session&quot;) + String::number(sessionID.sessionID());
&gt; &gt; +    return WebCore::pathByAppendingComponent(NetworkProcess::singleton().cacheStorageDirectory(), sessionSubdirectory);
&gt; 
&gt; This should be a String from the WebsiteDataStore.

I added a new parameter to WebsiteDataStoreParameters to pass the sub folder name.
This enforces one main folder for cache storage and one subfolder for each cache storage engine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343001</commentid>
    <comment_count>18</comment_count>
      <attachid>319221</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-28 17:38:06 -0700</bug_when>
    <thetext>Created attachment 319221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343004</commentid>
    <comment_count>19</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-28 17:41:12 -0700</bug_when>
    <thetext>Attachment 319221 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:125:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:118:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343304</commentid>
    <comment_count>20</comment_count>
      <attachid>319303</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-29 16:36:51 -0700</bug_when>
    <thetext>Created attachment 319303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343306</commentid>
    <comment_count>21</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-29 16:38:55 -0700</bug_when>
    <thetext>Attachment 319303 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:105:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:129:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:111:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343676</commentid>
    <comment_count>22</comment_count>
      <attachid>319303</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-30 13:41:54 -0700</bug_when>
    <thetext>Comment on attachment 319303
Patch

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

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:246
&gt; +    if (!shouldPersist()) {
&gt; +        m_salt = makeSalt();

I don&apos;t think we should need  a salt of it&apos;s not persistent.

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:361
&gt; +            callback(std::nullopt);

Let&apos;s put an ASSERT(RunLoop::isMain()); here.

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:384
&gt; +            callback(data, error);

Same here.  It might be worth having a bunch of such assertions.

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:163
&gt; +    Vector&lt;String&gt; names;
&gt; +    names.reserveInitialCapacity(count);

We should use the VectorCoders and put the reserveInitialCapacity optimization in them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343718</commentid>
    <comment_count>23</comment_count>
      <attachid>319409</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-30 14:54:09 -0700</bug_when>
    <thetext>Created attachment 319409
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343722</commentid>
    <comment_count>24</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-30 14:56:51 -0700</bug_when>
    <thetext>Attachment 319409 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:105:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:128:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:111:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343737</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-30 15:22:16 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #22)
&gt; Comment on attachment 319303 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319303&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:246
&gt; &gt; +    if (!shouldPersist()) {
&gt; &gt; +        m_salt = makeSalt();
&gt; 
&gt; I don&apos;t think we should need  a salt of it&apos;s not persistent.

Will do as a follow-up

&gt; &gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:361
&gt; &gt; +            callback(std::nullopt);
&gt; 
&gt; Let&apos;s put an ASSERT(RunLoop::isMain()); here.

OK

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:384
&gt; &gt; +            callback(data, error);
&gt; 
&gt; Same here.  It might be worth having a bunch of such assertions.

OK

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:163
&gt; &gt; +    Vector&lt;String&gt; names;
&gt; &gt; +    names.reserveInitialCapacity(count);
&gt; 
&gt; We should use the VectorCoders and put the reserveInitialCapacity
&gt; optimization in them.

I sticked with the current decoder since the encoder side is not using the Vector encoder either as it would need to create a vector of string for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343761</commentid>
    <comment_count>26</comment_count>
      <attachid>319409</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-30 15:50:26 -0700</bug_when>
    <thetext>Comment on attachment 319409
Patch for landing

Clearing flags on attachment: 319409

Committed r221403: &lt;http://trac.webkit.org/changeset/221403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343762</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-30 15:50:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343763</commentid>
    <comment_count>28</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-30 15:51:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/34174534&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343940</commentid>
    <comment_count>29</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-08-31 09:04:30 -0700</bug_when>
    <thetext>The LayoutTest added with this change (http/tests/cache-storage/cache-persistency.https.html) is failing an assertion on El Capitan:

ASSERTION FAILED: position != notFound
/Volumes/Data/slave/elcapitan-debug/build/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp(130) : void WebKit::CacheStorage::Caches::remove(uint64_t, CompletionCallback &amp;&amp;)

https://build.webkit.org/results/Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/r221417%20(2811)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343947</commentid>
    <comment_count>30</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-31 09:31:42 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #29)
&gt; The LayoutTest added with this change
&gt; (http/tests/cache-storage/cache-persistency.https.html) is failing an
&gt; assertion on El Capitan:
&gt; 
&gt; ASSERTION FAILED: position != notFound
&gt; /Volumes/Data/slave/elcapitan-debug/build/Source/WebKit/NetworkProcess/cache/
&gt; CacheStorageEngineCaches.cpp(130) : void
&gt; WebKit::CacheStorage::Caches::remove(uint64_t, CompletionCallback &amp;&amp;)
&gt; 
&gt; https://build.webkit.org/results/
&gt; Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/r221417%20(2811)/results.html

Will have a look at it.
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344093</commentid>
    <comment_count>31</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-08-31 13:06:23 -0700</bug_when>
    <thetext>This change also caused several imported tests to fail intermittently and some to start timing out intermittently:

Text diff:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=imported%2Fw3c%2Fweb-platform-tests%2Fservice-workers%2Fcache-storage%2Fwindow%2Fcache-storage-keys.https.html
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=imported%2Fw3c%2Fweb-platform-tests%2Fservice-workers%2Fcache-storage%2Fworker%2Fcache-storage-keys.https.html

Timeout:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=imported%2Fw3c%2Fweb-platform-tests%2Fservice-workers%2Fcache-storage%2Fcommon.https.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319106</attachid>
            <date>2017-08-25 15:43:57 -0700</date>
            <delta_ts>2017-08-25 15:58:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175995-20170825154356.patch</filename>
            <type>text/plain</type>
            <size>57677</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWYxMjFkOGFiZjI2MzYx
NTlhMGU4YzcyNzg0OGYwM2I3M2M4YjA4Zi4uM2FhYjllYzYyNWE4OGIwZTg5N2NlNmM0OGRhMTZk
N2E0YjNlZDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBw
b3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cGVyc2lzdGVuY3kuaHR0cHMuaHRtbAorCisgICAgICAgIEFkZGluZyBtZXRob2QgdG8gY2xlYXIg
dGhlIG1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FjaGUgc3RvcmFnZS4KKyAgICAgICAg
QWRkaW5nIG1ldGhvZCB0byBzZXQgdGhlIGNhY2hlIHN0b3JhZ2UgcGVyc2lzdGVuY3kgKGkuZS4g
d2hldGhlciB0aGUgY2FjaGUgc3RvcmFnZSB3aWxsIHJlYWQvd3JpdGUgb24gdGhlIGRpc2spLgor
ICAgICAgICBFeHBvc2luZyB0aGVzZSBtZXRob2RzIGFzIGludGVybmFscyBzbyB0aGF0IGxheW91
dCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBwZXJzaXN0ZW5jeS4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBSZWFkRGlzayBhbmQgV3JpdGVEaXNrIGVycm9ycyB0aGF0IGFyZSB1c2VkIGJ5
IENhY2hlU3RvcmFnZTo6RW5naW5lLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjplcnJvclRvRXhj
ZXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRD
YWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE3LTA4
LTI0ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAxMGJlYmVjNDBmNWE0N2VkNjZiYmZjOGUyOThmNDVhZjYxMGIzOTVlLi5iMGNi
NGViNjJlMDgyZjBjMDc1ZGZhZDJkZjZhZmU3ZjllYzRlZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDg1IEBACiAyMDE3LTA4LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAor
ICAgICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgZGlzayBy
ZWFkL3dyaXRlIGNhcGFjaXRpZXMgdG8gQ2FjaGVTdG9yYWdlIGVuZ2luZS4KKyAgICAgICAgVGhp
cyBpcyB1c2VkIHRvIHN0b3JlIHBlci1vcmlnaW4gY2FjaGUgbmFtZXMgaW4gYSBmaWxlLgorICAg
ICAgICBNYWtpbmcgRW5naW5lIGEgdGhyZWFkIHNhZmUgcmVmY291bnRlZCBvYmplY3Qgc28gdGhh
dCBpdCBkb2VzIHJlYWQvd3JpdGUgaW4gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBDYWNoZVN0b3JhZ2U6OkNhY2hlcyBhcyB0aGUgb2JqZWN0IG1hbmFnaW5nIHRo
ZSBsaXN0IG9mIENhY2hlIG9iamVjdHMgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorICAgICAgICBDYWNo
ZXMgd2lsbCBiZSByZXNwb25zaWJsZSB0byBkbyBhbGwgdGhlIHJlYWQvd3JpdGUgb3BlcmF0aW9u
cyBmb3IgYWxsIG9mIGl0cyBjYWNoZXMuCisgICAgICAgIEl0IHdpbGwgYmUgcmVzcG9uc2libGUg
Zm9yIHF1b3RhIGxpbWl0YXRpb24gYXMgd2VsbC4KKworICAgICAgICBNb3ZpbmcgcGFydCBvZiB0
aGUgbG9naWMgZnJvbSBDYWNoZVN0b3JhZ2U6OkVuZ2luZSBpbnRvIENhY2hlU3RvcmFnZTo6Q2Fj
aGVzLgorCisgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lIGlzIGluaXRpYWxpemVkIGFzeW5j
aHJvbm91c2x5IGFzIGl0IGZpcnN0IGNyZWF0ZXMgYSBzYWx0IHdoaWNoIGlzIHVzZWQKKyAgICAg
ICAgdG8gb2JmdXNjYXRlIHRoZSBuYW1lcyBvZiB0aGUgdmFyaW91cyBmaWxlcyBzdG9yZWQgb24g
ZGlzay4KKworICAgICAgICBJbiB0aGUgc2FtZSBzcGlyaXQsIENhY2hlU3RvcmFnZTo6Q2FjaGVz
IGlzIGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5IGFzIGl0IG5lZWRzIHRvIHJlYWQgZnJvbSB0
aGUgZGlzayB0aGUgbGlzdCBvZiBjYWNoZSBuYW1lcy4KKyAgICAgICAgT25jZSByZWFkLCB0aGUg
bmFtZXMgd2lsbCBiZSBzdG9yZWQgaW4gbWVtb3J5LgorICAgICAgICBBZGRlZCB0aGUgcG9zc2li
aWxpdHkgdG8gY2xlYXIgdGhpcyBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24uIFRoaXMgd2lsbCBi
ZSB1c2VmdWwgZm9yIHRlc3RpbmcuCisgICAgICAgIFRoaXMgbWlnaHQgYWxzbyBiZSB1c2VmdWwg
dG8gc2F2ZSBtZW1vcnkgd2hlbiB0aGVyZSBpcyBubyBtb3JlIHVzZSBvZiBDYWNoZVN0b3JhZ2Ug
Ynkgd2ViIHBhZ2VzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpyb290UGF0aEZy
b21TZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6Omdsb2JhbEVuZ2lu
ZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjp+RW5naW5lKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZyb20pOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGVmYXVsdEVuZ2luZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpFbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
cmVhZENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OndyaXRl
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZWFkRmlsZSk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZW1vdmVGaWxlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmhhbmRsZVJlbW92ZWRDYWNoZSk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpzZXRQZXJzaXN0ZW5jeSk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyb290UGF0aCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpzYWx0IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Om5leHRDYWNoZUlkZW50aWZpZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OmNhY2hlc1Jvb3RQ
YXRoKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpjYWNoZXNMaXN0RmlsZW5hbWUp
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Q2FjaGVzKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6ZmluZCk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6Q2FjaGVzOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZXM6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6ZW5jb2Rl
Q2FjaGVOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6ZGVjb2RlQ2FjaGVz
TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6cmVhZENhY2hl
c0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OndyaXRl
Q2FjaGVzVG9EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmNs
ZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkNhY2hlczo6Y2FjaGVJbmZvcyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpDYWNoZXM6OmlzSW5pdGlhbGl6ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlczo6c2V0UGVyc2lzdGVuY3kpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlczo6ZGV0YWNoKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6c2V0UGVyc2lzdGVuY3kpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorCisyMDE3LTA4LTI1ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBbQ2FjaGUgQVBJXSBV
SVByb2Nlc3Mgc2hvdWxkIHByb3ZpZGUgdGhlIGRpcmVjdG9yeSBwYXRoIHdoZXJlIHRvIHN0b3Jl
IENhY2hlIFN0b3JhZ2UgZGF0YQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1ODg0CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDA3MjQ0MT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmgKaW5kZXggZjIwODBkYzk5MWJmYTViNGU1NDM2Y2Q3NTdjZGJkNWYxMjg5YTA3OC4uMWRi
YjgzNTc0MjdkYTZjYWM0MjQxMDhjNDU5ZWYxYjdhYzQ1MmZkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ1
LDYgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9w
dGlvbnMmJiwgRE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9p
ZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01D
YWNoZTo6UmVjb3JkPiYmLCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsK
IAorICAgIC8vIFVzZWQgb25seSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UGVyc2lzdGVuY3koY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGJvb2wgLyogaXNQ
ZXJzaXN0ZW50ICovLCBET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsg
Y2FsbGJhY2soRE9NQ2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAq
LywgRE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERP
TUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisKIHByb3RlY3RlZDoKICAgICBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAgZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzM2RhODA4NTQ0NWJkYzhmMGFhZGNlODgyOGU2ZWRm
NDk5MGI4MTljLi4yNWVkM2Q3OTk0N2I1NjhkODVkZmYyZjUxODY0MDI2M2FkZDA4YzcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtNDAsNiArNDAsMTAg
QEAgRXhjZXB0aW9uIGVycm9yVG9FeGNlcHRpb24oRXJyb3IgZXJyb3IpCiAgICAgc3dpdGNoIChl
cnJvcikgewogICAgIGNhc2UgRXJyb3I6Ok5vdEltcGxlbWVudGVkOgogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVu
dGVkIikgfTsKKyAgICBjYXNlIEVycm9yOjpSZWFkRGlzazoKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgcmVhZGluZyBkYXRhIGZyb20g
ZGlzayIpIH07CisgICAgY2FzZSBFcnJvcjo6V3JpdGVEaXNrOgorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB3cml0aW5nIGRhdGEgdG8g
ZGlzayIpIH07CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJvciIpIH07CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IGMyMTIzYTk0YTM2NDUyOTY2ZTMyYWEz
NGY2NzI2NDZlZjExNWI0NTMuLmVlYmU2Njc4Mjc0MDkxYWMwYjc1NGIyYzVjMzRkMDhiOTgxM2Y3
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTQwLDYgKzQw
LDggQEAgbmFtZXNwYWNlIERPTUNhY2hlIHsKIAogZW51bSBjbGFzcyBFcnJvciB7CiAgICAgTm90
SW1wbGVtZW50ZWQsCisgICAgUmVhZERpc2ssCisgICAgV3JpdGVEaXNrLAogICAgIEludGVybmFs
CiB9OwogCkBAIC05NCw2ICs5Niw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6RE9NQ2FjaGU6OkVycm9yPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
ICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yLAogICAgICAgICBXZWJDb3JlOjpET01D
YWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkLAorICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6
RXJyb3I6OlJlYWREaXNrLAorICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6OldyaXRl
RGlzaywKICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yOjpJbnRlcm5hbAogICAgID47
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg0Mjc1ZGYzMzU5YzJj
NzIxNDE1NmYyM2Q2MWM5ODViZGNkYTQ3MDMuLjMxN2Q0MmYxMTYyNTgwZTVjODZiZWM5MDdlYTQx
M2EyNTI0ZTRhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM5LDYg
KzM5LDggQEAKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1
bGUuaCIKICNpbmNsdWRlICJDU1NTdXBwb3J0c1J1bGUuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00MTM2LDQgKzQxMzgsMzQgQEAgU3RyaW5nIEludGVybmFs
czo6YXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSBjb25zdAogICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogfQogCit2b2lkIEludGVybmFsczo6c2V0Q2FjaGVTdG9yYWdlUGVyc2lzdGVuY3koYm9vbCBp
c1BlcnNpc3RlbnQpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2Nh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBjb250ZXh0
RG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9u
ID0gcGFnZS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKHBhZ2UtPnNlc3Npb25JRCgpKTsKKyAgICAgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi0+c2V0UGVyc2lzdGVuY3koZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJp
bmcoKSwgaXNQZXJzaXN0ZW50LCBbXShzdGQ6Om9wdGlvbmFsPERPTUNhY2hlOjpFcnJvcj4mJikg
eyB9KTsKK30KKwordm9pZCBJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVz
ZW50YXRpb24oKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9jYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gY29udGV4dERv
Y3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9
IHBhZ2UtPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bihwYWdlLT5zZXNzaW9uSUQoKSk7CisgICAgICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24tPmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkudG9TdHJpbmcoKSwgW10oc3RkOjpvcHRpb25hbDxET01DYWNoZTo6RXJyb3I+JiYpIHsgfSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CmluZGV4IGQyNzgyN2QxMzZlOWZhMGUwZjgyNDQyODllNDhlYWY3YmQyZTJiMzguLjRiNDgyMWRj
ZDJkYzc4MGE3ODA5NGFkYWYxOWJkMjE4NWM1NmZiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaApAQCAtNDMsNiArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
dWRpb0NvbnRleHQ7CitjbGFzcyBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogY2xhc3MgRE9NUmVj
dDsKIGNsYXNzIERPTVJlY3RMaXN0OwogY2xhc3MgRE9NVVJMOwpAQCAtNTk4LDYgKzU5OSw5IEBA
IHB1YmxpYzoKIAogICAgIFN0cmluZyBhdWRpb1Nlc3Npb25DYXRlZ29yeSgpIGNvbnN0OwogCisg
ICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeShib29sIGlzUGVyc2lzdGVudCk7Cisg
ICAgdm9pZCBjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Jik7CiAgICAgRG9jdW1lbnQqIGNv
bnRleHREb2N1bWVudCgpIGNvbnN0OwpAQCAtNjE4LDYgKzYyMiw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVj
dG9yRnJvbnRlbmQ7CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA0MjcxYWUyZjI2YjAyNzYwZGJlZTUxMjE5NmZl
NjBhOGZhYmFmODE0Li5iYzFjYjBjOGIwOGZhMmZkZGMwNjBhNDA0MGZmOTA4ZWVhNmQ4NDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01NDQsNSArNTQ0LDggQEAgZW51
bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TV0gdm9pZCByZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtIHN0cmVhbSwgTWVkaWFT
dHJlYW1UcmFjayB0cmFjayk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCBz
aW11bGF0ZU1lZGlhU3RyZWFtVHJhY2tDYXB0dXJlU291cmNlRmFpbHVyZShNZWRpYVN0cmVhbVRy
YWNrIHRyYWNrKTsKIAorICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlUGVyc2lzdGVuY3koYm9vbGVh
biBpc1BlcnNpc3RlbnQpOworICAgIHZvaWQgY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNl
bnRhdGlvbigpOworCiAgICAgRE9NU3RyaW5nIGF1ZGlvU2Vzc2lvbkNhdGVnb3J5KCk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDVhZWJiZTY2OWJlZDJiOGM3MTViODM1ZjU1NTFjNjRiZDc0
OTBjMmEuLjYwZjAyMmE0ODM3ZjM3N2MxOGQ0NzcyYTI2NTAyMWIwNzkzNWY0NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hh
bm5lbC5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
YWNoZVF1ZXJ5T3B0aW9ucy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMzMsMjUgKzM1LDM5IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGU7Cit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKIAotc3RhdGljIEhhc2hNYXA8UEFMOjpTZXNz
aW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmdpbmU+PiYgZ2xvYmFsRW5naW5lTWFwKCkKK3N0YXRp
YyBpbmxpbmUgU3RyaW5nIHJvb3RQYXRoRnJvbVNlc3Npb25JRChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmdpbmU+Pj4gbWFwOworICAgIFN0cmluZyBzZXNzaW9uU3Vi
ZGlyZWN0b3J5ID0gQVNDSUlMaXRlcmFsKCJzZXNzaW9uIikgKyBTdHJpbmc6Om51bWJlcihzZXNz
aW9uSUQuc2Vzc2lvbklEKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZURpcmVjdG9y
eSgpLCBzZXNzaW9uU3ViZGlyZWN0b3J5KTsKK30KKworc3RhdGljIEhhc2hNYXA8UEFMOjpTZXNz
aW9uSUQsIFJlZjxFbmdpbmU+PiYgZ2xvYmFsRW5naW5lTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPEVuZ2luZT4+PiBtYXA7CisK
ICAgICByZXR1cm4gbWFwOwogfQogCitFbmdpbmU6On5FbmdpbmUoKQoreworICAgIGZvciAoYXV0
byYgY2FjaGVzIDogbV9jYWNoZXMudmFsdWVzKCkpCisgICAgICAgIGNhY2hlcy0+ZGV0YWNoKCk7
Cit9CisKIEVuZ2luZSYgRW5naW5lOjpmcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
ICAgICBpZiAoc2Vzc2lvbklEID09IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
CiAgICAgICAgIHJldHVybiBkZWZhdWx0RW5naW5lKCk7CiAKLSAgICByZXR1cm4gKmdsb2JhbEVu
Z2luZU1hcCgpLmVuc3VyZShzZXNzaW9uSUQsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RW5naW5lPigpOwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4g
Z2xvYmFsRW5naW5lTWFwKCkuZW5zdXJlKHNlc3Npb25JRCwgWyZdIHsKKyAgICAgICAgcmV0dXJu
IEVuZ2luZTo6Y3JlYXRlKHJvb3RQYXRoRnJvbVNlc3Npb25JRChzZXNzaW9uSUQpKTsKKyAgICB9
KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKIHZvaWQgRW5naW5lOjpkZXN0cm95RW5naW5l
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTYyLDggKzc4LDE0IEBAIHZvaWQgRW5naW5l
OjpkZXN0cm95RW5naW5lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogRW5naW5lJiBFbmdp
bmU6OmRlZmF1bHRFbmdpbmUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVu
aXF1ZV9wdHI8RW5naW5lPj4gZGVmYXVsdEVuZ2luZSA9IHsgc3RkOjptYWtlX3VuaXF1ZTxFbmdp
bmU+KCkgfTsKLSAgICByZXR1cm4gKmRlZmF1bHRFbmdpbmUuZ2V0KCk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJlZjxFbmdpbmU+PiBkZWZhdWx0RW5naW5lID0geyBFbmdpbmU6OmNyZWF0
ZShyb290UGF0aEZyb21TZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSkpIH07CisgICAgcmV0dXJuIGRlZmF1bHRFbmdpbmUuZ2V0KCk7Cit9CisKK0VuZ2luZTo6RW5n
aW5lKFN0cmluZyYmIHJvb3RQYXRoKQorICAgIDogbV9yb290UGF0aChXVEZNb3ZlKHJvb3RQYXRo
KSkKKyAgICAsIG1faW9RdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5D
YWNoZVN0b3JhZ2VFbmdpbmUuc2VyaWFsQmFja2dyb3VuZCIsIFdvcmtRdWV1ZTo6VHlwZTo6U2Vy
aWFsLCBXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCkpCit7CiB9CiAKIHZvaWQgRW5naW5lOjpv
cGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJ
ZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTc0LDQyICs5NiwzOCBAQCB2b2lkIEVu
Z2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUs
IENhY2hlSWRlbnRpZmllcgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byYgY2FjaGVzID0gY2FjaGVzT3JFcnJvci52YWx1ZSgpLmdldCgpOworICAgICAgICBD
YWNoZXMmIGNhY2hlcyA9IGNhY2hlc09yRXJyb3IudmFsdWUoKTsKIAotICAgICAgICBhdXRvIHBv
c2l0aW9uID0gY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1
cm4gaXRlbS5uYW1lID09IGNhY2hlTmFtZTsgfSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiA9PSBu
b3RGb3VuZCkgewotICAgICAgICAgICAgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyID0gKyttX25l
eHRDYWNoZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBjYWNoZXMuYXBwZW5kKENhY2hlIHsgY2Fj
aGVJZGVudGlmaWVyLCBjYWNoZU5hbWUsIFZlY3RvcjxSZWNvcmQ+KCksIDAgfSk7Ci0gICAgICAg
ICAgICB3cml0ZUNhY2hlc1RvRGlzayhbY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYWxsYmFjayhjYWNoZUlkZW50aWZpZXIp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FsbGJhY2so
Y2FjaGVzW3Bvc2l0aW9uXS5pZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0g
Y2FjaGVzLmZpbmQoY2FjaGVOYW1lKSkgeworICAgICAgICAgICAgY2FsbGJhY2soY2FjaGUtPmlk
ZW50aWZpZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAgICAgY2Fj
aGVzLm9wZW4oU3RyaW5nIHsgY2FjaGVOYW1lIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgRW5naW5lOjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUlkZW50aWZp
ZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIHN0ZDo6b3B0aW9uYWw8Q2FjaGU+IHJlbW92
ZWRDYWNoZTsKKyAgICBDYWNoZXMqIGNhY2hlc1RvTW9kaWZ5ID0gbnVsbHB0cjsKICAgICBmb3Ig
KGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVlcygpKSB7Ci0gICAgICAgIGF1dG8gcG9zaXRp
b24gPSBjYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBp
dGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyOyB9KTsKLSAgICAgICAgaWYgKHBvc2l0
aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICByZW1vdmVkQ2FjaGUgPSBXVEZNb3ZlKGNh
Y2hlc1twb3NpdGlvbl0pOwotICAgICAgICAgICAgY2FjaGVzLnJlbW92ZShwb3NpdGlvbik7Cisg
ICAgICAgIGlmIChhdXRvKiBjYWNoZVRvUmVtb3ZlID0gY2FjaGVzLT5maW5kKGNhY2hlSWRlbnRp
ZmllcikpIHsKKyAgICAgICAgICAgIGNhY2hlc1RvTW9kaWZ5ID0gY2FjaGVzLnB0cigpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFyZW1vdmVkQ2FjaGUp
IHsKLSAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkludGVybmFsKSk7Cisg
ICAgaWYgKCFjYWNoZXNUb01vZGlmeSkgeworICAgICAgICBpZiAoYXV0byBwb3NpdGlvbiA9IG1f
cmVtb3ZlZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJu
IGl0ZW0uaWRlbnRpZmllciA9PSBjYWNoZUlkZW50aWZpZXI7IH0pKSB7CisgICAgICAgICAgICBj
YWxsYmFjayhtYWtlVW5leHBlY3RlZChFcnJvcjo6SW50ZXJuYWwpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayhjYWNoZUlkZW50aWZpZXIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcmVtb3ZlZENhY2hlcy5hcHBlbmQoV1RGTW92ZShy
ZW1vdmVkQ2FjaGUudmFsdWUoKSkpOwotICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWNoZUlkZW50
aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+
JiYgZXJyb3IpIHsKKworICAgIGNhY2hlc1RvTW9kaWZ5LT5yZW1vdmUoY2FjaGVJZGVudGlmaWVy
LCBbY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9w
dGlvbmFsPEVycm9yPiYmIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAg
ICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTI2LDE0ICsxNDQsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMo
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byYgY2FjaGVzID0gY2Fj
aGVzT3JFcnJvci52YWx1ZSgpLmdldCgpOwotCi0gICAgICAgIFZlY3RvcjxDYWNoZUluZm8+IGNh
Y2hlc0luZm87Ci0gICAgICAgIGNhY2hlc0luZm8ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYWNo
ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBjYWNoZSA6IGNhY2hlcykKLSAgICAgICAg
ICAgIGNhY2hlc0luZm8udW5jaGVja2VkQXBwZW5kKENhY2hlSW5mbyB7IGNhY2hlLmlkZW50aWZp
ZXIsIGNhY2hlLm5hbWV9KTsKLQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNhY2hlc0luZm8p
KTsKKyAgICAgICAgY2FsbGJhY2soY2FjaGVzT3JFcnJvci52YWx1ZSgpLmdldCgpLmNhY2hlSW5m
b3MoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTE0OSw3ICsxNjAsNyBAQCB2b2lkIEVuZ2luZTo6cmV0
cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYg
Y2FsbGJhYwogCiAgICAgICAgIFZlY3RvcjxSZWNvcmQ+IGNvcHk7CiAgICAgICAgIGNvcHkucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYg
cmVjb3JkIDogcmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVjb3JkcykKKyAgICAgICAgZm9yIChhdXRv
JiByZWNvcmQgOiByZWNvcmRzKQogICAgICAgICAgICAgY29weS51bmNoZWNrZWRBcHBlbmQocmVj
b3JkLmNvcHkoKSk7CiAKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjb3B5KSk7CkBAIC0yMzQs
MjEgKzI0NSw1NiBAQCB2b2lkIEVuZ2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZQogICAgIH0pOwogfQogCi12b2lk
IEVuZ2luZTo6d3JpdGVDYWNoZXNUb0Rpc2soRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEVy
cm9yPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjppbml0aWFsaXplKEZ1bmN0aW9uPHZv
aWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudCB3cml0aW5nLgotICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgaWYg
KG1fc2FsdCkgeworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgU3RyaW5nIHNhbHRQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fcm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgic2FsdCIpKTsKKyAgICBtX2lv
UXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNhbHRQYXRoID0gV1RGTW92ZShzYWx0UGF0aCld
ICgpIG11dGFibGUgeworICAgICAgICBXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290
UGF0aCk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIHNhbHQgPSByZWFkT3JNYWtlU2FsdChzYWx0
UGF0aCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAoIXNhbHQpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6V3JpdGVE
aXNrKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtX3NhbHQgPSBXVEZNb3ZlKHNhbHQpOworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGVz
RnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCByZWFkaW5nLgotCi0gICAgYXV0byYgY2FjaGVz
ID0gbV9jYWNoZXMuZW5zdXJlKG9yaWdpbiwgW10gewotICAgICAgICByZXR1cm4gVmVjdG9yPENh
Y2hlPigpOworICAgIGF1dG8mIGNhY2hlcyA9IG1fY2FjaGVzLmVuc3VyZShvcmlnaW4sIFsmb3Jp
Z2luLCB0aGlzXSB7CisgICAgICAgIHJldHVybiBDYWNoZXM6OmNyZWF0ZSgqdGhpcywgb3JpZ2lu
KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKLSAgICBjYWxsYmFjayhzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFZlY3RvcjxDYWNoZT4+IHsgY2FjaGVzIH0pOworICAgIGlmIChjYWNoZXMtPmlz
SW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBjYWxsYmFjayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PENhY2hlcz4geyBjYWNoZXMuZ2V0KCkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpbml0aWFsaXplKFt0aGlzLCBvcmlnaW4sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gY2FjaGVz
ID0gbV9jYWNoZXMuZ2V0KG9yaWdpbik7CisgICAgICAgIEFTU0VSVChjYWNoZXMpOworCisgICAg
ICAgIGNhY2hlcy0+aW5pdGlhbGl6ZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2Fj
aGVzXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVy
cm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiB7ICpj
YWNoZXMgfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIEVuZ2luZTo6cmVhZENh
Y2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVDYWxsYmFjayYmIGNhbGxiYWNrKQpA
QCAtMjc4LDExICszMjQsOCBAQCBDYWNoZSogRW5naW5lOjpjYWNoZSh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIpCiB7CiAgICAgQ2FjaGUqIHJlc3VsdCA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRv
JiBjYWNoZXMgOiBtX2NhY2hlcy52YWx1ZXMoKSkgewotICAgICAgICBhdXRvIHBvc2l0aW9uID0g
Y2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5p
ZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcjsgfSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiAh
PSBub3RGb3VuZCkgewotICAgICAgICAgICAgcmVzdWx0ID0gJmNhY2hlc1twb3NpdGlvbl07Cisg
ICAgICAgIGlmICgocmVzdWx0ID0gY2FjaGVzLT5maW5kKGNhY2hlSWRlbnRpZmllcikpKQogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFyZXN1bHQpIHsKICAg
ICAgICAgYXV0byBwb3NpdGlvbiA9IG1fcmVtb3ZlZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBjYWNoZUlkZW50aWZp
ZXI7IH0pOwpAQCAtMzA1LDcgKzM0OCw3MSBAQCBWZWN0b3I8dWludDY0X3Q+IEVuZ2luZTo6cXVl
cnlDYWNoZShjb25zdCBWZWN0b3I8UmVjb3JkPiYgcmVjb3JkcywgY29uc3QgV2ViQ29yZQogICAg
IHJldHVybiByZXN1bHRzOwogfQogCit2b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcmU6OkRPTUNhY2hl
OjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX2lvUXVldWUtPmRpc3Bh
dGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBkYXRhID0gV1RGTW92ZShkYXRhKSwg
ZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBl
OjpDcmVhdGUpOworICAgICAgICBjaGFubmVsLT53cml0ZSgwLCBkYXRhLCBudWxscHRyLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oaW50IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgZXJyb3JdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURpc2spOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgRW5naW5lOjpyZWFkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgTmV0d29ya0NhY2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJiBj
YWxsYmFjaykKK3sKKyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGZpbGVuYW1l
ID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY2hh
bm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsK
KyAgICAgICAgaWYgKGNoYW5uZWwtPmZpbGVEZXNjcmlwdG9yKCkgPCAwKSB7CisgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRGF0YSB7IH0sIDApOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBj
aGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIG1faW9R
dWV1ZS5wdHIoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IERhdGEmIGRh
dGEsIGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRhdGEsIGVycm9yXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEsIGVycm9yKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnJlbW92ZUZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtmaWxl
bmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBXZWJD
b3JlOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6Omhh
bmRsZVJlbW92ZWRDYWNoZShDYWNoZSYmIGNhY2hlKQoreworICAgIG1fcmVtb3ZlZENhY2hlcy5h
cHBlbmQoV1RGTW92ZShjYWNoZSkpOworfQorCit2b2lkIEVuZ2luZTo6c2V0UGVyc2lzdGVuY3ko
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgaXNQZXJzaXN0ZW50KQoreworICAgIHJlYWRDYWNo
ZXNGcm9tRGlzayhvcmlnaW4sIFtpc1BlcnNpc3RlbnRdKENhY2hlc09yRXJyb3ImJiByZXN1bHQp
IHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgcmVzdWx0LnZhbHVlKCkuZ2V0KCkuc2V0UGVyc2lzdGVuY3koaXNQZXJzaXN0ZW50
KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwg
W10oQ2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1
ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZXN1bHQudmFsdWUoKS5nZXQoKS5j
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IENhY2hlU3RvcmFnZQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKaW5k
ZXggMjkxNzcxMmZkM2RkZTljZjQzNzAwZWMwMDI5NDY4M2U2YmRjZWVhOC4uYmM0YzQ4MWMyZTIy
MDk1ZDk1YmVkYWJiOGU4N2M0ZWM2Njk3MDljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC0yNSw4ICsy
NSw5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC00MCwxMCArNDEsMTMgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UgewogCi1jbGFzcyBFbmdp
bmUgeworY2xhc3MgRW5naW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEVuZ2luZT4g
ewogcHVibGljOgorICAgIH5FbmdpbmUoKTsKKwogICAgIHN0YXRpYyBFbmdpbmUmIGZyb20oUEFM
OjpTZXNzaW9uSUQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lFbmdpbmUoUEFMOjpTZXNzaW9u
SUQpOworICAgIHN0YXRpYyBSZWY8RW5naW5lPiBjcmVhdGUoU3RyaW5nJiYgcm9vdFBhdGgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRW5naW5lKFdURk1vdmUocm9vdFBhdGgpKSk7IH0KIAogICAg
IHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUs
IFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKICAgICB2b2lk
IHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNo
ZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKQEAgLTUzLDE0ICs1NywyNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwdXRSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6
OkRPTUNhY2hlOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVy
c0NhbGxiYWNrJiYpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hl
UXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxi
YWNrJiYpOwogCisgICAgdm9pZCBoYW5kbGVSZW1vdmVkQ2FjaGUoQ2FjaGUmJik7CisgICAgdm9p
ZCB3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYs
IFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCByZWFk
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgTmV0
d29ya0NhY2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJik7CisgICAgdm9pZCByZW1vdmVGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpOworCisgICAgY29uc3QgU3RyaW5nJiByb290UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcm9vdFBhdGg7IH0KKyAgICBjb25zdCBOZXR3b3JrQ2FjaGU6OlNhbHQm
IHNhbHQoKSBjb25zdCB7IHJldHVybiBtX3NhbHQudmFsdWUoKTsgfQorICAgIHVpbnQ2NF90IG5l
eHRDYWNoZUlkZW50aWZpZXIoKSB7IHJldHVybiArK21fbmV4dENhY2hlSWRlbnRpZmllcjsgfQor
CisgICAgdm9pZCBzZXRQZXJzaXN0ZW5jeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBpc1Bl
cnNpc3RlbnQpOworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIG9yaWdpbik7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIEVuZ2luZSYgZGVmYXVsdEVuZ2lu
ZSgpOworICAgIGV4cGxpY2l0IEVuZ2luZShTdHJpbmcmJik7CiAKLSAgICB2b2lkIHdyaXRlQ2Fj
aGVzVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CisgICAg
dm9pZCBpbml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01D
YWNoZTo6RXJyb3I+JiYpPiYmKTsKIAotICAgIHVzaW5nIENhY2hlc09yRXJyb3IgPSBFeHBlY3Rl
ZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFZlY3RvcjxDYWNoZT4+LCBXZWJDb3JlOjpET01DYWNo
ZTo6RXJyb3I+OworICAgIHVzaW5nIENhY2hlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPENhY2hlcz4sIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj47CiAgICAgdXNp
bmcgQ2FjaGVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVzT3JFcnJvciYmKT47
Ci0gICAgdm9pZCByZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hl
c0NhbGxiYWNrJiYpOworICAgIHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBGdW5jdGlvbjx2b2lkKENhY2hlc09yRXJyb3ImJik+JiYpOwogCiAgICAgdXNpbmcg
Q2FjaGVPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZT4sIFdl
YkNvcmU6OkRPTUNhY2hlOjpFcnJvcj47CiAgICAgdXNpbmcgQ2FjaGVDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChDYWNoZU9yRXJyb3ImJik+OwpAQCAtNzAsMTIgKzg3LDE0IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZW1vdmVDYWNoZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBWZWN0b3I8dWludDY0X3Q+JiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVy
c0NhbGxiYWNrJiYpOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJik7Ci0KICAgICBDYWNo
ZSogY2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAgIEhhc2hNYXA8U3RyaW5n
LCBWZWN0b3I8Q2FjaGU+PiBtX2NhY2hlczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPENhY2hl
cz4+IG1fY2FjaGVzOwogICAgIFZlY3RvcjxDYWNoZT4gbV9yZW1vdmVkQ2FjaGVzOwogICAgIHVp
bnQ2NF90IG1fbmV4dENhY2hlSWRlbnRpZmllciB7IDAgfTsKKyAgICBTdHJpbmcgbV9yb290UGF0
aDsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtDYWNoZTo6U2FsdD4gbV9zYWx0OworICAgIFJl
ZjxXb3JrUXVldWU+IG1faW9RdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENhY2hlU3RvcmFn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlZDQyMzE0MjAzN2Rl
N2M2MWQzODkwM2RlMGY4MTg5NmVmMzZjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAg
LTAsMCArMSwyNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5o
IgorCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlQ29kZXJzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGU7Cit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCituYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKKworc3RhdGljIGlubGluZSBTdHJpbmcgY2Fj
aGVzUm9vdFBhdGgoRW5naW5lJiBlbmdpbmUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAg
IEtleSBrZXkoZW5naW5lLnJvb3RQYXRoKCksIHsgfSwgeyB9LCBvcmlnaW4sIGVuZ2luZS5zYWx0
KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZW5naW5l
LnJvb3RQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RGaWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQ
YXRoKQoreworICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2Fj
aGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgiY2FjaGVzbGlzdCIpKTsKK30KKworQ2FjaGVzOjpD
YWNoZXMoRW5naW5lJiBlbmdpbmUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQorICAgIDogbV9lbmdp
bmUoJmVuZ2luZSkKKyAgICAsIG1fcm9vdFBhdGgoY2FjaGVzUm9vdFBhdGgoZW5naW5lLCBvcmln
aW4pKQoreworfQorCit2b2lkIENhY2hlczo6aW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1faXNJbml0aWFsaXpl
ZCB8fCAhbV9lbmdpbmUpIHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0b3JhZ2UpIHsKKyAgICAgICAgbV9wZW5k
aW5nSW5pdGlhbGl6YXRpb25DYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc3RvcmFnZSA9IFN0b3JhZ2U6Om9wZW4o
bV9yb290UGF0aCwgU3RvcmFnZTo6TW9kZTo6Tm9ybWFsKTsKKyAgICBpZiAoIXN0b3JhZ2UpIHsK
KyAgICAgICAgY2FsbGJhY2soRXJyb3I6OldyaXRlRGlzayk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbV9zdG9yYWdlID0gc3RvcmFnZS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJlYWRD
YWNoZXNGcm9tRGlzayhbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oRXhwZWN0
ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3I+JiYgcmVzdWx0KSB7CisgICAgICAgIGlmICghcmVzdWx0
Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpKTsKKwor
ICAgICAgICAgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdJbml0
aWFsaXphdGlvbkNhbGxiYWNrcyk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
cGVuZGluZ0NhbGxiYWNrcykKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZXJyb3Io
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9jYWNoZXMgPSBX
VEZNb3ZlKHJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsK
KyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKworICAgICAgICBhdXRvIHBlbmRpbmdD
YWxsYmFja3MgPSBXVEZNb3ZlKG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHBlbmRpbmdDYWxsYmFja3MpCisgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgIH0pOworfQorCitDYWNoZSogQ2FjaGVzOjpm
aW5kKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMu
ZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLm5hbWUgPT0g
bmFtZTsgfSk7CisgICAgcmV0dXJuIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgPyAmbV9jYWNoZXNb
cG9zaXRpb25dIDogbnVsbHB0cjsKK30KKworQ2FjaGUqIENhY2hlczo6ZmluZCh1aW50NjRfdCBp
ZGVudGlmaWVyKQoreworICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmco
WyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlm
aWVyOyB9KTsKKyAgICByZXR1cm4gKHBvc2l0aW9uICE9IG5vdEZvdW5kKSA/ICZtX2NhY2hlc1tw
b3NpdGlvbl0gOiBudWxscHRyOworfQorCit1aW50NjRfdCBDYWNoZXM6Om9wZW4oU3RyaW5nJiYg
bmFtZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQo
bV9lbmdpbmUpOworCisgICAgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyID0gbV9lbmdpbmUtPm5l
eHRDYWNoZUlkZW50aWZpZXIoKTsKKyAgICBtX2NhY2hlcy5hcHBlbmQoQ2FjaGUgeyBjYWNoZUlk
ZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHsgfSwgMCB9KTsKKyAgICB3cml0ZUNhY2hlc1RvRGlz
ayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2FjaGVJZGVudGlmaWVyXShzdGQ6Om9w
dGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soY2FjaGVJZGVudGlm
aWVyKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY2FjaGVJZGVudGlmaWVyOworfQorCit2b2lkIENh
Y2hlczo6cmVtb3ZlKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25DYWxsYmFjayYmIGNh
bGxiYWNrKQoreworICAgIEFTU0VSVChtX2VuZ2luZSk7CisKKyAgICBhdXRvIHBvc2l0aW9uID0g
bV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVt
LmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisKKyAgICBBU1NFUlQocG9zaXRpb24gIT0g
bm90Rm91bmQpOworCisgICAgYXV0byBjYWNoZSA9IFdURk1vdmUobV9jYWNoZXNbcG9zaXRpb25d
KTsKKyAgICBtX2NhY2hlcy5yZW1vdmUocG9zaXRpb24pOworCisgICAgbV9lbmdpbmUtPmhhbmRs
ZVJlbW92ZWRDYWNoZShXVEZNb3ZlKGNhY2hlKSk7CisKKyAgICB3cml0ZUNhY2hlc1RvRGlzayhX
VEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRGF0YSBlbmNvZGVDYWNoZU5h
bWVzKGNvbnN0IFZlY3RvcjxDYWNoZT4mIGNhY2hlcykKK3sKKyAgICBXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyIGVuY29kZXI7CisKKyAgICB1aW50NjRfdCBzaXplID0gY2FjaGVzLnNpemUoKTsK
KyAgICBlbmNvZGVyIDw8IHNpemU7CisgICAgZm9yIChhdXRvJiBjYWNoZSA6IGNhY2hlcykKKyAg
ICAgICAgZW5jb2RlciA8PCBjYWNoZS5uYW1lOworCisgICAgcmV0dXJuIERhdGEgeyBlbmNvZGVy
LmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSB9OworfQorCitzdGF0aWMgaW5saW5lIEV4
cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBFcnJvcj4gZGVjb2RlQ2FjaGVzTmFtZXMoY29uc3QgRGF0
YSYgZGF0YSwgaW50IGVycm9yKQoreworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CisKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICB1aW50NjRfdCBj
b3VudDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvdW50KSkKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBuYW1l
czsKKyAgICBuYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgU3RyaW5n
IG5hbWU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobmFtZSkpCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWREaXNrKTsKKworICAgICAgICBuYW1lcy51
bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lKSk7CisgICAgfQorICAgIHJldHVybiBuYW1lczsK
K30KKwordm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQo
RXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3I+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIEFT
U0VSVChtX2VuZ2luZSk7CisgICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOworICAgIEFTU0VS
VChtX2NhY2hlcy5pc0VtcHR5KCkpOworCisgICAgaWYgKCFtX3Nob3VsZFBlcnNpc3QpIHsKKyAg
ICAgICAgY2FsbGJhY2soVmVjdG9yPENhY2hlPiB7IH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byBmaWxlbmFtZSA9IGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKTsK
KyAgICBpZiAoIVdlYkNvcmU6OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CisgICAgICAgIGNhbGxi
YWNrKFZlY3RvcjxDYWNoZT4geyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
ZW5naW5lLT5yZWFkRmlsZShmaWxlbmFtZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgRGF0YSYgZGF0YSwg
aW50IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtX2VuZ2luZSkgeworICAgICAgICAg
ICAgY2FsbGJhY2soVmVjdG9yPENhY2hlPiB7IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBkZWNvZGVDYWNoZXNOYW1lcyhkYXRhLCBl
cnJvcik7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrKG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgVmVjdG9yPENhY2hlPiBjYWNoZXM7CisgICAgICAgIGNh
Y2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlc3VsdC52YWx1ZSgpLnNpemUoKSk7CisgICAg
ICAgIGZvciAoYXV0byYgbmFtZSA6IHJlc3VsdC52YWx1ZSgpKQorICAgICAgICAgICAgY2FjaGVz
LnVuY2hlY2tlZEFwcGVuZChDYWNoZSB7IG1fZW5naW5lLT5uZXh0Q2FjaGVJZGVudGlmaWVyKCks
IFdURk1vdmUobmFtZSksIHsgfSwgMCB9KTsKKworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNh
Y2hlcykpOworICAgIH0pOworfQorCit2b2lkIENhY2hlczo6d3JpdGVDYWNoZXNUb0Rpc2soQ29t
cGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX3Nob3VsZFBlcnNpc3Qp
IHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVChtX2VuZ2luZSk7CisKKyAgICBpZiAobV9jYWNoZXMuaXNFbXB0eSgp
KSB7CisgICAgICAgIG1fZW5naW5lLT5yZW1vdmVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jv
b3RQYXRoKSk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZSht
X3Jvb3RQYXRoKSwgZW5jb2RlQ2FjaGVOYW1lcyhtX2NhY2hlcyksIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvcikpOworICAgIH0pOworfQorICAgIAordm9pZCBD
YWNoZXM6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oKQoreworICAgIG1fY2FjaGVzLmNsZWFy
KCk7CisgICAgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgbV9zdG9yYWdlID0gbnVsbHB0
cjsKK30KKworVmVjdG9yPENhY2hlSW5mbz4gQ2FjaGVzOjpjYWNoZUluZm9zKCkgY29uc3QKK3sK
KyAgICBWZWN0b3I8Q2FjaGVJbmZvPiBjYWNoZUluZm9zOworICAgIGNhY2hlSW5mb3MucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX2NhY2hlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgY2FjaGUg
OiBtX2NhY2hlcykKKyAgICAgICAgY2FjaGVJbmZvcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZv
IHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZSB9KTsKKyAgICByZXR1cm4gY2FjaGVJbmZv
czsKK30KKworfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAxODVjZGRiZDc4YjEw
MzU0YmNiZGU1NmI3MTljYTViNGQyOGMyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKQEAgLTAs
MCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKKworY2xhc3Mg
RW5naW5lOworCitjbGFzcyBDYWNoZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZXM+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPENhY2hlcz4gY3JlYXRlKEVuZ2luZSYgZW5naW5lLCBjb25z
dCBTdHJpbmcmIG9yaWdpbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZXMgeyBlbmdpbmUs
IG9yaWdpbiB9KTsgfQorCisgICAgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlOjpD
b21wbGV0aW9uQ2FsbGJhY2smJik7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7IH0KKworICAgIENhY2hlKiBmaW5kKGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisgICAgQ2FjaGUqIGZpbmQodWludDY0X3QgaWRlbnRpZmllcik7CisKKyAgICB1
aW50NjRfdCBvcGVuKFN0cmluZyYmIG5hbWUsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50
aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworCisgICAgVmVjdG9yPFdl
YkNvcmU6OkRPTUNhY2hlOjpDYWNoZUluZm8+IGNhY2hlSW5mb3MoKSBjb25zdDsKKworICAgIHZv
aWQgc2V0UGVyc2lzdGVuY3koYm9vbCBzaG91bGRQZXJzaXN0KSB7IG1fc2hvdWxkUGVyc2lzdCA9
IHNob3VsZFBlcnNpc3Q7IH0KKyAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oKTsK
KyAgICB2b2lkIGRldGFjaCgpIHsgbV9lbmdpbmUgPSBudWxscHRyOyB9CisKK3ByaXZhdGU6Cisg
ICAgQ2FjaGVzKEVuZ2luZSYsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgpOworCisgICAgdm9pZCBy
ZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNo
ZT4sIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj4mJik+JiYpOworICAgIHZvaWQgd3JpdGVDYWNo
ZXNUb0Rpc2soV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKworICAg
IGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkUGVyc2lz
dCB7IHRydWUgfTsKKyAgICBFbmdpbmUqIG1fZW5naW5lIHsgbnVsbHB0ciB9OworICAgIFN0cmlu
ZyBtX3Jvb3RQYXRoOworICAgIFZlY3RvcjxDYWNoZT4gbV9jYWNoZXM7CisgICAgUmVmUHRyPE5l
dHdvcmtDYWNoZTo6U3RvcmFnZT4gbV9zdG9yYWdlOworICAgIFZlY3RvcjxXZWJDb3JlOjpET01D
YWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrPiBtX3BlbmRpbmdJbml0aWFsaXphdGlvbkNhbGxiYWNr
czsKK307CisKK30gLy8gbmFtZXNwYWNlIENhY2hlU3RvcmFnZQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IDM1ZWIxZDY1
YjdmYThkOTVkZTFkNjMzMzVhMDljYTRkMGQ1NWI4YzYuLmY5ZGJiNjM0NDgyNmQ3ZTM3ZWQ1MDAy
YzA5YmIwZTI4ZjQ3YmQyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNw
cApAQCAtNjMsNiArNjMsMTYgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpj
YWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXEKICAgICB9KTsKIH0K
IAordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpzZXRQZXJzaXN0ZW5jeShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGlzUGVyc2lz
dGVudCkKK3sKKyAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5zZXRQZXJzaXN0ZW5jeShvcmln
aW4sIGlzUGVyc2lzdGVudCk7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLmNsZWFy
TWVtb3J5UmVwcmVzZW50YXRpb24ob3JpZ2luKTsKK30KKwogdm9pZCBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpyZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKICAgICBFbmdp
bmU6OmZyb20oc2Vzc2lvbklEKS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRp
ZmllciwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCmluZGV4IGZiM2E2NjRlNTQ1YzRkYWY3NTU4ZmQx
NDlhYTFlYTFmMWRmOWQ1MzMuLjQwZDM0YmVhYTEwZjZjMDIyYjJlMzQ4NmNjYjc0YmQ1MDQ2Yjc4
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCkBAIC01NCw2ICs1NCw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlbW92
ZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
Y2FjaGVzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXRyaWV2ZUNhY2hlc0lkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKIAorICAgIHZvaWQgc2V0UGVyc2lzdGVuY3koUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGlzUGVyc2lzdGVudCk7CisgICAg
dm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIG9yaWdpbik7CisKICAgICB2b2lkIHJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJik7CiAgICAgdm9pZCBwdXRSZWNvcmRz
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNTky
MmVlZDY2NzI3NmRkYzFlNTRhNDgxODQzZGZiZTNhOWU1MmRlOC4uMzU2ZGYzOTBjNDY0NjgyYzA3
ZjJlN2I0NTc2MDE2MmMxOGRkNTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsOSBAQCBtZXNzYWdlcyAtPiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIHsKICAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKTsKICAgICBDYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgU3RyaW5nIG9yaWdpbik7CiAKKyAgICBTZXRQZXJzaXN0ZW5jeShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBvcmlnaW4sIGJvb2wgaXNQZXJzaXN0ZW50KTsK
KyAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U3RyaW5nIG9yaWdpbik7CisKICAgICBSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAg
ICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyBvcHRpb25zKTsKICAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9y
PFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IHJlY29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MGUxYWNkYTUyNTU1YjRkZWM2
NmNjYzEwOGY2NjU5ZGQwOTEzNjFiLi5jMWQ5ZTE2Yjc2ZTNhMzZjMzdjMzg2MDM4YjRmMmRiYjk2
YTcwZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTg5MSw2ICs4OTEsNyBAQAogCQk0MTMwNzVCMjFERTg1RjU4MDAzOUVDNjkgLyog
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEzMDc1QTYxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tl
dEZhY3RvcnkuaCAqLzsgfTsKIAkJNDEzMDc1QjMxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJU
Q1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi87
IH07CiAJCTQxMzA3NUI0MURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTgxREU4
NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87IH07CisJCTQxMzVGQkQxMUY0
RkI4MDkwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzNUZCQ0YxRjRGQjdGMjAwNzRD
NDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgKi87IH07CiAJCTQxODk3RUNGMUY0
MTVENjIwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNFMUY0MTVENUMwMDE2
RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDE4OTdFRDAx
RjQxNUQ2NTAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNDMUY0MTVENUMwMDE2
RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgKi87IH07CiAJCTQxODk3RUQxMUY0
MTVENjgwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg5N0VDRDFGNDE1RDVDMDAxNkZB
NDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oICovOyB9OwpAQCAtMzE2MCw2ICszMTYx
LDggQEAKIAkJNDEzMDc1QTYxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3Rv
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDU29ja2V0RmFj
dG9yeS5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyog
TGliV2ViUlRDUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5l
RW5kaW5nID0gMDsgbmFtZSA9IExpYldlYlJUQ1Byb3ZpZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNM
YW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCTQx
MzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIu
aDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxh
bmcub2JqY3BwOyB9OworCQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUNCMUY0MTVENUMwMDE2RkE0
MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxODk3RUNDMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxOTUsNiArODE5OCw4
IEBACiAJCQkJNDE4OTdFRDYxRjQxNUQ4NjAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5j
cHAgKi8sCiAJCQkJNDE4OTdFRDIxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZS5oICovLAogCQkJCTQxRkFCRDI4MUY0RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5oICovLAorCQkJCTQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwICovLAorCQkJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLywKIAkJCQk0MTg5N0VEMzFGNDE1RDg1MDAxNkZB
NDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDE4OTdFRDQx
RjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCAqLywKIAkJ
CQk0MTg5N0VENTFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLywKQEAgLTk5ODMsNiArOTk4OCw3IEBACiAJCQkJRTE3MDg3NkIxNkQ2
Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRjE4NjM4MTY3RDA3MUUwMEExQTg1QSAvKiBDYWNoZU1vZGVsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxODk3RUQ3MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDEzNUZCRDExRjRGQjgwOTAwNzRDNDdCIC8qIENhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg5N0VEOTFGNDE1RDhB
MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUEyRTUxRTEy
RTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAKaW5kZXggYzNkMTMwMjc1MDljMzJiMzI3YzI2ZDllNGYxMGY2MTM1OTI0
YjIyMy4uYzlkNGQ5NDkxOWZhMmYwZDYyZWIzZjZmNjBiNGY1OThjOWFjYTljNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcApAQCAtODYsNiArODYsMTggQEAgdm9pZCBXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LAogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uOjpQdXRSZWNvcmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJ
ZGVudGlmaWVyLCByZWNvcmRzKSwgMCk7CiB9CiAKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6c2V0UGVyc2lzdGVuY3koY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgaXNQZXJzaXN0
ZW50LCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBjb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6U2V0UGVyc2lzdGVu
Y3kobV9zZXNzaW9uSUQsIG9yaWdpbiwgaXNQZXJzaXN0ZW50KSwgMCk7CisgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0KTsKK30KKwordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVh
ck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Q2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihtX3Nl
c3Npb25JRCwgb3JpZ2luKSwgMCk7CisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKK30KKwog
dm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpCiB7
CiAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDI1YWZmY2YwMGFkYzA4Zjgy
MTRlZDc0ZjUwZmM4MjEzOGMxODFjN2MuLjg4N2NmNzQzOGQ5YzAwN2E0YzA4NWZlMTM4Y2UwOTgw
NzEwMWQ0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nh
Y2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNjAsNiArNjAsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRv
QmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYpIGZpbmFs
OwogCisgICAgdm9pZCBzZXRQZXJzaXN0ZW5jeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBp
c1BlcnNpc3RlbnQsIFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpIGZpbmFsOworCiAg
ICAgdm9pZCBvcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwogICAgIHZvaWQgcmVt
b3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpE
T01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZv
c09yRXJyb3ImJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGZkZGRlNmMwNzNiNjY2YmJjNzFhYmNmN2IyZDBmNGYxNDdi
OGVhZS4uOTBmNTNmNTNiODkxNGRmMjExOGQxZTZiMjBkOGI3MzBhM2I3MDI0NSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDE3LTA4LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdXR0aW5n
IHRoZXNlIHRlc3RzIGluIGh0dHAvdGVzdHMgZm9sZGVyIHNvIHRoYXQgdGhleSBydW4gaW4gYSBk
aWZmZXJlbnQgb3JpZ2luIGFuZCBzbyBhIGRpZmZlcmVudCBDYWNoZXMgdGhhbiBvdGhlciB0ZXN0
cy4KKyAgICAgICAgU2V0dGluZyBib3RoIHBlcnNpc3RlbmN5IHRvIGZhbHNlIGFuZCBjbGVhcmlu
ZyB0aGUgbWVtb3J5IHJlcHJlc2VudGF0aW9uIHdvdWxkIHByb2JhYmx5IGFmZmVjdAorICAgICAg
ICB0aGUgb3RoZXIgdGVzdHMgdGhhdCB3b3VsZCBydW4gaW4gcGFyYWxsZWwuCisKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3ktZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lz
dGVuY3kuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9y
YWdlL3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIw
MTctMDgtMjQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdQ
VCBoYXJuZXNzIGVycm9ycyBvbiBsZWFrcyBhbmQgaU9TLXNpbSBFV1MgYm90cwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFn
ZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJjZDIw
YTRjMDI5OWJmZmQwOTI2YzA2MjNkNDc1NzFlYzRhMmNkMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRw
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorCisKK1BBU1MgQ2xlYW5pbmcgZXhpc3Rp
bmcgY2FjaGVzIAorUEFTUyBDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24gYW5kIGRpc2FibGUg
ZGlzayBwZXJzaXN0ZW5jeSAKK1BBU1MgQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJldmlv
dXMgdGVzdCAxIAorUEFTUyBDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24gYnV0IGtlZXAgZGlz
ayBwZXJzaXN0ZW5jeSAKK1BBU1MgQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJldmlvdXMg
dGVzdCAyIAorUEFTUyBBZGRpbmcvUmVtb3ZpbmcgY2FjaGVzIGFuZCBjbGVhcmluZyBpbiBtZW1v
cnkgcmVwcmVzZW50YXRpb24gYXQgdmFyaW91cyB0aW1lcyAKK1BBU1MgQ2xlYW5pbmcgYWRkZWQg
Y2FjaGVzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3Jh
Z2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3
ZDkwMjA1NWQ0ZWM2NTFiYTVkN2I2ZTY5NWVkMmYyMmIzNmI1ZGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3ku
aHR0cHMuaHRtbApAQCAtMCwwICsxLDEyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPkNhY2hlIFN0b3JhZ2U6IHRlc3RpbmcgcGVyc2lzdGVuY3k8L3RpdGxlPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisgICAgPGRpdiBpZD0iY2hlY2siPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAg
cHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygp
LnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB2YXIgcGVuZGluZyA9IFtdOworICAgICAgICAg
ICAgZm9yIChrZXkgb2Yga2V5cykKKyAgICAgICAgICAgICAgICBwZW5kaW5nLnB1c2goc2VsZi5j
YWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChw
ZW5kaW5nKTsKKyAgICAgICAgfSk7CisgICAgfSwgIkNsZWFuaW5nIGV4aXN0aW5nIGNhY2hlcyIp
OworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMg
aW50ZXJuYWxzIik7CisKKyAgICAgICAgaW50ZXJuYWxzLnNldENhY2hlU3RvcmFnZVBlcnNpc3Rl
bmN5KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKKyAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVz
dC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEg
PT09ICJyZWFkeSIpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVT
dG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2su
aW5uZXJIVE1MID0gIjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZy
YW1lLmh0bWwjY2hlY2snPjwvaWZyYW1lPiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZXZlbnQuZGF0
YSA9PT0gZmFsc2UsICJObyBjYWNoZSBvYmplY3Qgc2hvdWxkIGJlIGZvdW5kIik7CisgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldENhY2hlU3RvcmFnZVBlcnNpc3RlbmN5KGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICBj
aGVjay5pbm5lckhUTUwgPSAiPGlmcmFtZSBzcmM9J3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5j
eS1pZnJhbWUuaHRtbCc+PC9pZnJhbWU+IjsKKyAgICAgICAgfSkKKyAgICB9LCAiQ2xlYXIgbWVt
b3J5IHJlcHJlc2VudGF0aW9uIGFuZCBkaXNhYmxlIGRpc2sgcGVyc2lzdGVuY3kiKTsKKworICAg
IHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKCk7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0Q2FjaGVTdG9yYWdlUGVyc2lzdGVuY3ko
dHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50aGVu
KGtleXMgPT4geworICAgICAgICAgICAgdmFyIHBlbmRpbmcgPSBbXTsKKyAgICAgICAgICAgIGZv
ciAoa2V5IG9mIGtleXMpCisgICAgICAgICAgICAgICAgcGVuZGluZy5wdXNoKHNlbGYuY2FjaGVz
LmRlbGV0ZShrZXlzWzBdKSk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVuZGlu
Zyk7CisgICAgICAgIH0pOworICAgIH0sICJDbGVhbmluZyBhZGRlZCBjYWNoZXMgZnJvbSBwcmV2
aW91cyB0ZXN0IDEiKTsKKworICAgIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgaWYg
KCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJU
ZXN0IHJlcXVpcmVzIGludGVybmFscyIpOworCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKChldmVudCkgPT4geworICAgICAgICAgICAgICAg
IGlmIChldmVudC5kYXRhID09PSAicmVhZHkiKSB7CisgICAgICAgICAgICAgICAgICAgIGludGVy
bmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrLmlubmVySFRNTCA9ICI8aWZyYW1lIHNyYz0ncmVzb3VyY2VzL2NhY2hl
LXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sI2NoZWNrJz48L2lmcmFtZT4iOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGV2ZW50LmRhdGEgPT09IHRydWUsICJBIGNhY2hlIG9iamVjdCBzaG91bGQgYmUgZm91
bmQiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KSk7CisgICAg
ICAgICAgICBjaGVjay5pbm5lckhUTUwgPSAiPGlmcmFtZSBzcmM9J3Jlc291cmNlcy9jYWNoZS1w
ZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbCc+PC9pZnJhbWU+IjsKKyAgICAgICAgfSkKKyAgICB9LCAi
Q2xlYXIgbWVtb3J5IHJlcHJlc2VudGF0aW9uIGJ1dCBrZWVwIGRpc2sgcGVyc2lzdGVuY3kiKTsK
KworICAgIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVz
LmtleXMoKS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgdmFyIHBlbmRpbmcgPSBbXTsKKyAg
ICAgICAgICAgIGZvciAoa2V5IG9mIGtleXMpCisgICAgICAgICAgICAgICAgcGVuZGluZy5wdXNo
KHNlbGYuY2FjaGVzLmRlbGV0ZShrZXlzWzBdKSk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5hbGwocGVuZGluZyk7CisgICAgICAgIH0pOworICAgIH0sICJDbGVhbmluZyBhZGRlZCBjYWNo
ZXMgZnJvbSBwcmV2aW91cyB0ZXN0IDIiKTsKKworICAgIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsK
KyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyIpOworCisgICAgICAgIHJldHVybiBQ
cm9taXNlLmFsbChbc2VsZi5jYWNoZXMub3BlbigidGVzdDIiKSwgc2VsZi5jYWNoZXMub3Blbigi
dGVzdDEiKV0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtl
eXMoKQorICAgICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhrZXlzLCBbInRlc3QyIiwgInRlc3QxIl0pOworICAgICAgICB9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2Vu
dGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpOworICAgICAg
ICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhrZXlz
LCBbInRlc3QyIiwgInRlc3QxIl0pOworICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmRl
bGV0ZSgidGVzdDIiKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBpbnRl
cm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsKKyAgICAgICAgfSkudGhlbihrZXlzID0+IHsK
KyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgWyJ0ZXN0MSJdKTsKKyAgICAg
ICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMub3Blbigi
dGVzdDIiKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBpbnRlcm5hbHMu
Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAgcmV0
dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsKKyAgICAgICAgfSkudGhlbihrZXlzID0+IHsKKyAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgWyJ0ZXN0MSIsICJ0ZXN0MiJdKTsKKyAg
ICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3Nl
bGYuY2FjaGVzLmRlbGV0ZSgidGVzdDIiKSwgc2VsZi5jYWNoZXMuZGVsZXRlKCJ0ZXN0MSIpXSk7
CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2Fj
aGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxm
LmNhY2hlcy5rZXlzKCk7CisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFtdKTsKKyAgICAgICAgfSk7CisgICAgfSwgIkFkZGlu
Zy9SZW1vdmluZyBjYWNoZXMgYW5kIGNsZWFyaW5nIGluIG1lbW9yeSByZXByZXNlbnRhdGlvbiBh
dCB2YXJpb3VzIHRpbWVzIik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAg
IHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIHZh
ciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBmb3IgKGtleSBvZiBrZXlzKQorICAgICAgICAg
ICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hlcy5kZWxldGUoa2V5c1swXSkpOworICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmcpOworICAgICAgICB9KTsKKyAgICB9LCAi
Q2xlYW5pbmcgYWRkZWQgY2FjaGVzIik7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNv
dXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk3OWM5OGZlZjhlNDRiMTU3YTEzZmMwZDk2YTQyZmY2NGQ0ODUxNmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvcmVz
b3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8c2NyaXB0PgorZnVuY3Rpb24gZG9U
ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2ggPT09ICIjY2hlY2siKSB7Cisg
ICAgICAgIHNlbGYuY2FjaGVzLmtleXMoKS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgd2lu
ZG93LnBhcmVudC5wb3N0TWVzc2FnZShrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSAi
dGVzdENhY2hlTmFtZSIsICIqIik7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgc2VsZi5jYWNoZXMub3BlbigidGVzdENhY2hlTmFtZSIpLnRoZW4oKCkgPT4gewor
ICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKCJyZWFkeSIsICIqIik7CisgICAgfSk7
Cit9Citkb1Rlc3QoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319107</attachid>
            <date>2017-08-25 15:58:40 -0700</date>
            <delta_ts>2017-08-25 16:28:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175995-20170825155840.patch</filename>
            <type>text/plain</type>
            <size>58278</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWYxMjFkOGFiZjI2MzYx
NTlhMGU4YzcyNzg0OGYwM2I3M2M4YjA4Zi4uM2FhYjllYzYyNWE4OGIwZTg5N2NlNmM0OGRhMTZk
N2E0YjNlZDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBw
b3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cGVyc2lzdGVuY3kuaHR0cHMuaHRtbAorCisgICAgICAgIEFkZGluZyBtZXRob2QgdG8gY2xlYXIg
dGhlIG1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FjaGUgc3RvcmFnZS4KKyAgICAgICAg
QWRkaW5nIG1ldGhvZCB0byBzZXQgdGhlIGNhY2hlIHN0b3JhZ2UgcGVyc2lzdGVuY3kgKGkuZS4g
d2hldGhlciB0aGUgY2FjaGUgc3RvcmFnZSB3aWxsIHJlYWQvd3JpdGUgb24gdGhlIGRpc2spLgor
ICAgICAgICBFeHBvc2luZyB0aGVzZSBtZXRob2RzIGFzIGludGVybmFscyBzbyB0aGF0IGxheW91
dCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBwZXJzaXN0ZW5jeS4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBSZWFkRGlzayBhbmQgV3JpdGVEaXNrIGVycm9ycyB0aGF0IGFyZSB1c2VkIGJ5
IENhY2hlU3RvcmFnZTo6RW5naW5lLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjplcnJvclRvRXhj
ZXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRD
YWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE3LTA4
LTI0ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAxMGJlYmVjNDBmNWE0N2VkNjZiYmZjOGUyOThmNDVhZjYxMGIzOTVlLi5iNDY5
MzVlNTA3MTg1MTIyNDAzMGUyMmY0YWI3ZTBhMmY1NzdkNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDg2IEBACiAyMDE3LTA4LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAor
ICAgICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgZGlzayBy
ZWFkL3dyaXRlIGNhcGFjaXRpZXMgdG8gQ2FjaGVTdG9yYWdlIGVuZ2luZS4KKyAgICAgICAgVGhp
cyBpcyB1c2VkIHRvIHN0b3JlIHBlci1vcmlnaW4gY2FjaGUgbmFtZXMgaW4gYSBmaWxlLgorICAg
ICAgICBNYWtpbmcgRW5naW5lIGEgdGhyZWFkIHNhZmUgcmVmY291bnRlZCBvYmplY3Qgc28gdGhh
dCBpdCBkb2VzIHJlYWQvd3JpdGUgaW4gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBDYWNoZVN0b3JhZ2U6OkNhY2hlcyBhcyB0aGUgb2JqZWN0IG1hbmFnaW5nIHRo
ZSBsaXN0IG9mIENhY2hlIG9iamVjdHMgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorICAgICAgICBDYWNo
ZXMgd2lsbCBiZSByZXNwb25zaWJsZSB0byBkbyBhbGwgdGhlIHJlYWQvd3JpdGUgb3BlcmF0aW9u
cyBmb3IgYWxsIG9mIGl0cyBjYWNoZXMuCisgICAgICAgIEl0IHdpbGwgYmUgcmVzcG9uc2libGUg
Zm9yIHF1b3RhIGxpbWl0YXRpb24gYXMgd2VsbC4KKworICAgICAgICBNb3ZpbmcgcGFydCBvZiB0
aGUgbG9naWMgZnJvbSBDYWNoZVN0b3JhZ2U6OkVuZ2luZSBpbnRvIENhY2hlU3RvcmFnZTo6Q2Fj
aGVzLgorCisgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lIGlzIGluaXRpYWxpemVkIGFzeW5j
aHJvbm91c2x5IGFzIGl0IGZpcnN0IGNyZWF0ZXMgYSBzYWx0IHdoaWNoIGlzIHVzZWQKKyAgICAg
ICAgdG8gb2JmdXNjYXRlIHRoZSBuYW1lcyBvZiB0aGUgdmFyaW91cyBmaWxlcyBzdG9yZWQgb24g
ZGlzay4KKworICAgICAgICBJbiB0aGUgc2FtZSBzcGlyaXQsIENhY2hlU3RvcmFnZTo6Q2FjaGVz
IGlzIGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5IGFzIGl0IG5lZWRzIHRvIHJlYWQgZnJvbSB0
aGUgZGlzayB0aGUgbGlzdCBvZiBjYWNoZSBuYW1lcy4KKyAgICAgICAgT25jZSByZWFkLCB0aGUg
bmFtZXMgd2lsbCBiZSBzdG9yZWQgaW4gbWVtb3J5LgorICAgICAgICBBZGRlZCB0aGUgcG9zc2li
aWxpdHkgdG8gY2xlYXIgdGhpcyBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24uIFRoaXMgd2lsbCBi
ZSB1c2VmdWwgZm9yIHRlc3RpbmcuCisgICAgICAgIFRoaXMgbWlnaHQgYWxzbyBiZSB1c2VmdWwg
dG8gc2F2ZSBtZW1vcnkgd2hlbiB0aGVyZSBpcyBubyBtb3JlIHVzZSBvZiBDYWNoZVN0b3JhZ2Ug
Ynkgd2ViIHBhZ2VzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpyb290UGF0aEZyb21TZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6Omdsb2JhbEVuZ2luZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjp+RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmZyb20pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
ZGVmYXVsdEVuZ2luZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpF
bmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6b3Blbik6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZW1vdmUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OndyaXRlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpyZW1vdmVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OmhhbmRsZVJlbW92ZWRDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpyb290UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpzYWx0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6Om5leHRDYWNoZUlkZW50aWZpZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OmNhY2hlc1Jvb3RQYXRoKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpjYWNoZXNMaXN0RmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6Q2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6
ZmluZCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpvcGVuKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlbW92ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6ZW5jb2RlQ2FjaGVOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6ZGVjb2RlQ2FjaGVzTmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlczo6cmVhZENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Y2FjaGVJbmZvcyBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmlzSW5pdGlhbGl6ZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6c2V0UGVyc2lzdGVu
Y3kpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6ZGV0YWNoKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6c2V0
UGVyc2lzdGVuY3kpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oOgorCisyMDE3LTA4LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKwogICAgICAgICBbQ2FjaGUgQVBJXSBVSVByb2Nlc3Mgc2hvdWxkIHByb3ZpZGUgdGhlIGRp
cmVjdG9yeSBwYXRoIHdoZXJlIHRvIHN0b3JlIENhY2hlIFN0b3JhZ2UgZGF0YQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODg0CiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zNDA3MjQ0MT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggZjIwODBkYzk5MWJmYTViNGU1
NDM2Y2Q3NTdjZGJkNWYxMjg5YTA3OC4uMWRiYjgzNTc0MjdkYTZjYWM0MjQxMDhjNDU5ZWYxYjdh
YzQ1MmZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgRE9NQ2FjaGU6OlJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNoZTo6UmVjb3JkPiYmLCBET01DYWNoZTo6UmVj
b3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIAorICAgIC8vIFVzZWQgb25seSBmb3IgdGVzdGlu
ZyBwdXJwb3Nlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyc2lzdGVuY3koY29uc3QgU3RyaW5n
JiAvKiBvcmlnaW4gKi8sIGJvb2wgLyogaXNQZXJzaXN0ZW50ICovLCBET01DYWNoZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRE9NQ2FjaGU6OkVycm9yOjpOb3RJ
bXBsZW1lbnRlZCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgRE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQp
OyB9CisKIHByb3RlY3RlZDoKICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAgZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzM2Rh
ODA4NTQ0NWJkYzhmMGFhZGNlODgyOGU2ZWRmNDk5MGI4MTljLi4yNWVkM2Q3OTk0N2I1NjhkODVk
ZmYyZjUxODY0MDI2M2FkZDA4YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcApAQCAtNDAsNiArNDAsMTAgQEAgRXhjZXB0aW9uIGVycm9yVG9FeGNlcHRpb24o
RXJyb3IgZXJyb3IpCiAgICAgc3dpdGNoIChlcnJvcikgewogICAgIGNhc2UgRXJyb3I6Ok5vdElt
cGxlbWVudGVkOgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfTsKKyAgICBjYXNlIEVycm9yOjpSZWFk
RGlzazoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgcmVhZGluZyBkYXRhIGZyb20gZGlzayIpIH07CisgICAgY2FzZSBFcnJvcjo6V3Jp
dGVEaXNrOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVy
YWwoIkZhaWxlZCB3cml0aW5nIGRhdGEgdG8gZGlzayIpIH07CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBl
cnJvciIpIH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmlu
ZGV4IGMyMTIzYTk0YTM2NDUyOTY2ZTMyYWEzNGY2NzI2NDZlZjExNWI0NTMuLmVlYmU2Njc4Mjc0
MDkxYWMwYjc1NGIyYzVjMzRkMDhiOTgxM2Y3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmgKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIERPTUNhY2hlIHsKIAog
ZW51bSBjbGFzcyBFcnJvciB7CiAgICAgTm90SW1wbGVtZW50ZWQsCisgICAgUmVhZERpc2ssCisg
ICAgV3JpdGVEaXNrLAogICAgIEludGVybmFsCiB9OwogCkBAIC05NCw2ICs5Niw4IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPiB7CiAgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVy
cm9yLAogICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkLAor
ICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6OlJlYWREaXNrLAorICAgICAgICBXZWJD
b3JlOjpET01DYWNoZTo6RXJyb3I6OldyaXRlRGlzaywKICAgICAgICAgV2ViQ29yZTo6RE9NQ2Fj
aGU6OkVycm9yOjpJbnRlcm5hbAogICAgID47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IDg0Mjc1ZGYzMzU5YzJjNzIxNDE1NmYyM2Q2MWM5ODViZGNkYTQ3MDMuLjMx
N2Q0MmYxMTYyNTgwZTVjODZiZWM5MDdlYTQxM2EyNTI0ZTRhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJDU1NNZWRpYVJ1
bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdXBwb3J0c1J1
bGUuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2Fj
aGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00MTM2LDQg
KzQxMzgsMzQgQEAgU3RyaW5nIEludGVybmFsczo6YXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSBjb25z
dAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCit2b2lkIEludGVybmFsczo6c2V0Q2Fj
aGVTdG9yYWdlUGVyc2lzdGVuY3koYm9vbCBpc1BlcnNpc3RlbnQpCit7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBjb250ZXh0RG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAg
ICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gcGFnZS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIo
KS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKHBhZ2UtPnNlc3Npb25JRCgpKTsKKyAgICAg
ICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+c2V0UGVyc2lzdGVuY3koZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgaXNQZXJzaXN0ZW50LCBbXShzdGQ6Om9w
dGlvbmFsPERPTUNhY2hlOjpFcnJvcj4mJikgeyB9KTsKK30KKwordm9pZCBJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKQoreworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKSB7CisgICAgICAg
IGlmIChhdXRvKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgICAg
IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9IHBhZ2UtPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCku
Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihwYWdlLT5zZXNzaW9uSUQoKSk7CisgICAgICAg
IGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24tPmNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgW10oc3RkOjpvcHRpb25h
bDxET01DYWNoZTo6RXJyb3I+JiYpIHsgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGQyNzgyN2QxMzZlOWZhMGUwZjgyNDQy
ODllNDhlYWY3YmQyZTJiMzguLjRiNDgyMWRjZDJkYzc4MGE3ODA5NGFkYWYxOWJkMjE4NWM1NmZi
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNDMsNiArNDMsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOwogY2xhc3MgRE9NUmVjdDsKIGNsYXNzIERPTVJlY3RMaXN0OwogY2xhc3Mg
RE9NVVJMOwpAQCAtNTk4LDYgKzU5OSw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBhdWRpb1Nl
c3Npb25DYXRlZ29yeSgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJzaXN0
ZW5jeShib29sIGlzUGVyc2lzdGVudCk7CisgICAgdm9pZCBjbGVhckNhY2hlU3RvcmFnZU1lbW9y
eVJlcHJlc2VudGF0aW9uKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERv
Y3VtZW50Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpAQCAtNjE4
LDYgKzYyMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVjdG9yRnJvbnRlbmQ7CisgICAgUmVmUHRyPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA0
MjcxYWUyZjI2YjAyNzYwZGJlZTUxMjE5NmZlNjBhOGZhYmFmODE0Li5iYzFjYjBjOGIwOGZhMmZk
ZGMwNjBhNDA0MGZmOTA4ZWVhNmQ4NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCkBAIC01NDQsNSArNTQ0LDggQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAg
ICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCByZW1vdmVNZWRpYVN0cmVhbVRyYWNr
KE1lZGlhU3RyZWFtIHN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayB0cmFjayk7CiAgICAgW0NvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCBzaW11bGF0ZU1lZGlhU3RyZWFtVHJhY2tDYXB0dXJl
U291cmNlRmFpbHVyZShNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKTsKIAorICAgIHZvaWQgc2V0Q2Fj
aGVTdG9yYWdlUGVyc2lzdGVuY3koYm9vbGVhbiBpc1BlcnNpc3RlbnQpOworICAgIHZvaWQgY2xl
YXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworCiAgICAgRE9NU3RyaW5nIGF1
ZGlvU2Vzc2lvbkNhdGVnb3J5KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggY2Q0MThiOTg3
MjRjZGFjMTg4ZWI1ZTFhYjI0OGNlMGE0Mjc5NmZkZi4uMjRkNjM2Nzc0M2M2NDkxNTJmMzI5YmU1
ZWJjM2QzMmUzNjI3ZjgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMTcsNiArMTE3LDcgQEAg
c2V0KFdlYktpdDJfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAogCiAg
ICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKICAgICBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAogICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1YWVi
YmU2NjliZWQyYjhjNzE1YjgzNWY1NTUxYzY0YmQ3NDkwYzJhLi42MGYwMjJhNDgzN2YzNzdjMThk
NDc3MmEyNjUwMjFiMDc5MzVmNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0yNiw2ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgi
CiAKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTMz
LDI1ICszNSwzOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0
d29ya0NhY2hlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIENhY2hlU3RvcmFn
ZSB7CiAKLXN0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8RW5n
aW5lPj4mIGdsb2JhbEVuZ2luZU1hcCgpCitzdGF0aWMgaW5saW5lIFN0cmluZyByb290UGF0aEZy
b21TZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8RW5naW5l
Pj4+IG1hcDsKKyAgICBTdHJpbmcgc2Vzc2lvblN1YmRpcmVjdG9yeSA9IEFTQ0lJTGl0ZXJhbCgi
c2Vzc2lvbiIpICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSwgc2Vzc2lvblN1YmRpcmVjdG9yeSk7
Cit9CisKK3N0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWY8RW5naW5lPj4mIGdsb2Jh
bEVuZ2luZU1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIFJlZjxFbmdpbmU+Pj4gbWFwOworCiAgICAgcmV0dXJuIG1hcDsKIH0KIAorRW5n
aW5lOjp+RW5naW5lKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVl
cygpKQorICAgICAgICBjYWNoZXMtPmRldGFjaCgpOworfQorCiBFbmdpbmUmIEVuZ2luZTo6ZnJv
bShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHNlc3Npb25JRCA9PSBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4gZGVmYXVsdEVu
Z2luZSgpOwogCi0gICAgcmV0dXJuICpnbG9iYWxFbmdpbmVNYXAoKS5lbnN1cmUoc2Vzc2lvbklE
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVuZ2luZT4oKTsKLSAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuIGdsb2JhbEVuZ2luZU1hcCgpLmVuc3VyZShz
ZXNzaW9uSUQsIFsmXSB7CisgICAgICAgIHJldHVybiBFbmdpbmU6OmNyZWF0ZShyb290UGF0aEZy
b21TZXNzaW9uSUQoc2Vzc2lvbklEKSk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
fQogCiB2b2lkIEVuZ2luZTo6ZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CkBAIC02Miw4ICs3OCwxNCBAQCB2b2lkIEVuZ2luZTo6ZGVzdHJveUVuZ2luZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiAKIEVuZ2luZSYgRW5naW5lOjpkZWZhdWx0RW5naW5lKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPEVuZ2luZT4+IGRlZmF1bHRF
bmdpbmUgPSB7IHN0ZDo6bWFrZV91bmlxdWU8RW5naW5lPigpIH07Ci0gICAgcmV0dXJuICpkZWZh
dWx0RW5naW5lLmdldCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8RW5naW5lPj4g
ZGVmYXVsdEVuZ2luZSA9IHsgRW5naW5lOjpjcmVhdGUocm9vdFBhdGhGcm9tU2Vzc2lvbklEKFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKSB9OworICAgIHJldHVybiBkZWZhdWx0
RW5naW5lLmdldCgpOworfQorCitFbmdpbmU6OkVuZ2luZShTdHJpbmcmJiByb290UGF0aCkKKyAg
ICA6IG1fcm9vdFBhdGgoV1RGTW92ZShyb290UGF0aCkpCisgICAgLCBtX2lvUXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGVTdG9yYWdlRW5naW5lLnNlcmlhbEJh
Y2tncm91bmQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tn
cm91bmQpKQorewogfQogCiB2b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJh
Y2spCkBAIC03NCw0MiArOTYsMzggQEAgdm9pZCBFbmdpbmU6Om9wZW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXIKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8mIGNhY2hlcyA9IGNhY2hlc09y
RXJyb3IudmFsdWUoKS5nZXQoKTsKKyAgICAgICAgQ2FjaGVzJiBjYWNoZXMgPSBjYWNoZXNPckVy
cm9yLnZhbHVlKCk7CiAKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IGNhY2hlcy5maW5kTWF0Y2hp
bmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZSA9PSBjYWNoZU5hbWU7
IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciA9ICsrbV9uZXh0Q2FjaGVJZGVudGlmaWVyOwotICAgICAg
ICAgICAgY2FjaGVzLmFwcGVuZChDYWNoZSB7IGNhY2hlSWRlbnRpZmllciwgY2FjaGVOYW1lLCBW
ZWN0b3I8UmVjb3JkPigpLCAwIH0pOwotICAgICAgICAgICAgd3JpdGVDYWNoZXNUb0Rpc2soW2Nh
Y2hlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25h
bDxFcnJvcj4mJiBlcnJvcikgewotICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgY2FsbGJhY2soY2FjaGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlc1twb3NpdGlvbl0uaWRlbnRpZmll
cik7CisgICAgICAgIGlmIChhdXRvKiBjYWNoZSA9IGNhY2hlcy5maW5kKGNhY2hlTmFtZSkpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlLT5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCisgICAgICAgIGNhY2hlcy5vcGVuKFN0cmluZyB7IGNhY2hlTmFt
ZSB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVy
T3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCiB2b2lkIEVuZ2luZTo6cmVtb3ZlKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
LSAgICBzdGQ6Om9wdGlvbmFsPENhY2hlPiByZW1vdmVkQ2FjaGU7CisgICAgQ2FjaGVzKiBjYWNo
ZXNUb01vZGlmeSA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvJiBjYWNoZXMgOiBtX2NhY2hlcy52
YWx1ZXMoKSkgewotICAgICAgICBhdXRvIHBvc2l0aW9uID0gY2FjaGVzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGNhY2hlSWRl
bnRpZmllcjsgfSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgewotICAgICAg
ICAgICAgcmVtb3ZlZENhY2hlID0gV1RGTW92ZShjYWNoZXNbcG9zaXRpb25dKTsKLSAgICAgICAg
ICAgIGNhY2hlcy5yZW1vdmUocG9zaXRpb24pOworICAgICAgICBpZiAoYXV0byogY2FjaGVUb1Jl
bW92ZSA9IGNhY2hlcy0+ZmluZChjYWNoZUlkZW50aWZpZXIpKSB7CisgICAgICAgICAgICBjYWNo
ZXNUb01vZGlmeSA9IGNhY2hlcy5wdHIoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfQotICAgIGlmICghcmVtb3ZlZENhY2hlKSB7Ci0gICAgICAgIGNhbGxiYWNrKG1ha2VV
bmV4cGVjdGVkKEVycm9yOjpJbnRlcm5hbCkpOworICAgIGlmICghY2FjaGVzVG9Nb2RpZnkpIHsK
KyAgICAgICAgaWYgKGF1dG8gcG9zaXRpb24gPSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5n
KFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJ
ZGVudGlmaWVyOyB9KSkgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXJy
b3I6OkludGVybmFsKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
Y2FsbGJhY2soY2FjaGVJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBt
X3JlbW92ZWRDYWNoZXMuYXBwZW5kKFdURk1vdmUocmVtb3ZlZENhY2hlLnZhbHVlKCkpKTsKLSAg
ICB3cml0ZUNhY2hlc1RvRGlzayhbY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7CisKKyAgICBjYWNoZXNU
b01vZGlmeS0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW2NhY2hlSWRlbnRpZmllciwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgewog
ICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVk
KGVycm9yLnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyNiwxNCArMTQ0LDcg
QEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWNo
ZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGF1dG8mIGNhY2hlcyA9IGNhY2hlc09yRXJyb3IudmFsdWUoKS5nZXQoKTsK
LQotICAgICAgICBWZWN0b3I8Q2FjaGVJbmZvPiBjYWNoZXNJbmZvOwotICAgICAgICBjYWNoZXNJ
bmZvLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FjaGVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAo
YXV0byYgY2FjaGUgOiBjYWNoZXMpCi0gICAgICAgICAgICBjYWNoZXNJbmZvLnVuY2hlY2tlZEFw
cGVuZChDYWNoZUluZm8geyBjYWNoZS5pZGVudGlmaWVyLCBjYWNoZS5uYW1lfSk7Ci0KLSAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShjYWNoZXNJbmZvKSk7CisgICAgICAgIGNhbGxiYWNrKGNhY2hl
c09yRXJyb3IudmFsdWUoKS5nZXQoKS5jYWNoZUluZm9zKCkpOwogICAgIH0pOwogfQogCkBAIC0x
NDksNyArMTYwLDcgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWMKIAogICAgICAgICBWZWN0b3I8
UmVjb3JkPiBjb3B5OwogICAgICAgICBjb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jk
cy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJlc3VsdC52YWx1ZSgpLmdl
dCgpLnJlY29yZHMpCisgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3JkcykKICAgICAg
ICAgICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOwogCiAgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoY29weSkpOwpAQCAtMjM0LDIxICsyNDUsNTYgQEAgdm9pZCBFbmdpbmU6
OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmUKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OndyaXRlQ2FjaGVzVG9EaXNr
KEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2FsbGJhY2spCit2b2lk
IEVuZ2luZTo6aW5pdGlhbGl6ZShGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYp
PiYmIGNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd3JpdGluZy4KLSAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgIGlmIChtX3NhbHQpIHsKKyAgICAgICAgY2FsbGJh
Y2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBz
YWx0UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCBB
U0NJSUxpdGVyYWwoInNhbHQiKSk7CisgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBzYWx0UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgV2Vi
Q29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBhdGgpOworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0
aGlzLCBzYWx0ID0gcmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFzYWx0KSB7CisgICAgICAg
ICAgICAgICAgY2FsbGJhY2soRXJyb3I6OldyaXRlRGlzayk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zYWx0ID0gV1RGTW92ZShzYWx0KTsK
KyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIH0pOworICAgIH0p
OwogfQogCiB2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgcmVhZGluZy4KLQotICAgIGF1dG8mIGNhY2hlcyA9IG1fY2FjaGVzLmVuc3VyZShvcmlnaW4s
IFtdIHsKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxDYWNoZT4oKTsKKyAgICBhdXRvJiBjYWNoZXMg
PSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBbJm9yaWdpbiwgdGhpc10geworICAgICAgICByZXR1
cm4gQ2FjaGVzOjpjcmVhdGUoKnRoaXMsIG9yaWdpbik7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogCi0gICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxWZWN0b3I8Q2FjaGU+PiB7
IGNhY2hlcyB9KTsKKyAgICBpZiAoY2FjaGVzLT5pc0luaXRpYWxpemVkKCkpIHsKKyAgICAgICAg
Y2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgY2FjaGVzLmdldCgpIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW5pdGlhbGl6ZShbdGhpcywgb3JpZ2lu
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVy
cm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBhdXRvIGNhY2hlcyA9IG1fY2FjaGVzLmdldChvcmlnaW4pOwor
ICAgICAgICBBU1NFUlQoY2FjaGVzKTsKKworICAgICAgICBjYWNoZXMtPmluaXRpYWxpemUoW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlc10oc3RkOjpvcHRpb25hbDxFcnJvcj4m
JiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAg
ICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlcz4geyAqY2FjaGVzIH0pOworICAgICAgICB9KTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OnJlYWRDYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIENhY2hlQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTI3OCwxMSArMzI0LDggQEAgQ2FjaGUq
IEVuZ2luZTo6Y2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogewogICAgIENhY2hlKiBy
ZXN1bHQgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgY2FjaGVzIDogbV9jYWNoZXMudmFsdWVz
KCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IGNhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBjYWNoZUlkZW50aWZp
ZXI7IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9ICZjYWNoZXNbcG9zaXRpb25dOworICAgICAgICBpZiAoKHJlc3VsdCA9IGNhY2hl
cy0+ZmluZChjYWNoZUlkZW50aWZpZXIpKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
CiAgICAgfQogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBtX3Jl
bW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBp
dGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyOyB9KTsKQEAgLTMwNSw3ICszNDgsNzEg
QEAgVmVjdG9yPHVpbnQ2NF90PiBFbmdpbmU6OnF1ZXJ5Q2FjaGUoY29uc3QgVmVjdG9yPFJlY29y
ZD4mIHJlY29yZHMsIGNvbnN0IFdlYkNvcmUKICAgICByZXR1cm4gcmVzdWx0czsKIH0KIAordm9p
ZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6
OkRhdGEmJiBkYXRhLCBXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2Fs
bGJhY2spCit7CisgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0
ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6
Om9wZW4oZmlsZW5hbWUsIElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRlKTsKKyAgICAgICAgY2hhbm5l
bC0+d3JpdGUoMCwgZGF0YSwgbnVsbHB0ciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGVycm9yXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhF
cnJvcjo6V3JpdGVEaXNrKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6cmVhZEZp
bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IE5ldHdv
cmtDYWNoZTo6RGF0YSYsIGludCBlcnJvcik+JiYgY2FsbGJhY2spCit7CisgICAgbV9pb1F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgp
XSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oZmls
ZW5hbWUsIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7CisgICAgICAgIGlmIChjaGFubmVsLT5maWxl
RGVzY3JpcHRvcigpIDwgMCkgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKERhdGEgeyB9LCAwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBtX2lvUXVldWUucHRyKCksIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewor
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBkYXRhLCBlcnJvcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjYWxs
YmFjayhkYXRhLCBlcnJvcik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgRW5naW5lOjpyZW1vdmVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCit7
CisgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgRW5naW5lOjpoYW5kbGVSZW1vdmVkQ2FjaGUoQ2FjaGUmJiBj
YWNoZSkKK3sKKyAgICBtX3JlbW92ZWRDYWNoZXMuYXBwZW5kKFdURk1vdmUoY2FjaGUpKTsKK30K
Kwordm9pZCBFbmdpbmU6OnNldFBlcnNpc3RlbmN5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29s
IGlzUGVyc2lzdGVudCkKK3sKKyAgICByZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2luLCBbaXNQZXJz
aXN0ZW50XShDYWNoZXNPckVycm9yJiYgcmVzdWx0KSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhh
c1ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHJlc3VsdC52YWx1ZSgpLmdl
dCgpLnNldFBlcnNpc3RlbmN5KGlzUGVyc2lzdGVudCk7CisgICAgfSk7Cit9CisKK3ZvaWQgRW5n
aW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luKQorewor
ICAgIHJlYWRDYWNoZXNGcm9tRGlzayhvcmlnaW4sIFtdKENhY2hlc09yRXJyb3ImJiByZXN1bHQp
IHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgcmVzdWx0LnZhbHVlKCkuZ2V0KCkuY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigp
OworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDI5MTc3MTJmZDNkZGU5Y2Y0MzcwMGVj
MDAyOTQ2ODNlNmJkY2VlYTguLmJjNGM0ODFjMmUyMjA5NWQ5NWJlZGFiYjhlODdjNGVjNjY5NzA5
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtMjUsOCArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwpAQCAtNDAsMTAgKzQxLDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgQ2FjaGVTdG9yYWdlIHsKIAotY2xhc3MgRW5naW5lIHsKK2NsYXNzIEVuZ2luZSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxFbmdpbmU+IHsKIHB1YmxpYzoKKyAgICB+RW5naW5lKCk7
CisKICAgICBzdGF0aWMgRW5naW5lJiBmcm9tKFBBTDo6U2Vzc2lvbklEKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95RW5naW5lKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgUmVmPEVuZ2lu
ZT4gY3JlYXRlKFN0cmluZyYmIHJvb3RQYXRoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVuZ2lu
ZShXVEZNb3ZlKHJvb3RQYXRoKSkpOyB9CiAKICAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJ
ZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CkBA
IC01MywxNCArNTcsMjcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmLCBXZWJD
b3JlOjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRl
bGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpE
T01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIAorICAgIHZvaWQgaGFuZGxl
UmVtb3ZlZENhY2hlKENhY2hlJiYpOworICAgIHZvaWQgd3JpdGVGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmLCBXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYsIGludCBlcnJv
cik+JiYpOworICAgIHZvaWQgcmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKwor
ICAgIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RQYXRoOyB9
CisgICAgY29uc3QgTmV0d29ya0NhY2hlOjpTYWx0JiBzYWx0KCkgY29uc3QgeyByZXR1cm4gbV9z
YWx0LnZhbHVlKCk7IH0KKyAgICB1aW50NjRfdCBuZXh0Q2FjaGVJZGVudGlmaWVyKCkgeyByZXR1
cm4gKyttX25leHRDYWNoZUlkZW50aWZpZXI7IH0KKworICAgIHZvaWQgc2V0UGVyc2lzdGVuY3ko
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgaXNQZXJzaXN0ZW50KTsKKyAgICB2b2lkIGNsZWFy
TWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmlnaW4pOworCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBFbmdpbmUmIGRlZmF1bHRFbmdpbmUoKTsKKyAgICBleHBsaWNpdCBFbmdpbmUo
U3RyaW5nJiYpOwogCi0gICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01DYWNo
ZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgaW5pdGlhbGl6ZShGdW5jdGlvbjx2
b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPiYmKT4mJik7CiAKLSAg
ICB1c2luZyBDYWNoZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxW
ZWN0b3I8Q2FjaGU+PiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPjsKKyAgICB1c2luZyBDYWNo
ZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+LCBXZWJD
b3JlOjpET01DYWNoZTo6RXJyb3I+OwogICAgIHVzaW5nIENhY2hlc0NhbGxiYWNrID0gV1RGOjpG
dW5jdGlvbjx2b2lkKENhY2hlc09yRXJyb3ImJik+OwotICAgIHZvaWQgcmVhZENhY2hlc0Zyb21E
aXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJl
YWRDYWNoZXNGcm9tRGlzayhjb25zdCBTdHJpbmcmIG9yaWdpbiwgRnVuY3Rpb248dm9pZChDYWNo
ZXNPckVycm9yJiYpPiYmKTsKIAogICAgIHVzaW5nIENhY2hlT3JFcnJvciA9IEV4cGVjdGVkPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGU+LCBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I+Owog
ICAgIHVzaW5nIENhY2hlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVPckVycm9y
JiYpPjsKQEAgLTcwLDEyICs4NywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlQ2FjaGVS
ZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBXZWJD
b3JlOjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIAogICAgIFZlY3Rv
cjx1aW50NjRfdD4gcXVlcnlDYWNoZShjb25zdCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJl
Y29yZD4mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpD
YWNoZVF1ZXJ5T3B0aW9ucyYpOwotCiAgICAgQ2FjaGUqIGNhY2hlKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllcik7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPENhY2hlPj4gbV9jYWNoZXM7
CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxDYWNoZXM+PiBtX2NhY2hlczsKICAgICBWZWN0b3I8
Q2FjaGU+IG1fcmVtb3ZlZENhY2hlczsKICAgICB1aW50NjRfdCBtX25leHRDYWNoZUlkZW50aWZp
ZXIgeyAwIH07CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3
b3JrQ2FjaGU6OlNhbHQ+IG1fc2FsdDsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX2lvUXVldWU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZWQ0MjMxNDIwMzdkZTdjNjFkMzg5MDNkZTBmODE4OTZlZjM2YzE5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDYWNo
ZUNvZGVycy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0
d29ya0NhY2hlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIENhY2hlU3RvcmFn
ZSB7CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc1Jvb3RQYXRoKEVuZ2luZSYgZW5naW5l
LCBjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAgICBLZXkga2V5KGVuZ2luZS5yb290UGF0aCgp
LCB7IH0sIHsgfSwgb3JpZ2luLCBlbmdpbmUuc2FsdCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGVuZ2luZS5yb290UGF0aCgpLCBrZXkucGFydGl0aW9u
SGFzaEFzU3RyaW5nKCkpOworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNMaXN0Rmls
ZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKK3sKKyAgICByZXR1cm4gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwo
ImNhY2hlc2xpc3QiKSk7Cit9CisKK0NhY2hlczo6Q2FjaGVzKEVuZ2luZSYgZW5naW5lLCBjb25z
dCBTdHJpbmcmIG9yaWdpbikKKyAgICA6IG1fZW5naW5lKCZlbmdpbmUpCisgICAgLCBtX3Jvb3RQ
YXRoKGNhY2hlc1Jvb3RQYXRoKGVuZ2luZSwgb3JpZ2luKSkKK3sKK30KKwordm9pZCBDYWNoZXM6
OmluaXRpYWxpemUoV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxi
YWNrKQoreworICAgIGlmIChtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fZW5naW5lKSB7CisgICAgICAg
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9zdG9yYWdlKSB7CisgICAgICAgIG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tz
LmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIHN0b3JhZ2UgPSBTdG9yYWdlOjpvcGVuKG1fcm9vdFBhdGgsIFN0b3JhZ2U6Ok1vZGU6
Ok5vcm1hbCk7CisgICAgaWYgKCFzdG9yYWdlKSB7CisgICAgICAgIGNhbGxiYWNrKEVycm9yOjpX
cml0ZURpc2spOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc3RvcmFnZSA9IHN0b3Jh
Z2UucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZWFkQ2FjaGVzRnJvbURpc2soW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yPiYm
IHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKSk7CisKKyAgICAgICAgICAgIGF1dG8gcGVuZGluZ0Nh
bGxiYWNrcyA9IFdURk1vdmUobV9wZW5kaW5nSW5pdGlhbGl6YXRpb25DYWxsYmFja3MpOworICAg
ICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHBlbmRpbmdDYWxsYmFja3MpCisgICAgICAg
ICAgICAgICAgY2FsbGJhY2socmVzdWx0LmVycm9yKCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIG1fY2FjaGVzID0gV1RGTW92ZShyZXN1bHQudmFsdWUoKSk7Cisg
ICAgICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCk7CisKKyAgICAgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRp
bmdJbml0aWFsaXphdGlvbkNhbGxiYWNrcyk7CisgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBwZW5kaW5nQ2FsbGJhY2tzKQorICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
KyAgICB9KTsKK30KKworQ2FjaGUqIENhY2hlczo6ZmluZChjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0
byYgaXRlbSkgeyByZXR1cm4gaXRlbS5uYW1lID09IG5hbWU7IH0pOworICAgIHJldHVybiAocG9z
aXRpb24gIT0gbm90Rm91bmQpID8gJm1fY2FjaGVzW3Bvc2l0aW9uXSA6IG51bGxwdHI7Cit9CisK
K0NhY2hlKiBDYWNoZXM6OmZpbmQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHBv
c2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJl
dHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgcmV0dXJuIChwb3Np
dGlvbiAhPSBub3RGb3VuZCkgPyAmbV9jYWNoZXNbcG9zaXRpb25dIDogbnVsbHB0cjsKK30KKwor
dWludDY0X3QgQ2FjaGVzOjpvcGVuKFN0cmluZyYmIG5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5naW5lKTsKKworICAgIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciA9IG1fZW5naW5lLT5uZXh0Q2FjaGVJZGVudGlmaWVyKCk7CisgICAg
bV9jYWNoZXMuYXBwZW5kKENhY2hlIHsgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCB7
IH0sIDAgfSk7CisgICAgd3JpdGVDYWNoZXNUb0Rpc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGNhY2hlSWRlbnRpZmllcl0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0
YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVu
ZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGNhbGxiYWNrKGNhY2hlSWRlbnRpZmllcik7CisgICAgfSk7CisgICAgcmV0dXJu
IGNhY2hlSWRlbnRpZmllcjsKK30KKwordm9pZCBDYWNoZXM6OnJlbW92ZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9l
bmdpbmUpOworCisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0o
Y29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7
IH0pOworCisgICAgQVNTRVJUKHBvc2l0aW9uICE9IG5vdEZvdW5kKTsKKworICAgIGF1dG8gY2Fj
aGUgPSBXVEZNb3ZlKG1fY2FjaGVzW3Bvc2l0aW9uXSk7CisgICAgbV9jYWNoZXMucmVtb3ZlKHBv
c2l0aW9uKTsKKworICAgIG1fZW5naW5lLT5oYW5kbGVSZW1vdmVkQ2FjaGUoV1RGTW92ZShjYWNo
ZSkpOworCisgICAgd3JpdGVDYWNoZXNUb0Rpc2soV1RGTW92ZShjYWxsYmFjaykpOworfQorCitz
dGF0aWMgaW5saW5lIERhdGEgZW5jb2RlQ2FjaGVOYW1lcyhjb25zdCBWZWN0b3I8Q2FjaGU+JiBj
YWNoZXMpCit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOworCisgICAg
dWludDY0X3Qgc2l6ZSA9IGNhY2hlcy5zaXplKCk7CisgICAgZW5jb2RlciA8PCBzaXplOworICAg
IGZvciAoYXV0byYgY2FjaGUgOiBjYWNoZXMpCisgICAgICAgIGVuY29kZXIgPDwgY2FjaGUubmFt
ZTsKKworICAgIHJldHVybiBEYXRhIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJT
aXplKCkgfTsKK30KKworc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgRXJy
b3I+IGRlY29kZUNhY2hlc05hbWVzKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikKK3sKKyAg
ICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcjo6UmVhZERp
c2spOworCisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CisgICAgdWludDY0X3QgY291bnQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShjb3VudCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcjo6UmVhZERp
c2spOworCisgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CisgICAgbmFtZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShjb3VudCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNv
dW50OyArK2luZGV4KSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9y
OjpSZWFkRGlzayk7CisKKyAgICAgICAgbmFtZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFt
ZSkpOworICAgIH0KKyAgICByZXR1cm4gbmFtZXM7Cit9CisKK3ZvaWQgQ2FjaGVzOjpyZWFkQ2Fj
aGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVy
cm9yPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9lbmdpbmUpOworICAgIEFTU0VS
VCghbV9pc0luaXRpYWxpemVkKTsKKyAgICBBU1NFUlQobV9jYWNoZXMuaXNFbXB0eSgpKTsKKwor
ICAgIGlmICghbV9zaG91bGRQZXJzaXN0KSB7CisgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNo
ZT4geyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZmlsZW5hbWUgPSBj
YWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0aCk7CisgICAgaWYgKCFXZWJDb3JlOjpmaWxlRXhp
c3RzKGZpbGVuYW1lKSkgeworICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2VuZ2luZS0+cmVhZEZpbGUoZmlsZW5hbWUs
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghbV9lbmdpbmUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4g
eyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gcmVz
dWx0ID0gZGVjb2RlQ2FjaGVzTmFtZXMoZGF0YSwgZXJyb3IpOworICAgICAgICBpZiAoIXJlc3Vs
dC5oYXNWYWx1ZSgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1
bHQuZXJyb3IoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFZl
Y3RvcjxDYWNoZT4gY2FjaGVzOworICAgICAgICBjYWNoZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShyZXN1bHQudmFsdWUoKS5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiByZXN1
bHQudmFsdWUoKSkKKyAgICAgICAgICAgIGNhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGUgeyBt
X2VuZ2luZS0+bmV4dENhY2hlSWRlbnRpZmllcigpLCBXVEZNb3ZlKG5hbWUpLCB7IH0sIDAgfSk7
CisKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjYWNoZXMpKTsKKyAgICB9KTsKK30KKwordm9p
ZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIGlmICghbV9zaG91bGRQZXJzaXN0KSB7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV9lbmdpbmUp
OworCisgICAgaWYgKG1fY2FjaGVzLmlzRW1wdHkoKSkgeworICAgICAgICBtX2VuZ2luZS0+cmVt
b3ZlRmlsZShjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0aCkpOworICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9lbmdpbmUt
PndyaXRlRmlsZShjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0aCksIGVuY29kZUNhY2hlTmFt
ZXMobV9jYWNoZXMpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25h
bDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJy
b3IpKTsKKyAgICB9KTsKK30KKyAgICAKK3ZvaWQgQ2FjaGVzOjpjbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uKCkKK3sKKyAgICBtX2NhY2hlcy5jbGVhcigpOworICAgIG1faXNJbml0aWFsaXplZCA9
IGZhbHNlOworICAgIG1fc3RvcmFnZSA9IG51bGxwdHI7Cit9CisKK1ZlY3RvcjxDYWNoZUluZm8+
IENhY2hlczo6Y2FjaGVJbmZvcygpIGNvbnN0Cit7CisgICAgVmVjdG9yPENhY2hlSW5mbz4gY2Fj
aGVJbmZvczsKKyAgICBjYWNoZUluZm9zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jYWNoZXMu
c2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNhY2hlIDogbV9jYWNoZXMpCisgICAgICAgIGNhY2hl
SW5mb3MudW5jaGVja2VkQXBwZW5kKENhY2hlSW5mbyB7IGNhY2hlLmlkZW50aWZpZXIsIGNhY2hl
Lm5hbWUgfSk7CisgICAgcmV0dXJuIGNhY2hlSW5mb3M7Cit9CisKK30gLy8gbmFtZXNwYWNlIENh
Y2hlU3RvcmFnZQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkwMTg1Y2RkYmQ3OGIxMDM1NGJjYmRlNTZiNzE5Y2E1YjRkMjhjMmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgiCisjaW5j
bHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFt
ZXNwYWNlIENhY2hlU3RvcmFnZSB7CisKK2NsYXNzIEVuZ2luZTsKKworY2xhc3MgQ2FjaGVzIDog
cHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDYWNo
ZXM+IGNyZWF0ZShFbmdpbmUmIGVuZ2luZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ2FjaGVzIHsgZW5naW5lLCBvcmlnaW4gfSk7IH0KKworICAgIHZvaWQg
aW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworCisg
ICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9
CisKKyAgICBDYWNoZSogZmluZChjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIENhY2hlKiBmaW5k
KHVpbnQ2NF90IGlkZW50aWZpZXIpOworCisgICAgdWludDY0X3Qgb3BlbihTdHJpbmcmJiBuYW1l
LCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgdm9p
ZCByZW1vdmUodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRp
b25DYWxsYmFjayYmKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZv
PiBjYWNoZUluZm9zKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFBlcnNpc3RlbmN5KGJvb2wgc2hv
dWxkUGVyc2lzdCkgeyBtX3Nob3VsZFBlcnNpc3QgPSBzaG91bGRQZXJzaXN0OyB9CisgICAgdm9p
ZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgdm9pZCBkZXRhY2goKSB7IG1fZW5n
aW5lID0gbnVsbHB0cjsgfQorCitwcml2YXRlOgorICAgIENhY2hlcyhFbmdpbmUmLCBjb25zdCBT
dHJpbmcmIHJvb3RQYXRoKTsKKworICAgIHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKFdURjo6RnVu
Y3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBXZWJDb3JlOjpET01DYWNoZTo6RXJy
b3I+JiYpPiYmKTsKKyAgICB2b2lkIHdyaXRlQ2FjaGVzVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hl
OjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CisKKyAgICBib29sIG1faXNJbml0aWFsaXplZCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFBlcnNpc3QgeyB0cnVlIH07CisgICAgRW5naW5lKiBt
X2VuZ2luZSB7IG51bGxwdHIgfTsKKyAgICBTdHJpbmcgbV9yb290UGF0aDsKKyAgICBWZWN0b3I8
Q2FjaGU+IG1fY2FjaGVzOworICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U+IG1fc3Rv
cmFnZTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjaz4g
bV9wZW5kaW5nSW5pdGlhbGl6YXRpb25DYWxsYmFja3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBD
YWNoZVN0b3JhZ2UKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLmNwcAppbmRleCAzNWViMWQ2NWI3ZmE4ZDk1ZGUxZDYzMzM1YTA5Y2E0ZDBk
NTViOGM2Li5mOWRiYjYzNDQ4MjZkN2UzN2VkNTAwMmMwOWJiMGUyOGY0N2JkMjg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTYzLDYgKzYzLDE2IEBAIHZvaWQg
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxCiAgICAgfSk7CiB9CiAKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbjo6c2V0UGVyc2lzdGVuY3koUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBpc1BlcnNpc3RlbnQpCit7CisgICAgRW5naW5lOjpmcm9t
KHNlc3Npb25JRCkuc2V0UGVyc2lzdGVuY3kob3JpZ2luLCBpc1BlcnNpc3RlbnQpOworfQorCit2
b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAg
ICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKG9yaWdp
bik7Cit9CisKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVjb3JkcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkucmV0cmll
dmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdGhpcywgc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyXShS
ZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
aAppbmRleCBmYjNhNjY0ZTU0NWM0ZGFmNzU1OGZkMTQ5YWExZWExZjFkZjlkNTMzLi40MGQzNGJl
YWExMGY2YzAyMmIyZTM0ODZjY2I3NGJkNTA0NmI3ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24uaApAQCAtNTQsNiArNTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3Zl
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAK
KyAgICB2b2lkIHNldFBlcnNpc3RlbmN5KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgYm9vbCBpc1BlcnNpc3RlbnQpOworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworCiAgICAgdm9pZCBy
ZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6
OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlP
cHRpb25zJiYpOwogICAgIHZvaWQgcHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNv
cmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDU5MjJlZWQ2NjcyNzZkZGMxZTU0YTQ4MTg0M2Rm
YmUzYTllNTJkZTguLjM1NmRmMzkwYzQ2NDY4MmMwN2YyZTdiNDU3NjAxNjJjMThkZDU5ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTI1LDYgKzI1LDkgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7
CiAgICAgUmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgQ2FjaGVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFN0cmluZyBvcmln
aW4pOwogCisgICAgU2V0UGVyc2lzdGVuY3koUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJp
bmcgb3JpZ2luLCBib29sIGlzUGVyc2lzdGVudCk7CisgICAgQ2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBvcmlnaW4pOworCiAgICAgUmVj
b3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIERlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBz
dHJ1Y3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgUHV0UmVjb3Jk
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3Jk
PiByZWNvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOTBlMWFjZGE1MjU1NWI0ZGVjNjZjY2MxMDhmNjY1OWRkMDkxMzYxYi4uYzFk
OWUxNmI3NmUzYTM2YzM3YzM4NjAzOGI0ZjJkYmI5NmE3MGQ1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTEsNiArODkxLDcgQEAK
IAkJNDEzMDc1QjIxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE2MURF
ODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggKi87IH07CiAJCTQxMzA3
NUIzMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNzFERTg1RUU3MDAzOUVD
NjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwICovOyB9OwogCQk0MTMwNzVCNDFERTg1RjU4MDAz
OUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQ
cm92aWRlci5oICovOyB9OworCQk0MTM1RkJEMTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuY3BwICovOyB9OwogCQk0MTg5N0VDRjFGNDE1RDYyMDAxNkZBNDIgLyogV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTg5N0VDRTFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAgKi87IH07CiAJCTQxODk3RUQwMUY0MTVENjUwMDE2RkE0MiAvKiBXZWJDYWNo
ZVN0b3JhZ2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTg5N0VDQzFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlUHJv
dmlkZXIuY3BwICovOyB9OwogCQk0MTg5N0VEMTFGNDE1RDY4MDAxNkZBNDIgLyogV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4OTdFQ0QxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uaCAqLzsgfTsKQEAgLTMxNjAsNiArMzE2MSw4IEBACiAJCTQxMzA3NUE2MURFODVFRTcw
MDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaDsgcGF0aCA9IE5ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJS
VENQcm92aWRlci5jcHA7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRp
ZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyog
TGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5n
ID0gMDsgbmFtZSA9IExpYldlYlJUQ1Byb3ZpZGVyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3Bl
Y2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJNDEzNUZCQ0Yx
RjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTM1RkJEMDFGNEZCN0YyMDA3NEM0N0Ig
LyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTg5N0VDQjFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg5N0VDQzFGNDE1RDVDMDAxNkZB
NDIgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
Q2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTg5N0VDRDFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04MTk1LDYgKzgxOTgsOCBAQAogCQkJCTQxODk3RUQ2MUY0MTVEODYw
MDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3BwICovLAogCQkJCTQxODk3RUQyMUY0MTVE
ODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCAqLywKIAkJCQk0MUZBQkQyODFGNERE
RkRDMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCAqLywKKwkJCQk0MTM1RkJD
RjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLywKKwkJ
CQk0MTM1RkJEMDFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgg
Ki8sCiAJCQkJNDE4OTdFRDMxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwICovLAogCQkJCTQxODk3RUQ0MUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggKi8sCiAJCQkJNDE4OTdFRDUxRjQxNUQ4NTAwMTZGQTQy
IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC05OTgz
LDYgKzk5ODgsNyBAQAogCQkJCUUxNzA4NzZCMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0
cnlQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0YxODYzODE2N0QwNzFFMDBBMUE4NUEg
LyogQ2FjaGVNb2RlbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg5N0VENzFGNDE1RDhBMDAx
NkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMzVG
QkQxMUY0RkI4MDkwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDE4OTdFRDkxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAw
QzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBMkU1MUUxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0
aWVzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGMzZDEz
MDI3NTA5YzMyYjMyN2MyNmQ5ZTRmMTBmNjEzNTkyNGIyMjMuLmM5ZDRkOTQ5MTlmYTJmMGQ2MmVi
M2Y2ZjYwYjRmNTk4YzlhY2E5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTg2LDYg
Kzg2LDE4IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaFB1dE9wZXJh
dGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwKICAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UHV0UmVjb3JkcyhtX3Nlc3Np
b25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVjb3JkcyksIDApOwog
fQogCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnNldFBlcnNpc3RlbmN5KGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBib29sIGlzUGVyc2lzdGVudCwgQ29tcGxldGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb246OlNldFBlcnNpc3RlbmN5KG1fc2Vzc2lvbklELCBvcmlnaW4sIGlz
UGVyc2lzdGVudCksIDApOworICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Cit9CisKK3ZvaWQg
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIG9yaWdpbiwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OkNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24obV9zZXNzaW9uSUQsIG9yaWdpbiksIDApOworICAg
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Cit9CisKIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6b3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2Fj
aGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KQogewogICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246Om9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uaAppbmRleCAyNWFmZmNmMDBhZGMwOGY4MjE0ZWQ3NGY1MGZjODIxMzhjMTgxYzdjLi44
ODdjZjc0MzhkOWMwMDdhNGMwODVmZTEzOGNlMDk4MDcxMDFkNDQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmgKQEAgLTYwLDYgKzYwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVP
cGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVy
eU9wdGlvbnMmJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJD
b3JlOjpET01DYWNoZTo6UmVjb3JkPiYmKSBmaW5hbDsKIAorICAgIHZvaWQgc2V0UGVyc2lzdGVu
Y3koY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgaXNQZXJzaXN0ZW50LCBXZWJDb3JlOjpET01D
YWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNv
bXBsZXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKwogICAgIHZvaWQgb3BlbkNvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRl
bnRpZmllck9yRXJyb3ImKTsKICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllck9y
RXJyb3ImKTsKICAgICB2b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mb3NPckVycm9yJiYpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRmZGRk
ZTZjMDczYjY2NmJiYzcxYWJjZjdiMmQwZjRmMTQ3YjhlYWUuLjkwZjUzZjUzYjg5MTRkZjIxMThk
MWU2YjIwZDhiNzMwYTNiNzAyNDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wOC0yNSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NhY2hlIEFQSV0g
U3VwcG9ydCBjYWNoZSBuYW1lcyBwZXJzaXN0ZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUHV0dGluZyB0aGVzZSB0ZXN0cyBpbiBodHRwL3Rlc3Rz
IGZvbGRlciBzbyB0aGF0IHRoZXkgcnVuIGluIGEgZGlmZmVyZW50IG9yaWdpbiBhbmQgc28gYSBk
aWZmZXJlbnQgQ2FjaGVzIHRoYW4gb3RoZXIgdGVzdHMuCisgICAgICAgIFNldHRpbmcgYm90aCBw
ZXJzaXN0ZW5jeSB0byBmYWxzZSBhbmQgY2xlYXJpbmcgdGhlIG1lbW9yeSByZXByZXNlbnRhdGlv
biB3b3VsZCBwcm9iYWJseSBhZmZlY3QKKyAgICAgICAgdGhlIG90aGVyIHRlc3RzIHRoYXQgd291
bGQgcnVuIGluIHBhcmFsbGVsLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdl
L2NhY2hlLXBlcnNpc3RlbmN5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMvY2FjaGUtcGVyc2lz
dGVuY3ktaWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA4LTI0ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBXUFQgaGFybmVzcyBlcnJvcnMgb24gbGVha3Mg
YW5kIGlPUy1zaW0gRVdTIGJvdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyY2QyMGE0YzAyOTliZmZkMDkyNmMwNjIzZDQ3NTcx
ZWM0YTJjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hl
LXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKKworCitQQVNTIENsZWFuaW5nIGV4aXN0aW5nIGNhY2hlcyAKK1BBU1MgQ2xlYXIgbWVt
b3J5IHJlcHJlc2VudGF0aW9uIGFuZCBkaXNhYmxlIGRpc2sgcGVyc2lzdGVuY3kgCitQQVNTIENs
ZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMSAKK1BBU1MgQ2xlYXIgbWVt
b3J5IHJlcHJlc2VudGF0aW9uIGJ1dCBrZWVwIGRpc2sgcGVyc2lzdGVuY3kgCitQQVNTIENsZWFu
aW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMiAKK1BBU1MgQWRkaW5nL1JlbW92
aW5nIGNhY2hlcyBhbmQgY2xlYXJpbmcgaW4gbWVtb3J5IHJlcHJlc2VudGF0aW9uIGF0IHZhcmlv
dXMgdGltZXMgCitQQVNTIENsZWFuaW5nIGFkZGVkIGNhY2hlcyAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lz
dGVuY3kuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2Q5MDIwNTVkNGVjNjUxYmE1ZDdiNmU2OTVl
ZDJmMjJiMzZiNWRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxMjcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYWNoZSBTdG9yYWdl
OiB0ZXN0aW5nIHBlcnNpc3RlbmN5PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImNo
ZWNrIj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAg
ICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50aGVuKGtleXMgPT4geworICAgICAgICAg
ICAgdmFyIHBlbmRpbmcgPSBbXTsKKyAgICAgICAgICAgIGZvciAoa2V5IG9mIGtleXMpCisgICAg
ICAgICAgICAgICAgcGVuZGluZy5wdXNoKHNlbGYuY2FjaGVzLmRlbGV0ZShrZXlzWzBdKSk7Cisg
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVuZGluZyk7CisgICAgICAgIH0pOworICAg
IH0sICJDbGVhbmluZyBleGlzdGluZyBjYWNoZXMiKTsKKworICAgIHByb21pc2VfdGVzdCh0ZXN0
ID0+IHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyIpOworCisgICAgICAgIGlu
dGVybmFscy5zZXRDYWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeShmYWxzZSk7CisgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKChldmVudCkgPT4gewor
ICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09PSAicmVhZHkiKSB7CisgICAgICAgICAg
ICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9u
KCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrLmlubmVySFRNTCA9ICI8aWZyYW1lIHNyYz0n
cmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sI2NoZWNrJz48L2lmcmFtZT4i
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKGV2ZW50LmRhdGEgPT09IGZhbHNlLCAiTm8gY2FjaGUgb2Jq
ZWN0IHNob3VsZCBiZSBmb3VuZCIpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRDYWNo
ZVN0b3JhZ2VQZXJzaXN0ZW5jeShmYWxzZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwor
ICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgY2hlY2suaW5uZXJIVE1MID0gIjxpZnJhbWUg
c3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwnPjwvaWZyYW1lPiI7
CisgICAgICAgIH0pCisgICAgfSwgIkNsZWFyIG1lbW9yeSByZXByZXNlbnRhdGlvbiBhbmQgZGlz
YWJsZSBkaXNrIHBlcnNpc3RlbmN5Iik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMuY2xl
YXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAgaW50ZXJu
YWxzLnNldENhY2hlU3RvcmFnZVBlcnNpc3RlbmN5KHRydWUpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIHZh
ciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBmb3IgKGtleSBvZiBrZXlzKQorICAgICAgICAg
ICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hlcy5kZWxldGUoa2V5c1swXSkpOworICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmcpOworICAgICAgICB9KTsKKyAgICB9LCAi
Q2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJldmlvdXMgdGVzdCAxIik7CisKKyAgICBwcm9t
aXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiVGVzdCByZXF1aXJlcyBpbnRlcm5hbHMiKTsK
KworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAg
ICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0LnN0ZXBfZnVu
YygoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gInJlYWR5
IikgeworICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1v
cnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAgICAgICAgICBjaGVjay5pbm5lckhUTUwg
PSAiPGlmcmFtZSBzcmM9J3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbCNj
aGVjayc+PC9pZnJhbWU+IjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShldmVudC5kYXRhID09PSB0cnVl
LCAiQSBjYWNoZSBvYmplY3Qgc2hvdWxkIGJlIGZvdW5kIik7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgY2hlY2suaW5uZXJIVE1MID0g
IjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwnPjwv
aWZyYW1lPiI7CisgICAgICAgIH0pCisgICAgfSwgIkNsZWFyIG1lbW9yeSByZXByZXNlbnRhdGlv
biBidXQga2VlcCBkaXNrIHBlcnNpc3RlbmN5Iik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9
PiB7CisgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhlbihrZXlzID0+IHsKKyAg
ICAgICAgICAgIHZhciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBmb3IgKGtleSBvZiBrZXlz
KQorICAgICAgICAgICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hlcy5kZWxldGUoa2V5c1sw
XSkpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmcpOworICAgICAgICB9
KTsKKyAgICB9LCAiQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJldmlvdXMgdGVzdCAyIik7
CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlmICghd2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiVGVzdCByZXF1aXJlcyBp
bnRlcm5hbHMiKTsKKworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3NlbGYuY2FjaGVzLm9w
ZW4oInRlc3QyIiksIHNlbGYuY2FjaGVzLm9wZW4oInRlc3QxIildKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkKKyAgICAgICAgfSkudGhlbihrZXlz
ID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgWyJ0ZXN0MiIsICJ0
ZXN0MSJdKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBpbnRlcm5hbHMu
Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAgcmV0
dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsKKyAgICAgICAgfSkudGhlbihrZXlzID0+IHsKKyAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgWyJ0ZXN0MiIsICJ0ZXN0MSJdKTsKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5kZWxldGUoInRlc3QyIik7CisgICAgICAgIH0p
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVt
b3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlz
KCk7CisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGtleXMsIFsidGVzdDEiXSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLm9wZW4oInRlc3QyIik7CisgICAgICAgIH0pLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVw
cmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCk7Cisg
ICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGtleXMsIFsidGVzdDEiLCAidGVzdDIiXSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtzZWxmLmNhY2hlcy5kZWxldGUoInRlc3QyIiks
IHNlbGYuY2FjaGVzLmRlbGV0ZSgidGVzdDEiKV0pOworICAgICAgICB9KS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpOworICAgICAgICB9
KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhrZXlzLCBb
XSk7CisgICAgICAgIH0pOworICAgIH0sICJBZGRpbmcvUmVtb3ZpbmcgY2FjaGVzIGFuZCBjbGVh
cmluZyBpbiBtZW1vcnkgcmVwcmVzZW50YXRpb24gYXQgdmFyaW91cyB0aW1lcyIpOworCisgICAg
cHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygp
LnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB2YXIgcGVuZGluZyA9IFtdOworICAgICAgICAg
ICAgZm9yIChrZXkgb2Yga2V5cykKKyAgICAgICAgICAgICAgICBwZW5kaW5nLnB1c2goc2VsZi5j
YWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChw
ZW5kaW5nKTsKKyAgICAgICAgfSk7CisgICAgfSwgIkNsZWFuaW5nIGFkZGVkIGNhY2hlcyIpOwor
ICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlm
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL3Jlc291cmNl
cy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzljOThmZWY4ZTQ0
YjE1N2ExM2ZjMGQ5NmE0MmZmNjRkNDg1MTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+CisgICAgPHNjcmlwdD4KK2Z1bmN0aW9uIGRvVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5s
b2NhdGlvbi5oYXNoID09PSAiI2NoZWNrIikgeworICAgICAgICBzZWxmLmNhY2hlcy5rZXlzKCku
dGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoa2V5
cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gInRlc3RDYWNoZU5hbWUiLCAiKiIpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbGYuY2FjaGVzLm9wZW4o
InRlc3RDYWNoZU5hbWUiKS50aGVuKCgpID0+IHsKKyAgICAgICAgd2luZG93LnBhcmVudC5wb3N0
TWVzc2FnZSgicmVhZHkiLCAiKiIpOworICAgIH0pOworfQorZG9UZXN0KCk7CisgICAgPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319114</attachid>
            <date>2017-08-25 16:28:50 -0700</date>
            <delta_ts>2017-08-25 17:03:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175995-20170825162849.patch</filename>
            <type>text/plain</type>
            <size>58333</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWYxMjFkOGFiZjI2MzYx
NTlhMGU4YzcyNzg0OGYwM2I3M2M4YjA4Zi4uM2FhYjllYzYyNWE4OGIwZTg5N2NlNmM0OGRhMTZk
N2E0YjNlZDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBw
b3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cGVyc2lzdGVuY3kuaHR0cHMuaHRtbAorCisgICAgICAgIEFkZGluZyBtZXRob2QgdG8gY2xlYXIg
dGhlIG1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FjaGUgc3RvcmFnZS4KKyAgICAgICAg
QWRkaW5nIG1ldGhvZCB0byBzZXQgdGhlIGNhY2hlIHN0b3JhZ2UgcGVyc2lzdGVuY3kgKGkuZS4g
d2hldGhlciB0aGUgY2FjaGUgc3RvcmFnZSB3aWxsIHJlYWQvd3JpdGUgb24gdGhlIGRpc2spLgor
ICAgICAgICBFeHBvc2luZyB0aGVzZSBtZXRob2RzIGFzIGludGVybmFscyBzbyB0aGF0IGxheW91
dCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBwZXJzaXN0ZW5jeS4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBSZWFkRGlzayBhbmQgV3JpdGVEaXNrIGVycm9ycyB0aGF0IGFyZSB1c2VkIGJ5
IENhY2hlU3RvcmFnZTo6RW5naW5lLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjplcnJvclRvRXhj
ZXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRD
YWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE3LTA4
LTI0ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAxMGJlYmVjNDBmNWE0N2VkNjZiYmZjOGUyOThmNDVhZjYxMGIzOTVlLi5iNDY5
MzVlNTA3MTg1MTIyNDAzMGUyMmY0YWI3ZTBhMmY1NzdkNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDg2IEBACiAyMDE3LTA4LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAor
ICAgICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgZGlzayBy
ZWFkL3dyaXRlIGNhcGFjaXRpZXMgdG8gQ2FjaGVTdG9yYWdlIGVuZ2luZS4KKyAgICAgICAgVGhp
cyBpcyB1c2VkIHRvIHN0b3JlIHBlci1vcmlnaW4gY2FjaGUgbmFtZXMgaW4gYSBmaWxlLgorICAg
ICAgICBNYWtpbmcgRW5naW5lIGEgdGhyZWFkIHNhZmUgcmVmY291bnRlZCBvYmplY3Qgc28gdGhh
dCBpdCBkb2VzIHJlYWQvd3JpdGUgaW4gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBDYWNoZVN0b3JhZ2U6OkNhY2hlcyBhcyB0aGUgb2JqZWN0IG1hbmFnaW5nIHRo
ZSBsaXN0IG9mIENhY2hlIG9iamVjdHMgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorICAgICAgICBDYWNo
ZXMgd2lsbCBiZSByZXNwb25zaWJsZSB0byBkbyBhbGwgdGhlIHJlYWQvd3JpdGUgb3BlcmF0aW9u
cyBmb3IgYWxsIG9mIGl0cyBjYWNoZXMuCisgICAgICAgIEl0IHdpbGwgYmUgcmVzcG9uc2libGUg
Zm9yIHF1b3RhIGxpbWl0YXRpb24gYXMgd2VsbC4KKworICAgICAgICBNb3ZpbmcgcGFydCBvZiB0
aGUgbG9naWMgZnJvbSBDYWNoZVN0b3JhZ2U6OkVuZ2luZSBpbnRvIENhY2hlU3RvcmFnZTo6Q2Fj
aGVzLgorCisgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lIGlzIGluaXRpYWxpemVkIGFzeW5j
aHJvbm91c2x5IGFzIGl0IGZpcnN0IGNyZWF0ZXMgYSBzYWx0IHdoaWNoIGlzIHVzZWQKKyAgICAg
ICAgdG8gb2JmdXNjYXRlIHRoZSBuYW1lcyBvZiB0aGUgdmFyaW91cyBmaWxlcyBzdG9yZWQgb24g
ZGlzay4KKworICAgICAgICBJbiB0aGUgc2FtZSBzcGlyaXQsIENhY2hlU3RvcmFnZTo6Q2FjaGVz
IGlzIGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5IGFzIGl0IG5lZWRzIHRvIHJlYWQgZnJvbSB0
aGUgZGlzayB0aGUgbGlzdCBvZiBjYWNoZSBuYW1lcy4KKyAgICAgICAgT25jZSByZWFkLCB0aGUg
bmFtZXMgd2lsbCBiZSBzdG9yZWQgaW4gbWVtb3J5LgorICAgICAgICBBZGRlZCB0aGUgcG9zc2li
aWxpdHkgdG8gY2xlYXIgdGhpcyBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24uIFRoaXMgd2lsbCBi
ZSB1c2VmdWwgZm9yIHRlc3RpbmcuCisgICAgICAgIFRoaXMgbWlnaHQgYWxzbyBiZSB1c2VmdWwg
dG8gc2F2ZSBtZW1vcnkgd2hlbiB0aGVyZSBpcyBubyBtb3JlIHVzZSBvZiBDYWNoZVN0b3JhZ2Ug
Ynkgd2ViIHBhZ2VzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpyb290UGF0aEZyb21TZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6Omdsb2JhbEVuZ2luZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjp+RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmZyb20pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
ZGVmYXVsdEVuZ2luZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpF
bmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6b3Blbik6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZW1vdmUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OndyaXRlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpyZW1vdmVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OmhhbmRsZVJlbW92ZWRDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpyb290UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpzYWx0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6Om5leHRDYWNoZUlkZW50aWZpZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OmNhY2hlc1Jvb3RQYXRoKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpjYWNoZXNMaXN0RmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6Q2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6
ZmluZCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpvcGVuKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlbW92ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6ZW5jb2RlQ2FjaGVOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6ZGVjb2RlQ2FjaGVzTmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlczo6cmVhZENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Y2FjaGVJbmZvcyBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmlzSW5pdGlhbGl6ZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6c2V0UGVyc2lzdGVu
Y3kpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6ZGV0YWNoKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6c2V0
UGVyc2lzdGVuY3kpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oOgorCisyMDE3LTA4LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKwogICAgICAgICBbQ2FjaGUgQVBJXSBVSVByb2Nlc3Mgc2hvdWxkIHByb3ZpZGUgdGhlIGRp
cmVjdG9yeSBwYXRoIHdoZXJlIHRvIHN0b3JlIENhY2hlIFN0b3JhZ2UgZGF0YQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODg0CiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zNDA3MjQ0MT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggZjIwODBkYzk5MWJmYTViNGU1
NDM2Y2Q3NTdjZGJkNWYxMjg5YTA3OC4uMWRiYjgzNTc0MjdkYTZjYWM0MjQxMDhjNDU5ZWYxYjdh
YzQ1MmZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgRE9NQ2FjaGU6OlJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNoZTo6UmVjb3JkPiYmLCBET01DYWNoZTo6UmVj
b3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIAorICAgIC8vIFVzZWQgb25seSBmb3IgdGVzdGlu
ZyBwdXJwb3Nlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyc2lzdGVuY3koY29uc3QgU3RyaW5n
JiAvKiBvcmlnaW4gKi8sIGJvb2wgLyogaXNQZXJzaXN0ZW50ICovLCBET01DYWNoZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRE9NQ2FjaGU6OkVycm9yOjpOb3RJ
bXBsZW1lbnRlZCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgRE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQp
OyB9CisKIHByb3RlY3RlZDoKICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAgZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzM2Rh
ODA4NTQ0NWJkYzhmMGFhZGNlODgyOGU2ZWRmNDk5MGI4MTljLi4yNWVkM2Q3OTk0N2I1NjhkODVk
ZmYyZjUxODY0MDI2M2FkZDA4YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcApAQCAtNDAsNiArNDAsMTAgQEAgRXhjZXB0aW9uIGVycm9yVG9FeGNlcHRpb24o
RXJyb3IgZXJyb3IpCiAgICAgc3dpdGNoIChlcnJvcikgewogICAgIGNhc2UgRXJyb3I6Ok5vdElt
cGxlbWVudGVkOgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfTsKKyAgICBjYXNlIEVycm9yOjpSZWFk
RGlzazoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgcmVhZGluZyBkYXRhIGZyb20gZGlzayIpIH07CisgICAgY2FzZSBFcnJvcjo6V3Jp
dGVEaXNrOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVy
YWwoIkZhaWxlZCB3cml0aW5nIGRhdGEgdG8gZGlzayIpIH07CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBl
cnJvciIpIH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmlu
ZGV4IGMyMTIzYTk0YTM2NDUyOTY2ZTMyYWEzNGY2NzI2NDZlZjExNWI0NTMuLmVlYmU2Njc4Mjc0
MDkxYWMwYjc1NGIyYzVjMzRkMDhiOTgxM2Y3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmgKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIERPTUNhY2hlIHsKIAog
ZW51bSBjbGFzcyBFcnJvciB7CiAgICAgTm90SW1wbGVtZW50ZWQsCisgICAgUmVhZERpc2ssCisg
ICAgV3JpdGVEaXNrLAogICAgIEludGVybmFsCiB9OwogCkBAIC05NCw2ICs5Niw4IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPiB7CiAgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVy
cm9yLAogICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkLAor
ICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6OlJlYWREaXNrLAorICAgICAgICBXZWJD
b3JlOjpET01DYWNoZTo6RXJyb3I6OldyaXRlRGlzaywKICAgICAgICAgV2ViQ29yZTo6RE9NQ2Fj
aGU6OkVycm9yOjpJbnRlcm5hbAogICAgID47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IDg0Mjc1ZGYzMzU5YzJjNzIxNDE1NmYyM2Q2MWM5ODViZGNkYTQ3MDMuLjMx
N2Q0MmYxMTYyNTgwZTVjODZiZWM5MDdlYTQxM2EyNTI0ZTRhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJDU1NNZWRpYVJ1
bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdXBwb3J0c1J1
bGUuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2Fj
aGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00MTM2LDQg
KzQxMzgsMzQgQEAgU3RyaW5nIEludGVybmFsczo6YXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSBjb25z
dAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCit2b2lkIEludGVybmFsczo6c2V0Q2Fj
aGVTdG9yYWdlUGVyc2lzdGVuY3koYm9vbCBpc1BlcnNpc3RlbnQpCit7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBjb250ZXh0RG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAg
ICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gcGFnZS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIo
KS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKHBhZ2UtPnNlc3Npb25JRCgpKTsKKyAgICAg
ICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+c2V0UGVyc2lzdGVuY3koZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgaXNQZXJzaXN0ZW50LCBbXShzdGQ6Om9w
dGlvbmFsPERPTUNhY2hlOjpFcnJvcj4mJikgeyB9KTsKK30KKwordm9pZCBJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKQoreworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKSB7CisgICAgICAg
IGlmIChhdXRvKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgICAg
IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9IHBhZ2UtPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCku
Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihwYWdlLT5zZXNzaW9uSUQoKSk7CisgICAgICAg
IGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24tPmNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgW10oc3RkOjpvcHRpb25h
bDxET01DYWNoZTo6RXJyb3I+JiYpIHsgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGQyNzgyN2QxMzZlOWZhMGUwZjgyNDQy
ODllNDhlYWY3YmQyZTJiMzguLjRiNDgyMWRjZDJkYzc4MGE3ODA5NGFkYWYxOWJkMjE4NWM1NmZi
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNDMsNiArNDMsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOwogY2xhc3MgRE9NUmVjdDsKIGNsYXNzIERPTVJlY3RMaXN0OwogY2xhc3Mg
RE9NVVJMOwpAQCAtNTk4LDYgKzU5OSw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBhdWRpb1Nl
c3Npb25DYXRlZ29yeSgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJzaXN0
ZW5jeShib29sIGlzUGVyc2lzdGVudCk7CisgICAgdm9pZCBjbGVhckNhY2hlU3RvcmFnZU1lbW9y
eVJlcHJlc2VudGF0aW9uKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERv
Y3VtZW50Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpAQCAtNjE4
LDYgKzYyMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVjdG9yRnJvbnRlbmQ7CisgICAgUmVmUHRyPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA0
MjcxYWUyZjI2YjAyNzYwZGJlZTUxMjE5NmZlNjBhOGZhYmFmODE0Li5iYzFjYjBjOGIwOGZhMmZk
ZGMwNjBhNDA0MGZmOTA4ZWVhNmQ4NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCkBAIC01NDQsNSArNTQ0LDggQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAg
ICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCByZW1vdmVNZWRpYVN0cmVhbVRyYWNr
KE1lZGlhU3RyZWFtIHN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayB0cmFjayk7CiAgICAgW0NvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCBzaW11bGF0ZU1lZGlhU3RyZWFtVHJhY2tDYXB0dXJl
U291cmNlRmFpbHVyZShNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKTsKIAorICAgIHZvaWQgc2V0Q2Fj
aGVTdG9yYWdlUGVyc2lzdGVuY3koYm9vbGVhbiBpc1BlcnNpc3RlbnQpOworICAgIHZvaWQgY2xl
YXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworCiAgICAgRE9NU3RyaW5nIGF1
ZGlvU2Vzc2lvbkNhdGVnb3J5KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggY2Q0MThiOTg3
MjRjZGFjMTg4ZWI1ZTFhYjI0OGNlMGE0Mjc5NmZkZi4uMjRkNjM2Nzc0M2M2NDkxNTJmMzI5YmU1
ZWJjM2QzMmUzNjI3ZjgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMTcsNiArMTE3LDcgQEAg
c2V0KFdlYktpdDJfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAogCiAg
ICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKICAgICBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAogICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1YWVi
YmU2NjliZWQyYjhjNzE1YjgzNWY1NTUxYzY0YmQ3NDkwYzJhLi4xYzE5OGE4ZGIwZWZkNGU0ZDI1
Mzk4NTZiNjU0NWJjYzc5YzNlNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0yNiw2ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgi
CiAKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTMz
LDI1ICszNSwzOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0
d29ya0NhY2hlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIENhY2hlU3RvcmFn
ZSB7CiAKLXN0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8RW5n
aW5lPj4mIGdsb2JhbEVuZ2luZU1hcCgpCitzdGF0aWMgaW5saW5lIFN0cmluZyByb290UGF0aEZy
b21TZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8RW5naW5l
Pj4+IG1hcDsKKyAgICBTdHJpbmcgc2Vzc2lvblN1YmRpcmVjdG9yeSA9IEFTQ0lJTGl0ZXJhbCgi
c2Vzc2lvbiIpICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSwgc2Vzc2lvblN1YmRpcmVjdG9yeSk7
Cit9CisKK3N0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWY8RW5naW5lPj4mIGdsb2Jh
bEVuZ2luZU1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIFJlZjxFbmdpbmU+Pj4gbWFwOworCiAgICAgcmV0dXJuIG1hcDsKIH0KIAorRW5n
aW5lOjp+RW5naW5lKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVl
cygpKQorICAgICAgICBjYWNoZXMtPmRldGFjaCgpOworfQorCiBFbmdpbmUmIEVuZ2luZTo6ZnJv
bShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHNlc3Npb25JRCA9PSBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4gZGVmYXVsdEVu
Z2luZSgpOwogCi0gICAgcmV0dXJuICpnbG9iYWxFbmdpbmVNYXAoKS5lbnN1cmUoc2Vzc2lvbklE
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVuZ2luZT4oKTsKLSAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuIGdsb2JhbEVuZ2luZU1hcCgpLmVuc3VyZShz
ZXNzaW9uSUQsIFsmXSB7CisgICAgICAgIHJldHVybiBFbmdpbmU6OmNyZWF0ZShyb290UGF0aEZy
b21TZXNzaW9uSUQoc2Vzc2lvbklEKSk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
fQogCiB2b2lkIEVuZ2luZTo6ZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CkBAIC02Miw4ICs3OCwxNCBAQCB2b2lkIEVuZ2luZTo6ZGVzdHJveUVuZ2luZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiAKIEVuZ2luZSYgRW5naW5lOjpkZWZhdWx0RW5naW5lKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPEVuZ2luZT4+IGRlZmF1bHRF
bmdpbmUgPSB7IHN0ZDo6bWFrZV91bmlxdWU8RW5naW5lPigpIH07Ci0gICAgcmV0dXJuICpkZWZh
dWx0RW5naW5lLmdldCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8RW5naW5lPj4g
ZGVmYXVsdEVuZ2luZSA9IHsgRW5naW5lOjpjcmVhdGUocm9vdFBhdGhGcm9tU2Vzc2lvbklEKFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKSB9OworICAgIHJldHVybiBkZWZhdWx0
RW5naW5lLmdldCgpOworfQorCitFbmdpbmU6OkVuZ2luZShTdHJpbmcmJiByb290UGF0aCkKKyAg
ICA6IG1fcm9vdFBhdGgoV1RGTW92ZShyb290UGF0aCkpCisgICAgLCBtX2lvUXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGVTdG9yYWdlRW5naW5lLnNlcmlhbEJh
Y2tncm91bmQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tn
cm91bmQpKQorewogfQogCiB2b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJh
Y2spCkBAIC03NCw0MiArOTYsNDAgQEAgdm9pZCBFbmdpbmU6Om9wZW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXIKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8mIGNhY2hlcyA9IGNhY2hlc09y
RXJyb3IudmFsdWUoKS5nZXQoKTsKKyAgICAgICAgQ2FjaGVzJiBjYWNoZXMgPSBjYWNoZXNPckVy
cm9yLnZhbHVlKCk7CiAKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IGNhY2hlcy5maW5kTWF0Y2hp
bmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZSA9PSBjYWNoZU5hbWU7
IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciA9ICsrbV9uZXh0Q2FjaGVJZGVudGlmaWVyOwotICAgICAg
ICAgICAgY2FjaGVzLmFwcGVuZChDYWNoZSB7IGNhY2hlSWRlbnRpZmllciwgY2FjaGVOYW1lLCBW
ZWN0b3I8UmVjb3JkPigpLCAwIH0pOwotICAgICAgICAgICAgd3JpdGVDYWNoZXNUb0Rpc2soW2Nh
Y2hlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25h
bDxFcnJvcj4mJiBlcnJvcikgewotICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgY2FsbGJhY2soY2FjaGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlc1twb3NpdGlvbl0uaWRlbnRpZmll
cik7CisgICAgICAgIGlmIChhdXRvKiBjYWNoZSA9IGNhY2hlcy5maW5kKGNhY2hlTmFtZSkpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlLT5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCisgICAgICAgIGNhY2hlcy5vcGVuKFN0cmluZyB7IGNhY2hlTmFt
ZSB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVy
T3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCiB2b2lkIEVuZ2luZTo6cmVtb3ZlKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
LSAgICBzdGQ6Om9wdGlvbmFsPENhY2hlPiByZW1vdmVkQ2FjaGU7CisgICAgQ2FjaGVzKiBjYWNo
ZXNUb01vZGlmeSA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvJiBjYWNoZXMgOiBtX2NhY2hlcy52
YWx1ZXMoKSkgewotICAgICAgICBhdXRvIHBvc2l0aW9uID0gY2FjaGVzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGNhY2hlSWRl
bnRpZmllcjsgfSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgewotICAgICAg
ICAgICAgcmVtb3ZlZENhY2hlID0gV1RGTW92ZShjYWNoZXNbcG9zaXRpb25dKTsKLSAgICAgICAg
ICAgIGNhY2hlcy5yZW1vdmUocG9zaXRpb24pOworICAgICAgICBhdXRvKiBjYWNoZVRvUmVtb3Zl
ID0gY2FjaGVzLT5maW5kKGNhY2hlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChjYWNoZVRvUmVt
b3ZlKSB7CisgICAgICAgICAgICBjYWNoZXNUb01vZGlmeSA9IGNhY2hlcy5wdHIoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghcmVtb3ZlZENhY2hlKSB7
Ci0gICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpJbnRlcm5hbCkpOworICAg
IGlmICghY2FjaGVzVG9Nb2RpZnkpIHsKKyAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fcmVtb3Zl
ZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0u
aWRlbnRpZmllciA9PSBjYWNoZUlkZW50aWZpZXI7IH0pOworICAgICAgICBpZiAocG9zaXRpb24g
PT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEVycm9y
OjpJbnRlcm5hbCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNh
bGxiYWNrKGNhY2hlSWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9y
ZW1vdmVkQ2FjaGVzLmFwcGVuZChXVEZNb3ZlKHJlbW92ZWRDYWNoZS52YWx1ZSgpKSk7Ci0gICAg
d3JpdGVDYWNoZXNUb0Rpc2soW2NhY2hlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgeworCisgICAgY2FjaGVzVG9N
b2RpZnktPnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFtjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKICAg
ICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChl
cnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjYsMTQgKzE0Niw3IEBA
IHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVJ
bmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBhdXRvJiBjYWNoZXMgPSBjYWNoZXNPckVycm9yLnZhbHVlKCkuZ2V0KCk7Ci0K
LSAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4gY2FjaGVzSW5mbzsKLSAgICAgICAgY2FjaGVzSW5m
by5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhY2hlcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1
dG8mIGNhY2hlIDogY2FjaGVzKQotICAgICAgICAgICAgY2FjaGVzSW5mby51bmNoZWNrZWRBcHBl
bmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZX0pOwotCi0gICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoY2FjaGVzSW5mbykpOworICAgICAgICBjYWxsYmFjayhjYWNoZXNP
ckVycm9yLnZhbHVlKCkuZ2V0KCkuY2FjaGVJbmZvcygpKTsKICAgICB9KTsKIH0KIApAQCAtMTQ5
LDcgKzE2Miw3IEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjCiAKICAgICAgICAgVmVjdG9yPFJl
Y29yZD4gY29weTsKICAgICAgICAgY29weS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMu
c2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiByZXN1bHQudmFsdWUoKS5nZXQo
KS5yZWNvcmRzKQorICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJlY29yZHMpCiAgICAgICAg
ICAgICBjb3B5LnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuY29weSgpKTsKIAogICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKGNvcHkpKTsKQEAgLTIzNCwyMSArMjQ3LDU2IEBAIHZvaWQgRW5naW5lOjpk
ZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlCiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjp3cml0ZUNhY2hlc1RvRGlzayhG
dW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBF
bmdpbmU6OmluaXRpYWxpemUoRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmKT4m
JiBjYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdyaXRpbmcuCi0gICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICBpZiAobV9zYWx0KSB7CisgICAgICAgIGNhbGxiYWNr
KHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgc2Fs
dFBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgQVND
SUlMaXRlcmFsKCJzYWx0IikpOworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
c2FsdFBhdGggPSBXVEZNb3ZlKHNhbHRQYXRoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFdlYkNv
cmU6Om1ha2VBbGxEaXJlY3RvcmllcyhtX3Jvb3RQYXRoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhp
cywgc2FsdCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghc2FsdCkgeworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURpc2spOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fc2FsdCA9IFdURk1vdmUoc2FsdCk7Cisg
ICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICB9KTsKKyAgICB9KTsK
IH0KIAogdm9pZCBFbmdpbmU6OnJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBTdHJpbmcmIG9yaWdp
biwgQ2FjaGVzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHJlYWRpbmcuCi0KLSAgICBhdXRvJiBjYWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBb
XSB7Ci0gICAgICAgIHJldHVybiBWZWN0b3I8Q2FjaGU+KCk7CisgICAgYXV0byYgY2FjaGVzID0g
bV9jYWNoZXMuZW5zdXJlKG9yaWdpbiwgWyZvcmlnaW4sIHRoaXNdIHsKKyAgICAgICAgcmV0dXJu
IENhY2hlczo6Y3JlYXRlKCp0aGlzLCBvcmlnaW4pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
IAotICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VmVjdG9yPENhY2hlPj4geyBj
YWNoZXMgfSk7CisgICAgaWYgKGNhY2hlcy0+aXNJbml0aWFsaXplZCgpKSB7CisgICAgICAgIGNh
bGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiB7IGNhY2hlcy5nZXQoKSB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluaXRpYWxpemUoW3RoaXMsIG9yaWdpbiwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJv
cikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2so
bWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBjYWNoZXMgPSBtX2NhY2hlcy5nZXQob3JpZ2luKTsKKyAg
ICAgICAgQVNTRVJUKGNhY2hlcyk7CisKKyAgICAgICAgY2FjaGVzLT5pbml0aWFsaXplKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjYWNoZXNdKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYg
ZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAg
ICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgKmNhY2hlcyB9KTsKKyAgICAgICAgfSk7CisgICAg
fSk7CiB9CiAKIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBDYWNoZUNhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC0yNzgsMTEgKzMyNiw4IEBAIENhY2hlKiBF
bmdpbmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKICAgICBDYWNoZSogcmVz
dWx0ID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVlcygp
KSB7Ci0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBjYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25z
dCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVy
OyB9KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSAmY2FjaGVzW3Bvc2l0aW9uXTsKKyAgICAgICAgaWYgKChyZXN1bHQgPSBjYWNoZXMt
PmZpbmQoY2FjaGVJZGVudGlmaWVyKSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQog
ICAgIH0KICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9yZW1v
dmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRl
bS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcjsgfSk7CkBAIC0zMDUsNyArMzUwLDcxIEBA
IFZlY3Rvcjx1aW50NjRfdD4gRW5naW5lOjpxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmQ+
JiByZWNvcmRzLCBjb25zdCBXZWJDb3JlCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CiAKK3ZvaWQg
RW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpE
YXRhJiYgZGF0YSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxi
YWNrKQoreworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVk
Q29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpv
cGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSk7CisgICAgICAgIGNoYW5uZWwt
PndyaXRlKDAsIGRhdGEsIG51bGxwdHIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShp
bnQgZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBlcnJvcl0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXJy
b3I6OldyaXRlRGlzayk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnJlYWRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBOZXR3b3Jr
Q2FjaGU6OkRhdGEmLCBpbnQgZXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIG1faW9RdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVu
YW1lLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOworICAgICAgICBpZiAoY2hhbm5lbC0+ZmlsZURl
c2NyaXB0b3IoKSA8IDApIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhEYXRhIHsgfSwgMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNoYW5uZWwtPnJlYWQoMCwgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSwgbV9pb1F1ZXVlLnB0cigpLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZGF0YSwgZXJyb3JdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soZGF0YSwgZXJyb3IpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
fQorCit2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorewor
ICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2ZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5
KCldKCkgbXV0YWJsZSB7CisgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwor
ICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6aGFuZGxlUmVtb3ZlZENhY2hlKENhY2hlJiYgY2Fj
aGUpCit7CisgICAgbV9yZW1vdmVkQ2FjaGVzLmFwcGVuZChXVEZNb3ZlKGNhY2hlKSk7Cit9CisK
K3ZvaWQgRW5naW5lOjpzZXRQZXJzaXN0ZW5jeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBp
c1BlcnNpc3RlbnQpCit7CisgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2lzUGVyc2lz
dGVudF0oQ2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNW
YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZXN1bHQudmFsdWUoKS5nZXQo
KS5zZXRQZXJzaXN0ZW5jeShpc1BlcnNpc3RlbnQpOworICAgIH0pOworfQorCit2b2lkIEVuZ2lu
ZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAg
ICByZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2luLCBbXShDYWNoZXNPckVycm9yJiYgcmVzdWx0KSB7
CisgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJlc3VsdC52YWx1ZSgpLmdldCgpLmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oKTsK
KyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAyOTE3NzEyZmQzZGRlOWNmNDM3MDBlYzAw
Mjk0NjgzZTZiZGNlZWE4Li5iYzRjNDgxYzJlMjIwOTVkOTViZWRhYmI4ZTg3YzRlYzY2OTcwOWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmgKQEAgLTI1LDggKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKQEAgLTQwLDEwICs0MSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNl
IENhY2hlU3RvcmFnZSB7CiAKLWNsYXNzIEVuZ2luZSB7CitjbGFzcyBFbmdpbmUgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RW5naW5lPiB7CiBwdWJsaWM6CisgICAgfkVuZ2luZSgpOwor
CiAgICAgc3RhdGljIEVuZ2luZSYgZnJvbShQQUw6OlNlc3Npb25JRCk7CiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxFbmdpbmU+
IGNyZWF0ZShTdHJpbmcmJiByb290UGF0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbmdpbmUo
V1RGTW92ZShyb290UGF0aCkpKTsgfQogCiAgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRl
bnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwpAQCAt
NTMsMTQgKzU3LDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dFJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBkZWxl
dGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9N
Q2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKKyAgICB2b2lkIGhhbmRsZVJl
bW92ZWRDYWNoZShDYWNoZSYmKTsKKyAgICB2b2lkIHdyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRp
b25DYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmLCBpbnQgZXJyb3Ip
PiYmKTsKKyAgICB2b2lkIHJlbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CisKKyAg
ICBjb25zdCBTdHJpbmcmIHJvb3RQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9yb290UGF0aDsgfQor
ICAgIGNvbnN0IE5ldHdvcmtDYWNoZTo6U2FsdCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Fs
dC52YWx1ZSgpOyB9CisgICAgdWludDY0X3QgbmV4dENhY2hlSWRlbnRpZmllcigpIHsgcmV0dXJu
ICsrbV9uZXh0Q2FjaGVJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIHNldFBlcnNpc3RlbmN5KGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGlzUGVyc2lzdGVudCk7CisgICAgdm9pZCBjbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKwogcHJpdmF0ZToKICAg
ICBzdGF0aWMgRW5naW5lJiBkZWZhdWx0RW5naW5lKCk7CisgICAgZXhwbGljaXQgRW5naW5lKFN0
cmluZyYmKTsKIAotICAgIHZvaWQgd3JpdGVDYWNoZXNUb0Rpc2soV2ViQ29yZTo6RE9NQ2FjaGU6
OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGluaXRpYWxpemUoRnVuY3Rpb248dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj4mJik+JiYpOwogCi0gICAg
dXNpbmcgQ2FjaGVzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VmVj
dG9yPENhY2hlPj4sIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj47CisgICAgdXNpbmcgQ2FjaGVz
T3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OkVycm9yPjsKICAgICB1c2luZyBDYWNoZXNDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChDYWNoZXNPckVycm9yJiYpPjsKLSAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlz
ayhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZWFk
Q2FjaGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoQ2FjaGVz
T3JFcnJvciYmKT4mJik7CiAKICAgICB1c2luZyBDYWNoZU9yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPjsKICAg
ICB1c2luZyBDYWNoZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlT3JFcnJvciYm
KT47CkBAIC03MCwxMiArODcsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUNhY2hlUmVj
b3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKICAgICBWZWN0b3I8
dWludDY0X3Q+IHF1ZXJ5Q2FjaGUoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNv
cmQ+JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2Fj
aGVRdWVyeU9wdGlvbnMmKTsKLQogICAgIENhY2hlKiBjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIpOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxDYWNoZT4+IG1fY2FjaGVzOwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8Q2FjaGVzPj4gbV9jYWNoZXM7CiAgICAgVmVjdG9yPENh
Y2hlPiBtX3JlbW92ZWRDYWNoZXM7CiAgICAgdWludDY0X3QgbV9uZXh0Q2FjaGVJZGVudGlmaWVy
IHsgMCB9OworICAgIFN0cmluZyBtX3Jvb3RQYXRoOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29y
a0NhY2hlOjpTYWx0PiBtX3NhbHQ7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9pb1F1ZXVlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmVkNDIzMTQyMDM3ZGU3YzYxZDM4OTAzZGUwZjgxODk2ZWYzNmMxOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVD
b2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBDYWNoZVN0b3JhZ2Ug
eworCitzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNSb290UGF0aChFbmdpbmUmIGVuZ2luZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgS2V5IGtleShlbmdpbmUucm9vdFBhdGgoKSwg
eyB9LCB7IH0sIG9yaWdpbiwgZW5naW5lLnNhbHQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChlbmdpbmUucm9vdFBhdGgoKSwga2V5LnBhcnRpdGlvbkhh
c2hBc1N0cmluZygpKTsKK30KKworc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzTGlzdEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJj
YWNoZXNsaXN0IikpOworfQorCitDYWNoZXM6OkNhY2hlcyhFbmdpbmUmIGVuZ2luZSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4pCisgICAgOiBtX2VuZ2luZSgmZW5naW5lKQorICAgICwgbV9yb290UGF0
aChjYWNoZXNSb290UGF0aChlbmdpbmUsIG9yaWdpbikpCit7Cit9CisKK3ZvaWQgQ2FjaGVzOjpp
bml0aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAobV9pc0luaXRpYWxpemVkIHx8ICFtX2VuZ2luZSkgeworICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KG1fc3RvcmFnZSkgeworICAgICAgICBtX3BlbmRpbmdJbml0aWFsaXphdGlvbkNhbGxiYWNrcy5h
cHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBzdG9yYWdlID0gU3RvcmFnZTo6b3BlbihtX3Jvb3RQYXRoLCBTdG9yYWdlOjpNb2RlOjpO
b3JtYWwpOworICAgIGlmICghc3RvcmFnZSkgeworICAgICAgICBjYWxsYmFjayhFcnJvcjo6V3Jp
dGVEaXNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3N0b3JhZ2UgPSBzdG9yYWdl
LnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmVhZENhY2hlc0Zyb21EaXNrKFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJvcj4mJiBy
ZXN1bHQpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAgICAgICAgICAg
Y2FsbGJhY2socmVzdWx0LmVycm9yKCkpOworCisgICAgICAgICAgICBhdXRvIHBlbmRpbmdDYWxs
YmFja3MgPSBXVEZNb3ZlKG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzKTsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBwZW5kaW5nQ2FsbGJhY2tzKQorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBtX2NhY2hlcyA9IFdURk1vdmUocmVzdWx0LnZhbHVlKCkpOworICAg
ICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxv
cHQpOworCisgICAgICAgIGF1dG8gcGVuZGluZ0NhbGxiYWNrcyA9IFdURk1vdmUobV9wZW5kaW5n
SW5pdGlhbGl6YXRpb25DYWxsYmFja3MpOworICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
cGVuZGluZ0NhbGxiYWNrcykKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Cisg
ICAgfSk7Cit9CisKK0NhY2hlKiBDYWNoZXM6OmZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZSA9PSBuYW1lOyB9KTsKKyAgICByZXR1cm4gKHBvc2l0
aW9uICE9IG5vdEZvdW5kKSA/ICZtX2NhY2hlc1twb3NpdGlvbl0gOiBudWxscHRyOworfQorCitD
YWNoZSogQ2FjaGVzOjpmaW5kKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgYXV0byBwb3Np
dGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1
cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgIHJldHVybiAocG9zaXRp
b24gIT0gbm90Rm91bmQpID8gJm1fY2FjaGVzW3Bvc2l0aW9uXSA6IG51bGxwdHI7Cit9CisKK3Vp
bnQ2NF90IENhY2hlczo6b3BlbihTdHJpbmcmJiBuYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFj
ayYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChtX2VuZ2luZSk7CisKKyAgICB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIgPSBtX2VuZ2luZS0+bmV4dENhY2hlSWRlbnRpZmllcigpOworICAgIG1f
Y2FjaGVzLmFwcGVuZChDYWNoZSB7IGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgeyB9
LCAwIH0pOworICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBjYWNoZUlkZW50aWZpZXJdKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBjYWxsYmFjayhjYWNoZUlkZW50aWZpZXIpOworICAgIH0pOworICAgIHJldHVybiBj
YWNoZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgQ2FjaGVzOjpyZW1vdmUodWludDY0X3QgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5n
aW5lKTsKKworICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9
KTsKKworICAgIEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3VuZCk7CisKKyAgICBhdXRvIGNhY2hl
ID0gV1RGTW92ZShtX2NhY2hlc1twb3NpdGlvbl0pOworICAgIG1fY2FjaGVzLnJlbW92ZShwb3Np
dGlvbik7CisKKyAgICBtX2VuZ2luZS0+aGFuZGxlUmVtb3ZlZENhY2hlKFdURk1vdmUoY2FjaGUp
KTsKKworICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFdURk1vdmUoY2FsbGJhY2spKTsKK30KKworc3Rh
dGljIGlubGluZSBEYXRhIGVuY29kZUNhY2hlTmFtZXMoY29uc3QgVmVjdG9yPENhY2hlPiYgY2Fj
aGVzKQoreworICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKworICAgIHVp
bnQ2NF90IHNpemUgPSBjYWNoZXMuc2l6ZSgpOworICAgIGVuY29kZXIgPDwgc2l6ZTsKKyAgICBm
b3IgKGF1dG8mIGNhY2hlIDogY2FjaGVzKQorICAgICAgICBlbmNvZGVyIDw8IGNhY2hlLm5hbWU7
CisKKyAgICByZXR1cm4gRGF0YSB7IGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpIH07Cit9CisKK3N0YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIEVycm9y
PiBkZWNvZGVDYWNoZXNOYW1lcyhjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpCit7CisgICAg
aWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWREaXNr
KTsKKworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOworICAgIHVpbnQ2NF90IGNvdW50OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY291bnQpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWREaXNr
KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOworICAgIG5hbWVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY291bnQpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3Vu
dDsgKytpbmRleCkgeworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcjo6
UmVhZERpc2spOworCisgICAgICAgIG5hbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWUp
KTsKKyAgICB9CisgICAgcmV0dXJuIG5hbWVzOworfQorCit2b2lkIENhY2hlczo6cmVhZENhY2hl
c0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJv
cj4mJik+JiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5naW5lKTsKKyAgICBBU1NFUlQo
IW1faXNJbml0aWFsaXplZCk7CisgICAgQVNTRVJUKG1fY2FjaGVzLmlzRW1wdHkoKSk7CisKKyAg
ICBpZiAoIW1fc2hvdWxkUGVyc2lzdCkgeworICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+
IHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZpbGVuYW1lID0gY2Fj
aGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpOworICAgIGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0
cyhmaWxlbmFtZSkpIHsKKyAgICAgICAgY2FsbGJhY2soVmVjdG9yPENhY2hlPiB7IH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9lbmdpbmUtPnJlYWRGaWxlKGZpbGVuYW1lLCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAg
ICBpZiAoIW1fZW5naW5lKSB7CisgICAgICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsg
fSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGRlY29kZUNhY2hlc05hbWVzKGRhdGEsIGVycm9yKTsKKyAgICAgICAgaWYgKCFyZXN1bHQu
aGFzVmFsdWUoKSkgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQocmVzdWx0
LmVycm9yKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBWZWN0
b3I8Q2FjaGU+IGNhY2hlczsKKyAgICAgICAgY2FjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
cmVzdWx0LnZhbHVlKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogcmVzdWx0
LnZhbHVlKCkpCisgICAgICAgICAgICBjYWNoZXMudW5jaGVja2VkQXBwZW5kKENhY2hlIHsgbV9l
bmdpbmUtPm5leHRDYWNoZUlkZW50aWZpZXIoKSwgV1RGTW92ZShuYW1lKSwgeyB9LCAwIH0pOwor
CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2FjaGVzKSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
Q2FjaGVzOjp3cml0ZUNhY2hlc1RvRGlzayhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3sKKyAgICBpZiAoIW1fc2hvdWxkUGVyc2lzdCkgeworICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG1fZW5naW5lKTsK
KworICAgIGlmIChtX2NhY2hlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9lbmdpbmUtPnJlbW92
ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpKTsKKyAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZW5naW5lLT53
cml0ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpLCBlbmNvZGVDYWNoZU5hbWVz
KG1fY2FjaGVzKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8
RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9y
KSk7CisgICAgfSk7Cit9CisgICAgCit2b2lkIENhY2hlczo6Y2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbigpCit7CisgICAgbV9jYWNoZXMuY2xlYXIoKTsKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBm
YWxzZTsKKyAgICBtX3N0b3JhZ2UgPSBudWxscHRyOworfQorCitWZWN0b3I8Q2FjaGVJbmZvPiBD
YWNoZXM6OmNhY2hlSW5mb3MoKSBjb25zdAoreworICAgIFZlY3RvcjxDYWNoZUluZm8+IGNhY2hl
SW5mb3M7CisgICAgY2FjaGVJbmZvcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fY2FjaGVzLnNp
emUoKSk7CisgICAgZm9yIChhdXRvJiBjYWNoZSA6IG1fY2FjaGVzKQorICAgICAgICBjYWNoZUlu
Zm9zLnVuY2hlY2tlZEFwcGVuZChDYWNoZUluZm8geyBjYWNoZS5pZGVudGlmaWVyLCBjYWNoZS5u
YW1lIH0pOworICAgIHJldHVybiBjYWNoZUluZm9zOworfQorCit9IC8vIG5hbWVzcGFjZSBDYWNo
ZVN0b3JhZ2UKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MDE4NWNkZGJkNzhiMTAzNTRiY2JkZTU2YjcxOWNhNWI0ZDI4YzJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIgorI2luY2x1
ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVz
cGFjZSBDYWNoZVN0b3JhZ2UgeworCitjbGFzcyBFbmdpbmU7CisKK2NsYXNzIENhY2hlcyA6IHB1
YmxpYyBSZWZDb3VudGVkPENhY2hlcz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q2FjaGVz
PiBjcmVhdGUoRW5naW5lJiBlbmdpbmUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IENhY2hlcyB7IGVuZ2luZSwgb3JpZ2luIH0pOyB9CisKKyAgICB2b2lkIGlu
aXRpYWxpemUoV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKworICAg
IGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXplZDsgfQor
CisgICAgQ2FjaGUqIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBDYWNoZSogZmluZCh1
aW50NjRfdCBpZGVudGlmaWVyKTsKKworICAgIHVpbnQ2NF90IG9wZW4oU3RyaW5nJiYgbmFtZSwg
V2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHZvaWQg
cmVtb3ZlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9u
Q2FsbGJhY2smJik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mbz4g
Y2FjaGVJbmZvcygpIGNvbnN0OworCisgICAgdm9pZCBzZXRQZXJzaXN0ZW5jeShib29sIHNob3Vs
ZFBlcnNpc3QpIHsgbV9zaG91bGRQZXJzaXN0ID0gc2hvdWxkUGVyc2lzdDsgfQorICAgIHZvaWQg
Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgIHZvaWQgZGV0YWNoKCkgeyBtX2VuZ2lu
ZSA9IG51bGxwdHI7IH0KKworcHJpdmF0ZToKKyAgICBDYWNoZXMoRW5naW5lJiwgY29uc3QgU3Ry
aW5nJiByb290UGF0aCk7CisKKyAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0
aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9y
PiYmKT4mJik7CisgICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01DYWNoZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYpOworCisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9zaG91bGRQZXJzaXN0IHsgdHJ1ZSB9OworICAgIEVuZ2luZSogbV9l
bmdpbmUgeyBudWxscHRyIH07CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgVmVjdG9yPENh
Y2hlPiBtX2NhY2hlczsKKyAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpTdG9yYWdlPiBtX3N0b3Jh
Z2U7CisgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2s+IG1f
cGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgQ2Fj
aGVTdG9yYWdlCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5jcHAKaW5kZXggMzVlYjFkNjViN2ZhOGQ5NWRlMWQ2MzMzNWEwOWNhNGQwZDU1
YjhjNi4uZjlkYmI2MzQ0ODI2ZDdlMzdlZDUwMDJjMDliYjBlMjhmNDdiZDI4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCkBAIC02Myw2ICs2MywxNiBAQCB2b2lkIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHJlcQogICAgIH0pOwogfQogCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OnNldFBlcnNpc3RlbmN5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGJvb2wgaXNQZXJzaXN0ZW50KQoreworICAgIEVuZ2luZTo6ZnJvbShz
ZXNzaW9uSUQpLnNldFBlcnNpc3RlbmN5KG9yaWdpbiwgaXNQZXJzaXN0ZW50KTsKK30KKwordm9p
ZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAg
RW5naW5lOjpmcm9tKHNlc3Npb25JRCkuY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihvcmlnaW4p
OworfQorCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyKQogewogICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJldHJpZXZl
UmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHRoaXMsIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVj
b3Jkc09yRXJyb3ImJiByZXN1bHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgK
aW5kZXggZmIzYTY2NGU1NDVjNGRhZjc1NThmZDE0OWFhMWVhMWYxZGY5ZDUzMy4uNDBkMzRiZWFh
MTBmNmMwMjJiMmUzNDg2Y2NiNzRiZDUwNDZiNzg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmgKQEAgLTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZShQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVtb3ZlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IHJldHJpZXZlQ2FjaGVzSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCisg
ICAgdm9pZCBzZXRQZXJzaXN0ZW5jeShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIGJvb2wgaXNQZXJzaXN0ZW50KTsKKyAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKwogICAgIHZvaWQgcmVj
b3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0
aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3Jl
OjpET01DYWNoZTo6UmVjb3JkPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA1OTIyZWVkNjY3Mjc2ZGRjMWU1NGE0ODE4NDNkZmJl
M2E5ZTUyZGU4Li4zNTZkZjM5MGM0NjQ2ODJjMDdmMmU3YjQ1NzYwMTYyYzE4ZGQ1OWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0y
NSw2ICsyNSw5IEBAIG1lc3NhZ2VzIC0+IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24gewog
ICAgIFJlbW92ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIENhY2hlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2lu
KTsKIAorICAgIFNldFBlcnNpc3RlbmN5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5n
IG9yaWdpbiwgYm9vbCBpc1BlcnNpc3RlbnQpOworICAgIENsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgb3JpZ2luKTsKKwogICAgIFJlY29y
ZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3Ry
dWN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4g
cmVjb3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDkwZTFhY2RhNTI1NTViNGRlYzY2Y2NjMTA4ZjY2NTlkZDA5MTM2MWIuLmMxZDll
MTZiNzZlM2EzNmMzN2MzODYwMzhiNGYyZGJiOTZhNzBkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkxLDYgKzg5MSw3IEBACiAJ
CTQxMzA3NUIyMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNjFERTg1
RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovOyB9OwogCQk0MTMwNzVC
MzFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5
IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDEzMDc1QjQxREU4NUY1ODAwMzlF
QzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuaCAqLzsgfTsKKwkJNDEzNUZCRDExRjRGQjgwOTAwNzRDNDdCIC8qIENhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcCAqLzsgfTsKIAkJNDE4OTdFQ0YxRjQxNUQ2MjAwMTZGQTQyIC8qIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4OTdFQ0UxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwICovOyB9OwogCQk0MTg5N0VEMDFGNDE1RDY1MDAxNkZBNDIgLyogV2ViQ2FjaGVT
dG9yYWdlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3Zp
ZGVyLmNwcCAqLzsgfTsKIAkJNDE4OTdFRDExRjQxNUQ2ODAwMTZGQTQyIC8qIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmggKi87IH07CkBAIC0zMTYwLDYgKzMxNjEsOCBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAz
OUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRD
UHJvdmlkZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZp
ZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExp
YldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9
IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNp
ZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CisJCTQxMzVGQkNGMUY0
RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8q
IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE4OTdFQ0IxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQy
IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNh
Y2hlU3RvcmFnZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4
OTdFQ0QxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODE5NSw2ICs4MTk4LDggQEAKIAkJCQk0MTg5N0VENjFGNDE1RDg2MDAx
NkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCAqLywKIAkJCQk0MTg5N0VEMjFGNDE1RDg1
MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggKi8sCiAJCQkJNDFGQUJEMjgxRjREREZE
QzAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggKi8sCisJCQkJNDEzNUZCQ0Yx
RjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgKi8sCisJCQkJ
NDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICov
LAogCQkJCTQxODk3RUQzMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmNwcCAqLywKIAkJCQk0MTg5N0VENDFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5oICovLAogCQkJCTQxODk3RUQ1MUY0MTVEODUwMDE2RkE0MiAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLApAQCAtOTk4Myw2
ICs5OTg4LDcgQEAKIAkJCQlFMTcwODc2QjE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGMTg2MzgxNjdEMDcxRTAwQTFBODVBIC8q
IENhY2hlTW9kZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4OTdFRDcxRjQxNUQ4QTAwMTZG
QTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTM1RkJE
MTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxODk3RUQ5MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMy
OTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBQTJFNTFFMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBjM2QxMzAy
NzUwOWMzMmIzMjdjMjZkOWU0ZjEwZjYxMzU5MjRiMjIzLi5jOWQ0ZDk0OTE5ZmEyZjBkNjJlYjNm
NmY2MGI0ZjU5OGM5YWNhOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC04Niw2ICs4
NiwxOCBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRp
b24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlB1dFJlY29yZHMobV9zZXNzaW9u
SUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlY29yZHMpLCAwKTsKIH0K
IAordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpzZXRQZXJzaXN0ZW5jeShjb25zdCBT
dHJpbmcmIG9yaWdpbiwgYm9vbCBpc1BlcnNpc3RlbnQsIENvbXBsZXRpb25DYWxsYmFjayYmIGNh
bGxiYWNrKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpTZXRQZXJzaXN0ZW5jeShtX3Nlc3Npb25JRCwgb3JpZ2luLCBpc1Bl
cnNpc3RlbnQpLCAwKTsKKyAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworfQorCit2b2lkIFdl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpD
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKG1fc2Vzc2lvbklELCBvcmlnaW4pLCAwKTsKKyAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOworfQorCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246Om9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENhY2hl
SWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkKIHsKICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmgKaW5kZXggMjVhZmZjZjAwYWRjMDhmODIxNGVkNzRmNTBmYzgyMTM4YzE4MWM3Yy4uODg3
Y2Y3NDM4ZDljMDA3YTRjMDg1ZmUxMzhjZTA5ODA3MTAxZDQ0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5oCkBAIC02MCw2ICs2MCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3Bl
cmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlP
cHRpb25zJiYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZD4mJikgZmluYWw7CiAKKyAgICB2b2lkIHNldFBlcnNpc3RlbmN5
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGlzUGVyc2lzdGVudCwgV2ViQ29yZTo6RE9NQ2Fj
aGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIFdlYkNvcmU6OkRPTUNhY2hlOjpDb21w
bGV0aW9uQ2FsbGJhY2smJikgZmluYWw7CisKICAgICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50
aWZpZXJPckVycm9yJik7CiAgICAgdm9pZCByZW1vdmVDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJPckVy
cm9yJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUluZm9zT3JFcnJvciYmKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZmRkZGU2
YzA3M2I2NjZiYmM3MWFiY2Y3YjJkMGY0ZjE0N2I4ZWFlLi45MGY1M2Y1M2I4OTE0ZGYyMTE4ZDFl
NmIyMGQ4YjczMGEzYjcwMjQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgtMjUgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDYWNoZSBBUEldIFN1
cHBvcnQgY2FjaGUgbmFtZXMgcGVyc2lzdGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFB1dHRpbmcgdGhlc2UgdGVzdHMgaW4gaHR0cC90ZXN0cyBm
b2xkZXIgc28gdGhhdCB0aGV5IHJ1biBpbiBhIGRpZmZlcmVudCBvcmlnaW4gYW5kIHNvIGEgZGlm
ZmVyZW50IENhY2hlcyB0aGFuIG90aGVyIHRlc3RzLgorICAgICAgICBTZXR0aW5nIGJvdGggcGVy
c2lzdGVuY3kgdG8gZmFsc2UgYW5kIGNsZWFyaW5nIHRoZSBtZW1vcnkgcmVwcmVzZW50YXRpb24g
d291bGQgcHJvYmFibHkgYWZmZWN0CisgICAgICAgIHRoZSBvdGhlciB0ZXN0cyB0aGF0IHdvdWxk
IHJ1biBpbiBwYXJhbGxlbC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1wZXJzaXN0ZW5jeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hlLXBlcnNpc3Rl
bmN5LWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAxNy0wOC0yNCAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV1BUIGhhcm5lc3MgZXJyb3JzIG9uIGxlYWtzIGFu
ZCBpT1Mtc2ltIEVXUyBib3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmNkMjBhNGMwMjk5YmZmZDA5MjZjMDYyM2Q0NzU3MWVj
NGEyY2QwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1z
dG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACisKKworUEFTUyBDbGVhbmluZyBleGlzdGluZyBjYWNoZXMgCitQQVNTIENsZWFyIG1lbW9y
eSByZXByZXNlbnRhdGlvbiBhbmQgZGlzYWJsZSBkaXNrIHBlcnNpc3RlbmN5IAorUEFTUyBDbGVh
bmluZyBhZGRlZCBjYWNoZXMgZnJvbSBwcmV2aW91cyB0ZXN0IDEgCitQQVNTIENsZWFyIG1lbW9y
eSByZXByZXNlbnRhdGlvbiBidXQga2VlcCBkaXNrIHBlcnNpc3RlbmN5IAorUEFTUyBDbGVhbmlu
ZyBhZGRlZCBjYWNoZXMgZnJvbSBwcmV2aW91cyB0ZXN0IDIgCitQQVNTIEFkZGluZy9SZW1vdmlu
ZyBjYWNoZXMgYW5kIGNsZWFyaW5nIGluIG1lbW9yeSByZXByZXNlbnRhdGlvbiBhdCB2YXJpb3Vz
IHRpbWVzIAorUEFTUyBDbGVhbmluZyBhZGRlZCBjYWNoZXMgCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3Rl
bmN5Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdkOTAyMDU1ZDRlYzY1MWJhNWQ3YjZlNjk1ZWQy
ZjIyYjM2YjVkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTI3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FjaGUgU3RvcmFnZTog
dGVzdGluZyBwZXJzaXN0ZW5jeTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJjaGVj
ayI+PC9kaXY+CisgICAgPHNjcmlwdD4KKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAg
ICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAg
IHZhciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBmb3IgKGtleSBvZiBrZXlzKQorICAgICAg
ICAgICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hlcy5kZWxldGUoa2V5c1swXSkpOworICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmcpOworICAgICAgICB9KTsKKyAgICB9
LCAiQ2xlYW5pbmcgZXhpc3RpbmcgY2FjaGVzIik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9
PiB7CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdCgiVGVzdCByZXF1aXJlcyBpbnRlcm5hbHMiKTsKKworICAgICAgICBpbnRl
cm5hbHMuc2V0Q2FjaGVTdG9yYWdlUGVyc2lzdGVuY3koZmFsc2UpOworICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gInJlYWR5IikgeworICAgICAgICAgICAg
ICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigp
OworICAgICAgICAgICAgICAgICAgICBjaGVjay5pbm5lckhUTUwgPSAiPGlmcmFtZSBzcmM9J3Jl
c291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbCNjaGVjayc+PC9pZnJhbWU+IjsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShldmVudC5kYXRhID09PSBmYWxzZSwgIk5vIGNhY2hlIG9iamVj
dCBzaG91bGQgYmUgZm91bmQiKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0Q2FjaGVT
dG9yYWdlUGVyc2lzdGVuY3koZmFsc2UpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAg
ICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIGNoZWNrLmlubmVySFRNTCA9ICI8aWZyYW1lIHNy
Yz0ncmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sJz48L2lmcmFtZT4iOwor
ICAgICAgICB9KQorICAgIH0sICJDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24gYW5kIGRpc2Fi
bGUgZGlzayBwZXJzaXN0ZW5jeSIpOworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFy
Q2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRDYWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeSh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB2YXIg
cGVuZGluZyA9IFtdOworICAgICAgICAgICAgZm9yIChrZXkgb2Yga2V5cykKKyAgICAgICAgICAg
ICAgICBwZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKKyAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5nKTsKKyAgICAgICAgfSk7CisgICAgfSwgIkNs
ZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMSIpOworCisgICAgcHJvbWlz
ZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzIik7CisK
KyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAg
ICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMo
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICJyZWFkeSIp
IHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5
UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2suaW5uZXJIVE1MID0g
IjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwjY2hl
Y2snPjwvaWZyYW1lPiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZXZlbnQuZGF0YSA9PT0gdHJ1ZSwg
IkEgY2FjaGUgb2JqZWN0IHNob3VsZCBiZSBmb3VuZCIpOworICAgICAgICAgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIGNoZWNrLmlubmVySFRNTCA9ICI8
aWZyYW1lIHNyYz0ncmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sJz48L2lm
cmFtZT4iOworICAgICAgICB9KQorICAgIH0sICJDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24g
YnV0IGtlZXAgZGlzayBwZXJzaXN0ZW5jeSIpOworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4g
eworICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAg
ICAgICAgICB2YXIgcGVuZGluZyA9IFtdOworICAgICAgICAgICAgZm9yIChrZXkgb2Yga2V5cykK
KyAgICAgICAgICAgICAgICBwZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0p
KTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5nKTsKKyAgICAgICAgfSk7
CisgICAgfSwgIkNsZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMiIpOwor
CisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50
ZXJuYWxzIik7CisKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtzZWxmLmNhY2hlcy5vcGVu
KCJ0ZXN0MiIpLCBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MSIpXSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpCisgICAgICAgIH0pLnRoZW4oa2V5cyA9
PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDIiLCAidGVz
dDEiXSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLmNhY2hlcy5rZXlzKCk7CisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDIiLCAidGVzdDEiXSk7CisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMuZGVsZXRlKCJ0ZXN0MiIpOworICAgICAgICB9KS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9y
eVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygp
OworICAgICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhrZXlzLCBbInRlc3QxIl0pOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MiIpOworICAgICAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJl
c2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpOworICAg
ICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhr
ZXlzLCBbInRlc3QxIiwgInRlc3QyIl0pOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbc2VsZi5jYWNoZXMuZGVsZXRlKCJ0ZXN0MiIpLCBz
ZWxmLmNhY2hlcy5kZWxldGUoInRlc3QxIildKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlv
bigpOworICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsKKyAgICAgICAgfSku
dGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgW10p
OworICAgICAgICB9KTsKKyAgICB9LCAiQWRkaW5nL1JlbW92aW5nIGNhY2hlcyBhbmQgY2xlYXJp
bmcgaW4gbWVtb3J5IHJlcHJlc2VudGF0aW9uIGF0IHZhcmlvdXMgdGltZXMiKTsKKworICAgIHBy
b21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50
aGVuKGtleXMgPT4geworICAgICAgICAgICAgdmFyIHBlbmRpbmcgPSBbXTsKKyAgICAgICAgICAg
IGZvciAoa2V5IG9mIGtleXMpCisgICAgICAgICAgICAgICAgcGVuZGluZy5wdXNoKHNlbGYuY2Fj
aGVzLmRlbGV0ZShrZXlzWzBdKSk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVu
ZGluZyk7CisgICAgICAgIH0pOworICAgIH0sICJDbGVhbmluZyBhZGRlZCBjYWNoZXMiKTsKKyAg
ICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJh
bWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMv
Y2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc5Yzk4ZmVmOGU0NGIx
NTdhMTNmYzBkOTZhNDJmZjY0ZDQ4NTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZy
YW1lLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5
PgorICAgIDxzY3JpcHQ+CitmdW5jdGlvbiBkb1Rlc3QoKQoreworICAgIGlmICh3aW5kb3cubG9j
YXRpb24uaGFzaCA9PT0gIiNjaGVjayIpIHsKKyAgICAgICAgc2VsZi5jYWNoZXMua2V5cygpLnRo
ZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGtleXMu
bGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09ICJ0ZXN0Q2FjaGVOYW1lIiwgIioiKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZWxmLmNhY2hlcy5vcGVuKCJ0
ZXN0Q2FjaGVOYW1lIikudGhlbigoKSA9PiB7CisgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1l
c3NhZ2UoInJlYWR5IiwgIioiKTsKKyAgICB9KTsKK30KK2RvVGVzdCgpOworICAgIDwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319119</attachid>
            <date>2017-08-25 17:03:52 -0700</date>
            <delta_ts>2017-08-28 13:36:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175995-20170825170352.patch</filename>
            <type>text/plain</type>
            <size>59696</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWYxMjFkOGFiZjI2MzYx
NTlhMGU4YzcyNzg0OGYwM2I3M2M4YjA4Zi4uM2FhYjllYzYyNWE4OGIwZTg5N2NlNmM0OGRhMTZk
N2E0YjNlZDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBw
b3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cGVyc2lzdGVuY3kuaHR0cHMuaHRtbAorCisgICAgICAgIEFkZGluZyBtZXRob2QgdG8gY2xlYXIg
dGhlIG1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FjaGUgc3RvcmFnZS4KKyAgICAgICAg
QWRkaW5nIG1ldGhvZCB0byBzZXQgdGhlIGNhY2hlIHN0b3JhZ2UgcGVyc2lzdGVuY3kgKGkuZS4g
d2hldGhlciB0aGUgY2FjaGUgc3RvcmFnZSB3aWxsIHJlYWQvd3JpdGUgb24gdGhlIGRpc2spLgor
ICAgICAgICBFeHBvc2luZyB0aGVzZSBtZXRob2RzIGFzIGludGVybmFscyBzbyB0aGF0IGxheW91
dCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBwZXJzaXN0ZW5jeS4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBSZWFkRGlzayBhbmQgV3JpdGVEaXNrIGVycm9ycyB0aGF0IGFyZSB1c2VkIGJ5
IENhY2hlU3RvcmFnZTo6RW5naW5lLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjplcnJvclRvRXhj
ZXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRD
YWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE3LTA4
LTI0ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAxMGJlYmVjNDBmNWE0N2VkNjZiYmZjOGUyOThmNDVhZjYxMGIzOTVlLi5iNDY5
MzVlNTA3MTg1MTIyNDAzMGUyMmY0YWI3ZTBhMmY1NzdkNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDg2IEBACiAyMDE3LTA4LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAor
ICAgICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgZGlzayBy
ZWFkL3dyaXRlIGNhcGFjaXRpZXMgdG8gQ2FjaGVTdG9yYWdlIGVuZ2luZS4KKyAgICAgICAgVGhp
cyBpcyB1c2VkIHRvIHN0b3JlIHBlci1vcmlnaW4gY2FjaGUgbmFtZXMgaW4gYSBmaWxlLgorICAg
ICAgICBNYWtpbmcgRW5naW5lIGEgdGhyZWFkIHNhZmUgcmVmY291bnRlZCBvYmplY3Qgc28gdGhh
dCBpdCBkb2VzIHJlYWQvd3JpdGUgaW4gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBDYWNoZVN0b3JhZ2U6OkNhY2hlcyBhcyB0aGUgb2JqZWN0IG1hbmFnaW5nIHRo
ZSBsaXN0IG9mIENhY2hlIG9iamVjdHMgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorICAgICAgICBDYWNo
ZXMgd2lsbCBiZSByZXNwb25zaWJsZSB0byBkbyBhbGwgdGhlIHJlYWQvd3JpdGUgb3BlcmF0aW9u
cyBmb3IgYWxsIG9mIGl0cyBjYWNoZXMuCisgICAgICAgIEl0IHdpbGwgYmUgcmVzcG9uc2libGUg
Zm9yIHF1b3RhIGxpbWl0YXRpb24gYXMgd2VsbC4KKworICAgICAgICBNb3ZpbmcgcGFydCBvZiB0
aGUgbG9naWMgZnJvbSBDYWNoZVN0b3JhZ2U6OkVuZ2luZSBpbnRvIENhY2hlU3RvcmFnZTo6Q2Fj
aGVzLgorCisgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lIGlzIGluaXRpYWxpemVkIGFzeW5j
aHJvbm91c2x5IGFzIGl0IGZpcnN0IGNyZWF0ZXMgYSBzYWx0IHdoaWNoIGlzIHVzZWQKKyAgICAg
ICAgdG8gb2JmdXNjYXRlIHRoZSBuYW1lcyBvZiB0aGUgdmFyaW91cyBmaWxlcyBzdG9yZWQgb24g
ZGlzay4KKworICAgICAgICBJbiB0aGUgc2FtZSBzcGlyaXQsIENhY2hlU3RvcmFnZTo6Q2FjaGVz
IGlzIGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5IGFzIGl0IG5lZWRzIHRvIHJlYWQgZnJvbSB0
aGUgZGlzayB0aGUgbGlzdCBvZiBjYWNoZSBuYW1lcy4KKyAgICAgICAgT25jZSByZWFkLCB0aGUg
bmFtZXMgd2lsbCBiZSBzdG9yZWQgaW4gbWVtb3J5LgorICAgICAgICBBZGRlZCB0aGUgcG9zc2li
aWxpdHkgdG8gY2xlYXIgdGhpcyBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24uIFRoaXMgd2lsbCBi
ZSB1c2VmdWwgZm9yIHRlc3RpbmcuCisgICAgICAgIFRoaXMgbWlnaHQgYWxzbyBiZSB1c2VmdWwg
dG8gc2F2ZSBtZW1vcnkgd2hlbiB0aGVyZSBpcyBubyBtb3JlIHVzZSBvZiBDYWNoZVN0b3JhZ2Ug
Ynkgd2ViIHBhZ2VzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpyb290UGF0aEZyb21TZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6Omdsb2JhbEVuZ2luZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjp+RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmZyb20pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
ZGVmYXVsdEVuZ2luZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpF
bmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6b3Blbik6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZW1vdmUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OndyaXRlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpyZW1vdmVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OmhhbmRsZVJlbW92ZWRDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpyb290UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpzYWx0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6Om5leHRDYWNoZUlkZW50aWZpZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OmNhY2hlc1Jvb3RQYXRoKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpjYWNoZXNMaXN0RmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6Q2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6
ZmluZCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpvcGVuKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlbW92ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6ZW5jb2RlQ2FjaGVOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6ZGVjb2RlQ2FjaGVzTmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlczo6cmVhZENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Y2FjaGVJbmZvcyBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmlzSW5pdGlhbGl6ZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6c2V0UGVyc2lzdGVu
Y3kpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6ZGV0YWNoKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6c2V0
UGVyc2lzdGVuY3kpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oOgorCisyMDE3LTA4LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKwogICAgICAgICBbQ2FjaGUgQVBJXSBVSVByb2Nlc3Mgc2hvdWxkIHByb3ZpZGUgdGhlIGRp
cmVjdG9yeSBwYXRoIHdoZXJlIHRvIHN0b3JlIENhY2hlIFN0b3JhZ2UgZGF0YQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODg0CiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zNDA3MjQ0MT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggZjIwODBkYzk5MWJmYTViNGU1
NDM2Y2Q3NTdjZGJkNWYxMjg5YTA3OC4uMWRiYjgzNTc0MjdkYTZjYWM0MjQxMDhjNDU5ZWYxYjdh
YzQ1MmZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgRE9NQ2FjaGU6OlJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNoZTo6UmVjb3JkPiYmLCBET01DYWNoZTo6UmVj
b3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIAorICAgIC8vIFVzZWQgb25seSBmb3IgdGVzdGlu
ZyBwdXJwb3Nlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyc2lzdGVuY3koY29uc3QgU3RyaW5n
JiAvKiBvcmlnaW4gKi8sIGJvb2wgLyogaXNQZXJzaXN0ZW50ICovLCBET01DYWNoZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRE9NQ2FjaGU6OkVycm9yOjpOb3RJ
bXBsZW1lbnRlZCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgRE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQp
OyB9CisKIHByb3RlY3RlZDoKICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAgZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzM2Rh
ODA4NTQ0NWJkYzhmMGFhZGNlODgyOGU2ZWRmNDk5MGI4MTljLi4yNWVkM2Q3OTk0N2I1NjhkODVk
ZmYyZjUxODY0MDI2M2FkZDA4YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcApAQCAtNDAsNiArNDAsMTAgQEAgRXhjZXB0aW9uIGVycm9yVG9FeGNlcHRpb24o
RXJyb3IgZXJyb3IpCiAgICAgc3dpdGNoIChlcnJvcikgewogICAgIGNhc2UgRXJyb3I6Ok5vdElt
cGxlbWVudGVkOgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfTsKKyAgICBjYXNlIEVycm9yOjpSZWFk
RGlzazoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgcmVhZGluZyBkYXRhIGZyb20gZGlzayIpIH07CisgICAgY2FzZSBFcnJvcjo6V3Jp
dGVEaXNrOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVy
YWwoIkZhaWxlZCB3cml0aW5nIGRhdGEgdG8gZGlzayIpIH07CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBl
cnJvciIpIH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmlu
ZGV4IGMyMTIzYTk0YTM2NDUyOTY2ZTMyYWEzNGY2NzI2NDZlZjExNWI0NTMuLmVlYmU2Njc4Mjc0
MDkxYWMwYjc1NGIyYzVjMzRkMDhiOTgxM2Y3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmgKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIERPTUNhY2hlIHsKIAog
ZW51bSBjbGFzcyBFcnJvciB7CiAgICAgTm90SW1wbGVtZW50ZWQsCisgICAgUmVhZERpc2ssCisg
ICAgV3JpdGVEaXNrLAogICAgIEludGVybmFsCiB9OwogCkBAIC05NCw2ICs5Niw4IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPiB7CiAgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVy
cm9yLAogICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkLAor
ICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6OlJlYWREaXNrLAorICAgICAgICBXZWJD
b3JlOjpET01DYWNoZTo6RXJyb3I6OldyaXRlRGlzaywKICAgICAgICAgV2ViQ29yZTo6RE9NQ2Fj
aGU6OkVycm9yOjpJbnRlcm5hbAogICAgID47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IDg0Mjc1ZGYzMzU5YzJjNzIxNDE1NmYyM2Q2MWM5ODViZGNkYTQ3MDMuLjMx
N2Q0MmYxMTYyNTgwZTVjODZiZWM5MDdlYTQxM2EyNTI0ZTRhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJDU1NNZWRpYVJ1
bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdXBwb3J0c1J1
bGUuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2Fj
aGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00MTM2LDQg
KzQxMzgsMzQgQEAgU3RyaW5nIEludGVybmFsczo6YXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSBjb25z
dAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCit2b2lkIEludGVybmFsczo6c2V0Q2Fj
aGVTdG9yYWdlUGVyc2lzdGVuY3koYm9vbCBpc1BlcnNpc3RlbnQpCit7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBjb250ZXh0RG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAg
ICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gcGFnZS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIo
KS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKHBhZ2UtPnNlc3Npb25JRCgpKTsKKyAgICAg
ICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+c2V0UGVyc2lzdGVuY3koZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgaXNQZXJzaXN0ZW50LCBbXShzdGQ6Om9w
dGlvbmFsPERPTUNhY2hlOjpFcnJvcj4mJikgeyB9KTsKK30KKwordm9pZCBJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKQoreworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKSB7CisgICAgICAg
IGlmIChhdXRvKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgICAg
IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9IHBhZ2UtPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCku
Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihwYWdlLT5zZXNzaW9uSUQoKSk7CisgICAgICAg
IGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24tPmNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgW10oc3RkOjpvcHRpb25h
bDxET01DYWNoZTo6RXJyb3I+JiYpIHsgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGQyNzgyN2QxMzZlOWZhMGUwZjgyNDQy
ODllNDhlYWY3YmQyZTJiMzguLjRiNDgyMWRjZDJkYzc4MGE3ODA5NGFkYWYxOWJkMjE4NWM1NmZi
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNDMsNiArNDMsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOwogY2xhc3MgRE9NUmVjdDsKIGNsYXNzIERPTVJlY3RMaXN0OwogY2xhc3Mg
RE9NVVJMOwpAQCAtNTk4LDYgKzU5OSw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBhdWRpb1Nl
c3Npb25DYXRlZ29yeSgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJzaXN0
ZW5jeShib29sIGlzUGVyc2lzdGVudCk7CisgICAgdm9pZCBjbGVhckNhY2hlU3RvcmFnZU1lbW9y
eVJlcHJlc2VudGF0aW9uKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERv
Y3VtZW50Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpAQCAtNjE4
LDYgKzYyMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVjdG9yRnJvbnRlbmQ7CisgICAgUmVmUHRyPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA0
MjcxYWUyZjI2YjAyNzYwZGJlZTUxMjE5NmZlNjBhOGZhYmFmODE0Li5iYzFjYjBjOGIwOGZhMmZk
ZGMwNjBhNDA0MGZmOTA4ZWVhNmQ4NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCkBAIC01NDQsNSArNTQ0LDggQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAg
ICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCByZW1vdmVNZWRpYVN0cmVhbVRyYWNr
KE1lZGlhU3RyZWFtIHN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayB0cmFjayk7CiAgICAgW0NvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCBzaW11bGF0ZU1lZGlhU3RyZWFtVHJhY2tDYXB0dXJl
U291cmNlRmFpbHVyZShNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKTsKIAorICAgIHZvaWQgc2V0Q2Fj
aGVTdG9yYWdlUGVyc2lzdGVuY3koYm9vbGVhbiBpc1BlcnNpc3RlbnQpOworICAgIHZvaWQgY2xl
YXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworCiAgICAgRE9NU3RyaW5nIGF1
ZGlvU2Vzc2lvbkNhdGVnb3J5KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggY2Q0MThiOTg3
MjRjZGFjMTg4ZWI1ZTFhYjI0OGNlMGE0Mjc5NmZkZi4uMjRkNjM2Nzc0M2M2NDkxNTJmMzI5YmU1
ZWJjM2QzMmUzNjI3ZjgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMTcsNiArMTE3LDcgQEAg
c2V0KFdlYktpdDJfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAogCiAg
ICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKICAgICBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAogICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1YWVi
YmU2NjliZWQyYjhjNzE1YjgzNWY1NTUxYzY0YmQ3NDkwYzJhLi4xYzE5OGE4ZGIwZWZkNGU0ZDI1
Mzk4NTZiNjU0NWJjYzc5YzNlNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0yNiw2ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgi
CiAKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTMz
LDI1ICszNSwzOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0
d29ya0NhY2hlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIENhY2hlU3RvcmFn
ZSB7CiAKLXN0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8RW5n
aW5lPj4mIGdsb2JhbEVuZ2luZU1hcCgpCitzdGF0aWMgaW5saW5lIFN0cmluZyByb290UGF0aEZy
b21TZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8RW5naW5l
Pj4+IG1hcDsKKyAgICBTdHJpbmcgc2Vzc2lvblN1YmRpcmVjdG9yeSA9IEFTQ0lJTGl0ZXJhbCgi
c2Vzc2lvbiIpICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSwgc2Vzc2lvblN1YmRpcmVjdG9yeSk7
Cit9CisKK3N0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWY8RW5naW5lPj4mIGdsb2Jh
bEVuZ2luZU1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIFJlZjxFbmdpbmU+Pj4gbWFwOworCiAgICAgcmV0dXJuIG1hcDsKIH0KIAorRW5n
aW5lOjp+RW5naW5lKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVl
cygpKQorICAgICAgICBjYWNoZXMtPmRldGFjaCgpOworfQorCiBFbmdpbmUmIEVuZ2luZTo6ZnJv
bShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHNlc3Npb25JRCA9PSBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4gZGVmYXVsdEVu
Z2luZSgpOwogCi0gICAgcmV0dXJuICpnbG9iYWxFbmdpbmVNYXAoKS5lbnN1cmUoc2Vzc2lvbklE
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVuZ2luZT4oKTsKLSAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuIGdsb2JhbEVuZ2luZU1hcCgpLmVuc3VyZShz
ZXNzaW9uSUQsIFsmXSB7CisgICAgICAgIHJldHVybiBFbmdpbmU6OmNyZWF0ZShyb290UGF0aEZy
b21TZXNzaW9uSUQoc2Vzc2lvbklEKSk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
fQogCiB2b2lkIEVuZ2luZTo6ZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CkBAIC02Miw4ICs3OCwxNCBAQCB2b2lkIEVuZ2luZTo6ZGVzdHJveUVuZ2luZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiAKIEVuZ2luZSYgRW5naW5lOjpkZWZhdWx0RW5naW5lKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPEVuZ2luZT4+IGRlZmF1bHRF
bmdpbmUgPSB7IHN0ZDo6bWFrZV91bmlxdWU8RW5naW5lPigpIH07Ci0gICAgcmV0dXJuICpkZWZh
dWx0RW5naW5lLmdldCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8RW5naW5lPj4g
ZGVmYXVsdEVuZ2luZSA9IHsgRW5naW5lOjpjcmVhdGUocm9vdFBhdGhGcm9tU2Vzc2lvbklEKFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKSB9OworICAgIHJldHVybiBkZWZhdWx0
RW5naW5lLmdldCgpOworfQorCitFbmdpbmU6OkVuZ2luZShTdHJpbmcmJiByb290UGF0aCkKKyAg
ICA6IG1fcm9vdFBhdGgoV1RGTW92ZShyb290UGF0aCkpCisgICAgLCBtX2lvUXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGVTdG9yYWdlRW5naW5lLnNlcmlhbEJh
Y2tncm91bmQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tn
cm91bmQpKQorewogfQogCiB2b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJh
Y2spCkBAIC03NCw0MiArOTYsNDAgQEAgdm9pZCBFbmdpbmU6Om9wZW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXIKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8mIGNhY2hlcyA9IGNhY2hlc09y
RXJyb3IudmFsdWUoKS5nZXQoKTsKKyAgICAgICAgQ2FjaGVzJiBjYWNoZXMgPSBjYWNoZXNPckVy
cm9yLnZhbHVlKCk7CiAKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IGNhY2hlcy5maW5kTWF0Y2hp
bmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZSA9PSBjYWNoZU5hbWU7
IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciA9ICsrbV9uZXh0Q2FjaGVJZGVudGlmaWVyOwotICAgICAg
ICAgICAgY2FjaGVzLmFwcGVuZChDYWNoZSB7IGNhY2hlSWRlbnRpZmllciwgY2FjaGVOYW1lLCBW
ZWN0b3I8UmVjb3JkPigpLCAwIH0pOwotICAgICAgICAgICAgd3JpdGVDYWNoZXNUb0Rpc2soW2Nh
Y2hlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25h
bDxFcnJvcj4mJiBlcnJvcikgewotICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgY2FsbGJhY2soY2FjaGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlc1twb3NpdGlvbl0uaWRlbnRpZmll
cik7CisgICAgICAgIGlmIChhdXRvKiBjYWNoZSA9IGNhY2hlcy5maW5kKGNhY2hlTmFtZSkpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlLT5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCisgICAgICAgIGNhY2hlcy5vcGVuKFN0cmluZyB7IGNhY2hlTmFt
ZSB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVy
T3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCiB2b2lkIEVuZ2luZTo6cmVtb3ZlKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
LSAgICBzdGQ6Om9wdGlvbmFsPENhY2hlPiByZW1vdmVkQ2FjaGU7CisgICAgQ2FjaGVzKiBjYWNo
ZXNUb01vZGlmeSA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvJiBjYWNoZXMgOiBtX2NhY2hlcy52
YWx1ZXMoKSkgewotICAgICAgICBhdXRvIHBvc2l0aW9uID0gY2FjaGVzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGNhY2hlSWRl
bnRpZmllcjsgfSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgewotICAgICAg
ICAgICAgcmVtb3ZlZENhY2hlID0gV1RGTW92ZShjYWNoZXNbcG9zaXRpb25dKTsKLSAgICAgICAg
ICAgIGNhY2hlcy5yZW1vdmUocG9zaXRpb24pOworICAgICAgICBhdXRvKiBjYWNoZVRvUmVtb3Zl
ID0gY2FjaGVzLT5maW5kKGNhY2hlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChjYWNoZVRvUmVt
b3ZlKSB7CisgICAgICAgICAgICBjYWNoZXNUb01vZGlmeSA9IGNhY2hlcy5wdHIoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghcmVtb3ZlZENhY2hlKSB7
Ci0gICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpJbnRlcm5hbCkpOworICAg
IGlmICghY2FjaGVzVG9Nb2RpZnkpIHsKKyAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fcmVtb3Zl
ZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0u
aWRlbnRpZmllciA9PSBjYWNoZUlkZW50aWZpZXI7IH0pOworICAgICAgICBpZiAocG9zaXRpb24g
PT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEVycm9y
OjpJbnRlcm5hbCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNh
bGxiYWNrKGNhY2hlSWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9y
ZW1vdmVkQ2FjaGVzLmFwcGVuZChXVEZNb3ZlKHJlbW92ZWRDYWNoZS52YWx1ZSgpKSk7Ci0gICAg
d3JpdGVDYWNoZXNUb0Rpc2soW2NhY2hlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgeworCisgICAgY2FjaGVzVG9N
b2RpZnktPnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFtjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKICAg
ICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChl
cnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjYsMTQgKzE0Niw3IEBA
IHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVJ
bmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBhdXRvJiBjYWNoZXMgPSBjYWNoZXNPckVycm9yLnZhbHVlKCkuZ2V0KCk7Ci0K
LSAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4gY2FjaGVzSW5mbzsKLSAgICAgICAgY2FjaGVzSW5m
by5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhY2hlcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1
dG8mIGNhY2hlIDogY2FjaGVzKQotICAgICAgICAgICAgY2FjaGVzSW5mby51bmNoZWNrZWRBcHBl
bmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZX0pOwotCi0gICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoY2FjaGVzSW5mbykpOworICAgICAgICBjYWxsYmFjayhjYWNoZXNP
ckVycm9yLnZhbHVlKCkuZ2V0KCkuY2FjaGVJbmZvcygpKTsKICAgICB9KTsKIH0KIApAQCAtMTQ5
LDcgKzE2Miw3IEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjCiAKICAgICAgICAgVmVjdG9yPFJl
Y29yZD4gY29weTsKICAgICAgICAgY29weS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMu
c2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiByZXN1bHQudmFsdWUoKS5nZXQo
KS5yZWNvcmRzKQorICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJlY29yZHMpCiAgICAgICAg
ICAgICBjb3B5LnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuY29weSgpKTsKIAogICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKGNvcHkpKTsKQEAgLTIzNCwyMSArMjQ3LDU2IEBAIHZvaWQgRW5naW5lOjpk
ZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlCiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjp3cml0ZUNhY2hlc1RvRGlzayhG
dW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBF
bmdpbmU6OmluaXRpYWxpemUoRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmKT4m
JiBjYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdyaXRpbmcuCi0gICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICBpZiAobV9zYWx0KSB7CisgICAgICAgIGNhbGxiYWNr
KHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgc2Fs
dFBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgQVND
SUlMaXRlcmFsKCJzYWx0IikpOworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
c2FsdFBhdGggPSBXVEZNb3ZlKHNhbHRQYXRoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFdlYkNv
cmU6Om1ha2VBbGxEaXJlY3RvcmllcyhtX3Jvb3RQYXRoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhp
cywgc2FsdCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghc2FsdCkgeworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURpc2spOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fc2FsdCA9IFdURk1vdmUoc2FsdCk7Cisg
ICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICB9KTsKKyAgICB9KTsK
IH0KIAogdm9pZCBFbmdpbmU6OnJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBTdHJpbmcmIG9yaWdp
biwgQ2FjaGVzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHJlYWRpbmcuCi0KLSAgICBhdXRvJiBjYWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBb
XSB7Ci0gICAgICAgIHJldHVybiBWZWN0b3I8Q2FjaGU+KCk7CisgICAgYXV0byYgY2FjaGVzID0g
bV9jYWNoZXMuZW5zdXJlKG9yaWdpbiwgWyZvcmlnaW4sIHRoaXNdIHsKKyAgICAgICAgcmV0dXJu
IENhY2hlczo6Y3JlYXRlKCp0aGlzLCBvcmlnaW4pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
IAotICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VmVjdG9yPENhY2hlPj4geyBj
YWNoZXMgfSk7CisgICAgaWYgKGNhY2hlcy0+aXNJbml0aWFsaXplZCgpKSB7CisgICAgICAgIGNh
bGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiB7IGNhY2hlcy5nZXQoKSB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluaXRpYWxpemUoW3RoaXMsIG9yaWdpbiwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJv
cikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2so
bWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBjYWNoZXMgPSBtX2NhY2hlcy5nZXQob3JpZ2luKTsKKyAg
ICAgICAgQVNTRVJUKGNhY2hlcyk7CisKKyAgICAgICAgY2FjaGVzLT5pbml0aWFsaXplKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjYWNoZXNdKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYg
ZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAg
ICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgKmNhY2hlcyB9KTsKKyAgICAgICAgfSk7CisgICAg
fSk7CiB9CiAKIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBDYWNoZUNhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC0yNzgsMTEgKzMyNiw4IEBAIENhY2hlKiBF
bmdpbmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKICAgICBDYWNoZSogcmVz
dWx0ID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVlcygp
KSB7Ci0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBjYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25z
dCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVy
OyB9KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSAmY2FjaGVzW3Bvc2l0aW9uXTsKKyAgICAgICAgaWYgKChyZXN1bHQgPSBjYWNoZXMt
PmZpbmQoY2FjaGVJZGVudGlmaWVyKSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQog
ICAgIH0KICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9yZW1v
dmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRl
bS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcjsgfSk7CkBAIC0zMDUsNyArMzUwLDcxIEBA
IFZlY3Rvcjx1aW50NjRfdD4gRW5naW5lOjpxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmQ+
JiByZWNvcmRzLCBjb25zdCBXZWJDb3JlCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CiAKK3ZvaWQg
RW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpE
YXRhJiYgZGF0YSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxi
YWNrKQoreworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVk
Q29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpv
cGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSk7CisgICAgICAgIGNoYW5uZWwt
PndyaXRlKDAsIGRhdGEsIG51bGxwdHIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShp
bnQgZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBlcnJvcl0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXJy
b3I6OldyaXRlRGlzayk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnJlYWRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBOZXR3b3Jr
Q2FjaGU6OkRhdGEmLCBpbnQgZXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIG1faW9RdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVu
YW1lLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOworICAgICAgICBpZiAoY2hhbm5lbC0+ZmlsZURl
c2NyaXB0b3IoKSA8IDApIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhEYXRhIHsgfSwgMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNoYW5uZWwtPnJlYWQoMCwgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSwgbV9pb1F1ZXVlLnB0cigpLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZGF0YSwgZXJyb3JdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soZGF0YSwgZXJyb3IpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
fQorCit2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorewor
ICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2ZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5
KCldKCkgbXV0YWJsZSB7CisgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwor
ICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6aGFuZGxlUmVtb3ZlZENhY2hlKENhY2hlJiYgY2Fj
aGUpCit7CisgICAgbV9yZW1vdmVkQ2FjaGVzLmFwcGVuZChXVEZNb3ZlKGNhY2hlKSk7Cit9CisK
K3ZvaWQgRW5naW5lOjpzZXRQZXJzaXN0ZW5jeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBp
c1BlcnNpc3RlbnQpCit7CisgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2lzUGVyc2lz
dGVudF0oQ2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNW
YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZXN1bHQudmFsdWUoKS5nZXQo
KS5zZXRQZXJzaXN0ZW5jeShpc1BlcnNpc3RlbnQpOworICAgIH0pOworfQorCit2b2lkIEVuZ2lu
ZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAg
ICByZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2luLCBbXShDYWNoZXNPckVycm9yJiYgcmVzdWx0KSB7
CisgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJlc3VsdC52YWx1ZSgpLmdldCgpLmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oKTsK
KyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAyOTE3NzEyZmQzZGRlOWNmNDM3MDBlYzAw
Mjk0NjgzZTZiZGNlZWE4Li5iYzRjNDgxYzJlMjIwOTVkOTViZWRhYmI4ZTg3YzRlYzY2OTcwOWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmgKQEAgLTI1LDggKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKQEAgLTQwLDEwICs0MSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNl
IENhY2hlU3RvcmFnZSB7CiAKLWNsYXNzIEVuZ2luZSB7CitjbGFzcyBFbmdpbmUgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RW5naW5lPiB7CiBwdWJsaWM6CisgICAgfkVuZ2luZSgpOwor
CiAgICAgc3RhdGljIEVuZ2luZSYgZnJvbShQQUw6OlNlc3Npb25JRCk7CiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxFbmdpbmU+
IGNyZWF0ZShTdHJpbmcmJiByb290UGF0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbmdpbmUo
V1RGTW92ZShyb290UGF0aCkpKTsgfQogCiAgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRl
bnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwpAQCAt
NTMsMTQgKzU3LDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dFJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBkZWxl
dGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9N
Q2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKKyAgICB2b2lkIGhhbmRsZVJl
bW92ZWRDYWNoZShDYWNoZSYmKTsKKyAgICB2b2lkIHdyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRp
b25DYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmLCBpbnQgZXJyb3Ip
PiYmKTsKKyAgICB2b2lkIHJlbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CisKKyAg
ICBjb25zdCBTdHJpbmcmIHJvb3RQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9yb290UGF0aDsgfQor
ICAgIGNvbnN0IE5ldHdvcmtDYWNoZTo6U2FsdCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Fs
dC52YWx1ZSgpOyB9CisgICAgdWludDY0X3QgbmV4dENhY2hlSWRlbnRpZmllcigpIHsgcmV0dXJu
ICsrbV9uZXh0Q2FjaGVJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIHNldFBlcnNpc3RlbmN5KGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGlzUGVyc2lzdGVudCk7CisgICAgdm9pZCBjbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKwogcHJpdmF0ZToKICAg
ICBzdGF0aWMgRW5naW5lJiBkZWZhdWx0RW5naW5lKCk7CisgICAgZXhwbGljaXQgRW5naW5lKFN0
cmluZyYmKTsKIAotICAgIHZvaWQgd3JpdGVDYWNoZXNUb0Rpc2soV2ViQ29yZTo6RE9NQ2FjaGU6
OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGluaXRpYWxpemUoRnVuY3Rpb248dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj4mJik+JiYpOwogCi0gICAg
dXNpbmcgQ2FjaGVzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VmVj
dG9yPENhY2hlPj4sIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj47CisgICAgdXNpbmcgQ2FjaGVz
T3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OkVycm9yPjsKICAgICB1c2luZyBDYWNoZXNDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChDYWNoZXNPckVycm9yJiYpPjsKLSAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlz
ayhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZWFk
Q2FjaGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoQ2FjaGVz
T3JFcnJvciYmKT4mJik7CiAKICAgICB1c2luZyBDYWNoZU9yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPjsKICAg
ICB1c2luZyBDYWNoZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlT3JFcnJvciYm
KT47CkBAIC03MCwxMiArODcsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUNhY2hlUmVj
b3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKICAgICBWZWN0b3I8
dWludDY0X3Q+IHF1ZXJ5Q2FjaGUoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNv
cmQ+JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2Fj
aGVRdWVyeU9wdGlvbnMmKTsKLQogICAgIENhY2hlKiBjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIpOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxDYWNoZT4+IG1fY2FjaGVzOwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8Q2FjaGVzPj4gbV9jYWNoZXM7CiAgICAgVmVjdG9yPENh
Y2hlPiBtX3JlbW92ZWRDYWNoZXM7CiAgICAgdWludDY0X3QgbV9uZXh0Q2FjaGVJZGVudGlmaWVy
IHsgMCB9OworICAgIFN0cmluZyBtX3Jvb3RQYXRoOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29y
a0NhY2hlOjpTYWx0PiBtX3NhbHQ7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9pb1F1ZXVlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmVkNDIzMTQyMDM3ZGU3YzYxZDM4OTAzZGUwZjgxODk2ZWYzNmMxOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVD
b2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBDYWNoZVN0b3JhZ2Ug
eworCitzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNSb290UGF0aChFbmdpbmUmIGVuZ2luZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgS2V5IGtleShlbmdpbmUucm9vdFBhdGgoKSwg
eyB9LCB7IH0sIG9yaWdpbiwgZW5naW5lLnNhbHQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChlbmdpbmUucm9vdFBhdGgoKSwga2V5LnBhcnRpdGlvbkhh
c2hBc1N0cmluZygpKTsKK30KKworc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzTGlzdEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJj
YWNoZXNsaXN0IikpOworfQorCitDYWNoZXM6OkNhY2hlcyhFbmdpbmUmIGVuZ2luZSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4pCisgICAgOiBtX2VuZ2luZSgmZW5naW5lKQorICAgICwgbV9yb290UGF0
aChjYWNoZXNSb290UGF0aChlbmdpbmUsIG9yaWdpbikpCit7Cit9CisKK3ZvaWQgQ2FjaGVzOjpp
bml0aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAobV9pc0luaXRpYWxpemVkIHx8ICFtX2VuZ2luZSkgeworICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KG1fc3RvcmFnZSkgeworICAgICAgICBtX3BlbmRpbmdJbml0aWFsaXphdGlvbkNhbGxiYWNrcy5h
cHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBzdG9yYWdlID0gU3RvcmFnZTo6b3BlbihtX3Jvb3RQYXRoLCBTdG9yYWdlOjpNb2RlOjpO
b3JtYWwpOworICAgIGlmICghc3RvcmFnZSkgeworICAgICAgICBjYWxsYmFjayhFcnJvcjo6V3Jp
dGVEaXNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3N0b3JhZ2UgPSBzdG9yYWdl
LnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmVhZENhY2hlc0Zyb21EaXNrKFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJvcj4mJiBy
ZXN1bHQpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAgICAgICAgICAg
Y2FsbGJhY2socmVzdWx0LmVycm9yKCkpOworCisgICAgICAgICAgICBhdXRvIHBlbmRpbmdDYWxs
YmFja3MgPSBXVEZNb3ZlKG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzKTsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBwZW5kaW5nQ2FsbGJhY2tzKQorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBtX2NhY2hlcyA9IFdURk1vdmUocmVzdWx0LnZhbHVlKCkpOworICAg
ICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxv
cHQpOworCisgICAgICAgIGF1dG8gcGVuZGluZ0NhbGxiYWNrcyA9IFdURk1vdmUobV9wZW5kaW5n
SW5pdGlhbGl6YXRpb25DYWxsYmFja3MpOworICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
cGVuZGluZ0NhbGxiYWNrcykKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Cisg
ICAgfSk7Cit9CisKK0NhY2hlKiBDYWNoZXM6OmZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZSA9PSBuYW1lOyB9KTsKKyAgICByZXR1cm4gKHBvc2l0
aW9uICE9IG5vdEZvdW5kKSA/ICZtX2NhY2hlc1twb3NpdGlvbl0gOiBudWxscHRyOworfQorCitD
YWNoZSogQ2FjaGVzOjpmaW5kKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgYXV0byBwb3Np
dGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1
cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgIHJldHVybiAocG9zaXRp
b24gIT0gbm90Rm91bmQpID8gJm1fY2FjaGVzW3Bvc2l0aW9uXSA6IG51bGxwdHI7Cit9CisKK3Vp
bnQ2NF90IENhY2hlczo6b3BlbihTdHJpbmcmJiBuYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFj
ayYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChtX2VuZ2luZSk7CisKKyAgICB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIgPSBtX2VuZ2luZS0+bmV4dENhY2hlSWRlbnRpZmllcigpOworICAgIG1f
Y2FjaGVzLmFwcGVuZChDYWNoZSB7IGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgeyB9
LCAwIH0pOworICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBjYWNoZUlkZW50aWZpZXJdKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBjYWxsYmFjayhjYWNoZUlkZW50aWZpZXIpOworICAgIH0pOworICAgIHJldHVybiBj
YWNoZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgQ2FjaGVzOjpyZW1vdmUodWludDY0X3QgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5n
aW5lKTsKKworICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9
KTsKKworICAgIEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3VuZCk7CisKKyAgICBhdXRvIGNhY2hl
ID0gV1RGTW92ZShtX2NhY2hlc1twb3NpdGlvbl0pOworICAgIG1fY2FjaGVzLnJlbW92ZShwb3Np
dGlvbik7CisKKyAgICBtX2VuZ2luZS0+aGFuZGxlUmVtb3ZlZENhY2hlKFdURk1vdmUoY2FjaGUp
KTsKKworICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFdURk1vdmUoY2FsbGJhY2spKTsKK30KKworc3Rh
dGljIGlubGluZSBEYXRhIGVuY29kZUNhY2hlTmFtZXMoY29uc3QgVmVjdG9yPENhY2hlPiYgY2Fj
aGVzKQoreworICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKworICAgIHVp
bnQ2NF90IHNpemUgPSBjYWNoZXMuc2l6ZSgpOworICAgIGVuY29kZXIgPDwgc2l6ZTsKKyAgICBm
b3IgKGF1dG8mIGNhY2hlIDogY2FjaGVzKQorICAgICAgICBlbmNvZGVyIDw8IGNhY2hlLm5hbWU7
CisKKyAgICByZXR1cm4gRGF0YSB7IGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpIH07Cit9CisKK3N0YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIEVycm9y
PiBkZWNvZGVDYWNoZXNOYW1lcyhjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpCit7CisgICAg
aWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWREaXNr
KTsKKworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOworICAgIHVpbnQ2NF90IGNvdW50OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY291bnQpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWREaXNr
KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOworICAgIG5hbWVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY291bnQpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3Vu
dDsgKytpbmRleCkgeworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcjo6
UmVhZERpc2spOworCisgICAgICAgIG5hbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWUp
KTsKKyAgICB9CisgICAgcmV0dXJuIG5hbWVzOworfQorCit2b2lkIENhY2hlczo6cmVhZENhY2hl
c0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJv
cj4mJik+JiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5naW5lKTsKKyAgICBBU1NFUlQo
IW1faXNJbml0aWFsaXplZCk7CisgICAgQVNTRVJUKG1fY2FjaGVzLmlzRW1wdHkoKSk7CisKKyAg
ICBpZiAoIW1fc2hvdWxkUGVyc2lzdCkgeworICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+
IHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZpbGVuYW1lID0gY2Fj
aGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpOworICAgIGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0
cyhmaWxlbmFtZSkpIHsKKyAgICAgICAgY2FsbGJhY2soVmVjdG9yPENhY2hlPiB7IH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9lbmdpbmUtPnJlYWRGaWxlKGZpbGVuYW1lLCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAg
ICBpZiAoIW1fZW5naW5lKSB7CisgICAgICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsg
fSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGRlY29kZUNhY2hlc05hbWVzKGRhdGEsIGVycm9yKTsKKyAgICAgICAgaWYgKCFyZXN1bHQu
aGFzVmFsdWUoKSkgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQocmVzdWx0
LmVycm9yKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBWZWN0
b3I8Q2FjaGU+IGNhY2hlczsKKyAgICAgICAgY2FjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
cmVzdWx0LnZhbHVlKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogcmVzdWx0
LnZhbHVlKCkpCisgICAgICAgICAgICBjYWNoZXMudW5jaGVja2VkQXBwZW5kKENhY2hlIHsgbV9l
bmdpbmUtPm5leHRDYWNoZUlkZW50aWZpZXIoKSwgV1RGTW92ZShuYW1lKSwgeyB9LCAwIH0pOwor
CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2FjaGVzKSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
Q2FjaGVzOjp3cml0ZUNhY2hlc1RvRGlzayhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3sKKyAgICBpZiAoIW1fc2hvdWxkUGVyc2lzdCkgeworICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG1fZW5naW5lKTsK
KworICAgIGlmIChtX2NhY2hlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9lbmdpbmUtPnJlbW92
ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpKTsKKyAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZW5naW5lLT53
cml0ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpLCBlbmNvZGVDYWNoZU5hbWVz
KG1fY2FjaGVzKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8
RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9y
KSk7CisgICAgfSk7Cit9CisgICAgCit2b2lkIENhY2hlczo6Y2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbigpCit7CisgICAgbV9jYWNoZXMuY2xlYXIoKTsKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBm
YWxzZTsKKyAgICBtX3N0b3JhZ2UgPSBudWxscHRyOworfQorCitWZWN0b3I8Q2FjaGVJbmZvPiBD
YWNoZXM6OmNhY2hlSW5mb3MoKSBjb25zdAoreworICAgIFZlY3RvcjxDYWNoZUluZm8+IGNhY2hl
SW5mb3M7CisgICAgY2FjaGVJbmZvcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fY2FjaGVzLnNp
emUoKSk7CisgICAgZm9yIChhdXRvJiBjYWNoZSA6IG1fY2FjaGVzKQorICAgICAgICBjYWNoZUlu
Zm9zLnVuY2hlY2tlZEFwcGVuZChDYWNoZUluZm8geyBjYWNoZS5pZGVudGlmaWVyLCBjYWNoZS5u
YW1lIH0pOworICAgIHJldHVybiBjYWNoZUluZm9zOworfQorCit9IC8vIG5hbWVzcGFjZSBDYWNo
ZVN0b3JhZ2UKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MDE4NWNkZGJkNzhiMTAzNTRiY2JkZTU2YjcxOWNhNWI0ZDI4YzJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIgorI2luY2x1
ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVz
cGFjZSBDYWNoZVN0b3JhZ2UgeworCitjbGFzcyBFbmdpbmU7CisKK2NsYXNzIENhY2hlcyA6IHB1
YmxpYyBSZWZDb3VudGVkPENhY2hlcz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q2FjaGVz
PiBjcmVhdGUoRW5naW5lJiBlbmdpbmUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IENhY2hlcyB7IGVuZ2luZSwgb3JpZ2luIH0pOyB9CisKKyAgICB2b2lkIGlu
aXRpYWxpemUoV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKworICAg
IGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXplZDsgfQor
CisgICAgQ2FjaGUqIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBDYWNoZSogZmluZCh1
aW50NjRfdCBpZGVudGlmaWVyKTsKKworICAgIHVpbnQ2NF90IG9wZW4oU3RyaW5nJiYgbmFtZSwg
V2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHZvaWQg
cmVtb3ZlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9u
Q2FsbGJhY2smJik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mbz4g
Y2FjaGVJbmZvcygpIGNvbnN0OworCisgICAgdm9pZCBzZXRQZXJzaXN0ZW5jeShib29sIHNob3Vs
ZFBlcnNpc3QpIHsgbV9zaG91bGRQZXJzaXN0ID0gc2hvdWxkUGVyc2lzdDsgfQorICAgIHZvaWQg
Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgIHZvaWQgZGV0YWNoKCkgeyBtX2VuZ2lu
ZSA9IG51bGxwdHI7IH0KKworcHJpdmF0ZToKKyAgICBDYWNoZXMoRW5naW5lJiwgY29uc3QgU3Ry
aW5nJiByb290UGF0aCk7CisKKyAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0
aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9y
PiYmKT4mJik7CisgICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01DYWNoZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYpOworCisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9zaG91bGRQZXJzaXN0IHsgdHJ1ZSB9OworICAgIEVuZ2luZSogbV9l
bmdpbmUgeyBudWxscHRyIH07CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgVmVjdG9yPENh
Y2hlPiBtX2NhY2hlczsKKyAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpTdG9yYWdlPiBtX3N0b3Jh
Z2U7CisgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2s+IG1f
cGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgQ2Fj
aGVTdG9yYWdlCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5jcHAKaW5kZXggMzVlYjFkNjViN2ZhOGQ5NWRlMWQ2MzMzNWEwOWNhNGQwZDU1
YjhjNi4uZjlkYmI2MzQ0ODI2ZDdlMzdlZDUwMDJjMDliYjBlMjhmNDdiZDI4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCkBAIC02Myw2ICs2MywxNiBAQCB2b2lkIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHJlcQogICAgIH0pOwogfQogCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OnNldFBlcnNpc3RlbmN5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGJvb2wgaXNQZXJzaXN0ZW50KQoreworICAgIEVuZ2luZTo6ZnJvbShz
ZXNzaW9uSUQpLnNldFBlcnNpc3RlbmN5KG9yaWdpbiwgaXNQZXJzaXN0ZW50KTsKK30KKwordm9p
ZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAg
RW5naW5lOjpmcm9tKHNlc3Npb25JRCkuY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihvcmlnaW4p
OworfQorCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyKQogewogICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJldHJpZXZl
UmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHRoaXMsIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVj
b3Jkc09yRXJyb3ImJiByZXN1bHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgK
aW5kZXggZmIzYTY2NGU1NDVjNGRhZjc1NThmZDE0OWFhMWVhMWYxZGY5ZDUzMy4uNDBkMzRiZWFh
MTBmNmMwMjJiMmUzNDg2Y2NiNzRiZDUwNDZiNzg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmgKQEAgLTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZShQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVtb3ZlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IHJldHJpZXZlQ2FjaGVzSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCisg
ICAgdm9pZCBzZXRQZXJzaXN0ZW5jeShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIGJvb2wgaXNQZXJzaXN0ZW50KTsKKyAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKwogICAgIHZvaWQgcmVj
b3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0
aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3Jl
OjpET01DYWNoZTo6UmVjb3JkPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA1OTIyZWVkNjY3Mjc2ZGRjMWU1NGE0ODE4NDNkZmJl
M2E5ZTUyZGU4Li4zNTZkZjM5MGM0NjQ2ODJjMDdmMmU3YjQ1NzYwMTYyYzE4ZGQ1OWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0y
NSw2ICsyNSw5IEBAIG1lc3NhZ2VzIC0+IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24gewog
ICAgIFJlbW92ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIENhY2hlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2lu
KTsKIAorICAgIFNldFBlcnNpc3RlbmN5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5n
IG9yaWdpbiwgYm9vbCBpc1BlcnNpc3RlbnQpOworICAgIENsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgb3JpZ2luKTsKKwogICAgIFJlY29y
ZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3Ry
dWN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4g
cmVjb3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDkwZTFhY2RhNTI1NTViNGRlYzY2Y2NjMTA4ZjY2NTlkZDA5MTM2MWIuLmMxZDll
MTZiNzZlM2EzNmMzN2MzODYwMzhiNGYyZGJiOTZhNzBkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkxLDYgKzg5MSw3IEBACiAJ
CTQxMzA3NUIyMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNjFERTg1
RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovOyB9OwogCQk0MTMwNzVC
MzFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5
IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDEzMDc1QjQxREU4NUY1ODAwMzlF
QzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuaCAqLzsgfTsKKwkJNDEzNUZCRDExRjRGQjgwOTAwNzRDNDdCIC8qIENhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcCAqLzsgfTsKIAkJNDE4OTdFQ0YxRjQxNUQ2MjAwMTZGQTQyIC8qIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4OTdFQ0UxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwICovOyB9OwogCQk0MTg5N0VEMDFGNDE1RDY1MDAxNkZBNDIgLyogV2ViQ2FjaGVT
dG9yYWdlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3Zp
ZGVyLmNwcCAqLzsgfTsKIAkJNDE4OTdFRDExRjQxNUQ2ODAwMTZGQTQyIC8qIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmggKi87IH07CkBAIC0zMTYwLDYgKzMxNjEsOCBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAz
OUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRD
UHJvdmlkZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZp
ZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExp
YldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9
IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNp
ZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CisJCTQxMzVGQkNGMUY0
RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8q
IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE4OTdFQ0IxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQy
IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNh
Y2hlU3RvcmFnZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4
OTdFQ0QxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODE5NSw2ICs4MTk4LDggQEAKIAkJCQk0MTg5N0VENjFGNDE1RDg2MDAx
NkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCAqLywKIAkJCQk0MTg5N0VEMjFGNDE1RDg1
MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggKi8sCiAJCQkJNDFGQUJEMjgxRjREREZE
QzAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggKi8sCisJCQkJNDEzNUZCQ0Yx
RjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgKi8sCisJCQkJ
NDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICov
LAogCQkJCTQxODk3RUQzMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmNwcCAqLywKIAkJCQk0MTg5N0VENDFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5oICovLAogCQkJCTQxODk3RUQ1MUY0MTVEODUwMDE2RkE0MiAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLApAQCAtOTk4Myw2
ICs5OTg4LDcgQEAKIAkJCQlFMTcwODc2QjE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGMTg2MzgxNjdEMDcxRTAwQTFBODVBIC8q
IENhY2hlTW9kZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4OTdFRDcxRjQxNUQ4QTAwMTZG
QTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTM1RkJE
MTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxODk3RUQ5MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMy
OTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBQTJFNTFFMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBjM2QxMzAy
NzUwOWMzMmIzMjdjMjZkOWU0ZjEwZjYxMzU5MjRiMjIzLi5jOWQ0ZDk0OTE5ZmEyZjBkNjJlYjNm
NmY2MGI0ZjU5OGM5YWNhOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC04Niw2ICs4
NiwxOCBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRp
b24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlB1dFJlY29yZHMobV9zZXNzaW9u
SUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlY29yZHMpLCAwKTsKIH0K
IAordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpzZXRQZXJzaXN0ZW5jeShjb25zdCBT
dHJpbmcmIG9yaWdpbiwgYm9vbCBpc1BlcnNpc3RlbnQsIENvbXBsZXRpb25DYWxsYmFjayYmIGNh
bGxiYWNrKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpTZXRQZXJzaXN0ZW5jeShtX3Nlc3Npb25JRCwgb3JpZ2luLCBpc1Bl
cnNpc3RlbnQpLCAwKTsKKyAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworfQorCit2b2lkIFdl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpD
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKG1fc2Vzc2lvbklELCBvcmlnaW4pLCAwKTsKKyAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOworfQorCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246Om9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENhY2hl
SWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkKIHsKICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmgKaW5kZXggMjVhZmZjZjAwYWRjMDhmODIxNGVkNzRmNTBmYzgyMTM4YzE4MWM3Yy4uODg3
Y2Y3NDM4ZDljMDA3YTRjMDg1ZmUxMzhjZTA5ODA3MTAxZDQ0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5oCkBAIC02MCw2ICs2MCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3Bl
cmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlP
cHRpb25zJiYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZD4mJikgZmluYWw7CiAKKyAgICB2b2lkIHNldFBlcnNpc3RlbmN5
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGlzUGVyc2lzdGVudCwgV2ViQ29yZTo6RE9NQ2Fj
aGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIFdlYkNvcmU6OkRPTUNhY2hlOjpDb21w
bGV0aW9uQ2FsbGJhY2smJikgZmluYWw7CisKICAgICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50
aWZpZXJPckVycm9yJik7CiAgICAgdm9pZCByZW1vdmVDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJPckVy
cm9yJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUluZm9zT3JFcnJvciYmKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZmRkZGU2
YzA3M2I2NjZiYmM3MWFiY2Y3YjJkMGY0ZjE0N2I4ZWFlLi5hZjA1ZGUzNjNlZGYwNjhhMTg5YjI0
OWQxOWNmNzcxOGUxNGFhMjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDgtMjUgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDYWNoZSBBUEldIFN1
cHBvcnQgY2FjaGUgbmFtZXMgcGVyc2lzdGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFB1dHRpbmcgdGhlc2UgdGVzdHMgaW4gaHR0cC90ZXN0cyBm
b2xkZXIgc28gdGhhdCB0aGV5IHJ1biBpbiBhIGRpZmZlcmVudCBvcmlnaW4gYW5kIHNvIGEgZGlm
ZmVyZW50IENhY2hlcyB0aGFuIG90aGVyIHRlc3RzLgorICAgICAgICBTZXR0aW5nIGJvdGggcGVy
c2lzdGVuY3kgdG8gZmFsc2UgYW5kIGNsZWFyaW5nIHRoZSBtZW1vcnkgcmVwcmVzZW50YXRpb24g
d291bGQgcHJvYmFibHkgYWZmZWN0CisgICAgICAgIHRoZSBvdGhlciB0ZXN0cyB0aGF0IHdvdWxk
IHJ1biBpbiBwYXJhbGxlbC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1wZXJzaXN0ZW5jeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hlLXBlcnNpc3Rl
bmN5LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RF
eHBlY3RhdGlvbnM6IFNraXBwaW5nIG5ldyB0ZXN0IG9uIFdLMS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IERpdHRvLgorCiAyMDE3LTA4LTI0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBXUFQgaGFybmVzcyBlcnJvcnMg
b24gbGVha3MgYW5kIGlPUy1zaW0gRVdTIGJvdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVu
Y3kuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyY2QyMGE0YzAyOTliZmZkMDkyNmMw
NjIzZDQ3NTcxZWM0YTJjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTAgQEAKKworCitQQVNTIENsZWFuaW5nIGV4aXN0aW5nIGNhY2hlcyAKK1BBU1Mg
Q2xlYXIgbWVtb3J5IHJlcHJlc2VudGF0aW9uIGFuZCBkaXNhYmxlIGRpc2sgcGVyc2lzdGVuY3kg
CitQQVNTIENsZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMSAKK1BBU1Mg
Q2xlYXIgbWVtb3J5IHJlcHJlc2VudGF0aW9uIGJ1dCBrZWVwIGRpc2sgcGVyc2lzdGVuY3kgCitQ
QVNTIENsZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMiAKK1BBU1MgQWRk
aW5nL1JlbW92aW5nIGNhY2hlcyBhbmQgY2xlYXJpbmcgaW4gbWVtb3J5IHJlcHJlc2VudGF0aW9u
IGF0IHZhcmlvdXMgdGltZXMgCitQQVNTIENsZWFuaW5nIGFkZGVkIGNhY2hlcyAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3Rl
bmN5Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2Fj
aGUtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2Q5MDIwNTVkNGVjNjUxYmE1
ZDdiNmU2OTVlZDJmMjJiMzZiNWRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLmh0bWwKQEAgLTAs
MCArMSwxMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYWNo
ZSBTdG9yYWdlOiB0ZXN0aW5nIHBlcnNpc3RlbmN5PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxk
aXYgaWQ9ImNoZWNrIj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgIHByb21pc2VfdGVzdCh0ZXN0
ID0+IHsKKyAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50aGVuKGtleXMgPT4gewor
ICAgICAgICAgICAgdmFyIHBlbmRpbmcgPSBbXTsKKyAgICAgICAgICAgIGZvciAoa2V5IG9mIGtl
eXMpCisgICAgICAgICAgICAgICAgcGVuZGluZy5wdXNoKHNlbGYuY2FjaGVzLmRlbGV0ZShrZXlz
WzBdKSk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVuZGluZyk7CisgICAgICAg
IH0pOworICAgIH0sICJDbGVhbmluZyBleGlzdGluZyBjYWNoZXMiKTsKKworICAgIHByb21pc2Vf
dGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyIpOworCisg
ICAgICAgIGludGVybmFscy5zZXRDYWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeShmYWxzZSk7CisgICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKChldmVu
dCkgPT4geworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09PSAicmVhZHkiKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJl
c2VudGF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrLmlubmVySFRNTCA9ICI8aWZy
YW1lIHNyYz0ncmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sI2NoZWNrJz48
L2lmcmFtZT4iOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGV2ZW50LmRhdGEgPT09IGZhbHNlLCAiTm8g
Y2FjaGUgb2JqZWN0IHNob3VsZCBiZSBmb3VuZCIpOworICAgICAgICAgICAgICAgIGludGVybmFs
cy5zZXRDYWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeShmYWxzZSk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgY2hlY2suaW5uZXJIVE1MID0g
IjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwnPjwv
aWZyYW1lPiI7CisgICAgICAgIH0pCisgICAgfSwgIkNsZWFyIG1lbW9yeSByZXByZXNlbnRhdGlv
biBhbmQgZGlzYWJsZSBkaXNrIHBlcnNpc3RlbmN5Iik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVz
dCA9PiB7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBpbnRl
cm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldENhY2hlU3RvcmFnZVBlcnNpc3RlbmN5KHRydWUpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhlbihrZXlzID0+IHsKKyAgICAg
ICAgICAgIHZhciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBmb3IgKGtleSBvZiBrZXlzKQor
ICAgICAgICAgICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hlcy5kZWxldGUoa2V5c1swXSkp
OworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmcpOworICAgICAgICB9KTsK
KyAgICB9LCAiQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJldmlvdXMgdGVzdCAxIik7CisK
KyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlmICghd2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiVGVzdCByZXF1aXJlcyBpbnRl
cm5hbHMiKTsKKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4geworICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0
LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9
PT0gInJlYWR5IikgeworICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0
b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAgICAgICAgICBjaGVjay5p
bm5lckhUTUwgPSAiPGlmcmFtZSBzcmM9J3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJh
bWUuaHRtbCNjaGVjayc+PC9pZnJhbWU+IjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShldmVudC5kYXRh
ID09PSB0cnVlLCAiQSBjYWNoZSBvYmplY3Qgc2hvdWxkIGJlIGZvdW5kIik7CisgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgY2hlY2suaW5u
ZXJIVE1MID0gIjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1l
Lmh0bWwnPjwvaWZyYW1lPiI7CisgICAgICAgIH0pCisgICAgfSwgIkNsZWFyIG1lbW9yeSByZXBy
ZXNlbnRhdGlvbiBidXQga2VlcCBkaXNrIHBlcnNpc3RlbmN5Iik7CisKKyAgICBwcm9taXNlX3Rl
c3QodGVzdCA9PiB7CisgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhlbihrZXlz
ID0+IHsKKyAgICAgICAgICAgIHZhciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBmb3IgKGtl
eSBvZiBrZXlzKQorICAgICAgICAgICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hlcy5kZWxl
dGUoa2V5c1swXSkpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmcpOwor
ICAgICAgICB9KTsKKyAgICB9LCAiQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJldmlvdXMg
dGVzdCAyIik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlmICghd2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiVGVzdCBy
ZXF1aXJlcyBpbnRlcm5hbHMiKTsKKworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3NlbGYu
Y2FjaGVzLm9wZW4oInRlc3QyIiksIHNlbGYuY2FjaGVzLm9wZW4oInRlc3QxIildKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkKKyAgICAgICAgfSku
dGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgWyJ0
ZXN0MiIsICJ0ZXN0MSJdKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBp
bnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsKKyAgICAgICAgfSkudGhlbihrZXlzID0+
IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgWyJ0ZXN0MiIsICJ0ZXN0
MSJdKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5kZWxldGUoInRlc3QyIik7Cisg
ICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVT
dG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNh
Y2hlcy5rZXlzKCk7CisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDEiXSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLm9wZW4oInRlc3QyIik7CisgICAgICAg
IH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdl
TWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5r
ZXlzKCk7CisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGtleXMsIFsidGVzdDEiLCAidGVzdDIiXSk7CisgICAgICAgIH0pLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtzZWxmLmNhY2hlcy5kZWxldGUo
InRlc3QyIiksIHNlbGYuY2FjaGVzLmRlbGV0ZSgidGVzdDEiKV0pOworICAgICAgICB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJl
cHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpOwor
ICAgICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhrZXlzLCBbXSk7CisgICAgICAgIH0pOworICAgIH0sICJBZGRpbmcvUmVtb3ZpbmcgY2FjaGVz
IGFuZCBjbGVhcmluZyBpbiBtZW1vcnkgcmVwcmVzZW50YXRpb24gYXQgdmFyaW91cyB0aW1lcyIp
OworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICByZXR1cm4gc2VsZi5jYWNo
ZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB2YXIgcGVuZGluZyA9IFtdOwor
ICAgICAgICAgICAgZm9yIChrZXkgb2Yga2V5cykKKyAgICAgICAgICAgICAgICBwZW5kaW5nLnB1
c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLmFsbChwZW5kaW5nKTsKKyAgICAgICAgfSk7CisgICAgfSwgIkNsZWFuaW5nIGFkZGVkIGNh
Y2hlcyIpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hlLXBlcnNp
c3RlbmN5LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdl
L3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Nzlj
OThmZWY4ZTQ0YjE1N2ExM2ZjMGQ5NmE0MmZmNjRkNDg1MTZkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL3Jlc291cmNlcy9jYWNoZS1wZXJz
aXN0ZW5jeS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+CisgICAgPHNjcmlwdD4KK2Z1bmN0aW9uIGRvVGVzdCgpCit7CisgICAgaWYg
KHdpbmRvdy5sb2NhdGlvbi5oYXNoID09PSAiI2NoZWNrIikgeworICAgICAgICBzZWxmLmNhY2hl
cy5rZXlzKCkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1l
c3NhZ2Uoa2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gInRlc3RDYWNoZU5hbWUiLCAi
KiIpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbGYuY2Fj
aGVzLm9wZW4oInRlc3RDYWNoZU5hbWUiKS50aGVuKCgpID0+IHsKKyAgICAgICAgd2luZG93LnBh
cmVudC5wb3N0TWVzc2FnZSgicmVhZHkiLCAiKiIpOworICAgIH0pOworfQorZG9UZXN0KCk7Cisg
ICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0MTgxMDQ5NGFkYTI5OGY0NmVjOGZjM2E0
NTUwOTJmYjNmMTU2MmE0Li5lNThjYWZhNjZmZDdjNzVjZDY4YjNhY2M1ZjRmMmE2MjkwM2U4YTY5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBA
IC0xMCw2ICsxMCw3IEBAIGVkaXRpbmcvaW5wdXQvZm9jdXMtY2hhbmdlLXdpdGgtbWFya2VkLXRl
eHQuaHRtbCBbIFBhc3MgXQogIyBObyBzZXJ2aWNlIHdvcmtlciBpbXBsZW1lbnRhdGlvbiBmb3Ig
V0sxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2VycyBbIFNr
aXAgXQogaHR0cC93cHQvY2FjaGUtc3RvcmFnZSBbIFNraXAgXQoraHR0cC90ZXN0cy9jYWNoZS1z
dG9yYWdlIFsgU2tpcCBdCiAKICMgU2tpcCBXZWJSVEMgZm9yIG5vdyBpbiBXSzEKIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGY5ZmI0YzJkMjk2ZDE3M2Zk
MWYzNDA1Nzg0MDVjOWRkMmFmOWQyZS4uYmUzODI3MDRiNGEzY2YxZmYyNjFlYjE2OTNjOGQ4YzI4
NzQzNmY4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtOTcsNiArOTcsNyBAQCBodHRwL3Rlc3RzL3NzbC9tZWRpYS1zdHJlYW0KICMgTm8g
c2VydmljZSB3b3JrZXIgaW1wbGVtZW50YXRpb24gZm9yIFdLMQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMgWyBTa2lwIF0KIGh0dHAvd3B0L2NhY2hlLXN0
b3JhZ2UgWyBTa2lwIF0KK2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZSBbIFNraXAgXQogCiAjIFNr
aXAgV2ViUlRDIGZvciBub3cgaW4gV0sxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0YyBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319201</attachid>
            <date>2017-08-28 13:36:47 -0700</date>
            <delta_ts>2017-08-28 17:05:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175995-20170828133646.patch</filename>
            <type>text/plain</type>
            <size>59455</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlhYTc4MGQ4OGNiMzc2
YTQ1ZWVmOTQ5ODI5OTQyNmIxODE5MWQ5Ny4uNTBhYmYxNGQ4MjQ4MThkZDhhYmJhNGQxZWNkZWMx
ZjBiM2JiY2M3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBw
b3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cGVyc2lzdGVuY3kuaHR0cHMuaHRtbAorCisgICAgICAgIEFkZGluZyBtZXRob2QgdG8gY2xlYXIg
dGhlIG1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FjaGUgc3RvcmFnZS4KKyAgICAgICAg
QWRkaW5nIG1ldGhvZCB0byBzZXQgdGhlIGNhY2hlIHN0b3JhZ2UgcGVyc2lzdGVuY3kgKGkuZS4g
d2hldGhlciB0aGUgY2FjaGUgc3RvcmFnZSB3aWxsIHJlYWQvd3JpdGUgb24gdGhlIGRpc2spLgor
ICAgICAgICBFeHBvc2luZyB0aGVzZSBtZXRob2RzIGFzIGludGVybmFscyBzbyB0aGF0IGxheW91
dCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBwZXJzaXN0ZW5jeS4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBSZWFkRGlzayBhbmQgV3JpdGVEaXNrIGVycm9ycyB0aGF0IGFyZSB1c2VkIGJ5
IENhY2hlU3RvcmFnZTo6RW5naW5lLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjplcnJvclRvRXhj
ZXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRD
YWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE3LTA4
LTI4ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFtXUEVdIFJlbmFtZSBFdmVudEhhbmRsZXJHbGliIHRvIEV2ZW50SGFuZGxl
ckdMaWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggM2I5NTg0Mjg1MDNhMWJjN2E0MTY3YjRkY2Q4M2RhZGJhOTUwODU2
YS4uYWM4YWIxMjFhNTQyZTI0NWY2NDRkYzIwNzk2OTI4ZGU3MDNmNTk1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw4NCBAQAorMjAxNy0wOC0yOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NhY2hlIEFQSV0gU3VwcG9ydCBjYWNoZSBuYW1lcyBwZXJzaXN0ZW5j
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1OTk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5n
IGRpc2sgcmVhZC93cml0ZSBjYXBhY2l0aWVzIHRvIENhY2hlU3RvcmFnZSBlbmdpbmUuCisgICAg
ICAgIFRoaXMgaXMgdXNlZCB0byBzdG9yZSBwZXItb3JpZ2luIGNhY2hlIG5hbWVzIGluIGEgZmls
ZS4KKyAgICAgICAgTWFraW5nIEVuZ2luZSBhIHRocmVhZCBzYWZlIHJlZmNvdW50ZWQgb2JqZWN0
IHNvIHRoYXQgaXQgZG9lcyByZWFkL3dyaXRlIGluIGEgYmFja2dyb3VuZCB0aHJlYWQuCisKKyAg
ICAgICAgSW50cm9kdWNpbmcgQ2FjaGVTdG9yYWdlOjpDYWNoZXMgYXMgdGhlIG9iamVjdCBtYW5h
Z2luZyB0aGUgbGlzdCBvZiBDYWNoZSBvYmplY3RzIGZvciBhIGdpdmVuIG9yaWdpbi4KKyAgICAg
ICAgQ2FjaGVzIHdpbGwgYmUgcmVzcG9uc2libGUgdG8gZG8gYWxsIHRoZSByZWFkL3dyaXRlIG9w
ZXJhdGlvbnMgZm9yIGFsbCBvZiBpdHMgY2FjaGVzLgorICAgICAgICBJdCB3aWxsIGJlIHJlc3Bv
bnNpYmxlIGZvciBxdW90YSBsaW1pdGF0aW9uIGFzIHdlbGwuCisKKyAgICAgICAgTW92aW5nIHBh
cnQgb2YgdGhlIGxvZ2ljIGZyb20gQ2FjaGVTdG9yYWdlOjpFbmdpbmUgaW50byBDYWNoZVN0b3Jh
Z2U6OkNhY2hlcy4KKworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZSBpcyBpbml0aWFsaXpl
ZCBhc3luY2hyb25vdXNseSBhcyBpdCBmaXJzdCBjcmVhdGVzIGEgc2FsdCB3aGljaCBpcyB1c2Vk
CisgICAgICAgIHRvIG9iZnVzY2F0ZSB0aGUgbmFtZXMgb2YgdGhlIHZhcmlvdXMgZmlsZXMgc3Rv
cmVkIG9uIGRpc2suCisKKyAgICAgICAgSW4gdGhlIHNhbWUgc3Bpcml0LCBDYWNoZVN0b3JhZ2U6
OkNhY2hlcyBpcyBpbml0aWFsaXplZCBhc3luY2hyb25vdXNseSBhcyBpdCBuZWVkcyB0byByZWFk
IGZyb20gdGhlIGRpc2sgdGhlIGxpc3Qgb2YgY2FjaGUgbmFtZXMuCisgICAgICAgIE9uY2UgcmVh
ZCwgdGhlIG5hbWVzIHdpbGwgYmUgc3RvcmVkIGluIG1lbW9yeS4KKyAgICAgICAgQWRkZWQgdGhl
IHBvc3NpYmlsaXR5IHRvIGNsZWFyIHRoaXMgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uLiBUaGlz
IHdpbGwgYmUgdXNlZnVsIGZvciB0ZXN0aW5nLgorICAgICAgICBUaGlzIG1pZ2h0IGFsc28gYmUg
dXNlZnVsIHRvIHNhdmUgbWVtb3J5IHdoZW4gdGhlcmUgaXMgbm8gbW9yZSB1c2Ugb2YgQ2FjaGVT
dG9yYWdlIGJ5IHdlYiBwYWdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6cm9vdFBhdGhGcm9tU2Vzc2lvbklEKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpnbG9iYWxFbmdpbmVNYXApOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6fkVuZ2luZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjpmcm9tKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OmRlZmF1bHRFbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Om9w
ZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVtb3ZlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlYWRDYWNoZXNGcm9tRGlzayk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjYWNoZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjp3cml0ZUZpbGUpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6cmVtb3ZlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpoYW5kbGVSZW1vdmVkQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6c2V0UGVyc2lzdGVuY3kpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6cm9vdFBhdGggY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6c2FsdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpuZXh0Q2FjaGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpjYWNoZXNSb290UGF0aCk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Y2FjaGVzTGlzdEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZXM6OkNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6Q2FjaGVzOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpD
YWNoZXM6OmZpbmQpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6b3Bl
bik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZW1vdmUpOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OmVuY29kZUNhY2hlTmFtZXMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OmRlY29kZUNhY2hlc05hbWVzKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjp3cml0ZUNhY2hlc1RvRGlzayk6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmNhY2hlSW5mb3MgY29u
c3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjppc0luaXRpYWxp
emVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnNldFBl
cnNpc3RlbmN5KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmRldGFj
aCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OnNldFBlcnNpc3RlbmN5KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6c2V0UGVyc2lzdGVuY3kp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaDoKKwogMjAxNy0wOC0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBpbXBsZW1lbnQgc2NyZWVu
IGNhcHR1cmUgY29tbWFuZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggZjIwODBkYzk5MWJmYTViNGU1NDM2Y2Q3
NTdjZGJkNWYxMjg5YTA3OC4uNGM0MjI3MTA1ZGQzNTU3YTNiZTZmODNhOTQ5MTdkYjBmNDQ3Y2Qx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgogICAgIHZvaWQgYmF0Y2hE
ZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmKTsKICAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgVmVjdG9yPERPTUNhY2hlOjpSZWNvcmQ+JiYsIERPTUNhY2hlOjpSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYpOwogCisgICAgLy8gVXNlZCBvbmx5IGZvciB0ZXN0aW5nIHB1cnBv
c2VzLgorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgLyogb3JpZ2luICovLCBET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spIHsgY2FsbGJhY2soRE9NQ2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KKwogcHJv
dGVjdGVkOgogICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSA9ICBkZWZhdWx0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDMzZGE4MDg1NDQ1YmRj
OGYwYWFkY2U4ODI4ZTZlZGY0OTkwYjgxOWMuLjI1ZWQzZDc5OTQ3YjU2OGQ4NWRmZjJmNTE4NjQw
MjYzYWRkMDhjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CkBAIC00MCw2ICs0MCwxMCBAQCBFeGNlcHRpb24gZXJyb3JUb0V4Y2VwdGlvbihFcnJvciBlcnJv
cikKICAgICBzd2l0Y2ggKGVycm9yKSB7CiAgICAgY2FzZSBFcnJvcjo6Tm90SW1wbGVtZW50ZWQ6
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRl
cmFsKCJOb3QgaW1wbGVtZW50ZWQiKSB9OworICAgIGNhc2UgRXJyb3I6OlJlYWREaXNrOgorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCBy
ZWFkaW5nIGRhdGEgZnJvbSBkaXNrIikgfTsKKyAgICBjYXNlIEVycm9yOjpXcml0ZURpc2s6Cisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVk
IHdyaXRpbmcgZGF0YSB0byBkaXNrIikgfTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yIikgfTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggYzIxMjNh
OTRhMzY0NTI5NjZlMzJhYTM0ZjY3MjY0NmVmMTE1YjQ1My4uZWViZTY2NzgyNzQwOTFhYzBiNzU0
YjJjNWMzNGQwOGI5ODEzZjcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaApAQCAtNDAsNiArNDAsOCBAQCBuYW1lc3BhY2UgRE9NQ2FjaGUgewogCiBlbnVtIGNsYXNz
IEVycm9yIHsKICAgICBOb3RJbXBsZW1lbnRlZCwKKyAgICBSZWFkRGlzaywKKyAgICBXcml0ZURp
c2ssCiAgICAgSW50ZXJuYWwKIH07CiAKQEAgLTk0LDYgKzk2LDggQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I+IHsKICAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3IsCiAgICAg
ICAgIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQsCisgICAgICAgIFdl
YkNvcmU6OkRPTUNhY2hlOjpFcnJvcjo6UmVhZERpc2ssCisgICAgICAgIFdlYkNvcmU6OkRPTUNh
Y2hlOjpFcnJvcjo6V3JpdGVEaXNrLAogICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6
OkludGVybmFsCiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggODQyNzVkZjMzNTljMmM3MjE0MTU2ZjIzZDYxYzk4NWJkY2RhNDcwMy4uZjg0ZDFhZWFjNzQ1
NTdlMDQ1NTc5NGJkYTg3MjY3ZjgwMDFiYWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgIkNTU01lZGlhUnVsZS5oIgogI2lu
Y2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N1cHBvcnRzUnVsZS5oIgorI2lu
Y2x1ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAgLTQxMzYsNCArNDEzOCwxOSBA
QCBTdHJpbmcgSW50ZXJuYWxzOjphdWRpb1Nlc3Npb25DYXRlZ29yeSgpIGNvbnN0CiAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFn
ZU1lbW9yeVJlcHJlc2VudGF0aW9uKCkKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250
ZXh0RG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikgeworICAgICAgICBpZiAoYXV0byogcGFn
ZSA9IGNvbnRleHREb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgICAgICBtX2NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gPSBwYWdlLT5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24ocGFnZS0+c2Vzc2lvbklEKCkpOworICAgICAgICBpZiAoIW1fY2FjaGVT
dG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGRvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCksIFtdKHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGU6OkVy
cm9yPiYmKSB7IH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAppbmRleCBkMjc4MjdkMTM2ZTlmYTBlMGY4MjQ0Mjg5ZTQ4ZWFmN2JkMmUy
YjM4Li4yYjgxNDYwNGRjNWVlYzdiMzhlNzk0NjMzMDAzMjg3NWJkYWVkZjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQzLDYgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsK
IGNsYXNzIERPTVJlY3Q7CiBjbGFzcyBET01SZWN0TGlzdDsKIGNsYXNzIERPTVVSTDsKQEAgLTU5
OCw2ICs1OTksOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgYXVkaW9TZXNzaW9uQ2F0ZWdvcnko
KSBjb25zdDsKIAorICAgIHZvaWQgY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlv
bigpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCYpOwogICAg
IERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKQEAgLTYxOCw2ICs2MjEsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yU3R1YkZyb250
ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNDI3MWFlMmYyNmIwMjc2
MGRiZWU1MTIxOTZmZTYwYThmYWJhZjgxNC4uZTg3YTc0YzU4YWM1YzJjNmYxZjk4YjFlYzhiZWZh
ZTQxMTE5MTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTQ0LDUg
KzU0NCw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIFtDb25kaXRpb25h
bD1NRURJQV9TVFJFQU1dIHZvaWQgcmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbSBz
dHJlYW0sIE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9T
VFJFQU1dIHZvaWQgc2ltdWxhdGVNZWRpYVN0cmVhbVRyYWNrQ2FwdHVyZVNvdXJjZUZhaWx1cmUo
TWVkaWFTdHJlYW1UcmFjayB0cmFjayk7CiAKKyAgICB2b2lkIGNsZWFyQ2FjaGVTdG9yYWdlTWVt
b3J5UmVwcmVzZW50YXRpb24oKTsKKwogICAgIERPTVN0cmluZyBhdWRpb1Nlc3Npb25DYXRlZ29y
eSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IGNkNDE4Yjk4NzI0Y2RhYzE4OGViNWUxYWIy
NDhjZTBhNDI3OTZmZGYuLjI0ZDYzNjc3NDNjNjQ5MTUyZjMyOWJlNWViYzNkMzJlMzYyN2Y4MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTE3LDYgKzExNyw3IEBAIHNldChXZWJLaXQyX1NPVVJD
RVMKICAgICBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKIAogICAgIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKyAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxv
YlN0b3JhZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggOTNjYTgxOWI0OTQxY2QyMzQwZWE0
ZWM4NjRkZGEwMzZmMDU5NzRiNS4uMTkwNWZjNzI3MzZlOTk3OGZlNGRiZjNkYmJmOWQwNjZlZjA4
M2U5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5oIgogCisjaW5jbHVkZSAiTmV0
d29ya0NhY2hlSU9DaGFubmVsLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25J
RC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0zMywyNSArMzUsMzcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OjpET01DYWNoZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UgewogCi1zdGF0aWMgSGFz
aE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPEVuZ2luZT4+JiBnbG9iYWxFbmdp
bmVNYXAoKQorc3RhdGljIGlubGluZSBTdHJpbmcgcm9vdFBhdGhGcm9tU2Vzc2lvbklEKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPEVuZ2luZT4+PiBtYXA7CisgICAgU3Ry
aW5nIHNlc3Npb25TdWJkaXJlY3RvcnkgPSBBU0NJSUxpdGVyYWwoInNlc3Npb24iKSArIFN0cmlu
Zzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCksIHNlc3Npb25TdWJkaXJlY3RvcnkpOworfQorCitzdGF0aWMgSGFz
aE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPEVuZ2luZT4+JiBnbG9iYWxFbmdpbmVNYXAoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQ
dHI8RW5naW5lPj4+IG1hcDsKKwogICAgIHJldHVybiBtYXA7CiB9CiAKLUVuZ2luZSYgRW5naW5l
Ojpmcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK0VuZ2luZTo6fkVuZ2luZSgpCiB7Ci0g
ICAgaWYgKHNlc3Npb25JRCA9PSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQot
ICAgICAgICByZXR1cm4gZGVmYXVsdEVuZ2luZSgpOworICAgIGZvciAoYXV0byYgY2FjaGVzIDog
bV9jYWNoZXMudmFsdWVzKCkpCisgICAgICAgIGNhY2hlcy0+ZGV0YWNoKCk7Cit9CiAKLSAgICBy
ZXR1cm4gKmdsb2JhbEVuZ2luZU1hcCgpLmVuc3VyZShzZXNzaW9uSUQsIFtdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW5naW5lPigpOwotICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKK0VuZ2luZSYgRW5naW5lOjpmcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IGdsb2JhbEVuZ2luZU1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxw
dHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IEVuZ2luZTo6Y3JlYXRlKHJvb3RQYXRoRnJvbVNlc3Npb25JRChzZXNz
aW9uSUQpLCAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworICAgIHJldHVybiAqYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBFbmdpbmU6OmRlc3Ryb3lFbmdpbmUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtNjIsOCArNzYsMTUgQEAgdm9pZCBFbmdpbmU6OmRlc3Ry
b3lFbmdpbmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiBFbmdpbmUmIEVuZ2luZTo6ZGVm
YXVsdEVuZ2luZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0
cjxFbmdpbmU+PiBkZWZhdWx0RW5naW5lID0geyBzdGQ6Om1ha2VfdW5pcXVlPEVuZ2luZT4oKSB9
OwotICAgIHJldHVybiAqZGVmYXVsdEVuZ2luZS5nZXQoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmVmPEVuZ2luZT4+IGRlZmF1bHRFbmdpbmUgPSB7IEVuZ2luZTo6Y3JlYXRlKHJvb3RQ
YXRoRnJvbVNlc3Npb25JRChQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSwgIVBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgfTsKKyAgICBy
ZXR1cm4gZGVmYXVsdEVuZ2luZS5nZXQoKTsKK30KKworRW5naW5lOjpFbmdpbmUoU3RyaW5nJiYg
cm9vdFBhdGgsIGJvb2wgc2hvdWxkUGVyc2lzdCkKKyAgICA6IG1fcm9vdFBhdGgoV1RGTW92ZShy
b290UGF0aCkpCit7CisgICAgaWYgKHNob3VsZFBlcnNpc3QpCisgICAgICAgIG1faW9RdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhY2hlU3RvcmFnZUVuZ2luZS5z
ZXJpYWxCYWNrZ3JvdW5kIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9T
OjpCYWNrZ3JvdW5kKTsKIH0KIAogdm9pZCBFbmdpbmU6Om9wZW4oY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNh
bGxiYWNrKQpAQCAtNzQsNDIgKzk1LDQwIEBAIHZvaWQgRW5naW5lOjpvcGVuKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlmaWVyCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvJiBjYWNoZXMgPSBjYWNo
ZXNPckVycm9yLnZhbHVlKCkuZ2V0KCk7CisgICAgICAgIENhY2hlcyYgY2FjaGVzID0gY2FjaGVz
T3JFcnJvci52YWx1ZSgpOwogCi0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBjYWNoZXMuZmluZE1h
dGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLm5hbWUgPT0gY2FjaGVO
YW1lOyB9KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKSB7Ci0gICAgICAgICAg
ICB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIgPSArK21fbmV4dENhY2hlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGNhY2hlcy5hcHBlbmQoQ2FjaGUgeyBjYWNoZUlkZW50aWZpZXIsIGNhY2hlTmFt
ZSwgVmVjdG9yPFJlY29yZD4oKSwgMCB9KTsKLSAgICAgICAgICAgIHdyaXRlQ2FjaGVzVG9EaXNr
KFtjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkp
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKGNhY2hlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjYWxsYmFjayhjYWNoZXNbcG9zaXRpb25dLmlkZW50
aWZpZXIpOworICAgICAgICBpZiAoYXV0byogY2FjaGUgPSBjYWNoZXMuZmluZChjYWNoZU5hbWUp
KSB7CisgICAgICAgICAgICBjYWxsYmFjayhjYWNoZS0+aWRlbnRpZmllcik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBjYWNoZXMub3BlbihTdHJpbmcgeyBjYWNo
ZU5hbWUgfSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IENhY2hlSWRlbnRp
Zmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OnJlbW92ZSh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgc3RkOjpvcHRpb25hbDxDYWNoZT4gcmVtb3ZlZENhY2hlOworICAgIENhY2hlcyog
Y2FjaGVzVG9Nb2RpZnkgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgY2FjaGVzIDogbV9jYWNo
ZXMudmFsdWVzKCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IGNhY2hlcy5maW5kTWF0Y2hp
bmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBjYWNo
ZUlkZW50aWZpZXI7IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAg
ICAgICAgICAgIHJlbW92ZWRDYWNoZSA9IFdURk1vdmUoY2FjaGVzW3Bvc2l0aW9uXSk7Ci0gICAg
ICAgICAgICBjYWNoZXMucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICAgICAgYXV0byogY2FjaGVUb1Jl
bW92ZSA9IGNhY2hlcy0+ZmluZChjYWNoZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoY2FjaGVU
b1JlbW92ZSkgeworICAgICAgICAgICAgY2FjaGVzVG9Nb2RpZnkgPSBjYWNoZXMucHRyKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIXJlbW92ZWRDYWNo
ZSkgewotICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChFcnJvcjo6SW50ZXJuYWwpKTsK
KyAgICBpZiAoIWNhY2hlc1RvTW9kaWZ5KSB7CisgICAgICAgIGF1dG8gcG9zaXRpb24gPSBtX3Jl
bW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBp
dGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyOyB9KTsKKyAgICAgICAgaWYgKHBvc2l0
aW9uID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChF
cnJvcjo6SW50ZXJuYWwpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBjYWxsYmFjayhjYWNoZUlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fcmVtb3ZlZENhY2hlcy5hcHBlbmQoV1RGTW92ZShyZW1vdmVkQ2FjaGUudmFsdWUoKSkpOwot
ICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKKworICAgIGNhY2hl
c1RvTW9kaWZ5LT5yZW1vdmUoY2FjaGVJZGVudGlmaWVyLCBbY2FjaGVJZGVudGlmaWVyLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7
CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0
ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI2LDE0ICsxNDUs
NyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIENh
Y2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byYgY2FjaGVzID0gY2FjaGVzT3JFcnJvci52YWx1ZSgpLmdldCgp
OwotCi0gICAgICAgIFZlY3RvcjxDYWNoZUluZm8+IGNhY2hlc0luZm87Ci0gICAgICAgIGNhY2hl
c0luZm8ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYWNoZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9y
IChhdXRvJiBjYWNoZSA6IGNhY2hlcykKLSAgICAgICAgICAgIGNhY2hlc0luZm8udW5jaGVja2Vk
QXBwZW5kKENhY2hlSW5mbyB7IGNhY2hlLmlkZW50aWZpZXIsIGNhY2hlLm5hbWV9KTsKLQotICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGNhY2hlc0luZm8pKTsKKyAgICAgICAgY2FsbGJhY2soY2Fj
aGVzT3JFcnJvci52YWx1ZSgpLmdldCgpLmNhY2hlSW5mb3MoKSk7CiAgICAgfSk7CiB9CiAKQEAg
LTE0OSw3ICsxNjEsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhYwogCiAgICAgICAgIFZlY3Rv
cjxSZWNvcmQ+IGNvcHk7CiAgICAgICAgIGNvcHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNv
cmRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVzdWx0LnZhbHVlKCku
Z2V0KCkucmVjb3JkcykKKyAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiByZWNvcmRzKQogICAg
ICAgICAgICAgY29weS51bmNoZWNrZWRBcHBlbmQocmVjb3JkLmNvcHkoKSk7CiAKICAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShjb3B5KSk7CkBAIC0yMzQsMjEgKzI0Niw2MiBAQCB2b2lkIEVuZ2lu
ZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6d3JpdGVDYWNoZXNUb0Rp
c2soRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmKT4mJiBjYWxsYmFjaykKK3Zv
aWQgRW5naW5lOjppbml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4m
Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3cml0aW5nLgotICAg
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgaWYgKG1fc2FsdCkgeworICAgICAgICBjYWxs
YmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFz
aG91bGRQZXJzaXN0KCkpIHsKKyAgICAgICAgbV9zYWx0ID0gbWFrZVNhbHQoKTsKKyAgICAgICAg
Y2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0
cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQ
YXRoLCBBU0NJSUxpdGVyYWwoInNhbHQiKSk7CisgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBzYWx0UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBhdGgpOworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCB0aGlzLCBzYWx0ID0gcmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFzYWx0KSB7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soRXJyb3I6OldyaXRlRGlzayk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zYWx0ID0gV1RGTW92ZShz
YWx0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIH0pOwor
ICAgIH0pOwogfQogCiB2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgcmVhZGluZy4KLQotICAgIGF1dG8mIGNhY2hlcyA9IG1fY2FjaGVzLmVuc3VyZShv
cmlnaW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxDYWNoZT4oKTsKKyAgICBhdXRvJiBj
YWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBbJm9yaWdpbiwgdGhpc10geworICAgICAg
ICByZXR1cm4gQ2FjaGVzOjpjcmVhdGUoKnRoaXMsIG9yaWdpbik7CiAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwogCi0gICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxWZWN0b3I8Q2Fj
aGU+PiB7IGNhY2hlcyB9KTsKKyAgICBpZiAoY2FjaGVzLT5pc0luaXRpYWxpemVkKCkpIHsKKyAg
ICAgICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgY2FjaGVzLmdl
dCgpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW5pdGlhbGl6ZShbdGhpcywg
b3JpZ2luLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9y
PiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBj
YWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNhY2hlcyA9IG1fY2FjaGVzLmdldChvcmln
aW4pOworICAgICAgICBBU1NFUlQoY2FjaGVzKTsKKworICAgICAgICBjYWNoZXMtPmluaXRpYWxp
emUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlc10oc3RkOjpvcHRpb25hbDxF
cnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsYmFj
ayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlcz4geyAqY2FjaGVzIH0pOworICAgICAgICB9
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OnJlYWRDYWNoZSh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIENhY2hlQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTI3OCwxMSArMzMxLDggQEAg
Q2FjaGUqIEVuZ2luZTo6Y2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogewogICAgIENh
Y2hlKiByZXN1bHQgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgY2FjaGVzIDogbV9jYWNoZXMu
dmFsdWVzKCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IGNhY2hlcy5maW5kTWF0Y2hpbmco
WyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBjYWNoZUlk
ZW50aWZpZXI7IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAg
ICAgICAgIHJlc3VsdCA9ICZjYWNoZXNbcG9zaXRpb25dOworICAgICAgICBpZiAoKHJlc3VsdCA9
IGNhY2hlcy0+ZmluZChjYWNoZUlkZW50aWZpZXIpKSkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9CiAgICAgfQogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGF1dG8gcG9zaXRpb24g
PSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJl
dHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyOyB9KTsKQEAgLTMwNSw3ICsz
NTUsNzUgQEAgVmVjdG9yPHVpbnQ2NF90PiBFbmdpbmU6OnF1ZXJ5Q2FjaGUoY29uc3QgVmVjdG9y
PFJlY29yZD4mIHJlY29yZHMsIGNvbnN0IFdlYkNvcmUKICAgICByZXR1cm4gcmVzdWx0czsKIH0K
IAordm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3Jr
Q2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKKyAgICAgICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW9R
dWV1ZS0+ZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpLCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0No
YW5uZWw6OlR5cGU6OkNyZWF0ZSk7CisgICAgICAgIGNoYW5uZWwtPndyaXRlKDAsIGRhdGEsIG51
bGxwdHIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShpbnQgZXJyb3IpIG11dGFibGUg
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBlcnJvcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXJyb3I6OldyaXRlRGlzayk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmLCBpbnQg
ZXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7CisgICAg
ICAgIGNhbGxiYWNrKERhdGEgeyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29s
YXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVs
OjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOworICAgICAgICBpZiAoY2hh
bm5lbC0+ZmlsZURlc2NyaXB0b3IoKSA8IDApIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayhEYXRhIHsgfSwgMCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNoYW5uZWwtPnJlYWQoMCwg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgbV9pb1F1ZXVlLmdldCgpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZGF0YSwgZXJyb3JdKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgY2FsbGJhY2soZGF0YSwgZXJyb3IpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lKQoreworICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgeworICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsK
KyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OmhhbmRsZVJlbW92ZWRDYWNoZShDYWNoZSYmIGNh
Y2hlKQoreworICAgIG1fcmVtb3ZlZENhY2hlcy5hcHBlbmQoV1RGTW92ZShjYWNoZSkpOworfQor
Cit2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9y
aWdpbikKK3sKKyAgICByZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2luLCBbXShDYWNoZXNPckVycm9y
JiYgcmVzdWx0KSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHJlc3VsdC52YWx1ZSgpLmdldCgpLmNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24oKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAyOTE3NzEyZmQzZGRl
OWNmNDM3MDBlYzAwMjk0NjgzZTZiZGNlZWE4Li4wMmIzYTE4ZjliNWYxNTYwMTViOTM1ZjZhMTEw
ZmUyMDU0M2E0MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI1LDggKzI1LDkgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIgorI2luY2x1ZGUg
IkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBJUEMgewog
Y2xhc3MgQ29ubmVjdGlvbjsKQEAgLTQwLDEwICs0MSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CiAKLWNsYXNzIEVuZ2luZSB7CitjbGFzcyBFbmdp
bmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RW5naW5lPiB7CiBwdWJsaWM6CisgICAg
fkVuZ2luZSgpOworCiAgICAgc3RhdGljIEVuZ2luZSYgZnJvbShQQUw6OlNlc3Npb25JRCk7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGlj
IFJlZjxFbmdpbmU+IGNyZWF0ZShTdHJpbmcmJiByb290UGF0aCwgYm9vbCBzaG91bGRQZXJzaXN0
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVuZ2luZShXVEZNb3ZlKHJvb3RQYXRoKSwgc2hvdWxk
UGVyc2lzdCkpOyB9CiAKICAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyQ2Fs
bGJhY2smJik7CiAgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CkBAIC01MywxNCArNTcs
MjcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNo
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5n
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZTo6UmVj
b3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIAorICAgIHZvaWQgaGFuZGxlUmVtb3ZlZENhY2hl
KENhY2hlJiYpOworICAgIHZvaWQgd3JpdGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE5l
dHdvcmtDYWNoZTo6RGF0YSYmLCBXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNr
JiYpOworICAgIHZvaWQgcmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYsIGludCBlcnJvcik+JiYpOworICAg
IHZvaWQgcmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKworICAgIGNvbnN0IFN0
cmluZyYgcm9vdFBhdGgoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RQYXRoOyB9CisgICAgY29uc3Qg
TmV0d29ya0NhY2hlOjpTYWx0JiBzYWx0KCkgY29uc3QgeyByZXR1cm4gbV9zYWx0LnZhbHVlKCk7
IH0KKyAgICB1aW50NjRfdCBuZXh0Q2FjaGVJZGVudGlmaWVyKCkgeyByZXR1cm4gKyttX25leHRD
YWNoZUlkZW50aWZpZXI7IH0KKworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIG9yaWdpbik7CisgICAgYm9vbCBzaG91bGRQZXJzaXN0KCkgY29uc3QgeyBy
ZXR1cm4gISFtX2lvUXVldWU7IH0KKwogcHJpdmF0ZToKICAgICBzdGF0aWMgRW5naW5lJiBkZWZh
dWx0RW5naW5lKCk7CisgICAgRW5naW5lKFN0cmluZyYmLCBib29sIHNob3VsZFBlcnNpc3QpOwog
Ci0gICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlv
bkNhbGxiYWNrJiYpOworICAgIHZvaWQgaW5pdGlhbGl6ZShGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPiYmKT4mJik7CiAKLSAgICB1c2luZyBDYWNo
ZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxWZWN0b3I8Q2FjaGU+
PiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPjsKKyAgICB1c2luZyBDYWNoZXNPckVycm9yID0g
RXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+LCBXZWJDb3JlOjpET01DYWNo
ZTo6RXJyb3I+OwogICAgIHVzaW5nIENhY2hlc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KENhY2hlc09yRXJyb3ImJik+OwotICAgIHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlYWRDYWNoZXNGcm9t
RGlzayhjb25zdCBTdHJpbmcmIG9yaWdpbiwgRnVuY3Rpb248dm9pZChDYWNoZXNPckVycm9yJiYp
PiYmKTsKIAogICAgIHVzaW5nIENhY2hlT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8Q2FjaGU+LCBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I+OwogICAgIHVzaW5nIENh
Y2hlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVPckVycm9yJiYpPjsKQEAgLTcw
LDEyICs4NywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlQ2FjaGVSZWNvcmRzKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBXZWJDb3JlOjpET01DYWNo
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4g
cXVlcnlDYWNoZShjb25zdCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0
aW9ucyYpOwotCiAgICAgQ2FjaGUqIGNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAK
LSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPENhY2hlPj4gbV9jYWNoZXM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZjxDYWNoZXM+PiBtX2NhY2hlczsKICAgICBWZWN0b3I8Q2FjaGU+IG1fcmVt
b3ZlZENhY2hlczsKICAgICB1aW50NjRfdCBtX25leHRDYWNoZUlkZW50aWZpZXIgeyAwIH07Cisg
ICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrQ2FjaGU6OlNh
bHQ+IG1fc2FsdDsKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2lvUXVldWU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZWY2ODk5N2UwMzc5YWIzMGU2NmM1ZTIwYTBiZTYyZmQzMWQwNDI5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUNvZGVycy5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU6OkRPTUNhY2hlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0d29ya0NhY2hl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CisKK3N0
YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc1Jvb3RQYXRoKEVuZ2luZSYgZW5naW5lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbikKK3sKKyAgICBLZXkga2V5KGVuZ2luZS5yb290UGF0aCgpLCB7IH0sIHsg
fSwgb3JpZ2luLCBlbmdpbmUuc2FsdCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGVuZ2luZS5yb290UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3Ry
aW5nKCkpOworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNMaXN0RmlsZW5hbWUoY29u
c3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoImNhY2hlc2xp
c3QiKSk7Cit9CisKK0NhY2hlczo6Q2FjaGVzKEVuZ2luZSYgZW5naW5lLCBjb25zdCBTdHJpbmcm
IG9yaWdpbikKKyAgICA6IG1fZW5naW5lKCZlbmdpbmUpCisgICAgLCBtX3Jvb3RQYXRoKGNhY2hl
c1Jvb3RQYXRoKGVuZ2luZSwgb3JpZ2luKSkKK3sKK30KKwordm9pZCBDYWNoZXM6OmluaXRpYWxp
emUoV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIGlmIChtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fZW5naW5lIHx8ICFtX2VuZ2luZS0+c2hvdWxk
UGVyc2lzdCgpKSB7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdG9yYWdlKSB7CisgICAgICAgIG1fcGVuZGluZ0lu
aXRpYWxpemF0aW9uQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHN0b3JhZ2UgPSBTdG9yYWdlOjpvcGVuKG1fcm9v
dFBhdGgsIFN0b3JhZ2U6Ok1vZGU6Ok5vcm1hbCk7CisgICAgaWYgKCFzdG9yYWdlKSB7CisgICAg
ICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURpc2spOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1fc3RvcmFnZSA9IHN0b3JhZ2UucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZWFkQ2FjaGVz
RnJvbURpc2soW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKEV4cGVjdGVkPFZl
Y3RvcjxDYWNoZT4sIEVycm9yPiYmIHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNW
YWx1ZSgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKSk7CisKKyAgICAg
ICAgICAgIGF1dG8gcGVuZGluZ0NhbGxiYWNrcyA9IFdURk1vdmUobV9wZW5kaW5nSW5pdGlhbGl6
YXRpb25DYWxsYmFja3MpOworICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHBlbmRp
bmdDYWxsYmFja3MpCisgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0LmVycm9yKCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fY2FjaGVzID0gV1RGTW92
ZShyZXN1bHQudmFsdWUoKSk7CisgICAgICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7CisgICAg
ICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisKKyAgICAgICAgYXV0byBwZW5kaW5nQ2FsbGJh
Y2tzID0gV1RGTW92ZShtX3BlbmRpbmdJbml0aWFsaXphdGlvbkNhbGxiYWNrcyk7CisgICAgICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBwZW5kaW5nQ2FsbGJhY2tzKQorICAgICAgICAgICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICB9KTsKK30KKworQ2FjaGUqIENhY2hlczo6ZmluZChj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRN
YXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5uYW1lID09IG5hbWU7
IH0pOworICAgIHJldHVybiAocG9zaXRpb24gIT0gbm90Rm91bmQpID8gJm1fY2FjaGVzW3Bvc2l0
aW9uXSA6IG51bGxwdHI7Cit9CisKK0NhY2hlKiBDYWNoZXM6OmZpbmQodWludDY0X3QgaWRlbnRp
ZmllcikKK3sKKyAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShj
b25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsg
fSk7CisgICAgcmV0dXJuIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgPyAmbV9jYWNoZXNbcG9zaXRp
b25dIDogbnVsbHB0cjsKK30KKwordWludDY0X3QgQ2FjaGVzOjpvcGVuKFN0cmluZyYmIG5hbWUs
IENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5n
aW5lKTsKKworICAgIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciA9IG1fZW5naW5lLT5uZXh0Q2Fj
aGVJZGVudGlmaWVyKCk7CisgICAgbV9jYWNoZXMuYXBwZW5kKENhY2hlIHsgY2FjaGVJZGVudGlm
aWVyLCBXVEZNb3ZlKG5hbWUpLCB7IH0sIDAgfSk7CisgICAgd3JpdGVDYWNoZXNUb0Rpc2soW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlSWRlbnRpZmllcl0oc3RkOjpvcHRpb25h
bDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAg
ICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKGNhY2hlSWRlbnRpZmllcik7
CisgICAgfSk7CisgICAgcmV0dXJuIGNhY2hlSWRlbnRpZmllcjsKK30KKwordm9pZCBDYWNoZXM6
OnJlbW92ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBBU1NFUlQobV9lbmdpbmUpOworCisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2Fj
aGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVu
dGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworCisgICAgQVNTRVJUKHBvc2l0aW9uICE9IG5vdEZv
dW5kKTsKKworICAgIGF1dG8gY2FjaGUgPSBXVEZNb3ZlKG1fY2FjaGVzW3Bvc2l0aW9uXSk7Cisg
ICAgbV9jYWNoZXMucmVtb3ZlKHBvc2l0aW9uKTsKKworICAgIG1fZW5naW5lLT5oYW5kbGVSZW1v
dmVkQ2FjaGUoV1RGTW92ZShjYWNoZSkpOworCisgICAgd3JpdGVDYWNoZXNUb0Rpc2soV1RGTW92
ZShjYWxsYmFjaykpOworfQorCitzdGF0aWMgaW5saW5lIERhdGEgZW5jb2RlQ2FjaGVOYW1lcyhj
b25zdCBWZWN0b3I8Q2FjaGU+JiBjYWNoZXMpCit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5j
b2RlciBlbmNvZGVyOworCisgICAgdWludDY0X3Qgc2l6ZSA9IGNhY2hlcy5zaXplKCk7CisgICAg
ZW5jb2RlciA8PCBzaXplOworICAgIGZvciAoYXV0byYgY2FjaGUgOiBjYWNoZXMpCisgICAgICAg
IGVuY29kZXIgPDwgY2FjaGUubmFtZTsKKworICAgIHJldHVybiBEYXRhIHsgZW5jb2Rlci5idWZm
ZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfTsKK30KKworc3RhdGljIGlubGluZSBFeHBlY3Rl
ZDxWZWN0b3I8U3RyaW5nPiwgRXJyb3I+IGRlY29kZUNhY2hlc05hbWVzKGNvbnN0IERhdGEmIGRh
dGEsIGludCBlcnJvcikKK3sKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChFcnJvcjo6UmVhZERpc2spOworCisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgdWludDY0X3QgY291bnQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3VudCkpCisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChFcnJvcjo6UmVhZERpc2spOworCisgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Cisg
ICAgbmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgIFN0cmluZyBuYW1l
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5hbWUpKQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CisKKyAgICAgICAgbmFtZXMudW5jaGVj
a2VkQXBwZW5kKFdURk1vdmUobmFtZSkpOworICAgIH0KKyAgICByZXR1cm4gbmFtZXM7Cit9CisK
K3ZvaWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVj
dGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQo
bV9lbmdpbmUpOworICAgIEFTU0VSVCghbV9pc0luaXRpYWxpemVkKTsKKyAgICBBU1NFUlQobV9j
YWNoZXMuaXNFbXB0eSgpKTsKKworICAgIGlmICghbV9lbmdpbmUtPnNob3VsZFBlcnNpc3QoKSkg
eworICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIGZpbGVuYW1lID0gY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBh
dGgpOworICAgIGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKKyAgICAgICAg
Y2FsbGJhY2soVmVjdG9yPENhY2hlPiB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9lbmdpbmUtPnJlYWRGaWxlKGZpbGVuYW1lLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBEYXRhJiBk
YXRhLCBpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIW1fZW5naW5lKSB7CisgICAg
ICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHJlc3VsdCA9IGRlY29kZUNhY2hlc05hbWVzKGRh
dGEsIGVycm9yKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAgICAgICAg
ICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBWZWN0b3I8Q2FjaGU+IGNhY2hlczsKKyAgICAg
ICAgY2FjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVzdWx0LnZhbHVlKCkuc2l6ZSgpKTsK
KyAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogcmVzdWx0LnZhbHVlKCkpCisgICAgICAgICAgICBj
YWNoZXMudW5jaGVja2VkQXBwZW5kKENhY2hlIHsgbV9lbmdpbmUtPm5leHRDYWNoZUlkZW50aWZp
ZXIoKSwgV1RGTW92ZShuYW1lKSwgeyB9LCAwIH0pOworCisgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoY2FjaGVzKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgQ2FjaGVzOjp3cml0ZUNhY2hlc1RvRGlz
ayhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZW5naW5lLT5z
aG91bGRQZXJzaXN0KCkpIHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtX2VuZ2luZSk7CisKKyAgICBpZiAobV9j
YWNoZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fZW5naW5lLT5yZW1vdmVGaWxlKGNhY2hlc0xp
c3RGaWxlbmFtZShtX3Jvb3RQYXRoKSk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hl
c0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKSwgZW5jb2RlQ2FjaGVOYW1lcyhtX2NhY2hlcyksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9y
KSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvcikpOworICAgIH0pOwor
fQorICAgIAordm9pZCBDYWNoZXM6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oKQoreworICAg
IG1fY2FjaGVzLmNsZWFyKCk7CisgICAgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgbV9z
dG9yYWdlID0gbnVsbHB0cjsKK30KKworVmVjdG9yPENhY2hlSW5mbz4gQ2FjaGVzOjpjYWNoZUlu
Zm9zKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8Q2FjaGVJbmZvPiBjYWNoZUluZm9zOworICAgIGNh
Y2hlSW5mb3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2NhY2hlcy5zaXplKCkpOworICAgIGZv
ciAoYXV0byYgY2FjaGUgOiBtX2NhY2hlcykKKyAgICAgICAgY2FjaGVJbmZvcy51bmNoZWNrZWRB
cHBlbmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZSB9KTsKKyAgICBy
ZXR1cm4gY2FjaGVJbmZvczsKK30KKworfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjkxZTgyZGMzMWRmM2EyNGZjMGZmYzkwYjhjODcyYWUwY2Q3ZWE1NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2Fj
aGVTdG9yYWdlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgQ2FjaGVTdG9y
YWdlIHsKKworY2xhc3MgRW5naW5lOworCitjbGFzcyBDYWNoZXMgOiBwdWJsaWMgUmVmQ291bnRl
ZDxDYWNoZXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPENhY2hlcz4gY3JlYXRlKEVuZ2lu
ZSYgZW5naW5lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
YWNoZXMgeyBlbmdpbmUsIG9yaWdpbiB9KTsgfQorCisgICAgdm9pZCBpbml0aWFsaXplKFdlYkNv
cmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CisKKyAgICBib29sIGlzSW5pdGlh
bGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7IH0KKworICAgIENhY2hlKiBm
aW5kKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgQ2FjaGUqIGZpbmQodWludDY0X3QgaWRlbnRp
Zmllcik7CisKKyAgICB1aW50NjRfdCBvcGVuKFN0cmluZyYmIG5hbWUsIFdlYkNvcmU6OkRPTUNh
Y2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZSh1aW50NjRf
dCBpZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwor
CisgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUluZm8+IGNhY2hlSW5mb3MoKSBj
b25zdDsKKworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgIHZvaWQg
ZGV0YWNoKCkgeyBtX2VuZ2luZSA9IG51bGxwdHI7IH0KKworcHJpdmF0ZToKKyAgICBDYWNoZXMo
RW5naW5lJiwgY29uc3QgU3RyaW5nJiByb290UGF0aCk7CisKKyAgICB2b2lkIHJlYWRDYWNoZXNG
cm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OkVycm9yPiYmKT4mJik7CisgICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlzayhX
ZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworCisgICAgYm9vbCBtX2lz
SW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAgIEVuZ2luZSogbV9lbmdpbmUgeyBudWxscHRyIH07
CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgVmVjdG9yPENhY2hlPiBtX2NhY2hlczsKKyAg
ICBSZWZQdHI8TmV0d29ya0NhY2hlOjpTdG9yYWdlPiBtX3N0b3JhZ2U7CisgICAgVmVjdG9yPFdl
YkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2s+IG1fcGVuZGluZ0luaXRpYWxpemF0
aW9uQ2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKaW5k
ZXggYmY0OTkzODhmMzY3ZDJlOWM2ZGU3MGYwMDk3MTc4NjIwMDUzYzRiYy4uYzAyY2FmZDcwMDkw
M2Q3YmMzNTZiNDBkNzliZThhYzlmOTljMTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwCkBAIC02Myw2ICs2MywxMSBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcQog
ICAgIH0pOwogfQogCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVt
b3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IG9yaWdpbikKK3sKKyAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKG9yaWdpbik7Cit9CisKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bjo6cmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAgRW5naW5lOjpmcm9tKHNl
c3Npb25JRCkucmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVj
b3Jkc09yRXJyb3ImJiByZXN1bHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgK
aW5kZXggZmIzYTY2NGU1NDVjNGRhZjc1NThmZDE0OWFhMWVhMWYxZGY5ZDUzMy4uMDgyZDFlNDcw
MzA1N2YzZDdiMGNkYzIzZTM0MWE3NzI3MDhlNzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmgKQEAgLTU0LDYgKzU0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZShQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVtb3ZlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IHJldHJpZXZlQ2FjaGVzSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCisg
ICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIG9yaWdpbik7CisKICAgICB2b2lkIHJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJik7CiAgICAgdm9pZCBwdXRSZWNv
cmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXgg
NTkyMmVlZDY2NzI3NmRkYzFlNTRhNDgxODQzZGZiZTNhOWU1MmRlOC4uNGVhYzc0ODU3ZTIzZDY1
ZTIxOThmNGRlMTliYmZmMmFkOWM3N2VkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsOCBAQCBtZXNzYWdlcyAtPiBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIHsKICAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyKTsKICAgICBDYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nIG9yaWdpbik7CiAKKyAgICBDbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbik7CisKICAg
ICBSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNv
cmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIHN0cnVjdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBQdXRS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpS
ZWNvcmQ+IHJlY29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCAzMWFlNDhmZTVhZDJkOTdkYjZiMWNm
Njg0N2EyZWY4NGMyMGQwN2I1Li43NDZkZDZlMmRjMDc4OWMxZjJkMjcyMDk1YjgxMmQ4YzhhNDUx
NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBib29sIGJ5dGVzRXF1YWwo
Y29uc3QgRGF0YSYgYSwgY29uc3QgRGF0YSYgYikKICAgICByZXR1cm4gIW1lbWNtcChhLmRhdGEo
KSwgYi5kYXRhKCksIGEuc2l6ZSgpKTsKIH0KIAotc3RhdGljIFNhbHQgbWFrZVNhbHQoKQorU2Fs
dCBtYWtlU2FsdCgpCiB7CiAgICAgU2FsdCBzYWx0OwogICAgIHN0YXRpY19hc3NlcnQoc2FsdC5z
aXplKCkgPT0gOCwgIlNhbHQgc2l6ZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAppbmRleCA2MDBiNWU0NTgwMTI4MGY4
ZjQ1NzQwMGY0NGY2MGFlMDllMzc4NWFmLi5jMmM5OWQ1YWU4ZTZhZWZlMWQ1NTBhYjFmMWM3ZTA2
NWU5YTc4N2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGEuaApAQCAtMTA1LDYgKzEwNSw3IEBAIERhdGEgbWFwRmlsZShj
b25zdCBjaGFyKiBwYXRoKTsKIAogdXNpbmcgU2FsdCA9IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47
CiAKK1NhbHQgbWFrZVNhbHQoKTsKIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKIFNIQTE6OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRh
JiwgY29uc3QgU2FsdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA4MmJiZWI5MjcwZjdjMTRiZTU1NTFlZTE4MTVkMzI5ZmQ4YTMw
M2NiLi44MzFkYjczN2I1MDJhNzA2MmU4ZmYyNWJhM2RiYjJhYWZkMjRmZjUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5MSw2ICs4
OTEsNyBAQAogCQk0MTMwNzVCMjFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
MDc1QTYxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCAqLzsgfTsK
IAkJNDEzMDc1QjMxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE3MURFODVF
RTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi87IH07CiAJCTQxMzA3NUI0MURF
ODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExp
YldlYlJUQ1Byb3ZpZGVyLmggKi87IH07CisJCTQxMzVGQkQxMUY0RkI4MDkwMDc0QzQ3QiAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAgKi87IH07CiAJCTQxODk3RUNGMUY0MTVENjIwMDE2RkE0MiAvKiBX
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNFMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDE4OTdFRDAxRjQxNUQ2NTAwMTZGQTQyIC8q
IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNDMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0
b3JhZ2VQcm92aWRlci5jcHAgKi87IH07CiAJCTQxODk3RUQxMUY0MTVENjgwMDE2RkE0MiAvKiBX
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTg5N0VDRDFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5oICovOyB9OwpAQCAtMzE2Miw2ICszMTYzLDggQEAKIAkJNDEzMDc1QTYx
REU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oOyBwYXRoID0gTmV0
d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9
IExpYldlYlJUQ1Byb3ZpZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRp
b25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCTQxMzA3NUE4MURFODVFRTcwMDM5
RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxp
bmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuaDsgcGF0aCA9IE5ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFu
Z3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk0
MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzVGQkQwMUY0RkI3RjIw
MDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxODk3RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUNDMUY0MTVE
NUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMDEsNiArODIwNCw4IEBACiAJCQkJNDE4OTdFRDYx
RjQxNUQ4NjAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgKi8sCiAJCQkJNDE4OTdF
RDIxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oICovLAogCQkJCTQxRkFC
RDI4MUY0RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oICovLAorCQkJ
CTQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
ICovLAorCQkJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuaCAqLywKIAkJCQk0MTg5N0VEMzFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDE4OTdFRDQxRjQxNUQ4NTAwMTZGQTQyIC8q
IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCAqLywKIAkJCQk0MTg5N0VENTFGNDE1RDg1
MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywK
QEAgLTk5OTEsNiArOTk5Niw3IEBACiAJCQkJRTE3MDg3NkIxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJs
b2JSZWdpc3RyeVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjE4NjM4MTY3RDA3MUUw
MEExQTg1QSAvKiBDYWNoZU1vZGVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODk3RUQ3MUY0
MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDEzNUZCRDExRjRGQjgwOTAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg5N0VEOTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2
M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUEyRTUxRTEyRTRDMDVFMDBCQzQ5NjYgLyog
Q0dVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggYzNkMTMwMjc1MDljMzJiMzI3YzI2ZDllNGYxMGY2MTM1OTI0YjIyMy4uYmZkMGJhM2FjMmVj
OWE5MzkzNzhkYjU3NTcyNTk1ZTIwZjgzNDk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApA
QCAtODYsNiArODYsMTIgQEAgdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNo
UHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLAogICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpQdXRSZWNvcmRz
KG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZWNvcmRz
KSwgMCk7CiB9CiAKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ29tcGxldGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb246OkNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24obV9zZXNzaW9uSUQs
IG9yaWdpbiksIDApOworICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Cit9CisKIHZvaWQgV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KQogewogICAgIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCAyNWFmZmNmMDBhZGMwOGY4MjE0ZWQ3NGY1
MGZjODIxMzhjMTgxYzdjLi5mNTllMmNmMzE2NTdmY2Y0NDk5ZTllM2JiMWY1M2U1OGZkYmVlZDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTYwLDYgKzYwLDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoUHV0
T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmKSBmaW5hbDsKIAorICAg
IHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgV2Vi
Q29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKwogICAgIHZvaWQg
b3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKICAgICB2b2lkIHJlbW92ZUNvbXBs
ZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGU6
OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKICAgICB2b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mb3NPckVycm9y
JiYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGRkMzcwMzJhYzIwNGQ0MWQ0MTBjZmRkMmEzYmU4YmMwNjY5YmI2OGIuLmNm
NTMwOGZlODFiZWFkNjJiYzVkZjc3NTlmOTIzYTM3YzVlYjUzODMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxNy0wOC0yOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NhY2hlIEFQSV0gU3VwcG9ydCBjYWNoZSBuYW1lcyBwZXJzaXN0ZW5jeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1OTk1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHV0dGluZyB0aGVzZSB0
ZXN0cyBpbiBodHRwL3Rlc3RzIGZvbGRlciBzbyB0aGF0IHRoZXkgcnVuIGluIGEgZGlmZmVyZW50
IG9yaWdpbiBhbmQgc28gYSBkaWZmZXJlbnQgQ2FjaGVzIHRoYW4gb3RoZXIgdGVzdHMuCisgICAg
ICAgIFRlc3RpbmcgcHJpdmF0ZSBicm93c2luZyBjYWNoaW5nIGFuZCBjbGVhcmluZyB0aGUgbWVt
b3J5IHJlcHJlc2VudGF0aW9uIHdvdWxkIHByb2JhYmx5IGFmZmVjdCBvdGhlciBjYWNoZStwcnZp
YXRlIGJyb3dzaW5nIHRlc3RzIHRoYXQgd291bGQgcnVuIGluIHBhcmFsbGVsLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNp
c3RlbmN5Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3Rv
cmFnZS9yZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9uczogU2tpcHBpbmcgbmV3IHRl
c3Qgb24gV0sxLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczog
RGl0dG8uCisKIDIwMTctMDgtMjggIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIEZpeCBkb2N1bWVudC1jcmVhdGUtdG91Y2guaHRtbC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVy
c2lzdGVuY3kuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyY2QyMGE0YzAyOTliZmZk
MDkyNmMwNjIzZDQ3NTcxZWM0YTJjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKKworCitQQVNTIENsZWFuaW5nIGV4aXN0aW5nIGNhY2hlcyAK
K1BBU1MgQ2xlYXIgbWVtb3J5IHJlcHJlc2VudGF0aW9uIGFuZCBkaXNhYmxlIGRpc2sgcGVyc2lz
dGVuY3kgCitQQVNTIENsZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMSAK
K1BBU1MgQ2xlYXIgbWVtb3J5IHJlcHJlc2VudGF0aW9uIGJ1dCBrZWVwIGRpc2sgcGVyc2lzdGVu
Y3kgCitQQVNTIENsZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMiAKK1BB
U1MgQWRkaW5nL1JlbW92aW5nIGNhY2hlcyBhbmQgY2xlYXJpbmcgaW4gbWVtb3J5IHJlcHJlc2Vu
dGF0aW9uIGF0IHZhcmlvdXMgdGltZXMgCitQQVNTIENsZWFuaW5nIGFkZGVkIGNhY2hlcyAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBl
cnNpc3RlbmN5Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3Jh
Z2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDBmODhjYTZmYTli
YmY1ZTczMmIxOTBiYTAzZTM5ZGRmMzc0YmVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLmh0bWwK
QEAgLTAsMCArMSwxMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5DYWNoZSBTdG9yYWdlOiB0ZXN0aW5nIHBlcnNpc3RlbmN5PC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDxkaXYgaWQ9ImNoZWNrIj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgIHByb21pc2VfdGVz
dCh0ZXN0ID0+IHsKKyAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50aGVuKGtleXMg
PT4geworICAgICAgICAgICAgdmFyIHBlbmRpbmcgPSBbXTsKKyAgICAgICAgICAgIGZvciAoa2V5
IG9mIGtleXMpCisgICAgICAgICAgICAgICAgcGVuZGluZy5wdXNoKHNlbGYuY2FjaGVzLmRlbGV0
ZShrZXlzWzBdKSk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVuZGluZyk7Cisg
ICAgICAgIH0pOworICAgIH0sICJDbGVhbmluZyBleGlzdGluZyBjYWNoZXMiKTsKKworICAgIHBy
b21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzIHx8ICF3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiVGVz
dCByZXF1aXJlcyBpbnRlcm5hbHMiKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgaWYg
KGV2ZW50LmRhdGEgPT09ICJyZWFkeSIpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxz
LmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hlY2suaW5uZXJIVE1MID0gIjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVy
c2lzdGVuY3ktaWZyYW1lLmh0bWwjY2hlY2snPjwvaWZyYW1lPiI7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZXZlbnQuZGF0YSA9PT0gZmFsc2UsICJObyBjYWNoZSBvYmplY3Qgc2hvdWxkIGJlIGZvdW5k
Iik7CisgICAgICAgIAl0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFsc2Up
OworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAg
ICAgIGNoZWNrLmlubmVySFRNTCA9ICI8aWZyYW1lIHNyYz0ncmVzb3VyY2VzL2NhY2hlLXBlcnNp
c3RlbmN5LWlmcmFtZS5odG1sJz48L2lmcmFtZT4iOworICAgICAgICB9KQorICAgIH0sICJDbGVh
ciBtZW1vcnkgcmVwcmVzZW50YXRpb24gYW5kIGRpc2FibGUgZGlzayBwZXJzaXN0ZW5jeSIpOwor
CisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2Vu
dGF0aW9uKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSk7CisKKyAgICAgICAgcmV0
dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgdmFyIHBl
bmRpbmcgPSBbXTsKKyAgICAgICAgICAgIGZvciAoa2V5IG9mIGtleXMpCisgICAgICAgICAgICAg
ICAgcGVuZGluZy5wdXNoKHNlbGYuY2FjaGVzLmRlbGV0ZShrZXlzWzBdKSk7CisgICAgICAgICAg
ICByZXR1cm4gUHJvbWlzZS5hbGwocGVuZGluZyk7CisgICAgICAgIH0pOworICAgIH0sICJDbGVh
bmluZyBhZGRlZCBjYWNoZXMgZnJvbSBwcmV2aW91cyB0ZXN0IDEiKTsKKworICAgIHByb21pc2Vf
dGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyIpOworCisg
ICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09PSAicmVhZHkiKSB7
CisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJl
cHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrLmlubmVySFRNTCA9ICI8
aWZyYW1lIHNyYz0ncmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sI2NoZWNr
Jz48L2lmcmFtZT4iOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGV2ZW50LmRhdGEgPT09IHRydWUsICJB
IGNhY2hlIG9iamVjdCBzaG91bGQgYmUgZm91bmQiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZl
KCk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICBjaGVjay5pbm5lckhUTUwgPSAiPGlm
cmFtZSBzcmM9J3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbCc+PC9pZnJh
bWU+IjsKKyAgICAgICAgfSkKKyAgICB9LCAiQ2xlYXIgbWVtb3J5IHJlcHJlc2VudGF0aW9uIGJ1
dCBrZWVwIGRpc2sgcGVyc2lzdGVuY3kiKTsKKworICAgIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsK
KyAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50aGVuKGtleXMgPT4geworICAgICAg
ICAgICAgdmFyIHBlbmRpbmcgPSBbXTsKKyAgICAgICAgICAgIGZvciAoa2V5IG9mIGtleXMpCisg
ICAgICAgICAgICAgICAgcGVuZGluZy5wdXNoKHNlbGYuY2FjaGVzLmRlbGV0ZShrZXlzWzBdKSk7
CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVuZGluZyk7CisgICAgICAgIH0pOwor
ICAgIH0sICJDbGVhbmluZyBhZGRlZCBjYWNoZXMgZnJvbSBwcmV2aW91cyB0ZXN0IDIiKTsKKwor
ICAgIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJUZXN0IHJlcXVpcmVzIGludGVy
bmFscyIpOworCisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbc2VsZi5jYWNoZXMub3Blbigi
dGVzdDIiKSwgc2VsZi5jYWNoZXMub3BlbigidGVzdDEiKV0pLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKQorICAgICAgICB9KS50aGVuKGtleXMgPT4g
eworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhrZXlzLCBbInRlc3QyIiwgInRlc3Qx
Il0pOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVh
ckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5jYWNoZXMua2V5cygpOworICAgICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhrZXlzLCBbInRlc3QyIiwgInRlc3QxIl0pOworICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmRlbGV0ZSgidGVzdDIiKTsKKyAgICAgICAgfSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlS
ZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsK
KyAgICAgICAgfSkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoa2V5cywgWyJ0ZXN0MSJdKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5jYWNoZXMub3BlbigidGVzdDIiKTsKKyAgICAgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNl
bnRhdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsKKyAgICAg
ICAgfSkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5
cywgWyJ0ZXN0MSIsICJ0ZXN0MiJdKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3NlbGYuY2FjaGVzLmRlbGV0ZSgidGVzdDIiKSwgc2Vs
Zi5jYWNoZXMuZGVsZXRlKCJ0ZXN0MSIpXSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24o
KTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCk7CisgICAgICAgIH0pLnRo
ZW4oa2V5cyA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFtdKTsK
KyAgICAgICAgfSk7CisgICAgfSwgIkFkZGluZy9SZW1vdmluZyBjYWNoZXMgYW5kIGNsZWFyaW5n
IGluIG1lbW9yeSByZXByZXNlbnRhdGlvbiBhdCB2YXJpb3VzIHRpbWVzIik7CisKKyAgICBwcm9t
aXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhl
bihrZXlzID0+IHsKKyAgICAgICAgICAgIHZhciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBm
b3IgKGtleSBvZiBrZXlzKQorICAgICAgICAgICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hl
cy5kZWxldGUoa2V5c1swXSkpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRp
bmcpOworICAgICAgICB9KTsKKyAgICB9LCAiQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIik7CisgICAg
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2Nh
Y2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3OWM5OGZlZjhlNDRiMTU3
YTEzZmMwZDk2YTQyZmY2NGQ0ODUxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFt
ZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KyAgICA8c2NyaXB0PgorZnVuY3Rpb24gZG9UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxvY2F0
aW9uLmhhc2ggPT09ICIjY2hlY2siKSB7CisgICAgICAgIHNlbGYuY2FjaGVzLmtleXMoKS50aGVu
KGtleXMgPT4geworICAgICAgICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShrZXlzLmxl
bmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSAidGVzdENhY2hlTmFtZSIsICIqIik7CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VsZi5jYWNoZXMub3BlbigidGVz
dENhY2hlTmFtZSIpLnRoZW4oKCkgPT4geworICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNz
YWdlKCJyZWFkeSIsICIqIik7CisgICAgfSk7Cit9Citkb1Rlc3QoKTsKKyAgICA8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDQxODEwNDk0YWRhMjk4ZjQ2ZWM4ZmMzYTQ1NTA5MmZiM2YxNTYy
YTQuLmU1OGNhZmE2NmZkN2M3NWNkNjhiM2FjYzVmNGYyYTYyOTAzZThhNjkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEwLDYgKzEwLDcg
QEAgZWRpdGluZy9pbnB1dC9mb2N1cy1jaGFuZ2Utd2l0aC1tYXJrZWQtdGV4dC5odG1sIFsgUGFz
cyBdCiAjIE5vIHNlcnZpY2Ugd29ya2VyIGltcGxlbWVudGF0aW9uIGZvciBXSzEKIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzIFsgU2tpcCBdCiBodHRwL3dw
dC9jYWNoZS1zdG9yYWdlIFsgU2tpcCBdCitodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UgWyBTa2lw
IF0KIAogIyBTa2lwIFdlYlJUQyBmb3Igbm93IGluIFdLMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzNDUxMjcwMDA3NjRiYTc0MTc5ODZhZjViNDU4MTVl
MGQ3NDJmZDkyLi5kYzAzNmQ0MmE5NmYxZTgwZWUwY2ZiN2NhYmRjZjY0ZjdjYmE4Y2NiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC05Myw2
ICs5Myw3IEBAIGh0dHAvdGVzdHMvc3NsL21lZGlhLXN0cmVhbQogIyBObyBzZXJ2aWNlIHdvcmtl
ciBpbXBsZW1lbnRhdGlvbiBmb3IgV0sxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2VycyBbIFNraXAgXQogaHR0cC93cHQvY2FjaGUtc3RvcmFnZSBbIFNraXAg
XQoraHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlIFsgU2tpcCBdCiAKICMgU2tpcCBXZWJSVEMgZm9y
IG5vdyBpbiBXSzEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjIFsgU2tp
cCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319219</attachid>
            <date>2017-08-28 17:05:40 -0700</date>
            <delta_ts>2017-08-28 17:38:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175995-20170828170539.patch</filename>
            <type>text/plain</type>
            <size>70758</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlhYTc4MGQ4OGNiMzc2
YTQ1ZWVmOTQ5ODI5OTQyNmIxODE5MWQ5Ny4uNTBhYmYxNGQ4MjQ4MThkZDhhYmJhNGQxZWNkZWMx
ZjBiM2JiY2M3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBw
b3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cGVyc2lzdGVuY3kuaHR0cHMuaHRtbAorCisgICAgICAgIEFkZGluZyBtZXRob2QgdG8gY2xlYXIg
dGhlIG1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FjaGUgc3RvcmFnZS4KKyAgICAgICAg
QWRkaW5nIG1ldGhvZCB0byBzZXQgdGhlIGNhY2hlIHN0b3JhZ2UgcGVyc2lzdGVuY3kgKGkuZS4g
d2hldGhlciB0aGUgY2FjaGUgc3RvcmFnZSB3aWxsIHJlYWQvd3JpdGUgb24gdGhlIGRpc2spLgor
ICAgICAgICBFeHBvc2luZyB0aGVzZSBtZXRob2RzIGFzIGludGVybmFscyBzbyB0aGF0IGxheW91
dCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBwZXJzaXN0ZW5jeS4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBSZWFkRGlzayBhbmQgV3JpdGVEaXNrIGVycm9ycyB0aGF0IGFyZSB1c2VkIGJ5
IENhY2hlU3RvcmFnZTo6RW5naW5lLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjplcnJvclRvRXhj
ZXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRD
YWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE3LTA4
LTI4ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFtXUEVdIFJlbmFtZSBFdmVudEhhbmRsZXJHbGliIHRvIEV2ZW50SGFuZGxl
ckdMaWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggM2I5NTg0Mjg1MDNhMWJjN2E0MTY3YjRkY2Q4M2RhZGJhOTUwODU2
YS4uYmFmYzA4M2JlYTU5MTgwNWJlMWNmMGRkZDJkNmY3MjhkYWNkNzdmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMDUgQEAKKzIwMTctMDgtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrIGNsb25lIGlzIG5v
dCBhIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwMzYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgZGlzayByZWFkL3dyaXRlIGNhcGFjaXRp
ZXMgdG8gQ2FjaGVTdG9yYWdlIGVuZ2luZS4KKyAgICAgICAgVGhpcyBpcyB1c2VkIHRvIHN0b3Jl
IHBlci1vcmlnaW4gY2FjaGUgbmFtZXMgaW4gYSBmaWxlLgorICAgICAgICBNYWtpbmcgRW5naW5l
IGEgdGhyZWFkIHNhZmUgcmVmY291bnRlZCBvYmplY3Qgc28gdGhhdCBpdCBkb2VzIHJlYWQvd3Jp
dGUgaW4gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKworICAgICAgICBJbnRyb2R1Y2luZyBDYWNoZVN0
b3JhZ2U6OkNhY2hlcyBhcyB0aGUgb2JqZWN0IG1hbmFnaW5nIHRoZSBsaXN0IG9mIENhY2hlIG9i
amVjdHMgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorICAgICAgICBDYWNoZXMgd2lsbCBiZSByZXNwb25z
aWJsZSB0byBkbyBhbGwgdGhlIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBmb3IgYWxsIG9mIGl0cyBj
YWNoZXMuCisgICAgICAgIEl0IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHF1b3RhIGxpbWl0YXRp
b24gYXMgd2VsbC4KKworICAgICAgICBNb3ZpbmcgcGFydCBvZiB0aGUgbG9naWMgZnJvbSBDYWNo
ZVN0b3JhZ2U6OkVuZ2luZSBpbnRvIENhY2hlU3RvcmFnZTo6Q2FjaGVzLgorCisgICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lIGlzIGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5IGFzIGl0IGZp
cnN0IGNyZWF0ZXMgYSBzYWx0IHdoaWNoIGlzIHVzZWQKKyAgICAgICAgdG8gb2JmdXNjYXRlIHRo
ZSBuYW1lcyBvZiB0aGUgdmFyaW91cyBmaWxlcyBzdG9yZWQgb24gZGlzay4KKworICAgICAgICBJ
biB0aGUgc2FtZSBzcGlyaXQsIENhY2hlU3RvcmFnZTo6Q2FjaGVzIGlzIGluaXRpYWxpemVkIGFz
eW5jaHJvbm91c2x5IGFzIGl0IG5lZWRzIHRvIHJlYWQgZnJvbSB0aGUgZGlzayB0aGUgbGlzdCBv
ZiBjYWNoZSBuYW1lcy4KKyAgICAgICAgT25jZSByZWFkLCB0aGUgbmFtZXMgd2lsbCBiZSBzdG9y
ZWQgaW4gbWVtb3J5LgorICAgICAgICBBZGRlZCB0aGUgcG9zc2liaWxpdHkgdG8gY2xlYXIgdGhp
cyBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24uIFRoaXMgd2lsbCBiZSB1c2VmdWwgZm9yIHRlc3Rp
bmcuCisgICAgICAgIFRoaXMgbWlnaHQgYWxzbyBiZSB1c2VmdWwgdG8gc2F2ZSBtZW1vcnkgd2hl
biB0aGVyZSBpcyBubyBtb3JlIHVzZSBvZiBDYWNoZVN0b3JhZ2UgYnkgd2ViIHBhZ2VzLgorCisg
ICAgICAgIEludHJvZHVjaW5nIGEgbmV3IGNhY2hlU3RvcmFnZVN1YmRpcmVjdG9yeU5hbWUgcGFy
YW1ldGVyIGZvciBXZWJzaXRlRGF0YVN0b3JlIHNvIGFzIHRvIHNlZ21lbnQgdGhlIGRpZmZlcmVu
dCBwZXIgc2Vzc2lvbiBDYWNoZVN0b3JhZ2VFbmdpbmUKKyAgICAgICAgaW4gZGlyZWN0IHN1YiBm
b2xkZXJzIG9mIHRoZSBtYWluIGNhY2hlU3RvcmFnZURpcmVjdG9yeSBmb2xkZXIuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2FjaGVTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Z2xvYmFsRW5naW5lTWFwKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6On5FbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6ZnJvbSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpk
ZWZhdWx0RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OkVu
Z2luZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlbW92ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6d3JpdGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnJlYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnJlbW92ZUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6aGFuZGxlUmVtb3ZlZENhY2hlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnJvb3RQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnNhbHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6bmV4dENhY2hlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpzaG91bGRQZXJzaXN0IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpjYWNoZXNSb290UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6Y2FjaGVzTGlzdEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpDYWNoZXM6OkNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGVzOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6OmZpbmQpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6b3Blbik6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZW1vdmUpOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OmVuY29kZUNhY2hlTmFtZXMpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OmRlY29kZUNhY2hlc05hbWVzKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjp3cml0ZUNhY2hlc1RvRGlzayk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmNhY2hlSW5mb3MgY29uc3Qp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oLgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmlzSW5pdGlhbGl6ZWQg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6ZGV0YWNoKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFrZVNhbHQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9t
YWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAg
ICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6
CisKIDIwMTctMDgtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFdlYkRyaXZlcjogaW1wbGVtZW50IHNjcmVlbiBjYXB0dXJlIGNvbW1hbmRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oCmluZGV4IGYyMDgwZGM5OTFiZmE1YjRlNTQzNmNkNzU3Y2RiZDVmMTI4OWEwNzgu
LjRjNDIyNzEwNWRkMzU1N2EzYmU2ZjgzYTk0OTE3ZGIwZjQ0N2NkMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBA
IC00NSw2ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVy
eU9wdGlvbnMmJiwgRE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAg
dm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxE
T01DYWNoZTo6UmVjb3JkPiYmLCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYm
KTsKIAorICAgIC8vIFVzZWQgb25seSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAq
LywgRE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERP
TUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisKIHByb3RlY3RlZDoKICAgICBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAgZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzM2RhODA4NTQ0NWJkYzhmMGFhZGNlODgyOGU2ZWRm
NDk5MGI4MTljLi4zM2YyNzRkZGI1YmY2MzIzMGRkYTRiZGNiN2EwZTcxMTYxZjlmOWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtNDAsNiArNDAsMTAg
QEAgRXhjZXB0aW9uIGVycm9yVG9FeGNlcHRpb24oRXJyb3IgZXJyb3IpCiAgICAgc3dpdGNoIChl
cnJvcikgewogICAgIGNhc2UgRXJyb3I6Ok5vdEltcGxlbWVudGVkOgogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVu
dGVkIikgfTsKKyAgICBjYXNlIEVycm9yOjpSZWFkRGlzazoKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgcmVhZGluZyBkYXRhIGZyb20g
dGhlIGZpbGUgc3lzdGVtIikgfTsKKyAgICBjYXNlIEVycm9yOjpXcml0ZURpc2s6CisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHdyaXRp
bmcgZGF0YSB0byB0aGUgZmlsZSBzeXN0ZW0iKSB9OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3Ii
KSB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCBj
MjEyM2E5NGEzNjQ1Mjk2NmUzMmFhMzRmNjcyNjQ2ZWYxMTViNDUzLi5lZWJlNjY3ODI3NDA5MWFj
MGI3NTRiMmM1YzM0ZDA4Yjk4MTNmNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCkBAIC00MCw2ICs0MCw4IEBAIG5hbWVzcGFjZSBET01DYWNoZSB7CiAKIGVudW0g
Y2xhc3MgRXJyb3IgewogICAgIE5vdEltcGxlbWVudGVkLAorICAgIFJlYWREaXNrLAorICAgIFdy
aXRlRGlzaywKICAgICBJbnRlcm5hbAogfTsKIApAQCAtOTQsNiArOTYsOCBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj4gewogICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvciwK
ICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCwKKyAgICAg
ICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yOjpSZWFkRGlzaywKKyAgICAgICAgV2ViQ29yZTo6
RE9NQ2FjaGU6OkVycm9yOjpXcml0ZURpc2ssCiAgICAgICAgIFdlYkNvcmU6OkRPTUNhY2hlOjpF
cnJvcjo6SW50ZXJuYWwKICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGQ4YTk2MTgyOWEw
NTJhMDZjOWEzOTBlOTdkMDAzYjQ0ZjRiYzA5OGQuLmU0NTkxMzhlMTQ5OTY4Yjg5Y2ZiZDQxYWZi
ZTM1ZmY0YjMxNWYxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6
CiAgICAgTlNIVFRQQ29va2llU3RvcmFnZSAqbnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CiAjZW5k
aWYKIAorICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5TmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5TmFtZTsgfQorICAgIHZvaWQgc2V0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5TmFtZShTdHJpbmcmJiBuYW1lKSB7IG1fY2FjaGVTdG9yYWdlRGly
ZWN0b3J5TmFtZSA9IFdURk1vdmUobmFtZSk7IH0KKwogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3Vy
ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UsIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmKTsKICAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb24oUEFMOjpTZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYm
LCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJik7CkBAIC0xMzksNiArMTQyLDgg
QEAgcHJpdmF0ZToKIAogICAgIENyZWRlbnRpYWxTdG9yYWdlIG1fY3JlZGVudGlhbFN0b3JhZ2U7
CiAKKyAgICBTdHJpbmcgbV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnlOYW1lOworCiAjaWYgSEFWRShD
Rk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgYm9vbCBzaG91bGRQYXJ0aXRpb25D
b29raWVzKGNvbnN0IFN0cmluZyYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbikgY29uc3Q7
CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNGb3JD
b29raWVQYXJ0aXRpb25pbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
ODQyNzVkZjMzNTljMmM3MjE0MTU2ZjIzZDYxYzk4NWJkY2RhNDcwMy4uZjg0ZDFhZWFjNzQ1NTdl
MDQ1NTc5NGJkYTg3MjY3ZjgwMDFiYWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgIkNTU01lZGlhUnVsZS5oIgogI2luY2x1
ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N1cHBvcnRzUnVsZS5oIgorI2luY2x1
ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92
aWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAgLTQxMzYsNCArNDEzOCwxOSBAQCBT
dHJpbmcgSW50ZXJuYWxzOjphdWRpb1Nlc3Npb25DYXRlZ29yeSgpIGNvbnN0CiAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1l
bW9yeVJlcHJlc2VudGF0aW9uKCkKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0
RG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikgeworICAgICAgICBpZiAoYXV0byogcGFnZSA9
IGNvbnRleHREb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgICAgICBtX2NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24gPSBwYWdlLT5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24ocGFnZS0+c2Vzc2lvbklEKCkpOworICAgICAgICBpZiAoIW1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGRvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLnRvU3RyaW5nKCksIFtdKHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGU6OkVycm9y
PiYmKSB7IH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCBkMjc4MjdkMTM2ZTlmYTBlMGY4MjQ0Mjg5ZTQ4ZWFmN2JkMmUyYjM4
Li4yYjgxNDYwNGRjNWVlYzdiMzhlNzk0NjMzMDAzMjg3NWJkYWVkZjAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQzLDYgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIGNs
YXNzIERPTVJlY3Q7CiBjbGFzcyBET01SZWN0TGlzdDsKIGNsYXNzIERPTVVSTDsKQEAgLTU5OCw2
ICs1OTksOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgYXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSBj
b25zdDsKIAorICAgIHZvaWQgY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigp
OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCYpOwogICAgIERv
Y3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKQEAgLTYxOCw2ICs2MjEsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yU3R1YkZyb250ZW5k
PiBtX2luc3BlY3RvckZyb250ZW5kOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
PiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNDI3MWFlMmYyNmIwMjc2MGRi
ZWU1MTIxOTZmZTYwYThmYWJhZjgxNC4uZTg3YTc0YzU4YWM1YzJjNmYxZjk4YjFlYzhiZWZhZTQx
MTE5MTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTQ0LDUgKzU0
NCw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIFtDb25kaXRpb25hbD1N
RURJQV9TVFJFQU1dIHZvaWQgcmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbSBzdHJl
YW0sIE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJF
QU1dIHZvaWQgc2ltdWxhdGVNZWRpYVN0cmVhbVRyYWNrQ2FwdHVyZVNvdXJjZUZhaWx1cmUoTWVk
aWFTdHJlYW1UcmFjayB0cmFjayk7CiAKKyAgICB2b2lkIGNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5
UmVwcmVzZW50YXRpb24oKTsKKwogICAgIERPTVN0cmluZyBhdWRpb1Nlc3Npb25DYXRlZ29yeSgp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IGNkNDE4Yjk4NzI0Y2RhYzE4OGViNWUxYWIyNDhj
ZTBhNDI3OTZmZGYuLjI0ZDYzNjc3NDNjNjQ5MTUyZjMyOWJlNWViYzNkMzJlMzYyN2Y4MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dApAQCAtMTE3LDYgKzExNyw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMK
ICAgICBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKIAogICAgIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKyAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0
b3JhZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGIyYTc0MjA4ZjNjYTkx
MDlhYjU2ZmQ0ZjBjY2I2NzE4MDgyN2Y4ZWMuLjBmM2ZkYWY1NTZlZjIwNTBlMGRmMDdmNmM1NTBm
ZjdmNDkyYWEzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00NDYsNyArNDQ2
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib28KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAg
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
e1BBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7IH19
KTsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbih7UEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7
IH0sIHsgfSwgeyB9fSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxYWFhMzU3YjBl
MTFmZWFhZWYzMTljMzdmZThlZWQ3YTQ1NWFlMDJkLi5iNWFlNmQ3YWVjYWY3Zjk5YmE1YzY5NmM1
ZmQzZmFhYWNmNTIzNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYmCiAKICAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBoYW5kbGluZyB0aGlzIGhlcmUsIGEgbWVz
c2FnZSBzaG91bGQgYmUgc2VudCBsYXRlciAoc2NhbGVzIHRvIG11bHRpcGxlIHNlc3Npb25zKQog
ICAgIGlmIChwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHtQQUw6OlNl
c3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgeyB9fSk7CisgICAg
ICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHtQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgeyB9
LCB7IH19KTsKIAogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vz
c2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdT
ZXNzaW9uKCk7CkBAIC03MDEsNiArNzAxLDI1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiAgICAgV2ViQ29yZTo6cHJlZmV0Y2hETlMo
aG9zdG5hbWUpOwogfQogCitTdHJpbmcgTmV0d29ya1Byb2Nlc3M6OmNhY2hlU3RvcmFnZURpcmVj
dG9yeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0Cit7CisgICAgaWYgKHNlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKG1fY2FjaGVT
dG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0
byogc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBjb25z
dCBhdXRvJiBuYW1lID0gc2Vzc2lvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5TmFtZSgpOworICAg
IGlmIChuYW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlU3RvcmFnZURpcmVjdG9yeSwg
bmFtZSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
bml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmKQogewpAQCAtNzE3LDYgKzczNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVyCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzeW5jQWxsQ29va2llcygpCiB7CiB9CisKICNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCA1MDZmNDkyNTVlMTIxZjdlNjVlOWRiY2VkZjM3MGUyYTFhYzcyMThh
Li5lNWEyZThiNjZkMzk0ZTk5NzA1MjM0MjZmM2E2MDlkZWJhZDc2MWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMzQsNyArMTM0LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICBTZWNvbmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBj
b25zdCB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KLSAgICBjb25zdCBTdHJpbmcm
IGNhY2hlU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlRGly
ZWN0b3J5OyB9CisgICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9yeShQQUw6OlNlc3Npb25J
RCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmNwcAppbmRleCA5M2NhODE5YjQ5NDFjZDIzNDBlYTRlYzg2NGRkYTAzNmYwNTk3NGI1Li4wZDE1
MTIwYjBlMDQxY2E3Y2RmYjU3OWUzM2U2NjE1MWViNjcyMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3Bw
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2FjaGVT
dG9yYWdlRW5naW5lLmgiCiAKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCIKKyNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9w
dGlvbnMuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KQEAgLTMzLDI1ICszNSwzMSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlOwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDo6TmV0d29ya0NhY2hlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNw
YWNlIENhY2hlU3RvcmFnZSB7CiAKLXN0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6
OnVuaXF1ZV9wdHI8RW5naW5lPj4mIGdsb2JhbEVuZ2luZU1hcCgpCitzdGF0aWMgSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgUmVmUHRyPEVuZ2luZT4+JiBnbG9iYWxFbmdpbmVNYXAoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1
ZV9wdHI8RW5naW5lPj4+IG1hcDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgUmVmUHRyPEVuZ2luZT4+PiBtYXA7CisKICAgICByZXR1cm4gbWFwOwog
fQogCi1FbmdpbmUmIEVuZ2luZTo6ZnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitFbmdp
bmU6On5FbmdpbmUoKQogewotICAgIGlmIChzZXNzaW9uSUQgPT0gUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRFbmdpbmUoKTsKKyAgICBm
b3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVlcygpKQorICAgICAgICBjYWNoZXMtPmRl
dGFjaCgpOworfQogCi0gICAgcmV0dXJuICpnbG9iYWxFbmdpbmVNYXAoKS5lbnN1cmUoc2Vzc2lv
bklELCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVuZ2luZT4oKTsKLSAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CitFbmdpbmUmIEVuZ2luZTo6ZnJvbShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBnbG9iYWxFbmdpbmVNYXAoKS5h
ZGQoc2Vzc2lvbklELCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisg
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBFbmdpbmU6OmNyZWF0ZShOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlRGlyZWN0b3J5KHNlc3Npb25JRCkpOwor
ICAgIHJldHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBFbmdpbmU6
OmRlc3Ryb3lFbmdpbmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtNjIsOCArNzAsMTYg
QEAgdm9pZCBFbmdpbmU6OmRlc3Ryb3lFbmdpbmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
CiBFbmdpbmUmIEVuZ2luZTo6ZGVmYXVsdEVuZ2luZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxFbmdpbmU+PiBkZWZhdWx0RW5naW5lID0geyBzdGQ6Om1h
a2VfdW5pcXVlPEVuZ2luZT4oKSB9OwotICAgIHJldHVybiAqZGVmYXVsdEVuZ2luZS5nZXQoKTsK
KyAgICBhdXRvIHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxFbmdpbmU+PiBkZWZhdWx0RW5naW5lID0g
eyBFbmdpbmU6OmNyZWF0ZShOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdl
RGlyZWN0b3J5KHNlc3Npb25JRCkpIH07CisgICAgcmV0dXJuIGRlZmF1bHRFbmdpbmUuZ2V0KCk7
Cit9CisKK0VuZ2luZTo6RW5naW5lKFN0cmluZyYmIHJvb3RQYXRoKQorICAgIDogbV9yb290UGF0
aChXVEZNb3ZlKHJvb3RQYXRoKSkKK3sKKyAgICBpZiAoIW1fcm9vdFBhdGguaXNOdWxsKCkpCisg
ICAgICAgIG1faW9RdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNh
Y2hlU3RvcmFnZUVuZ2luZS5zZXJpYWxCYWNrZ3JvdW5kIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJp
YWwsIFdvcmtRdWV1ZTo6UU9TOjpCYWNrZ3JvdW5kKTsKIH0KIAogdm9pZCBFbmdpbmU6Om9wZW4o
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50
aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNzQsNDIgKzkwLDQwIEBAIHZvaWQgRW5naW5l
OjpvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2Fj
aGVJZGVudGlmaWVyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBh
dXRvJiBjYWNoZXMgPSBjYWNoZXNPckVycm9yLnZhbHVlKCkuZ2V0KCk7CisgICAgICAgIENhY2hl
cyYgY2FjaGVzID0gY2FjaGVzT3JFcnJvci52YWx1ZSgpOwogCi0gICAgICAgIGF1dG8gcG9zaXRp
b24gPSBjYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBp
dGVtLm5hbWUgPT0gY2FjaGVOYW1lOyB9KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZv
dW5kKSB7Ci0gICAgICAgICAgICB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIgPSArK21fbmV4dENh
Y2hlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGNhY2hlcy5hcHBlbmQoQ2FjaGUgeyBjYWNoZUlk
ZW50aWZpZXIsIGNhY2hlTmFtZSwgVmVjdG9yPFJlY29yZD4oKSwgMCB9KTsKLSAgICAgICAgICAg
IHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0
ZWQoZXJyb3IudmFsdWUoKSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlSWRlbnRpZmllcik7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjYWxsYmFjayhjYWNo
ZXNbcG9zaXRpb25dLmlkZW50aWZpZXIpOworICAgICAgICBpZiAoYXV0byogY2FjaGUgPSBjYWNo
ZXMuZmluZChjYWNoZU5hbWUpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhjYWNoZS0+aWRlbnRp
Zmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBjYWNoZXMu
b3BlbihTdHJpbmcgeyBjYWNoZU5hbWUgfSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAogdm9pZCBF
bmdpbmU6OnJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxDYWNoZT4gcmVtb3ZlZENh
Y2hlOworICAgIENhY2hlcyogY2FjaGVzVG9Nb2RpZnkgPSBudWxscHRyOwogICAgIGZvciAoYXV0
byYgY2FjaGVzIDogbV9jYWNoZXMudmFsdWVzKCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9
IGNhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0u
aWRlbnRpZmllciA9PSBjYWNoZUlkZW50aWZpZXI7IH0pOwotICAgICAgICBpZiAocG9zaXRpb24g
IT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIHJlbW92ZWRDYWNoZSA9IFdURk1vdmUoY2FjaGVz
W3Bvc2l0aW9uXSk7Ci0gICAgICAgICAgICBjYWNoZXMucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICAg
ICAgYXV0byogY2FjaGVUb1JlbW92ZSA9IGNhY2hlcy0+ZmluZChjYWNoZUlkZW50aWZpZXIpOwor
ICAgICAgICBpZiAoY2FjaGVUb1JlbW92ZSkgeworICAgICAgICAgICAgY2FjaGVzVG9Nb2RpZnkg
PSBjYWNoZXMucHRyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAg
ICBpZiAoIXJlbW92ZWRDYWNoZSkgewotICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChF
cnJvcjo6SW50ZXJuYWwpKTsKKyAgICBpZiAoIWNhY2hlc1RvTW9kaWZ5KSB7CisgICAgICAgIGF1
dG8gcG9zaXRpb24gPSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRv
JiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyOyB9KTsK
KyAgICAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhtYWtlVW5leHBlY3RlZChFcnJvcjo6SW50ZXJuYWwpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayhjYWNoZUlkZW50aWZpZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIG1fcmVtb3ZlZENhY2hlcy5hcHBlbmQoV1RGTW92ZShyZW1vdmVk
Q2FjaGUudmFsdWUoKSkpOwotICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWNoZUlkZW50aWZpZXIs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJy
b3IpIHsKKworICAgIGNhY2hlc1RvTW9kaWZ5LT5yZW1vdmUoY2FjaGVJZGVudGlmaWVyLCBbY2Fj
aGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFs
PEVycm9yPiYmIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgY2Fs
bGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTI2LDE0ICsxNDAsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byYgY2FjaGVzID0gY2FjaGVzT3JF
cnJvci52YWx1ZSgpLmdldCgpOwotCi0gICAgICAgIFZlY3RvcjxDYWNoZUluZm8+IGNhY2hlc0lu
Zm87Ci0gICAgICAgIGNhY2hlc0luZm8ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYWNoZXMuc2l6
ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBjYWNoZSA6IGNhY2hlcykKLSAgICAgICAgICAgIGNh
Y2hlc0luZm8udW5jaGVja2VkQXBwZW5kKENhY2hlSW5mbyB7IGNhY2hlLmlkZW50aWZpZXIsIGNh
Y2hlLm5hbWV9KTsKLQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNhY2hlc0luZm8pKTsKKyAg
ICAgICAgY2FsbGJhY2soY2FjaGVzT3JFcnJvci52YWx1ZSgpLmdldCgpLmNhY2hlSW5mb3MoKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTE0OSw3ICsxNTYsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJh
YwogCiAgICAgICAgIFZlY3RvcjxSZWNvcmQ+IGNvcHk7CiAgICAgICAgIGNvcHkucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcmVjb3Jk
IDogcmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVjb3JkcykKKyAgICAgICAgZm9yIChhdXRvJiByZWNv
cmQgOiByZWNvcmRzKQogICAgICAgICAgICAgY29weS51bmNoZWNrZWRBcHBlbmQocmVjb3JkLmNv
cHkoKSk7CiAKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjb3B5KSk7CkBAIC0yMzQsMjEgKzI0
MSw2MiBAQCB2b2lkIEVuZ2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZQogICAgIH0pOwogfQogCi12b2lkIEVuZ2lu
ZTo6d3JpdGVDYWNoZXNUb0Rpc2soRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYm
KT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjppbml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3Rk
OjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudCB3cml0aW5nLgotICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgaWYgKG1fc2Fs
dCkgeworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKKyAgICAgICAgbV9zYWx0ID0gbWFr
ZVNhbHQoKTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX3Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoInNhbHQiKSk7CisgICAgbV9pb1F1
ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzYWx0UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBh
dGgpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBzYWx0ID0gcmVhZE9yTWFrZVNhbHQoc2FsdFBh
dGgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCFzYWx0KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXJyb3I6OldyaXRlRGlz
ayk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
bV9zYWx0ID0gV1RGTW92ZShzYWx0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9w
dCk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zy
b21EaXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVhZGluZy4KLQotICAgIGF1dG8mIGNhY2hlcyA9
IG1fY2FjaGVzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxDYWNo
ZT4oKTsKKyAgICBhdXRvJiBjYWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBbJm9yaWdp
biwgdGhpc10geworICAgICAgICByZXR1cm4gQ2FjaGVzOjpjcmVhdGUoKnRoaXMsIG9yaWdpbik7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxWZWN0b3I8Q2FjaGU+PiB7IGNhY2hlcyB9KTsKKyAgICBpZiAoY2FjaGVzLT5pc0lu
aXRpYWxpemVkKCkpIHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxD
YWNoZXM+IHsgY2FjaGVzLmdldCgpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aW5pdGlhbGl6ZShbdGhpcywgb3JpZ2luLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShz
dGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9y
KSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNhY2hlcyA9
IG1fY2FjaGVzLmdldChvcmlnaW4pOworICAgICAgICBBU1NFUlQoY2FjaGVzKTsKKworICAgICAg
ICBjYWNoZXMtPmluaXRpYWxpemUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hl
c10oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJv
ci52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBjYWxsYmFjayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlcz4geyAqY2Fj
aGVzIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OnJlYWRDYWNo
ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAg
LTI3OCwxMSArMzI2LDggQEAgQ2FjaGUqIEVuZ2luZTo6Y2FjaGUodWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyKQogewogICAgIENhY2hlKiByZXN1bHQgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYg
Y2FjaGVzIDogbV9jYWNoZXMudmFsdWVzKCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IGNh
Y2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRl
bnRpZmllciA9PSBjYWNoZUlkZW50aWZpZXI7IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gIT0g
bm90Rm91bmQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9ICZjYWNoZXNbcG9zaXRpb25dOworICAg
ICAgICBpZiAoKHJlc3VsdCA9IGNhY2hlcy0+ZmluZChjYWNoZUlkZW50aWZpZXIpKSkKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgfQogICAgIGlmICghcmVzdWx0KSB7CiAgICAg
ICAgIGF1dG8gcG9zaXRpb24gPSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25z
dCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVy
OyB9KTsKQEAgLTMwNSw3ICszNTAsNzUgQEAgVmVjdG9yPHVpbnQ2NF90PiBFbmdpbmU6OnF1ZXJ5
Q2FjaGUoY29uc3QgVmVjdG9yPFJlY29yZD4mIHJlY29yZHMsIGNvbnN0IFdlYkNvcmUKICAgICBy
ZXR1cm4gcmVzdWx0czsKIH0KIAordm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3JlOjpET01DYWNoZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFzaG91bGRQZXJzaXN0
KCkpIHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVk
Q29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpv
cGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSk7CisgICAgICAgIGNoYW5uZWwt
PndyaXRlKDAsIGRhdGEsIG51bGxwdHIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShp
bnQgZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBlcnJvcl0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXJy
b3I6OldyaXRlRGlzayk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnJlYWRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBOZXR3b3Jr
Q2FjaGU6OkRhdGEmLCBpbnQgZXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghc2hvdWxk
UGVyc2lzdCgpKSB7CisgICAgICAgIGNhbGxiYWNrKERhdGEgeyB9LCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZmlsZW5h
bWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBj
aGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQp
OworICAgICAgICBpZiAoY2hhbm5lbC0+ZmlsZURlc2NyaXB0b3IoKSA8IDApIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhEYXRhIHsgfSwgMCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGNoYW5uZWwtPnJlYWQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgbV9p
b1F1ZXVlLmdldCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgRGF0YSYg
ZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZGF0YSwgZXJyb3JdKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soZGF0YSwgZXJyb3IpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6cmVtb3ZlRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQoreworICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZp
bGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBXZWJDb3JlOjpkZWxl
dGVGaWxlKGZpbGVuYW1lKTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OmhhbmRsZVJlbW92
ZWRDYWNoZShDYWNoZSYmIGNhY2hlKQoreworICAgIG1fcmVtb3ZlZENhY2hlcy5hcHBlbmQoV1RG
TW92ZShjYWNoZSkpOworfQorCit2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAgICByZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2lu
LCBbXShDYWNoZXNPckVycm9yJiYgcmVzdWx0KSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc1Zh
bHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHJlc3VsdC52YWx1ZSgpLmdldCgp
LmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgQ2FjaGVTdG9yYWdlCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApp
bmRleCAyOTE3NzEyZmQzZGRlOWNmNDM3MDBlYzAwMjk0NjgzZTZiZGNlZWE4Li43NGZkZjg2Mzcx
ZDcwNmU3NTU5MjhjNzgyOTA1OGViZTUxYWRkZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI1LDgg
KzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAK
IG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTQwLDEwICs0MSwxMyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CiAKLWNsYXNzIEVu
Z2luZSB7CitjbGFzcyBFbmdpbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RW5naW5l
PiB7CiBwdWJsaWM6CisgICAgfkVuZ2luZSgpOworCiAgICAgc3RhdGljIEVuZ2luZSYgZnJvbShQ
QUw6OlNlc3Npb25JRCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveUVuZ2luZShQQUw6OlNlc3Np
b25JRCk7CisgICAgc3RhdGljIFJlZjxFbmdpbmU+IGNyZWF0ZShTdHJpbmcmJiByb290UGF0aCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbmdpbmUoV1RGTW92ZShyb290UGF0aCkpKTsgfQogCiAg
ICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFt
ZSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZv
aWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNh
Y2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwpAQCAtNTMsMTQgKzU3LDI3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZp
ZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2Fj
aGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2Fs
bGJhY2smJik7CiAKKyAgICB2b2lkIGhhbmRsZVJlbW92ZWRDYWNoZShDYWNoZSYmKTsKKyAgICB2
b2lkIHdyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEm
JiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIHJl
YWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBO
ZXR3b3JrQ2FjaGU6OkRhdGEmLCBpbnQgZXJyb3IpPiYmKTsKKyAgICB2b2lkIHJlbW92ZUZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CisKKyAgICBjb25zdCBTdHJpbmcmIHJvb3RQYXRoKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290UGF0aDsgfQorICAgIGNvbnN0IE5ldHdvcmtDYWNoZTo6U2Fs
dCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FsdC52YWx1ZSgpOyB9CisgICAgdWludDY0X3Qg
bmV4dENhY2hlSWRlbnRpZmllcigpIHsgcmV0dXJuICsrbV9uZXh0Q2FjaGVJZGVudGlmaWVyOyB9
CisKKyAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmln
aW4pOworICAgIGJvb2wgc2hvdWxkUGVyc2lzdCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pb1F1ZXVl
OyB9CisKIHByaXZhdGU6CiAgICAgc3RhdGljIEVuZ2luZSYgZGVmYXVsdEVuZ2luZSgpOworICAg
IGV4cGxpY2l0IEVuZ2luZShTdHJpbmcmJik7CiAKLSAgICB2b2lkIHdyaXRlQ2FjaGVzVG9EaXNr
KFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBpbml0
aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZTo6RXJy
b3I+JiYpPiYmKTsKIAotICAgIHVzaW5nIENhY2hlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFZlY3RvcjxDYWNoZT4+LCBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I+
OworICAgIHVzaW5nIENhY2hlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPENhY2hlcz4sIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj47CiAgICAgdXNpbmcgQ2FjaGVz
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVzT3JFcnJvciYmKT47Ci0gICAgdm9p
ZCByZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNr
JiYpOworICAgIHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBG
dW5jdGlvbjx2b2lkKENhY2hlc09yRXJyb3ImJik+JiYpOwogCiAgICAgdXNpbmcgQ2FjaGVPckVy
cm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZT4sIFdlYkNvcmU6OkRP
TUNhY2hlOjpFcnJvcj47CiAgICAgdXNpbmcgQ2FjaGVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChDYWNoZU9yRXJyb3ImJik+OwpAQCAtNzAsMTIgKzg3LDE0IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZW1vdmVDYWNoZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8
dWludDY0X3Q+JiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNr
JiYpOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpET01DYWNoZTo6UmVjb3JkPiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJik7Ci0KICAgICBDYWNoZSogY2FjaGUo
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8
Q2FjaGU+PiBtX2NhY2hlczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPENhY2hlcz4+IG1fY2Fj
aGVzOwogICAgIFZlY3RvcjxDYWNoZT4gbV9yZW1vdmVkQ2FjaGVzOwogICAgIHVpbnQ2NF90IG1f
bmV4dENhY2hlSWRlbnRpZmllciB7IDAgfTsKKyAgICBTdHJpbmcgbV9yb290UGF0aDsKKyAgICBz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtDYWNoZTo6U2FsdD4gbV9zYWx0OworICAgIFJlZlB0cjxXb3Jr
UXVldWU+IG1faW9RdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENhY2hlU3RvcmFnZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZjY4OTk3ZTAzNzlhYjMwZTY2
YzVlMjBhMGJlNjJmZDMxZDA0MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTAsMCAr
MSwyNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5oIgorCisj
aW5jbHVkZSAiTmV0d29ya0NhY2hlQ29kZXJzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGU7Cit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitu
YW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKKworc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzUm9v
dFBhdGgoRW5naW5lJiBlbmdpbmUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIEtleSBr
ZXkoZW5naW5lLnJvb3RQYXRoKCksIHsgfSwgeyB9LCBvcmlnaW4sIGVuZ2luZS5zYWx0KCkpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZW5naW5lLnJvb3RQ
YXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
U3RyaW5nIGNhY2hlc0xpc3RGaWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQor
eworICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9v
dFBhdGgsIEFTQ0lJTGl0ZXJhbCgiY2FjaGVzbGlzdCIpKTsKK30KKworQ2FjaGVzOjpDYWNoZXMo
RW5naW5lJiBlbmdpbmUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQorICAgIDogbV9lbmdpbmUoJmVu
Z2luZSkKKyAgICAsIG1fcm9vdFBhdGgoY2FjaGVzUm9vdFBhdGgoZW5naW5lLCBvcmlnaW4pKQor
eworfQorCit2b2lkIENhY2hlczo6aW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1faXNJbml0aWFsaXplZCB8fCAh
bV9lbmdpbmUgfHwgIW1fZW5naW5lLT5zaG91bGRQZXJzaXN0KCkpIHsKKyAgICAgICAgY2FsbGJh
Y2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0
b3JhZ2UpIHsKKyAgICAgICAgbV9wZW5kaW5nSW5pdGlhbGl6YXRpb25DYWxsYmFja3MuYXBwZW5k
KFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
c3RvcmFnZSA9IFN0b3JhZ2U6Om9wZW4obV9yb290UGF0aCwgU3RvcmFnZTo6TW9kZTo6Tm9ybWFs
KTsKKyAgICBpZiAoIXN0b3JhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soRXJyb3I6OldyaXRlRGlz
ayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9zdG9yYWdlID0gc3RvcmFnZS5yZWxl
YXNlTm9uTnVsbCgpOworICAgIHJlYWRDYWNoZXNGcm9tRGlzayhbdGhpcywgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3I+JiYgcmVzdWx0
KSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdC5lcnJvcigpKTsKKworICAgICAgICAgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tz
ID0gV1RGTW92ZShtX3BlbmRpbmdJbml0aWFsaXphdGlvbkNhbGxiYWNrcyk7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcGVuZGluZ0NhbGxiYWNrcykKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9jYWNoZXMgPSBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAg
bV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
KworICAgICAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3MgPSBXVEZNb3ZlKG1fcGVuZGluZ0luaXRp
YWxpemF0aW9uQ2FsbGJhY2tzKTsKKyAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHBlbmRp
bmdDYWxsYmFja3MpCisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgIH0p
OworfQorCitDYWNoZSogQ2FjaGVzOjpmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBh
dXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVt
KSB7IHJldHVybiBpdGVtLm5hbWUgPT0gbmFtZTsgfSk7CisgICAgcmV0dXJuIChwb3NpdGlvbiAh
PSBub3RGb3VuZCkgPyAmbV9jYWNoZXNbcG9zaXRpb25dIDogbnVsbHB0cjsKK30KKworQ2FjaGUq
IENhY2hlczo6ZmluZCh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIGF1dG8gcG9zaXRpb24g
PSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0
ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICByZXR1cm4gKHBvc2l0aW9uICE9
IG5vdEZvdW5kKSA/ICZtX2NhY2hlc1twb3NpdGlvbl0gOiBudWxscHRyOworfQorCit1aW50NjRf
dCBDYWNoZXM6Om9wZW4oU3RyaW5nJiYgbmFtZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9lbmdpbmUpOworCisgICAgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyID0gbV9lbmdpbmUtPm5leHRDYWNoZUlkZW50aWZpZXIoKTsKKyAgICBtX2NhY2hl
cy5hcHBlbmQoQ2FjaGUgeyBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHsgfSwgMCB9
KTsKKyAgICB3cml0ZUNhY2hlc1RvRGlzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
Y2FjaGVJZGVudGlmaWVyXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3Rl
ZChlcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgY2FsbGJhY2soY2FjaGVJZGVudGlmaWVyKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY2FjaGVJ
ZGVudGlmaWVyOworfQorCit2b2lkIENhY2hlczo6cmVtb3ZlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChtX2VuZ2luZSk7
CisKKyAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBh
dXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisK
KyAgICBBU1NFUlQocG9zaXRpb24gIT0gbm90Rm91bmQpOworCisgICAgYXV0byBjYWNoZSA9IFdU
Rk1vdmUobV9jYWNoZXNbcG9zaXRpb25dKTsKKyAgICBtX2NhY2hlcy5yZW1vdmUocG9zaXRpb24p
OworCisgICAgbV9lbmdpbmUtPmhhbmRsZVJlbW92ZWRDYWNoZShXVEZNb3ZlKGNhY2hlKSk7CisK
KyAgICB3cml0ZUNhY2hlc1RvRGlzayhXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgRGF0YSBlbmNvZGVDYWNoZU5hbWVzKGNvbnN0IFZlY3RvcjxDYWNoZT4mIGNhY2hlcykK
K3sKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CisKKyAgICB1aW50NjRf
dCBzaXplID0gY2FjaGVzLnNpemUoKTsKKyAgICBlbmNvZGVyIDw8IHNpemU7CisgICAgZm9yIChh
dXRvJiBjYWNoZSA6IGNhY2hlcykKKyAgICAgICAgZW5jb2RlciA8PCBjYWNoZS5uYW1lOworCisg
ICAgcmV0dXJuIERhdGEgeyBlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSB9
OworfQorCitzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBFcnJvcj4gZGVj
b2RlQ2FjaGVzTmFtZXMoY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKQoreworICAgIGlmIChl
cnJvcikKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CisK
KyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKKyAgICB1aW50NjRfdCBjb3VudDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
dW50KSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CisK
KyAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKKyAgICBuYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNvdW50KTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsr
aW5kZXgpIHsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWRE
aXNrKTsKKworICAgICAgICBuYW1lcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lKSk7Cisg
ICAgfQorICAgIHJldHVybiBuYW1lczsKK30KKwordm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9t
RGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3I+JiYp
PiYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChtX2VuZ2luZSk7CisgICAgQVNTRVJUKCFtX2lz
SW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX2NhY2hlcy5pc0VtcHR5KCkpOworCisgICAgaWYg
KCFtX2VuZ2luZS0+c2hvdWxkUGVyc2lzdCgpKSB7CisgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxD
YWNoZT4geyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZmlsZW5hbWUg
PSBjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0aCk7CisgICAgaWYgKCFXZWJDb3JlOjpmaWxl
RXhpc3RzKGZpbGVuYW1lKSkgeworICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2VuZ2luZS0+cmVhZEZpbGUoZmlsZW5h
bWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghbV9lbmdpbmUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNo
ZT4geyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8g
cmVzdWx0ID0gZGVjb2RlQ2FjaGVzTmFtZXMoZGF0YSwgZXJyb3IpOworICAgICAgICBpZiAoIXJl
c3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChy
ZXN1bHQuZXJyb3IoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IFZlY3RvcjxDYWNoZT4gY2FjaGVzOworICAgICAgICBjYWNoZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShyZXN1bHQudmFsdWUoKS5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiBy
ZXN1bHQudmFsdWUoKSkKKyAgICAgICAgICAgIGNhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGUg
eyBtX2VuZ2luZS0+bmV4dENhY2hlSWRlbnRpZmllcigpLCBXVEZNb3ZlKG5hbWUpLCB7IH0sIDAg
fSk7CisKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjYWNoZXMpKTsKKyAgICB9KTsKK30KKwor
dm9pZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxi
YWNrKQoreworICAgIGlmICghbV9lbmdpbmUtPnNob3VsZFBlcnNpc3QoKSkgeworICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUKG1fZW5naW5lKTsKKworICAgIGlmIChtX2NhY2hlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
bV9lbmdpbmUtPnJlbW92ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpKTsKKyAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fZW5naW5lLT53cml0ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpLCBl
bmNvZGVDYWNoZU5hbWVzKG1fY2FjaGVzKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKGVycm9yKSk7CisgICAgfSk7Cit9CisgICAgCit2b2lkIENhY2hlczo6Y2xlYXJN
ZW1vcnlSZXByZXNlbnRhdGlvbigpCit7CisgICAgbV9jYWNoZXMuY2xlYXIoKTsKKyAgICBtX2lz
SW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBtX3N0b3JhZ2UgPSBudWxscHRyOworfQorCitWZWN0
b3I8Q2FjaGVJbmZvPiBDYWNoZXM6OmNhY2hlSW5mb3MoKSBjb25zdAoreworICAgIFZlY3RvcjxD
YWNoZUluZm8+IGNhY2hlSW5mb3M7CisgICAgY2FjaGVJbmZvcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fY2FjaGVzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBjYWNoZSA6IG1fY2FjaGVzKQor
ICAgICAgICBjYWNoZUluZm9zLnVuY2hlY2tlZEFwcGVuZChDYWNoZUluZm8geyBjYWNoZS5pZGVu
dGlmaWVyLCBjYWNoZS5uYW1lIH0pOworICAgIHJldHVybiBjYWNoZUluZm9zOworfQorCit9IC8v
IG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTFlODJkYzMxZGYzYTI0ZmMwZmZjOTBiOGM4
NzJhZTBjZDdlYTU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK25hbWVzcGFjZSBDYWNoZVN0b3JhZ2UgeworCitjbGFzcyBFbmdpbmU7CisKK2Ns
YXNzIENhY2hlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlcz4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8Q2FjaGVzPiBjcmVhdGUoRW5naW5lJiBlbmdpbmUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlcyB7IGVuZ2luZSwgb3JpZ2luIH0pOyB9
CisKKyAgICB2b2lkIGluaXRpYWxpemUoV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxs
YmFjayYmKTsKKworICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJ
bml0aWFsaXplZDsgfQorCisgICAgQ2FjaGUqIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAg
ICBDYWNoZSogZmluZCh1aW50NjRfdCBpZGVudGlmaWVyKTsKKworICAgIHVpbnQ2NF90IG9wZW4o
U3RyaW5nJiYgbmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNr
JiYpOworICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNh
Y2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2Fj
aGU6OkNhY2hlSW5mbz4gY2FjaGVJbmZvcygpIGNvbnN0OworCisgICAgdm9pZCBjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKCk7CisgICAgdm9pZCBkZXRhY2goKSB7IG1fZW5naW5lID0gbnVsbHB0
cjsgfQorCitwcml2YXRlOgorICAgIENhY2hlcyhFbmdpbmUmLCBjb25zdCBTdHJpbmcmIHJvb3RQ
YXRoKTsKKworICAgIHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChF
eHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I+JiYpPiYmKTsK
KyAgICB2b2lkIHdyaXRlQ2FjaGVzVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9u
Q2FsbGJhY2smJik7CisKKyAgICBib29sIG1faXNJbml0aWFsaXplZCB7IGZhbHNlIH07CisgICAg
RW5naW5lKiBtX2VuZ2luZSB7IG51bGxwdHIgfTsKKyAgICBTdHJpbmcgbV9yb290UGF0aDsKKyAg
ICBWZWN0b3I8Q2FjaGU+IG1fY2FjaGVzOworICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OlN0b3Jh
Z2U+IG1fc3RvcmFnZTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25D
YWxsYmFjaz4gbV9wZW5kaW5nSW5pdGlhbGl6YXRpb25DYWxsYmFja3M7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBDYWNoZVN0b3JhZ2UKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBiZjQ5OTM4OGYzNjdkMmU5YzZkZTcwZjAw
OTcxNzg2MjAwNTNjNGJjLi5jMDJjYWZkNzAwOTAzZDdiYzM1NmI0MGQ3OWJlOGFjOWY5OWMxNjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTYzLDYgKzYzLDEx
IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxCiAgICAgfSk7CiB9CiAKK3ZvaWQgQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIEVuZ2luZTo6ZnJv
bShzZXNzaW9uSUQpLmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24ob3JpZ2luKTsKK30KKwogdm9p
ZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllcikKIHsKICAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5yZXRyaWV2ZVJlY29yZHMoY2Fj
aGVJZGVudGlmaWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNz
aW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCBmYjNhNjY0ZTU0NWM0ZGFmNzU1OGZk
MTQ5YWExZWExZjFkZjlkNTMzLi4wODJkMWU0NzAzMDU3ZjNkN2IwY2RjMjNlMzQxYTc3MjcwOGU3
NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTQsNiArNTQsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZW1v
dmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lk
IGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAKKyAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50
YXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKwogICAgIHZvaWQg
cmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5
T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJD
b3JlOjpET01DYWNoZTo6UmVjb3JkPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA1OTIyZWVkNjY3Mjc2ZGRjMWU1NGE0ODE4NDNk
ZmJlM2E5ZTUyZGU4Li40ZWFjNzQ4NTdlMjNkNjVlMjE5OGY0ZGUxOWJiZmYyYWQ5Yzc3ZWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBA
IC0yNSw2ICsyNSw4IEBAIG1lc3NhZ2VzIC0+IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24g
ewogICAgIFJlbW92ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIENhY2hlcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTdHJpbmcgb3Jp
Z2luKTsKIAorICAgIENsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTdHJpbmcgb3JpZ2luKTsKKwogICAgIFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKTsKICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkNhY2hlUXVl
cnlPcHRpb25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4gcmVjb3JkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3Bw
CmluZGV4IDMxYWU0OGZlNWFkMmQ5N2RiNmIxY2Y2ODQ3YTJlZjg0YzIwZDA3YjUuLjc0NmRkNmUy
ZGMwNzg5YzFmMmQyNzIwOTViODEyZDhjOGE0NTE1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMTI4
LDcgKzEyOCw3IEBAIGJvb2wgYnl0ZXNFcXVhbChjb25zdCBEYXRhJiBhLCBjb25zdCBEYXRhJiBi
KQogICAgIHJldHVybiAhbWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgYS5zaXplKCkpOwogfQog
Ci1zdGF0aWMgU2FsdCBtYWtlU2FsdCgpCitTYWx0IG1ha2VTYWx0KCkKIHsKICAgICBTYWx0IHNh
bHQ7CiAgICAgc3RhdGljX2Fzc2VydChzYWx0LnNpemUoKSA9PSA4LCAiU2FsdCBzaXplIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RGF0YS5oCmluZGV4IDYwMGI1ZTQ1ODAxMjgwZjhmNDU3NDAwZjQ0ZjYwYWUwOWUzNzg1YWYuLmMy
Yzk5ZDVhZThlNmFlZmUxZDU1MGFiMWYxYzdlMDY1ZTlhNzg3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCkBAIC0x
MDUsNiArMTA1LDcgQEAgRGF0YSBtYXBGaWxlKGNvbnN0IGNoYXIqIHBhdGgpOwogCiB1c2luZyBT
YWx0ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsKIAorU2FsdCBtYWtlU2FsdCgpOwogc3RkOjpv
cHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOwogU0hBMTo6
RGlnZXN0IGNvbXB1dGVTSEExKGNvbnN0IERhdGEmLCBjb25zdCBTYWx0Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQubW0KaW5kZXggYWIwODJhZGVmZjc1NDZjOGZjMDk1YWE4ZDY1YWE5MzEzOTUxZTM4
Yi4uYWE3N2NkMzE4ODE1YTZmZDcxNGU1YWY2ZWNlZGRiYjYyNDEwMmI3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQubW0KQEAgLTEyOSw2ICsxMjksOCBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYQog
ICAgIGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcykK
ICAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7CiAKKyAgICBzZXNzaW9uLT5zZXRD
YWNoZVN0b3JhZ2VEaXJlY3RvcnlOYW1lKFdURk1vdmUocGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VT
dWJkaXJlY3RvcnlOYW1lKSk7CisKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGF1dG8g
bmV0d29ya1Nlc3Npb24gPSBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKHBhcmFtZXRlcnMuc2Vzc2lv
bklELCBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXI+KCkpOwogICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHBhcmFt
ZXRlcnMuc2Vzc2lvbklELCBXVEZNb3ZlKG5ldHdvcmtTZXNzaW9uKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggOTNl
ZjFjOTEyOWY4YjA3NmI3MGI4N2ZkNTQ4NjQxNTlmNjUzMzcyZS4uYmRlYjE1NTgwODJmNmNhNWIz
YmJhYTI5YzA1OTI2ZDk0YzQ5YWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcApAQCAtNDAsNiArNDAsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAg
ICAgZW5jb2RlciA8PCBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNv
ZGVyIDw8IHBlbmRpbmdDb29raWVzOworICAgIGVuY29kZXIgPDwgY2FjaGVTdG9yYWdlU3ViZGly
ZWN0b3J5TmFtZTsKIH0KIAogYm9vbCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCkBAIC01Niw2ICs1Nyw5IEBAIGJvb2wgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhU3RvcmVQCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNhY2hlU3Rv
cmFnZVN1YmRpcmVjdG9yeU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmgKaW5kZXggNjNmYTIzMTM4MTEyOWE4ZmMwYTFhZGI0MTdhYTIzOGFkNThm
ZmQ1ZS4uNzZjYzkzOTE4NDE4YzU3MTA4MWUzZjhkOGZmOTEwYzQ5Yjc5MTFhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC01
MCw2ICs1MCw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAg
ICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBwZW5kaW5nQ29va2llczsKKyAgICBTdHJpbmcgY2Fj
aGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElX
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggMzZhOGZjNmM5NGRhYmEwZWU3MzIwMWExN2I5
ZjNhNTBjZDIwNWVmZS4uODMxNGUwZjFmY2VkMGY2MzllZjQzZTU0ZDhmY2I5ZTQ5ZGZmMjgwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xODYsNiArMTg2LDcgQEAgV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVDb25maWcKIHsKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbjsKIAorICAgIGNvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlU3Vi
ZGlyZWN0b3J5TmFtZSA9ICJDYWNoZVN0b3JhZ2UiOwogICAgIGNvbmZpZ3VyYXRpb24uYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
CiAgICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gIkZpbGVzIjsKICAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9
IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBkYmQwNjlmZTU5MWM3MDQxM2IyOGE3NWQyNGJkZjc4
ZjA4MmQ2NmU1Li5jMDA0NjEwMDA5YzU5NGM4YzliY2IwYzZjY2FjNTkzNGM1YThiNzM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01ODksNyArNTg5
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGUKIHsKICAgICBpZiAobmV0d29ya1Byb2Nlc3Mo
KSkgewogICAgICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgICAgIG5l
dHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHtQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCgpLCB7IH0sIHsgfSwgeyB9fSksIDApOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oe1BBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7
IH0sIHsgfX0pLCAwKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggYjE2YWUwMjgxNjZmZTU5Y2Y1YzFhN2ZhNzI2
NGE3ZGFjMjgzYWE2MC4uMDhjNzI3ZTU1MjM4ZTI5MTY2MjE3Y2M1ZjA5ZjgwMzUyNDYxYjcwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNzUsNiArNzUsOCBAQCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkK
ICAgICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6ZGlyZWN0b3J5TmFt
ZShjb29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRs
ZSk7CiAKKyAgICBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2Nv
bmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFtZTsKKwogICAgIHJldHVybiBw
YXJhbWV0ZXJzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggZTY0MjlhN2ZiMWQxZDhmMTg2MmE2ZmI4
ZTkzNWZjMGYwNTBmOTVlZC4uYWRkOWEwMzI1NDc3MTVkNGQzZTQxMjE1NmY5NGM4OGZjYzljMjRl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaApAQCAtNjgsNiArNjgsNyBAQCBjbGFzcyBXZWJzaXRlRGF0YVN0b3Jl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBXZWJQcm9jZXNz
TAogcHVibGljOgogICAgIHN0cnVjdCBDb25maWd1cmF0aW9uIHsKICAgICAgICAgU3RyaW5nIGNh
Y2hlU3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgU3RyaW5nIGNhY2hlU3RvcmFnZVN1YmRpcmVj
dG9yeU5hbWU7CiAgICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAg
IFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgYXBwbGlj
YXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgyYmJlYjkyNzBmN2MxNGJlNTU1
MWVlMTgxNWQzMjlmZDhhMzAzY2IuLjgzMWRiNzM3YjUwMmE3MDYyZThmZjI1YmEzZGJiMmFhZmQy
NGZmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtODkxLDYgKzg5MSw3IEBACiAJCTQxMzA3NUIyMURFODVGNTgwMDM5RUM2OSAvKiBM
aWJXZWJSVENTb2NrZXRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0
RmFjdG9yeS5oICovOyB9OwogCQk0MTMwNzVCMzFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRD
UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLzsg
fTsKIAkJNDEzMDc1QjQxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBODFERTg1
RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDEzNUZCRDExRjRG
QjgwOTAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1RkJDRjFGNEZCN0YyMDA3NEM0
N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLzsgfTsKIAkJNDE4OTdFQ0YxRjQx
NUQ2MjAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0UxRjQxNUQ1QzAwMTZG
QTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovOyB9OwogCQk0MTg5N0VEMDFG
NDE1RDY1MDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0MxRjQxNUQ1QzAwMTZG
QTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDE4OTdFRDExRjQx
NUQ2ODAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNEMUY0MTVENUMwMDE2RkE0
MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi87IH07CkBAIC0zMTYyLDYgKzMxNjMs
OCBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENTb2NrZXRGYWN0
b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBM
aWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVF
bmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRoID0gTmV0d29yay93
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xh
bmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJNDEz
MDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5o
OyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFu
Zy5vYmpjcHA7IH07CisJCTQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0IxRjQxNUQ1QzAwMTZGQTQy
IC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0QxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIwMSw2ICs4MjA0LDgg
QEAKIAkJCQk0MTg5N0VENjFGNDE1RDg2MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cCAqLywKIAkJCQk0MTg5N0VEMjFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5l
LmggKi8sCiAJCQkJNDFGQUJEMjgxRjREREZEQzAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmggKi8sCisJCQkJNDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAgKi8sCisJCQkJNDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICovLAogCQkJCTQxODk3RUQzMUY0MTVEODUwMDE2RkE0
MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk0MTg5N0VENDFG
NDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oICovLAogCQkJ
CTQxODk3RUQ1MUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluICovLApAQCAtOTk5MSw2ICs5OTk2LDcgQEAKIAkJCQlFMTcwODc2QjE2RDZD
QTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNGMTg2MzgxNjdEMDcxRTAwQTFBODVBIC8qIENhY2hlTW9kZWwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE4OTdFRDcxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MTM1RkJEMTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODk3RUQ5MUY0MTVEOEEw
MDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTJFNTFFMTJF
NEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcAppbmRleCBjM2QxMzAyNzUwOWMzMmIzMjdjMjZkOWU0ZjEwZjYxMzU5MjRi
MjIzLi5iZmQwYmEzYWMyZWM5YTkzOTM3OGRiNTc1NzI1OTVlMjBmODM0OTkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCkBAIC04Niw2ICs4NiwxMiBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246OlB1dFJlY29yZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlk
ZW50aWZpZXIsIHJlY29yZHMpLCAwKTsKIH0KIAordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21w
bGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Q2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgMCk7CisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0
KTsKK30KKwogdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiBy
ZXN1bHQpCiB7CiAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZChyZXF1
ZXN0SWRlbnRpZmllciwgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDI1YWZmY2Yw
MGFkYzA4ZjgyMTRlZDc0ZjUwZmM4MjEzOGMxODFjN2MuLmY1OWUyY2YzMTY1N2ZjZjQ0OTllOWUz
YmIxZjUzZTU4ZmRiZWVkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNjAsNiArNjAsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKICAg
ICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+
JiYpIGZpbmFsOwogCisgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpIGZp
bmFsOworCiAgICAgdm9pZCBvcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwogICAg
IHZvaWQgcmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwogICAgIHZvaWQgdXBk
YXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6
Q2FjaGVJbmZvc09yRXJyb3ImJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGQzNzAzMmFjMjA0ZDQxZDQxMGNmZGQyYTNi
ZThiYzA2NjliYjY4Yi4uY2Y1MzA4ZmU4MWJlYWQ2MmJjNWRmNzc1OWY5MjNhMzdjNWViNTM4MyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA4LTI4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5hbWVzIHBl
cnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQdXR0aW5nIHRoZXNlIHRlc3RzIGluIGh0dHAvdGVzdHMgZm9sZGVyIHNvIHRoYXQgdGhleSBy
dW4gaW4gYSBkaWZmZXJlbnQgb3JpZ2luIGFuZCBzbyBhIGRpZmZlcmVudCBDYWNoZXMgdGhhbiBv
dGhlciB0ZXN0cy4KKyAgICAgICAgVGVzdGluZyBwcml2YXRlIGJyb3dzaW5nIGNhY2hpbmcgYW5k
IGNsZWFyaW5nIHRoZSBtZW1vcnkgcmVwcmVzZW50YXRpb24gd291bGQgcHJvYmFibHkgYWZmZWN0
IG90aGVyIGNhY2hlK3BydmlhdGUgYnJvd3NpbmcgdGVzdHMgdGhhdCB3b3VsZCBydW4gaW4gcGFy
YWxsZWwuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lz
dGVuY3ktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0
b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9jYWNoZS1zdG9yYWdlL3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25z
OiBTa2lwcGluZyBuZXcgdGVzdCBvbiBXSzEuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zOiBEaXR0by4KKwogMjAxNy0wOC0yOCAgTXMyZ2VyICA8TXMyZ2VyQGln
YWxpYS5jb20+CiAKICAgICAgICAgRml4IGRvY3VtZW50LWNyZWF0ZS10b3VjaC5odG1sLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNp
c3RlbmN5Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUt
c3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzJjZDIwYTRjMDI5OWJmZmQwOTI2YzA2MjNkNDc1NzFlYzRhMmNkMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5j
eS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorCisKK1BBU1MgQ2xlYW5pbmcg
ZXhpc3RpbmcgY2FjaGVzIAorUEFTUyBDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24gYW5kIGRp
c2FibGUgZGlzayBwZXJzaXN0ZW5jeSAKK1BBU1MgQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20g
cHJldmlvdXMgdGVzdCAxIAorUEFTUyBDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24gYnV0IGtl
ZXAgZGlzayBwZXJzaXN0ZW5jeSAKK1BBU1MgQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJl
dmlvdXMgdGVzdCAyIAorUEFTUyBBZGRpbmcvUmVtb3ZpbmcgY2FjaGVzIGFuZCBjbGVhcmluZyBp
biBtZW1vcnkgcmVwcmVzZW50YXRpb24gYXQgdmFyaW91cyB0aW1lcyAKK1BBU1MgQ2xlYW5pbmcg
YWRkZWQgY2FjaGVzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hl
LXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFkMGY4OGNhNmZhOWJiZjVlNzMyYjE5MGJhMDNlMzlkZGYzNzRiZWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lz
dGVuY3kuaHR0cHMuaHRtbApAQCAtMCwwICsxLDEyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPkNhY2hlIFN0b3JhZ2U6IHRlc3RpbmcgcGVyc2lzdGVuY3k8L3Rp
dGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iY2hlY2siPjwvZGl2PgorICAgIDxzY3JpcHQ+
CisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMu
a2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB2YXIgcGVuZGluZyA9IFtdOworICAg
ICAgICAgICAgZm9yIChrZXkgb2Yga2V5cykKKyAgICAgICAgICAgICAgICBwZW5kaW5nLnB1c2go
c2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LmFsbChwZW5kaW5nKTsKKyAgICAgICAgfSk7CisgICAgfSwgIkNsZWFuaW5nIGV4aXN0aW5nIGNh
Y2hlcyIpOworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRv
dy5pbnRlcm5hbHMgfHwgIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyIpOworCisgICAgICAgIHRlc3RS
dW5uZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKworICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gInJlYWR5IikgeworICAgICAgICAgICAg
ICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigp
OworICAgICAgICAgICAgICAgICAgICBjaGVjay5pbm5lckhUTUwgPSAiPGlmcmFtZSBzcmM9J3Jl
c291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbCNjaGVjayc+PC9pZnJhbWU+IjsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShldmVudC5kYXRhID09PSBmYWxzZSwgIk5vIGNhY2hlIG9iamVj
dCBzaG91bGQgYmUgZm91bmQiKTsKKyAgICAgICAgCXRlc3RSdW5uZXIuc2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAg
ICAgfSkpOworICAgICAgICAgICAgY2hlY2suaW5uZXJIVE1MID0gIjxpZnJhbWUgc3JjPSdyZXNv
dXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwnPjwvaWZyYW1lPiI7CisgICAgICAg
IH0pCisgICAgfSwgIkNsZWFyIG1lbW9yeSByZXByZXNlbnRhdGlvbiBhbmQgZGlzYWJsZSBkaXNr
IHBlcnNpc3RlbmN5Iik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9y
YWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNl
KTsKKworICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7Cisg
ICAgICAgICAgICB2YXIgcGVuZGluZyA9IFtdOworICAgICAgICAgICAgZm9yIChrZXkgb2Yga2V5
cykKKyAgICAgICAgICAgICAgICBwZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNb
MF0pKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5nKTsKKyAgICAgICAg
fSk7CisgICAgfSwgIkNsZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMSIp
OworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMg
aW50ZXJuYWxzIik7CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwg
dGVzdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRh
dGEgPT09ICJyZWFkeSIpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2Fj
aGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgY2hl
Y2suaW5uZXJIVE1MID0gIjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3kt
aWZyYW1lLmh0bWwjY2hlY2snPjwvaWZyYW1lPiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZXZlbnQu
ZGF0YSA9PT0gdHJ1ZSwgIkEgY2FjaGUgb2JqZWN0IHNob3VsZCBiZSBmb3VuZCIpOworICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIGNoZWNr
LmlubmVySFRNTCA9ICI8aWZyYW1lIHNyYz0ncmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlm
cmFtZS5odG1sJz48L2lmcmFtZT4iOworICAgICAgICB9KQorICAgIH0sICJDbGVhciBtZW1vcnkg
cmVwcmVzZW50YXRpb24gYnV0IGtlZXAgZGlzayBwZXJzaXN0ZW5jeSIpOworCisgICAgcHJvbWlz
ZV90ZXN0KHRlc3QgPT4geworICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4o
a2V5cyA9PiB7CisgICAgICAgICAgICB2YXIgcGVuZGluZyA9IFtdOworICAgICAgICAgICAgZm9y
IChrZXkgb2Yga2V5cykKKyAgICAgICAgICAgICAgICBwZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMu
ZGVsZXRlKGtleXNbMF0pKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5n
KTsKKyAgICAgICAgfSk7CisgICAgfSwgIkNsZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZp
b3VzIHRlc3QgMiIpOworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAo
IXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRl
c3QgcmVxdWlyZXMgaW50ZXJuYWxzIik7CisKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtz
ZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MiIpLCBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MSIpXSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpCisgICAgICAg
IH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGtleXMs
IFsidGVzdDIiLCAidGVzdDEiXSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCk7CisgICAgICAgIH0pLnRoZW4oa2V5
cyA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDIiLCAi
dGVzdDEiXSk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMuZGVsZXRlKCJ0ZXN0MiIp
OworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNh
Y2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5jYWNoZXMua2V5cygpOworICAgICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhrZXlzLCBbInRlc3QxIl0pOworICAgICAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MiIpOworICAg
ICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3Rv
cmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNo
ZXMua2V5cygpOworICAgICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhrZXlzLCBbInRlc3QxIiwgInRlc3QyIl0pOworICAgICAgICB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbc2VsZi5jYWNoZXMuZGVs
ZXRlKCJ0ZXN0MiIpLCBzZWxmLmNhY2hlcy5kZWxldGUoInRlc3QxIildKTsKKyAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1v
cnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMo
KTsKKyAgICAgICAgfSkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoa2V5cywgW10pOworICAgICAgICB9KTsKKyAgICB9LCAiQWRkaW5nL1JlbW92aW5nIGNh
Y2hlcyBhbmQgY2xlYXJpbmcgaW4gbWVtb3J5IHJlcHJlc2VudGF0aW9uIGF0IHZhcmlvdXMgdGlt
ZXMiKTsKKworICAgIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgcmV0dXJuIHNlbGYu
Y2FjaGVzLmtleXMoKS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgdmFyIHBlbmRpbmcgPSBb
XTsKKyAgICAgICAgICAgIGZvciAoa2V5IG9mIGtleXMpCisgICAgICAgICAgICAgICAgcGVuZGlu
Zy5wdXNoKHNlbGYuY2FjaGVzLmRlbGV0ZShrZXlzWzBdKSk7CisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwocGVuZGluZyk7CisgICAgICAgIH0pOworICAgIH0sICJDbGVhbmluZyBhZGRl
ZCBjYWNoZXMiKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL3Jlc291cmNlcy9jYWNoZS1w
ZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3Rv
cmFnZS9yZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTc5Yzk4ZmVmOGU0NGIxNTdhMTNmYzBkOTZhNDJmZjY0ZDQ4NTE2ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMvY2FjaGUt
cGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorICAgIDxzY3JpcHQ+CitmdW5jdGlvbiBkb1Rlc3QoKQoreworICAg
IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCA9PT0gIiNjaGVjayIpIHsKKyAgICAgICAgc2VsZi5j
YWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB3aW5kb3cucGFyZW50LnBv
c3RNZXNzYWdlKGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09ICJ0ZXN0Q2FjaGVOYW1l
IiwgIioiKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZWxm
LmNhY2hlcy5vcGVuKCJ0ZXN0Q2FjaGVOYW1lIikudGhlbigoKSA9PiB7CisgICAgICAgIHdpbmRv
dy5wYXJlbnQucG9zdE1lc3NhZ2UoInJlYWR5IiwgIioiKTsKKyAgICB9KTsKK30KK2RvVGVzdCgp
OworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDE4MTA0OTRhZGEyOThmNDZlYzhm
YzNhNDU1MDkyZmIzZjE1NjJhNC4uZTU4Y2FmYTY2ZmQ3Yzc1Y2Q2OGIzYWNjNWY0ZjJhNjI5MDNl
OGE2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMTAsNiArMTAsNyBAQCBlZGl0aW5nL2lucHV0L2ZvY3VzLWNoYW5nZS13aXRoLW1hcmtl
ZC10ZXh0Lmh0bWwgWyBQYXNzIF0KICMgTm8gc2VydmljZSB3b3JrZXIgaW1wbGVtZW50YXRpb24g
Zm9yIFdLMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMg
WyBTa2lwIF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UgWyBTa2lwIF0KK2h0dHAvdGVzdHMvY2Fj
aGUtc3RvcmFnZSBbIFNraXAgXQogCiAjIFNraXAgV2ViUlRDIGZvciBub3cgaW4gV0sxCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0YyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDM0NTEyNzAwMDc2NGJh
NzQxNzk4NmFmNWI0NTgxNWUwZDc0MmZkOTIuLmRjMDM2ZDQyYTk2ZjFlODBlZTBjZmI3Y2FiZGNm
NjRmN2NiYThjY2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTkzLDYgKzkzLDcgQEAgaHR0cC90ZXN0cy9zc2wvbWVkaWEtc3RyZWFtCiAj
IE5vIHNlcnZpY2Ugd29ya2VyIGltcGxlbWVudGF0aW9uIGZvciBXSzEKIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzIFsgU2tpcCBdCiBodHRwL3dwdC9jYWNo
ZS1zdG9yYWdlIFsgU2tpcCBdCitodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UgWyBTa2lwIF0KIAog
IyBTa2lwIFdlYlJUQyBmb3Igbm93IGluIFdLMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319221</attachid>
            <date>2017-08-28 17:38:06 -0700</date>
            <delta_ts>2017-08-29 16:36:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175995-20170828173805.patch</filename>
            <type>text/plain</type>
            <size>72225</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlhYTc4MGQ4OGNiMzc2
YTQ1ZWVmOTQ5ODI5OTQyNmIxODE5MWQ5Ny4uNTBhYmYxNGQ4MjQ4MThkZDhhYmJhNGQxZWNkZWMx
ZjBiM2JiY2M3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBw
b3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cGVyc2lzdGVuY3kuaHR0cHMuaHRtbAorCisgICAgICAgIEFkZGluZyBtZXRob2QgdG8gY2xlYXIg
dGhlIG1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FjaGUgc3RvcmFnZS4KKyAgICAgICAg
QWRkaW5nIG1ldGhvZCB0byBzZXQgdGhlIGNhY2hlIHN0b3JhZ2UgcGVyc2lzdGVuY3kgKGkuZS4g
d2hldGhlciB0aGUgY2FjaGUgc3RvcmFnZSB3aWxsIHJlYWQvd3JpdGUgb24gdGhlIGRpc2spLgor
ICAgICAgICBFeHBvc2luZyB0aGVzZSBtZXRob2RzIGFzIGludGVybmFscyBzbyB0aGF0IGxheW91
dCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBwZXJzaXN0ZW5jeS4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBSZWFkRGlzayBhbmQgV3JpdGVEaXNrIGVycm9ycyB0aGF0IGFyZSB1c2VkIGJ5
IENhY2hlU3RvcmFnZTo6RW5naW5lLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpzZXRQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjplcnJvclRvRXhj
ZXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRD
YWNoZVN0b3JhZ2VQZXJzaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE3LTA4
LTI4ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFtXUEVdIFJlbmFtZSBFdmVudEhhbmRsZXJHbGliIHRvIEV2ZW50SGFuZGxl
ckdMaWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggM2I5NTg0Mjg1MDNhMWJjN2E0MTY3YjRkY2Q4M2RhZGJhOTUwODU2
YS4uYmFmYzA4M2JlYTU5MTgwNWJlMWNmMGRkZDJkNmY3MjhkYWNkNzdmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMDUgQEAKKzIwMTctMDgtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrIGNsb25lIGlzIG5v
dCBhIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwMzYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgZGlzayByZWFkL3dyaXRlIGNhcGFjaXRp
ZXMgdG8gQ2FjaGVTdG9yYWdlIGVuZ2luZS4KKyAgICAgICAgVGhpcyBpcyB1c2VkIHRvIHN0b3Jl
IHBlci1vcmlnaW4gY2FjaGUgbmFtZXMgaW4gYSBmaWxlLgorICAgICAgICBNYWtpbmcgRW5naW5l
IGEgdGhyZWFkIHNhZmUgcmVmY291bnRlZCBvYmplY3Qgc28gdGhhdCBpdCBkb2VzIHJlYWQvd3Jp
dGUgaW4gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKworICAgICAgICBJbnRyb2R1Y2luZyBDYWNoZVN0
b3JhZ2U6OkNhY2hlcyBhcyB0aGUgb2JqZWN0IG1hbmFnaW5nIHRoZSBsaXN0IG9mIENhY2hlIG9i
amVjdHMgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorICAgICAgICBDYWNoZXMgd2lsbCBiZSByZXNwb25z
aWJsZSB0byBkbyBhbGwgdGhlIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBmb3IgYWxsIG9mIGl0cyBj
YWNoZXMuCisgICAgICAgIEl0IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHF1b3RhIGxpbWl0YXRp
b24gYXMgd2VsbC4KKworICAgICAgICBNb3ZpbmcgcGFydCBvZiB0aGUgbG9naWMgZnJvbSBDYWNo
ZVN0b3JhZ2U6OkVuZ2luZSBpbnRvIENhY2hlU3RvcmFnZTo6Q2FjaGVzLgorCisgICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lIGlzIGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5IGFzIGl0IGZp
cnN0IGNyZWF0ZXMgYSBzYWx0IHdoaWNoIGlzIHVzZWQKKyAgICAgICAgdG8gb2JmdXNjYXRlIHRo
ZSBuYW1lcyBvZiB0aGUgdmFyaW91cyBmaWxlcyBzdG9yZWQgb24gZGlzay4KKworICAgICAgICBJ
biB0aGUgc2FtZSBzcGlyaXQsIENhY2hlU3RvcmFnZTo6Q2FjaGVzIGlzIGluaXRpYWxpemVkIGFz
eW5jaHJvbm91c2x5IGFzIGl0IG5lZWRzIHRvIHJlYWQgZnJvbSB0aGUgZGlzayB0aGUgbGlzdCBv
ZiBjYWNoZSBuYW1lcy4KKyAgICAgICAgT25jZSByZWFkLCB0aGUgbmFtZXMgd2lsbCBiZSBzdG9y
ZWQgaW4gbWVtb3J5LgorICAgICAgICBBZGRlZCB0aGUgcG9zc2liaWxpdHkgdG8gY2xlYXIgdGhp
cyBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24uIFRoaXMgd2lsbCBiZSB1c2VmdWwgZm9yIHRlc3Rp
bmcuCisgICAgICAgIFRoaXMgbWlnaHQgYWxzbyBiZSB1c2VmdWwgdG8gc2F2ZSBtZW1vcnkgd2hl
biB0aGVyZSBpcyBubyBtb3JlIHVzZSBvZiBDYWNoZVN0b3JhZ2UgYnkgd2ViIHBhZ2VzLgorCisg
ICAgICAgIEludHJvZHVjaW5nIGEgbmV3IGNhY2hlU3RvcmFnZVN1YmRpcmVjdG9yeU5hbWUgcGFy
YW1ldGVyIGZvciBXZWJzaXRlRGF0YVN0b3JlIHNvIGFzIHRvIHNlZ21lbnQgdGhlIGRpZmZlcmVu
dCBwZXIgc2Vzc2lvbiBDYWNoZVN0b3JhZ2VFbmdpbmUKKyAgICAgICAgaW4gZGlyZWN0IHN1YiBm
b2xkZXJzIG9mIHRoZSBtYWluIGNhY2hlU3RvcmFnZURpcmVjdG9yeSBmb2xkZXIuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2FjaGVTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Z2xvYmFsRW5naW5lTWFwKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6On5FbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6ZnJvbSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpk
ZWZhdWx0RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OkVu
Z2luZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlbW92ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6d3JpdGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnJlYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnJlbW92ZUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6aGFuZGxlUmVtb3ZlZENhY2hlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnJvb3RQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnNhbHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6bmV4dENhY2hlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpzaG91bGRQZXJzaXN0IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpjYWNoZXNSb290UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6Y2FjaGVzTGlzdEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpDYWNoZXM6OkNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGVzOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6OmZpbmQpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6b3Blbik6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZW1vdmUpOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OmVuY29kZUNhY2hlTmFtZXMpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OmRlY29kZUNhY2hlc05hbWVzKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjp3cml0ZUNhY2hlc1RvRGlzayk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmNhY2hlSW5mb3MgY29uc3Qp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oLgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmlzSW5pdGlhbGl6ZWQg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6ZGV0YWNoKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFrZVNhbHQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9t
YWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAg
ICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6
CisKIDIwMTctMDgtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFdlYkRyaXZlcjogaW1wbGVtZW50IHNjcmVlbiBjYXB0dXJlIGNvbW1hbmRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oCmluZGV4IGYyMDgwZGM5OTFiZmE1YjRlNTQzNmNkNzU3Y2RiZDVmMTI4OWEwNzgu
LjRjNDIyNzEwNWRkMzU1N2EzYmU2ZjgzYTk0OTE3ZGIwZjQ0N2NkMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBA
IC00NSw2ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVy
eU9wdGlvbnMmJiwgRE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAg
dm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxE
T01DYWNoZTo6UmVjb3JkPiYmLCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYm
KTsKIAorICAgIC8vIFVzZWQgb25seSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAq
LywgRE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERP
TUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisKIHByb3RlY3RlZDoKICAgICBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAgZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzM2RhODA4NTQ0NWJkYzhmMGFhZGNlODgyOGU2ZWRm
NDk5MGI4MTljLi4zM2YyNzRkZGI1YmY2MzIzMGRkYTRiZGNiN2EwZTcxMTYxZjlmOWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtNDAsNiArNDAsMTAg
QEAgRXhjZXB0aW9uIGVycm9yVG9FeGNlcHRpb24oRXJyb3IgZXJyb3IpCiAgICAgc3dpdGNoIChl
cnJvcikgewogICAgIGNhc2UgRXJyb3I6Ok5vdEltcGxlbWVudGVkOgogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVu
dGVkIikgfTsKKyAgICBjYXNlIEVycm9yOjpSZWFkRGlzazoKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgcmVhZGluZyBkYXRhIGZyb20g
dGhlIGZpbGUgc3lzdGVtIikgfTsKKyAgICBjYXNlIEVycm9yOjpXcml0ZURpc2s6CisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHdyaXRp
bmcgZGF0YSB0byB0aGUgZmlsZSBzeXN0ZW0iKSB9OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3Ii
KSB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCBj
MjEyM2E5NGEzNjQ1Mjk2NmUzMmFhMzRmNjcyNjQ2ZWYxMTViNDUzLi5lZWJlNjY3ODI3NDA5MWFj
MGI3NTRiMmM1YzM0ZDA4Yjk4MTNmNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCkBAIC00MCw2ICs0MCw4IEBAIG5hbWVzcGFjZSBET01DYWNoZSB7CiAKIGVudW0g
Y2xhc3MgRXJyb3IgewogICAgIE5vdEltcGxlbWVudGVkLAorICAgIFJlYWREaXNrLAorICAgIFdy
aXRlRGlzaywKICAgICBJbnRlcm5hbAogfTsKIApAQCAtOTQsNiArOTYsOCBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj4gewogICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvciwK
ICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCwKKyAgICAg
ICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yOjpSZWFkRGlzaywKKyAgICAgICAgV2ViQ29yZTo6
RE9NQ2FjaGU6OkVycm9yOjpXcml0ZURpc2ssCiAgICAgICAgIFdlYkNvcmU6OkRPTUNhY2hlOjpF
cnJvcjo6SW50ZXJuYWwKICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGQ4YTk2MTgyOWEw
NTJhMDZjOWEzOTBlOTdkMDAzYjQ0ZjRiYzA5OGQuLmRjOTRlOTM1OGVmNzE0ZTY1OGQ2NmFjNmU1
MzllZjQ2MzNlY2UyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6
CiAgICAgTlNIVFRQQ29va2llU3RvcmFnZSAqbnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CiAjZW5k
aWYKIAorICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFtZTsgfQorICAgIHZvaWQg
c2V0Q2FjaGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcmJiBuYW1lKSB7IG1fY2FjaGVT
dG9yYWdlU3ViZGlyZWN0b3J5TmFtZSA9IFdURk1vdmUobmFtZSk7IH0KKwogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllckJhc2UsIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmKTsKICAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJik7CkBAIC0x
MzksNiArMTQyLDggQEAgcHJpdmF0ZToKIAogICAgIENyZWRlbnRpYWxTdG9yYWdlIG1fY3JlZGVu
dGlhbFN0b3JhZ2U7CiAKKyAgICBTdHJpbmcgbV9jYWNoZVN0b3JhZ2VTdWJkaXJlY3RvcnlOYW1l
OworCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgYm9vbCBz
aG91bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFN0cmluZyYgdG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbikgY29uc3Q7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbnNGb3JDb29raWVQYXJ0aXRpb25pbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q0ZOZXQuY3BwCmluZGV4IDdlOTAzMmMzNDNlMWRkZmU3NDk4N2VhMzkxMTMwOWU4ZjM1MjI5NGIu
LjA2Y2JjMjM1NTQ3YmE2MzNkNWIwZmM2ZTdlZWJmNTc4YTRlNjUzMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC03NCw2ICs3NCw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0
YWluUHRyCiAgICAgLCBtX3BsYXRmb3JtU2Vzc2lvbihXVEZNb3ZlKHBsYXRmb3JtU2Vzc2lvbikp
CiB7CiAgICAgbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2Ug
PyBXVEZNb3ZlKHBsYXRmb3JtQ29va2llU3RvcmFnZSkgOiBjb29raWVTdG9yYWdlKCk7CisgICAg
bV9jYWNoZVN0b3JhZ2VTdWJkaXJlY3RvcnlOYW1lID0gImRlZmF1bHQiOwogfQogCiBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIGRlZmF1bHROZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg0Mjc1
ZGYzMzU5YzJjNzIxNDE1NmYyM2Q2MWM5ODViZGNkYTQ3MDMuLmY4NGQxYWVhYzc0NTU3ZTA0NTU3
OTRiZGE4NzI2N2Y4MDAxYmFmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuaCIKICNpbmNsdWRlICJD
U1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdXBwb3J0c1J1bGUuaCIKKyNpbmNsdWRlICJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIu
aCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00MTM2LDQgKzQxMzgsMTkgQEAgU3RyaW5n
IEludGVybmFsczo6YXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSBjb25zdAogICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogfQogCit2b2lkIEludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlS
ZXByZXNlbnRhdGlvbigpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3Vt
ZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFt
X2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBjb250
ZXh0RG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uID0gcGFnZS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKHBhZ2UtPnNlc3Npb25JRCgpKTsKKyAgICAgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihkb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKS50b1N0cmluZygpLCBbXShzdGQ6Om9wdGlvbmFsPERPTUNhY2hlOjpFcnJvcj4mJikg
eyB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKaW5kZXggZDI3ODI3ZDEzNmU5ZmEwZTBmODI0NDI4OWU0OGVhZjdiZDJlMmIzOC4uMmI4
MTQ2MDRkYzVlZWM3YjM4ZTc5NDYzMzAwMzI4NzViZGFlZGYwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC00Myw2ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNzIENhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiBjbGFzcyBE
T01SZWN0OwogY2xhc3MgRE9NUmVjdExpc3Q7CiBjbGFzcyBET01VUkw7CkBAIC01OTgsNiArNTk5
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGF1ZGlvU2Vzc2lvbkNhdGVnb3J5KCkgY29uc3Q7
CiAKKyAgICB2b2lkIGNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAgICBEb2N1bWVu
dCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CkBAIC02MTgsNiArNjIxLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclN0dWJGcm9udGVuZD4gbV9p
bnNwZWN0b3JGcm9udGVuZDsKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9j
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDQyNzFhZTJmMjZiMDI3NjBkYmVlNTEy
MTk2ZmU2MGE4ZmFiYWY4MTQuLmU4N2E3NGM1OGFjNWMyYzZmMWY5OGIxZWM4YmVmYWU0MTExOTEy
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU0NCw1ICs1NDQsNyBA
QCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNXSB2b2lkIHJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW0gc3RyZWFtLCBN
ZWRpYVN0cmVhbVRyYWNrIHRyYWNrKTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2
b2lkIHNpbXVsYXRlTWVkaWFTdHJlYW1UcmFja0NhcHR1cmVTb3VyY2VGYWlsdXJlKE1lZGlhU3Ry
ZWFtVHJhY2sgdHJhY2spOwogCisgICAgdm9pZCBjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJl
c2VudGF0aW9uKCk7CisKICAgICBET01TdHJpbmcgYXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dAppbmRleCBjZDQxOGI5ODcyNGNkYWMxODhlYjVlMWFiMjQ4Y2UwYTQy
Nzk2ZmRmLi4yNGQ2MzY3NzQzYzY0OTE1MmYzMjliZTVlYmMzZDMyZTM2MjdmODE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKQEAgLTExNyw2ICsxMTcsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBiMmE3NDIwOGYzY2E5MTA5YWI1
NmZkNGYwY2NiNjcxODA4MjdmOGVjLi4wZjNmZGFmNTU2ZWYyMDUwZTBkZjA3ZjZjNTUwZmY3ZjQ5
MmFhMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDQ2LDcgKzQ0Niw3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHtQQUw6
OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgeyB9fSk7Cisg
ICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oe1BBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7
IH0sIHsgfX0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMWFhYTM1N2IwZTExZmVh
YWVmMzE5YzM3ZmU4ZWVkN2E0NTVhZTAyZC4uMTZjOTg4M2MxZTc3MmYzYjExODczZTg2NjhkYjkz
MTRkZjUxMzRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJgog
CiAgICAgLy8gRklYTUU6IGluc3RlYWQgb2YgaGFuZGxpbmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ug
c2hvdWxkIGJlIHNlbnQgbGF0ZXIgKHNjYWxlcyB0byBtdWx0aXBsZSBzZXNzaW9ucykKICAgICBp
ZiAocGFyYW1ldGVycy5wcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7UEFMOjpTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIHsgfX0pOworICAgICAgICBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7UEFM
OjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIHsgfSwgeyB9
fSk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24p
CiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lv
bigpOwpAQCAtNzAxLDYgKzcwMSwyNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaERO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogICAgIFdlYkNvcmU6OnByZWZldGNoRE5TKGhvc3Ru
YW1lKTsKIH0KIAorU3RyaW5nIE5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VEaXJlY3Rvcnko
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdAoreworICAgIGlmIChzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChtX2NhY2hlU3RvcmFn
ZURpcmVjdG9yeS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8qIHNl
c3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCk7
CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgY29uc3QgYXV0
byYgbmFtZSA9IHNlc3Npb24tPmNhY2hlU3RvcmFnZVN1YmRpcmVjdG9yeU5hbWUoKTsKKyAgICBp
ZiAobmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnksIG5h
bWUpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5p
dGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
JikKIHsKQEAgLTcxNyw2ICs3MzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXpl
U2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcgogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c3luY0FsbENvb2tpZXMoKQogewogfQorCiAjZW5kaWYKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKaW5kZXggNTA2ZjQ5MjU1ZTEyMWY3ZTY1ZTlkYmNlZGYzNzBlMmExYWM3MjE4YS4u
ZTVhMmU4YjY2ZDM5NGU5OTcwNTIzNDI2ZjNhNjA5ZGViYWQ3NjFlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTM0LDcgKzEzNCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29u
c3QgeyByZXR1cm4gbV9sb2FkVGhyb3R0bGVMYXRlbmN5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBj
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlU3RvcmFnZURpcmVj
dG9yeTsgfQorICAgIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3RvcnkoUEFMOjpTZXNzaW9uSUQp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHAKaW5kZXggOTNjYTgxOWI0OTQxY2QyMzQwZWE0ZWM4NjRkZGEwMzZmMDU5NzRiNS4uMTc4ZjVl
Mjk1MWRlOWM3YmU2MDc5OTQ5OTAzYjgwMjA1MTI0MmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApA
QCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlU3Rv
cmFnZUVuZ2luZS5oIgogCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRp
b25zLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CkBAIC0zMywyNSArMzUsMzEgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFj
ZSBDYWNoZVN0b3JhZ2UgewogCi1zdGF0aWMgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1
bmlxdWVfcHRyPEVuZ2luZT4+JiBnbG9iYWxFbmdpbmVNYXAoKQorc3RhdGljIEhhc2hNYXA8UEFM
OjpTZXNzaW9uSUQsIFJlZlB0cjxFbmdpbmU+PiYgZ2xvYmFsRW5naW5lTWFwKCkKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVf
cHRyPEVuZ2luZT4+PiBtYXA7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UEFM
OjpTZXNzaW9uSUQsIFJlZlB0cjxFbmdpbmU+Pj4gbWFwOworCiAgICAgcmV0dXJuIG1hcDsKIH0K
IAotRW5naW5lJiBFbmdpbmU6OmZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorRW5naW5l
Ojp+RW5naW5lKCkKIHsKLSAgICBpZiAoc2Vzc2lvbklEID09IFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpCi0gICAgICAgIHJldHVybiBkZWZhdWx0RW5naW5lKCk7CisgICAgZm9y
IChhdXRvJiBjYWNoZXMgOiBtX2NhY2hlcy52YWx1ZXMoKSkKKyAgICAgICAgY2FjaGVzLT5kZXRh
Y2goKTsKK30KIAotICAgIHJldHVybiAqZ2xvYmFsRW5naW5lTWFwKCkuZW5zdXJlKHNlc3Npb25J
RCwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbmdpbmU+KCk7Ci0gICAg
fSkuaXRlcmF0b3ItPnZhbHVlOworRW5naW5lJiBFbmdpbmU6OmZyb20oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gZ2xvYmFsRW5naW5lTWFwKCkuYWRk
KHNlc3Npb25JRCwgbnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gRW5naW5lOjpjcmVhdGUoTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZURpcmVjdG9yeShzZXNzaW9uSUQpKTsKKyAg
ICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgRW5naW5lOjpk
ZXN0cm95RW5naW5lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTYyLDggKzcwLDE3IEBA
IHZvaWQgRW5naW5lOjpkZXN0cm95RW5naW5lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAog
RW5naW5lJiBFbmdpbmU6OmRlZmF1bHRFbmdpbmUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxzdGQ6OnVuaXF1ZV9wdHI8RW5naW5lPj4gZGVmYXVsdEVuZ2luZSA9IHsgc3RkOjptYWtl
X3VuaXF1ZTxFbmdpbmU+KCkgfTsKLSAgICByZXR1cm4gKmRlZmF1bHRFbmdpbmUuZ2V0KCk7Cisg
ICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8RW5naW5lPj4gZGVmYXVsdEVuZ2luZSA9IHsg
RW5naW5lOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZURp
cmVjdG9yeShzZXNzaW9uSUQpKSB9OworICAgIHJldHVybiBkZWZhdWx0RW5naW5lLmdldCgpOwor
fQorCitFbmdpbmU6OkVuZ2luZShTdHJpbmcmJiByb290UGF0aCkKKyAgICA6IG1fcm9vdFBhdGgo
V1RGTW92ZShyb290UGF0aCkpCit7CisgICAgZnByaW50ZihzdGRlcnIsICJDcmVhdGluZyBlbmdp
bmUgd2l0aCByb290IHBhdGggJXNcbiIsIG1fcm9vdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAg
aWYgKCFtX3Jvb3RQYXRoLmlzTnVsbCgpKQorICAgICAgICBtX2lvUXVldWUgPSBXb3JrUXVldWU6
OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DYWNoZVN0b3JhZ2VFbmdpbmUuc2VyaWFsQmFja2dy
b3VuZCIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6QmFja2dyb3Vu
ZCk7CiB9CiAKIHZvaWQgRW5naW5lOjpvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAg
LTc0LDQyICs5MSw0MCBAQCB2b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllcgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byYgY2FjaGVzID0gY2FjaGVzT3JFcnJvci52
YWx1ZSgpLmdldCgpOworICAgICAgICBDYWNoZXMmIGNhY2hlcyA9IGNhY2hlc09yRXJyb3IudmFs
dWUoKTsKIAotICAgICAgICBhdXRvIHBvc2l0aW9uID0gY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0o
Y29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5uYW1lID09IGNhY2hlTmFtZTsgfSk7Ci0g
ICAgICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyID0gKyttX25leHRDYWNoZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBj
YWNoZXMuYXBwZW5kKENhY2hlIHsgY2FjaGVJZGVudGlmaWVyLCBjYWNoZU5hbWUsIFZlY3RvcjxS
ZWNvcmQ+KCksIDAgfSk7Ci0gICAgICAgICAgICB3cml0ZUNhY2hlc1RvRGlzayhbY2FjaGVJZGVu
dGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9y
PiYmIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBj
YWxsYmFjayhjYWNoZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgY2FsbGJhY2soY2FjaGVzW3Bvc2l0aW9uXS5pZGVudGlmaWVyKTsKKyAg
ICAgICAgaWYgKGF1dG8qIGNhY2hlID0gY2FjaGVzLmZpbmQoY2FjaGVOYW1lKSkgeworICAgICAg
ICAgICAgY2FsbGJhY2soY2FjaGUtPmlkZW50aWZpZXIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAKKyAgICAgICAgY2FjaGVzLm9wZW4oU3RyaW5nIHsgY2FjaGVOYW1lIH0sIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9y
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRW5naW5lOjpyZW1vdmUodWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIHN0
ZDo6b3B0aW9uYWw8Q2FjaGU+IHJlbW92ZWRDYWNoZTsKKyAgICBDYWNoZXMqIGNhY2hlc1RvTW9k
aWZ5ID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVlcygp
KSB7Ci0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBjYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25z
dCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVy
OyB9KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBy
ZW1vdmVkQ2FjaGUgPSBXVEZNb3ZlKGNhY2hlc1twb3NpdGlvbl0pOwotICAgICAgICAgICAgY2Fj
aGVzLnJlbW92ZShwb3NpdGlvbik7CisgICAgICAgIGF1dG8qIGNhY2hlVG9SZW1vdmUgPSBjYWNo
ZXMtPmZpbmQoY2FjaGVJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGNhY2hlVG9SZW1vdmUpIHsK
KyAgICAgICAgICAgIGNhY2hlc1RvTW9kaWZ5ID0gY2FjaGVzLnB0cigpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFyZW1vdmVkQ2FjaGUpIHsKLSAgICAg
ICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkludGVybmFsKSk7CisgICAgaWYgKCFj
YWNoZXNUb01vZGlmeSkgeworICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9yZW1vdmVkQ2FjaGVz
LmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlm
aWVyID09IGNhY2hlSWRlbnRpZmllcjsgfSk7CisgICAgICAgIGlmIChwb3NpdGlvbiA9PSBub3RG
b3VuZCkgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkludGVy
bmFsKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2so
Y2FjaGVJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3JlbW92ZWRD
YWNoZXMuYXBwZW5kKFdURk1vdmUocmVtb3ZlZENhY2hlLnZhbHVlKCkpKTsKLSAgICB3cml0ZUNh
Y2hlc1RvRGlzayhbY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7CisKKyAgICBjYWNoZXNUb01vZGlmeS0+
cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW2NhY2hlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgewogICAgICAgICBp
ZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZh
bHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyNiwxNCArMTQxLDcgQEAgdm9pZCBF
bmdpbmU6OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWNoZUluZm9zQ2Fs
bGJhY2smJiBjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGF1dG8mIGNhY2hlcyA9IGNhY2hlc09yRXJyb3IudmFsdWUoKS5nZXQoKTsKLQotICAgICAg
ICBWZWN0b3I8Q2FjaGVJbmZvPiBjYWNoZXNJbmZvOwotICAgICAgICBjYWNoZXNJbmZvLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoY2FjaGVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgY2Fj
aGUgOiBjYWNoZXMpCi0gICAgICAgICAgICBjYWNoZXNJbmZvLnVuY2hlY2tlZEFwcGVuZChDYWNo
ZUluZm8geyBjYWNoZS5pZGVudGlmaWVyLCBjYWNoZS5uYW1lfSk7Ci0KLSAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShjYWNoZXNJbmZvKSk7CisgICAgICAgIGNhbGxiYWNrKGNhY2hlc09yRXJyb3Iu
dmFsdWUoKS5nZXQoKS5jYWNoZUluZm9zKCkpOwogICAgIH0pOwogfQogCkBAIC0xNDksNyArMTU3
LDcgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWMKIAogICAgICAgICBWZWN0b3I8UmVjb3JkPiBj
b3B5OwogICAgICAgICBjb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkp
OwotICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJlc3VsdC52YWx1ZSgpLmdldCgpLnJlY29y
ZHMpCisgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3JkcykKICAgICAgICAgICAgIGNv
cHkudW5jaGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOwogCiAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUoY29weSkpOwpAQCAtMjM0LDIxICsyNDIsNjIgQEAgdm9pZCBFbmdpbmU6OmRlbGV0ZU1h
dGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmUKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OndyaXRlQ2FjaGVzVG9EaXNrKEZ1bmN0aW9u
PHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6
aW5pdGlhbGl6ZShGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmIGNhbGxi
YWNrKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd3JpdGluZy4KLSAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQpOworICAgIGlmIChtX3NhbHQpIHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpu
dWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc2hvdWxkUGVyc2lz
dCgpKSB7CisgICAgICAgIG1fc2FsdCA9IG1ha2VTYWx0KCk7CisgICAgICAgIGNhbGxiYWNrKHN0
ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgc2FsdFBh
dGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgQVNDSUlM
aXRlcmFsKCJzYWx0IikpOworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Fs
dFBhdGggPSBXVEZNb3ZlKHNhbHRQYXRoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFdlYkNvcmU6
Om1ha2VBbGxEaXJlY3RvcmllcyhtX3Jvb3RQYXRoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywg
c2FsdCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghc2FsdCkgeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURpc2spOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fc2FsdCA9IFdURk1vdmUoc2FsdCk7CisgICAg
ICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0K
IAogdm9pZCBFbmdpbmU6OnJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Q2FjaGVzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJl
YWRpbmcuCi0KLSAgICBhdXRvJiBjYWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBbXSB7
Ci0gICAgICAgIHJldHVybiBWZWN0b3I8Q2FjaGU+KCk7CisgICAgYXV0byYgY2FjaGVzID0gbV9j
YWNoZXMuZW5zdXJlKG9yaWdpbiwgWyZvcmlnaW4sIHRoaXNdIHsKKyAgICAgICAgcmV0dXJuIENh
Y2hlczo6Y3JlYXRlKCp0aGlzLCBvcmlnaW4pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAot
ICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VmVjdG9yPENhY2hlPj4geyBjYWNo
ZXMgfSk7CisgICAgaWYgKGNhY2hlcy0+aXNJbml0aWFsaXplZCgpKSB7CisgICAgICAgIGNhbGxi
YWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiB7IGNhY2hlcy5nZXQoKSB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluaXRpYWxpemUoW3RoaXMsIG9yaWdpbiwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikg
bXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2sobWFr
ZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byBjYWNoZXMgPSBtX2NhY2hlcy5nZXQob3JpZ2luKTsKKyAgICAg
ICAgQVNTRVJUKGNhY2hlcyk7CisKKyAgICAgICAgY2FjaGVzLT5pbml0aWFsaXplKFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBjYWNoZXNdKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJy
b3IpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAg
Y2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgKmNhY2hlcyB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBD
YWNoZUNhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC0yNzgsMTEgKzMyNyw4IEBAIENhY2hlKiBFbmdp
bmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKICAgICBDYWNoZSogcmVzdWx0
ID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVlcygpKSB7
Ci0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBjYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBh
dXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyOyB9
KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSAmY2FjaGVzW3Bvc2l0aW9uXTsKKyAgICAgICAgaWYgKChyZXN1bHQgPSBjYWNoZXMtPmZp
bmQoY2FjaGVJZGVudGlmaWVyKSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAg
IH0KICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9yZW1vdmVk
Q2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5p
ZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcjsgfSk7CkBAIC0zMDUsNyArMzUxLDc3IEBAIFZl
Y3Rvcjx1aW50NjRfdD4gRW5naW5lOjpxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmQ+JiBy
ZWNvcmRzLCBjb25zdCBXZWJDb3JlCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CiAKK3ZvaWQgRW5n
aW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRh
JiYgZGF0YSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2lvUXVldWUtPmRpc3Bh
dGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBkYXRhID0gV1RGTW92ZShkYXRhKSwg
ZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBl
OjpDcmVhdGUpOworICAgICAgICBjaGFubmVsLT53cml0ZSgwLCBkYXRhLCBudWxscHRyLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oaW50IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgZXJyb3JdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURpc2spOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgRW5naW5lOjpyZWFkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgTmV0d29ya0NhY2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJiBj
YWxsYmFjaykKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgInJlYWRpbmcgZmlsZSAlcz9cbiIsIGZp
bGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7CisgICAg
ICAgIGNhbGxiYWNrKERhdGEgeyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBm
cHJpbnRmKHN0ZGVyciwgInJlYWRpbmcgZmlsZSBhY3R1YWxseSAlc1xuIiwgZmlsZW5hbWUudXRm
OCgpLmRhdGEoKSk7CisKKyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGZpbGVu
YW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
Y2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBlOjpSZWFk
KTsKKyAgICAgICAgaWYgKGNoYW5uZWwtPmZpbGVEZXNjcmlwdG9yKCkgPCAwKSB7CisgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRGF0YSB7IH0sIDApOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIG1f
aW9RdWV1ZS5nZXQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IERhdGEm
IGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRhdGEsIGVycm9yXSgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEsIGVycm9yKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnJlbW92ZUZp
bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbZmlsZW5hbWUgPSBm
aWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgV2ViQ29yZTo6ZGVs
ZXRlRmlsZShmaWxlbmFtZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgRW5naW5lOjpoYW5kbGVSZW1v
dmVkQ2FjaGUoQ2FjaGUmJiBjYWNoZSkKK3sKKyAgICBtX3JlbW92ZWRDYWNoZXMuYXBwZW5kKFdU
Rk1vdmUoY2FjaGUpKTsKK30KKwordm9pZCBFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdp
biwgW10oQ2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNW
YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZXN1bHQudmFsdWUoKS5nZXQo
KS5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIENhY2hlU3RvcmFnZQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgK
aW5kZXggMjkxNzcxMmZkM2RkZTljZjQzNzAwZWMwMDI5NDY4M2U2YmRjZWVhOC4uNzRmZGY4NjM3
MWQ3MDZlNzU1OTI4Yzc4MjkwNThlYmU1MWFkZGUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC0yNSw4
ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC00MCwxMCArNDEsMTMgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UgewogCi1jbGFzcyBF
bmdpbmUgeworY2xhc3MgRW5naW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEVuZ2lu
ZT4gewogcHVibGljOgorICAgIH5FbmdpbmUoKTsKKwogICAgIHN0YXRpYyBFbmdpbmUmIGZyb20o
UEFMOjpTZXNzaW9uSUQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lFbmdpbmUoUEFMOjpTZXNz
aW9uSUQpOworICAgIHN0YXRpYyBSZWY8RW5naW5lPiBjcmVhdGUoU3RyaW5nJiYgcm9vdFBhdGgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW5naW5lKFdURk1vdmUocm9vdFBhdGgpKSk7IH0KIAog
ICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5h
bWUsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKICAgICB2
b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpD
YWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKQEAgLTUzLDE0ICs1NywyNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwdXRSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNv
cmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNh
Y2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYpOwogCisgICAgdm9pZCBoYW5kbGVSZW1vdmVkQ2FjaGUoQ2FjaGUmJik7CisgICAg
dm9pZCB3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRh
JiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBy
ZWFkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
TmV0d29ya0NhY2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJik7CisgICAgdm9pZCByZW1vdmVGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOworCisgICAgY29uc3QgU3RyaW5nJiByb290UGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fcm9vdFBhdGg7IH0KKyAgICBjb25zdCBOZXR3b3JrQ2FjaGU6OlNh
bHQmIHNhbHQoKSBjb25zdCB7IHJldHVybiBtX3NhbHQudmFsdWUoKTsgfQorICAgIHVpbnQ2NF90
IG5leHRDYWNoZUlkZW50aWZpZXIoKSB7IHJldHVybiArK21fbmV4dENhY2hlSWRlbnRpZmllcjsg
fQorCisgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3Jp
Z2luKTsKKyAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1
ZTsgfQorCiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmdpbmUmIGRlZmF1bHRFbmdpbmUoKTsKKyAg
ICBleHBsaWNpdCBFbmdpbmUoU3RyaW5nJiYpOwogCi0gICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlz
ayhXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgaW5p
dGlhbGl6ZShGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGU6OkVy
cm9yPiYmKT4mJik7CiAKLSAgICB1c2luZyBDYWNoZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxWZWN0b3I8Q2FjaGU+PiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9y
PjsKKyAgICB1c2luZyBDYWNoZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxDYWNoZXM+LCBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I+OwogICAgIHVzaW5nIENhY2hl
c0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlc09yRXJyb3ImJik+OwotICAgIHZv
aWQgcmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWNoZXNDYWxsYmFj
ayYmKTsKKyAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBTdHJpbmcmIG9yaWdpbiwg
RnVuY3Rpb248dm9pZChDYWNoZXNPckVycm9yJiYpPiYmKTsKIAogICAgIHVzaW5nIENhY2hlT3JF
cnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGU+LCBXZWJDb3JlOjpE
T01DYWNoZTo6RXJyb3I+OwogICAgIHVzaW5nIENhY2hlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoQ2FjaGVPckVycm9yJiYpPjsKQEAgLTcwLDEyICs4NywxNCBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVtb3ZlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9y
PHVpbnQ2NF90PiYmLCBXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFj
ayYmKTsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gcXVlcnlDYWNoZShjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYpOwotCiAgICAgQ2FjaGUqIGNhY2hl
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9y
PENhY2hlPj4gbV9jYWNoZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxDYWNoZXM+PiBtX2Nh
Y2hlczsKICAgICBWZWN0b3I8Q2FjaGU+IG1fcmVtb3ZlZENhY2hlczsKICAgICB1aW50NjRfdCBt
X25leHRDYWNoZUlkZW50aWZpZXIgeyAwIH07CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAg
c3RkOjpvcHRpb25hbDxOZXR3b3JrQ2FjaGU6OlNhbHQ+IG1fc2FsdDsKKyAgICBSZWZQdHI8V29y
a1F1ZXVlPiBtX2lvUXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWY2ODk5N2UwMzc5YWIzMGU2
NmM1ZTIwYTBiZTYyZmQzMWQwNDI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC0wLDAg
KzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKKwor
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZUNvZGVycy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlOwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDo6TmV0d29ya0NhY2hlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
bmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc1Jv
b3RQYXRoKEVuZ2luZSYgZW5naW5lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAgICBLZXkg
a2V5KGVuZ2luZS5yb290UGF0aCgpLCB7IH0sIHsgfSwgb3JpZ2luLCBlbmdpbmUuc2FsdCgpKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGVuZ2luZS5yb290
UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpOworfQorCitzdGF0aWMgaW5saW5l
IFN0cmluZyBjYWNoZXNMaXN0RmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkK
K3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jv
b3RQYXRoLCBBU0NJSUxpdGVyYWwoImNhY2hlc2xpc3QiKSk7Cit9CisKK0NhY2hlczo6Q2FjaGVz
KEVuZ2luZSYgZW5naW5lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKKyAgICA6IG1fZW5naW5lKCZl
bmdpbmUpCisgICAgLCBtX3Jvb3RQYXRoKGNhY2hlc1Jvb3RQYXRoKGVuZ2luZSwgb3JpZ2luKSkK
K3sKK30KKwordm9pZCBDYWNoZXM6OmluaXRpYWxpemUoV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmIChtX2lzSW5pdGlhbGl6ZWQgfHwg
IW1fZW5naW5lIHx8ICFtX2VuZ2luZS0+c2hvdWxkUGVyc2lzdCgpKSB7CisgICAgICAgIGNhbGxi
YWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9z
dG9yYWdlKSB7CisgICAgICAgIG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzLmFwcGVu
ZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IHN0b3JhZ2UgPSBTdG9yYWdlOjpvcGVuKG1fcm9vdFBhdGgsIFN0b3JhZ2U6Ok1vZGU6Ok5vcm1h
bCk7CisgICAgaWYgKCFzdG9yYWdlKSB7CisgICAgICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURp
c2spOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc3RvcmFnZSA9IHN0b3JhZ2UucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICByZWFkQ2FjaGVzRnJvbURpc2soW3RoaXMsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yPiYmIHJlc3Vs
dCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgICAgICBjYWxs
YmFjayhyZXN1bHQuZXJyb3IoKSk7CisKKyAgICAgICAgICAgIGF1dG8gcGVuZGluZ0NhbGxiYWNr
cyA9IFdURk1vdmUobV9wZW5kaW5nSW5pdGlhbGl6YXRpb25DYWxsYmFja3MpOworICAgICAgICAg
ICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHBlbmRpbmdDYWxsYmFja3MpCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2socmVzdWx0LmVycm9yKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIG1fY2FjaGVzID0gV1RGTW92ZShyZXN1bHQudmFsdWUoKSk7CisgICAgICAg
IG1faXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7
CisKKyAgICAgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdJbml0
aWFsaXphdGlvbkNhbGxiYWNrcyk7CisgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBwZW5k
aW5nQ2FsbGJhY2tzKQorICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICB9
KTsKK30KKworQ2FjaGUqIENhY2hlczo6ZmluZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
YXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRl
bSkgeyByZXR1cm4gaXRlbS5uYW1lID09IG5hbWU7IH0pOworICAgIHJldHVybiAocG9zaXRpb24g
IT0gbm90Rm91bmQpID8gJm1fY2FjaGVzW3Bvc2l0aW9uXSA6IG51bGxwdHI7Cit9CisKK0NhY2hl
KiBDYWNoZXM6OmZpbmQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHBvc2l0aW9u
ID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBp
dGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgcmV0dXJuIChwb3NpdGlvbiAh
PSBub3RGb3VuZCkgPyAmbV9jYWNoZXNbcG9zaXRpb25dIDogbnVsbHB0cjsKK30KKwordWludDY0
X3QgQ2FjaGVzOjpvcGVuKFN0cmluZyYmIG5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5naW5lKTsKKworICAgIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciA9IG1fZW5naW5lLT5uZXh0Q2FjaGVJZGVudGlmaWVyKCk7CisgICAgbV9jYWNo
ZXMuYXBwZW5kKENhY2hlIHsgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCB7IH0sIDAg
fSk7CisgICAgd3JpdGVDYWNoZXNUb0Rpc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGNhY2hlSWRlbnRpZmllcl0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7
CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0
ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGNhbGxiYWNrKGNhY2hlSWRlbnRpZmllcik7CisgICAgfSk7CisgICAgcmV0dXJuIGNhY2hl
SWRlbnRpZmllcjsKK30KKwordm9pZCBDYWNoZXM6OnJlbW92ZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9lbmdpbmUp
OworCisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3Qg
YXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOwor
CisgICAgQVNTRVJUKHBvc2l0aW9uICE9IG5vdEZvdW5kKTsKKworICAgIGF1dG8gY2FjaGUgPSBX
VEZNb3ZlKG1fY2FjaGVzW3Bvc2l0aW9uXSk7CisgICAgbV9jYWNoZXMucmVtb3ZlKHBvc2l0aW9u
KTsKKworICAgIG1fZW5naW5lLT5oYW5kbGVSZW1vdmVkQ2FjaGUoV1RGTW92ZShjYWNoZSkpOwor
CisgICAgd3JpdGVDYWNoZXNUb0Rpc2soV1RGTW92ZShjYWxsYmFjaykpOworfQorCitzdGF0aWMg
aW5saW5lIERhdGEgZW5jb2RlQ2FjaGVOYW1lcyhjb25zdCBWZWN0b3I8Q2FjaGU+JiBjYWNoZXMp
Cit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOworCisgICAgdWludDY0
X3Qgc2l6ZSA9IGNhY2hlcy5zaXplKCk7CisgICAgZW5jb2RlciA8PCBzaXplOworICAgIGZvciAo
YXV0byYgY2FjaGUgOiBjYWNoZXMpCisgICAgICAgIGVuY29kZXIgPDwgY2FjaGUubmFtZTsKKwor
ICAgIHJldHVybiBEYXRhIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkg
fTsKK30KKworc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgRXJyb3I+IGRl
Y29kZUNhY2hlc05hbWVzKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikKK3sKKyAgICBpZiAo
ZXJyb3IpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcjo6UmVhZERpc2spOwor
CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CisgICAgdWludDY0X3QgY291bnQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShj
b3VudCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcjo6UmVhZERpc2spOwor
CisgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CisgICAgbmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShjb3VudCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyAr
K2luZGV4KSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFk
RGlzayk7CisKKyAgICAgICAgbmFtZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZSkpOwor
ICAgIH0KKyAgICByZXR1cm4gbmFtZXM7Cit9CisKK3ZvaWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJv
bURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yPiYm
KT4mJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9lbmdpbmUpOworICAgIEFTU0VSVCghbV9p
c0luaXRpYWxpemVkKTsKKyAgICBBU1NFUlQobV9jYWNoZXMuaXNFbXB0eSgpKTsKKworICAgIGlm
ICghbV9lbmdpbmUtPnNob3VsZFBlcnNpc3QoKSkgeworICAgICAgICBjYWxsYmFjayhWZWN0b3I8
Q2FjaGU+IHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZpbGVuYW1l
ID0gY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpOworICAgIGlmICghV2ViQ29yZTo6Zmls
ZUV4aXN0cyhmaWxlbmFtZSkpIHsKKyAgICAgICAgY2FsbGJhY2soVmVjdG9yPENhY2hlPiB7IH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9lbmdpbmUtPnJlYWRGaWxlKGZpbGVu
YW1lLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewor
ICAgICAgICBpZiAoIW1fZW5naW5lKSB7CisgICAgICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2Fj
aGU+IHsgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRv
IHJlc3VsdCA9IGRlY29kZUNhY2hlc05hbWVzKGRhdGEsIGVycm9yKTsKKyAgICAgICAgaWYgKCFy
ZXN1bHQuaGFzVmFsdWUoKSkgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
cmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBWZWN0b3I8Q2FjaGU+IGNhY2hlczsKKyAgICAgICAgY2FjaGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkocmVzdWx0LnZhbHVlKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBuYW1lIDog
cmVzdWx0LnZhbHVlKCkpCisgICAgICAgICAgICBjYWNoZXMudW5jaGVja2VkQXBwZW5kKENhY2hl
IHsgbV9lbmdpbmUtPm5leHRDYWNoZUlkZW50aWZpZXIoKSwgV1RGTW92ZShuYW1lKSwgeyB9LCAw
IH0pOworCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2FjaGVzKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQ2FjaGVzOjp3cml0ZUNhY2hlc1RvRGlzayhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBpZiAoIW1fZW5naW5lLT5zaG91bGRQZXJzaXN0KCkpIHsKKyAgICAgICAg
Y2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFT
U0VSVChtX2VuZ2luZSk7CisKKyAgICBpZiAobV9jYWNoZXMuaXNFbXB0eSgpKSB7CisgICAgICAg
IG1fZW5naW5lLT5yZW1vdmVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKSk7Cisg
ICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKSwg
ZW5jb2RlQ2FjaGVOYW1lcyhtX2NhY2hlcyksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShlcnJvcikpOworICAgIH0pOworfQorICAgIAordm9pZCBDYWNoZXM6OmNsZWFy
TWVtb3J5UmVwcmVzZW50YXRpb24oKQoreworICAgIG1fY2FjaGVzLmNsZWFyKCk7CisgICAgbV9p
c0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgbV9zdG9yYWdlID0gbnVsbHB0cjsKK30KKworVmVj
dG9yPENhY2hlSW5mbz4gQ2FjaGVzOjpjYWNoZUluZm9zKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
Q2FjaGVJbmZvPiBjYWNoZUluZm9zOworICAgIGNhY2hlSW5mb3MucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX2NhY2hlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgY2FjaGUgOiBtX2NhY2hlcykK
KyAgICAgICAgY2FjaGVJbmZvcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRl
bnRpZmllciwgY2FjaGUubmFtZSB9KTsKKyAgICByZXR1cm4gY2FjaGVJbmZvczsKK30KKworfSAv
LyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkxZTgyZGMzMWRmM2EyNGZjMGZmYzkwYjhj
ODcyYWUwY2Q3ZWE1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKQEAgLTAsMCArMSw3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCituYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKKworY2xhc3MgRW5naW5lOworCitj
bGFzcyBDYWNoZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZXM+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPENhY2hlcz4gY3JlYXRlKEVuZ2luZSYgZW5naW5lLCBjb25zdCBTdHJpbmcmIG9y
aWdpbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZXMgeyBlbmdpbmUsIG9yaWdpbiB9KTsg
fQorCisgICAgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2Fs
bGJhY2smJik7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
SW5pdGlhbGl6ZWQ7IH0KKworICAgIENhY2hlKiBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSk7Cisg
ICAgQ2FjaGUqIGZpbmQodWludDY0X3QgaWRlbnRpZmllcik7CisKKyAgICB1aW50NjRfdCBvcGVu
KFN0cmluZyYmIG5hbWUsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFj
ayYmKTsKKyAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpET01D
YWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNh
Y2hlOjpDYWNoZUluZm8+IGNhY2hlSW5mb3MoKSBjb25zdDsKKworICAgIHZvaWQgY2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbigpOworICAgIHZvaWQgZGV0YWNoKCkgeyBtX2VuZ2luZSA9IG51bGxw
dHI7IH0KKworcHJpdmF0ZToKKyAgICBDYWNoZXMoRW5naW5lJiwgY29uc3QgU3RyaW5nJiByb290
UGF0aCk7CisKKyAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQo
RXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPiYmKT4mJik7
CisgICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlv
bkNhbGxiYWNrJiYpOworCisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAg
IEVuZ2luZSogbV9lbmdpbmUgeyBudWxscHRyIH07CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7Cisg
ICAgVmVjdG9yPENhY2hlPiBtX2NhY2hlczsKKyAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpTdG9y
YWdlPiBtX3N0b3JhZ2U7CisgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9u
Q2FsbGJhY2s+IG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgQ2FjaGVTdG9yYWdlCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKaW5kZXggYmY0OTkzODhmMzY3ZDJlOWM2ZGU3MGYw
MDk3MTc4NjIwMDUzYzRiYy4uYzAyY2FmZDcwMDkwM2Q3YmMzNTZiNDBkNzliZThhYzlmOTljMTY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCkBAIC02Myw2ICs2Mywx
MSBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcQogICAgIH0pOwogfQogCit2b2lkIENhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAgICBFbmdpbmU6OmZy
b20oc2Vzc2lvbklEKS5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKG9yaWdpbik7Cit9CisKIHZv
aWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVjb3JkcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIpCiB7CiAgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkucmV0cmlldmVSZWNvcmRzKGNh
Y2hlSWRlbnRpZmllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vz
c2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKaW5kZXggZmIzYTY2NGU1NDVjNGRhZjc1NThm
ZDE0OWFhMWVhMWYxZGY5ZDUzMy4uMDgyZDFlNDcwMzA1N2YzZDdiMGNkYzIzZTM0MWE3NzI3MDhl
NzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKQEAgLTU0LDYgKzU0LDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVt
b3ZlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBjYWNoZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJldHJpZXZlQ2FjaGVzSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCisgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CisKICAgICB2b2lk
IHJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVy
eU9wdGlvbnMmJik7CiAgICAgdm9pZCBwdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2Vi
Q29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNTkyMmVlZDY2NzI3NmRkYzFlNTRhNDgxODQz
ZGZiZTNhOWU1MmRlOC4uNGVhYzc0ODU3ZTIzZDY1ZTIxOThmNGRlMTliYmZmMmFkOWM3N2VkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpA
QCAtMjUsNiArMjUsOCBAQCBtZXNzYWdlcyAtPiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
IHsKICAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICBDYWNoZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nIG9y
aWdpbik7CiAKKyAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3RyaW5nIG9yaWdpbik7CisKICAgICBSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
Zmllcik7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IHJlY29yZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNw
cAppbmRleCAzMWFlNDhmZTVhZDJkOTdkYjZiMWNmNjg0N2EyZWY4NGMyMGQwN2I1Li43NDZkZDZl
MmRjMDc4OWMxZjJkMjcyMDk1YjgxMmQ4YzhhNDUxNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTEy
OCw3ICsxMjgsNyBAQCBib29sIGJ5dGVzRXF1YWwoY29uc3QgRGF0YSYgYSwgY29uc3QgRGF0YSYg
YikKICAgICByZXR1cm4gIW1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGEuc2l6ZSgpKTsKIH0K
IAotc3RhdGljIFNhbHQgbWFrZVNhbHQoKQorU2FsdCBtYWtlU2FsdCgpCiB7CiAgICAgU2FsdCBz
YWx0OwogICAgIHN0YXRpY19hc3NlcnQoc2FsdC5zaXplKCkgPT0gOCwgIlNhbHQgc2l6ZSIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGEuaAppbmRleCA2MDBiNWU0NTgwMTI4MGY4ZjQ1NzQwMGY0NGY2MGFlMDllMzc4NWFmLi5j
MmM5OWQ1YWU4ZTZhZWZlMWQ1NTBhYjFmMWM3ZTA2NWU5YTc4N2Q4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaApAQCAt
MTA1LDYgKzEwNSw3IEBAIERhdGEgbWFwRmlsZShjb25zdCBjaGFyKiBwYXRoKTsKIAogdXNpbmcg
U2FsdCA9IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47CiAKK1NhbHQgbWFrZVNhbHQoKTsKIHN0ZDo6
b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFNIQTE6
OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRhJiwgY29uc3QgU2FsdCYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCmluZGV4IGFiMDgyYWRlZmY3NTQ2YzhmYzA5NWFhOGQ2NWFhOTMxMzk1MWUz
OGIuLmZmODVlY2ExZDQzNTU3ZjVhM2JlNWYyOGJhNzZkODgwYWI0NTNjNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCkBAIC0xMDgsNiArMTA4LDcgQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW0K
IAogdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNl
c3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogeworICAgIGZw
cmludGYoc3RkZXJyLCAiUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uICVzXG4iLCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZVN1YmRpcmVjdG9yeU5h
bWUudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEy
OSw2ICsxMzAsOCBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYQogICAgIGZvciAoY29uc3QgYXV0
byYgY29va2llIDogcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcykKICAgICAgICAgc2Vzc2lvbi0+
c2V0Q29va2llKGNvb2tpZSk7CiAKKyAgICBzZXNzaW9uLT5zZXRDYWNoZVN0b3JhZ2VTdWJkaXJl
Y3RvcnlOYW1lKFdURk1vdmUocGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VTdWJkaXJlY3RvcnlOYW1l
KSk7CisKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGF1dG8gbmV0d29ya1Nlc3Npb24g
PSBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKHBhcmFtZXRlcnMuc2Vzc2lvbklELCBOZXR3b3JrUHJv
Y2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+
KCkpOwogICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklE
LCBXVEZNb3ZlKG5ldHdvcmtTZXNzaW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggOTNlZjFjOTEyOWY4YjA3NmI3
MGI4N2ZkNTQ4NjQxNTlmNjUzMzcyZS4uYmRlYjE1NTgwODJmNmNhNWIzYmJhYTI5YzA1OTI2ZDk0
YzQ5YWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmNwcApAQCAtNDAsNiArNDAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBj
b29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IHBlbmRpbmdD
b29raWVzOworICAgIGVuY29kZXIgPDwgY2FjaGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFtZTsKIH0K
IAogYm9vbCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC01Niw2
ICs1Nyw5IEBAIGJvb2wgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhU3RvcmVQCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZVN1YmRpcmVjdG9y
eU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgK
aW5kZXggNjNmYTIzMTM4MTEyOWE4ZmMwYTFhZGI0MTdhYTIzOGFkNThmZmQ1ZS4uNzZjYzkzOTE4
NDE4YzU3MTA4MWUzZjhkOGZmOTEwYzQ5Yjc5MTFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC01MCw2ICs1MCw3IEBAIHN0
cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHVp
UHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiBwZW5kaW5nQ29va2llczsKKyAgICBTdHJpbmcgY2FjaGVTdG9yYWdlU3ViZGly
ZWN0b3J5TmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KaW5kZXggMzZhOGZjNmM5NGRhYmEwZWU3MzIwMWExN2I5ZjNhNTBjZDIwNWVmZS4u
ODMxNGUwZjFmY2VkMGY2MzllZjQzZTU0ZDhmY2I5ZTQ5ZGZmMjgwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCkBAIC0xODYsNiArMTg2LDcgQEAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWcK
IHsKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJh
dGlvbjsKIAorICAgIGNvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFtZSA9
ICJDYWNoZVN0b3JhZ2UiOwogICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSA9IGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gIkZpbGVzIjsK
ICAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCBkYmQwNjlmZTU5MWM3MDQxM2IyOGE3NWQyNGJkZjc4ZjA4MmQ2NmU1Li5jMDA0
NjEwMDA5YzU5NGM4YzliY2IwYzZjY2FjNTkzNGM1YThiNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChib29sIHByaXZhdGUKIHsKICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBp
ZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKHtQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwg
eyB9fSksIDApOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oe1BBTDo6U2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7IH0sIHsgfX0pLCAwKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KaW5kZXggYjE2YWUwMjgxNjZmZTU5Y2Y1YzFhN2ZhNzI2NGE3ZGFjMjgzYWE2MC4u
MDhjNzI3ZTU1MjM4ZTI5MTY2MjE3Y2M1ZjA5ZjgwMzUyNDYxYjcwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNzUsNiArNzUsOCBAQCBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBpZiAoIWNvb2tp
ZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwg
cGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAKKyAgICBwYXJh
bWV0ZXJzLmNhY2hlU3RvcmFnZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24uY2Fj
aGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFtZTsKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKaW5kZXggZTY0MjlhN2ZiMWQxZDhmMTg2MmE2ZmI4ZTkzNWZjMGYwNTBmOTVl
ZC4uYWRkOWEwMzI1NDc3MTVkNGQzZTQxMjE1NmY5NGM4OGZjYzljMjRlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aApAQCAtNjgsNiArNjgsNyBAQCBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIFJlZkNv
dW50ZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBXZWJQcm9jZXNzTAogcHVibGljOgogICAg
IHN0cnVjdCBDb25maWd1cmF0aW9uIHsKICAgICAgICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVj
dG9yeTsKKyAgICAgICAgU3RyaW5nIGNhY2hlU3RvcmFnZVN1YmRpcmVjdG9yeU5hbWU7CiAgICAg
ICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyBhcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDgyYmJlYjkyNzBmN2MxNGJlNTU1MWVlMTgxNWQzMjlmZDhh
MzAzY2IuLjgzMWRiNzM3YjUwMmE3MDYyZThmZjI1YmEzZGJiMmFhZmQyNGZmNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkxLDYg
Kzg5MSw3IEBACiAJCTQxMzA3NUIyMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRG
YWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovOyB9
OwogCQk0MTMwNzVCMzFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTcxREU4
NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDEzMDc1QjQx
REU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyog
TGliV2ViUlRDUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDEzNUZCRDExRjRGQjgwOTAwNzRDNDdCIC8q
IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcCAqLzsgfTsKIAkJNDE4OTdFQ0YxRjQxNUQ2MjAwMTZGQTQyIC8q
IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0UxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwICovOyB9OwogCQk0MTg5N0VEMDFGNDE1RDY1MDAxNkZBNDIg
LyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hl
U3RvcmFnZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDE4OTdFRDExRjQxNUQ2ODAwMTZGQTQyIC8q
IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmggKi87IH07CkBAIC0zMTYyLDYgKzMxNjMsOCBAQAogCQk0MTMwNzVB
NjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBO
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1l
ID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNh
dGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAw
MzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5oOyBwYXRoID0gTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNM
YW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CisJ
CTQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzNUZCRDAxRjRGQjdG
MjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0IxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0MxRjQx
NUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE4OTdFQ0QxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIwMSw2ICs4MjA0LDggQEAKIAkJCQk0MTg5N0VE
NjFGNDE1RDg2MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCAqLywKIAkJCQk0MTg5
N0VEMjFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggKi8sCiAJCQkJNDFG
QUJEMjgxRjREREZEQzAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggKi8sCisJ
CQkJNDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAgKi8sCisJCQkJNDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5oICovLAogCQkJCTQxODk3RUQzMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk0MTg5N0VENDFGNDE1RDg1MDAxNkZBNDIg
LyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oICovLAogCQkJCTQxODk3RUQ1MUY0MTVE
ODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluICov
LApAQCAtOTk5MSw2ICs5OTk2LDcgQEAKIAkJCQlFMTcwODc2QjE2RDZDQTY5MDBGOTkyMjYgLyog
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGMTg2MzgxNjdEMDcx
RTAwQTFBODVBIC8qIENhY2hlTW9kZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4OTdFRDcx
RjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MTM1RkJEMTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODk3RUQ5MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUz
MTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTJFNTFFMTJFNEMwNUUwMEJDNDk2NiAv
KiBDR1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApp
bmRleCBjM2QxMzAyNzUwOWMzMmIzMjdjMjZkOWU0ZjEwZjYxMzU5MjRiMjIzLi5iZmQwYmEzYWMy
ZWM5YTkzOTM3OGRiNTc1NzI1OTVlMjBmODM0OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
CkBAIC04Niw2ICs4NiwxMiBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0
Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlB1dFJlY29y
ZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlY29y
ZHMpLCAwKTsKIH0KIAordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6Q2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihtX3Nlc3Npb25J
RCwgb3JpZ2luKSwgMCk7CisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKK30KKwogdm9pZCBX
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpCiB7CiAgICAg
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwg
cmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUv
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDI1YWZmY2YwMGFkYzA4ZjgyMTRlZDc0
ZjUwZmM4MjEzOGMxODFjN2MuLmY1OWUyY2YzMTY1N2ZjZjQ0OTllOWUzYmIxZjUzZTU4ZmRiZWVk
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNjAsNiArNjAsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hQ
dXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYpIGZpbmFsOwogCisg
ICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBX
ZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpIGZpbmFsOworCiAgICAgdm9p
ZCBvcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwogICAgIHZvaWQgcmVtb3ZlQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpET01DYWNo
ZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvc09yRXJy
b3ImJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZGQzNzAzMmFjMjA0ZDQxZDQxMGNmZGQyYTNiZThiYzA2NjliYjY4Yi4u
Y2Y1MzA4ZmU4MWJlYWQ2MmJjNWRmNzc1OWY5MjNhMzdjNWViNTM4MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDE3LTA4LTI4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdXR0aW5nIHRoZXNl
IHRlc3RzIGluIGh0dHAvdGVzdHMgZm9sZGVyIHNvIHRoYXQgdGhleSBydW4gaW4gYSBkaWZmZXJl
bnQgb3JpZ2luIGFuZCBzbyBhIGRpZmZlcmVudCBDYWNoZXMgdGhhbiBvdGhlciB0ZXN0cy4KKyAg
ICAgICAgVGVzdGluZyBwcml2YXRlIGJyb3dzaW5nIGNhY2hpbmcgYW5kIGNsZWFyaW5nIHRoZSBt
ZW1vcnkgcmVwcmVzZW50YXRpb24gd291bGQgcHJvYmFibHkgYWZmZWN0IG90aGVyIGNhY2hlK3By
dmlhdGUgYnJvd3NpbmcgdGVzdHMgdGhhdCB3b3VsZCBydW4gaW4gcGFyYWxsZWwuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3ktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVy
c2lzdGVuY3kuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1z
dG9yYWdlL3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zOiBTa2lwcGluZyBuZXcg
dGVzdCBvbiBXSzEuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
OiBEaXR0by4KKwogMjAxNy0wOC0yOCAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgRml4IGRvY3VtZW50LWNyZWF0ZS10b3VjaC5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1w
ZXJzaXN0ZW5jeS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJjZDIwYTRjMDI5OWJm
ZmQwOTI2YzA2MjNkNDc1NzFlYzRhMmNkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorCisKK1BBU1MgQ2xlYW5pbmcgZXhpc3RpbmcgY2FjaGVz
IAorUEFTUyBDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24gYW5kIGRpc2FibGUgZGlzayBwZXJz
aXN0ZW5jeSAKK1BBU1MgQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJldmlvdXMgdGVzdCAx
IAorUEFTUyBDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24gYnV0IGtlZXAgZGlzayBwZXJzaXN0
ZW5jeSAKK1BBU1MgQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJldmlvdXMgdGVzdCAyIAor
UEFTUyBBZGRpbmcvUmVtb3ZpbmcgY2FjaGVzIGFuZCBjbGVhcmluZyBpbiBtZW1vcnkgcmVwcmVz
ZW50YXRpb24gYXQgdmFyaW91cyB0aW1lcyAKK1BBU1MgQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cGVyc2lzdGVuY3kuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3Rv
cmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkMGY4OGNhNmZh
OWJiZjVlNzMyYjE5MGJhMDNlMzlkZGYzNzRiZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMuaHRt
bApAQCAtMCwwICsxLDEyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPkNhY2hlIFN0b3JhZ2U6IHRlc3RpbmcgcGVyc2lzdGVuY3k8L3RpdGxlPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGRpdiBpZD0iY2hlY2siPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgcHJvbWlzZV90
ZXN0KHRlc3QgPT4geworICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5
cyA9PiB7CisgICAgICAgICAgICB2YXIgcGVuZGluZyA9IFtdOworICAgICAgICAgICAgZm9yIChr
ZXkgb2Yga2V5cykKKyAgICAgICAgICAgICAgICBwZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVs
ZXRlKGtleXNbMF0pKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5nKTsK
KyAgICAgICAgfSk7CisgICAgfSwgIkNsZWFuaW5nIGV4aXN0aW5nIGNhY2hlcyIpOworCisgICAg
cHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMgfHwg
IXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJU
ZXN0IHJlcXVpcmVzIGludGVybmFscyIpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBp
ZiAoZXZlbnQuZGF0YSA9PT0gInJlYWR5IikgeworICAgICAgICAgICAgICAgICAgICBpbnRlcm5h
bHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAg
ICAgICAgICBjaGVjay5pbm5lckhUTUwgPSAiPGlmcmFtZSBzcmM9J3Jlc291cmNlcy9jYWNoZS1w
ZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbCNjaGVjayc+PC9pZnJhbWU+IjsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZShldmVudC5kYXRhID09PSBmYWxzZSwgIk5vIGNhY2hlIG9iamVjdCBzaG91bGQgYmUgZm91
bmQiKTsKKyAgICAgICAgCXRlc3RSdW5uZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxz
ZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSkpOworICAgICAg
ICAgICAgY2hlY2suaW5uZXJIVE1MID0gIjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVy
c2lzdGVuY3ktaWZyYW1lLmh0bWwnPjwvaWZyYW1lPiI7CisgICAgICAgIH0pCisgICAgfSwgIkNs
ZWFyIG1lbW9yeSByZXByZXNlbnRhdGlvbiBhbmQgZGlzYWJsZSBkaXNrIHBlcnNpc3RlbmN5Iik7
CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVz
ZW50YXRpb24oKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKworICAgICAgICBy
ZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB2YXIg
cGVuZGluZyA9IFtdOworICAgICAgICAgICAgZm9yIChrZXkgb2Yga2V5cykKKyAgICAgICAgICAg
ICAgICBwZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKKyAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5nKTsKKyAgICAgICAgfSk7CisgICAgfSwgIkNs
ZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMSIpOworCisgICAgcHJvbWlz
ZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzIik7CisK
KyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAg
ICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMo
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICJyZWFkeSIp
IHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5
UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2suaW5uZXJIVE1MID0g
IjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwjY2hl
Y2snPjwvaWZyYW1lPiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZXZlbnQuZGF0YSA9PT0gdHJ1ZSwg
IkEgY2FjaGUgb2JqZWN0IHNob3VsZCBiZSBmb3VuZCIpOworICAgICAgICAgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIGNoZWNrLmlubmVySFRNTCA9ICI8
aWZyYW1lIHNyYz0ncmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sJz48L2lm
cmFtZT4iOworICAgICAgICB9KQorICAgIH0sICJDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24g
YnV0IGtlZXAgZGlzayBwZXJzaXN0ZW5jeSIpOworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4g
eworICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAg
ICAgICAgICB2YXIgcGVuZGluZyA9IFtdOworICAgICAgICAgICAgZm9yIChrZXkgb2Yga2V5cykK
KyAgICAgICAgICAgICAgICBwZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0p
KTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5nKTsKKyAgICAgICAgfSk7
CisgICAgfSwgIkNsZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMiIpOwor
CisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50
ZXJuYWxzIik7CisKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtzZWxmLmNhY2hlcy5vcGVu
KCJ0ZXN0MiIpLCBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MSIpXSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpCisgICAgICAgIH0pLnRoZW4oa2V5cyA9
PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDIiLCAidGVz
dDEiXSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLmNhY2hlcy5rZXlzKCk7CisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDIiLCAidGVzdDEiXSk7CisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMuZGVsZXRlKCJ0ZXN0MiIpOworICAgICAgICB9KS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9y
eVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygp
OworICAgICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhrZXlzLCBbInRlc3QxIl0pOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MiIpOworICAgICAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJl
c2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpOworICAg
ICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhr
ZXlzLCBbInRlc3QxIiwgInRlc3QyIl0pOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbc2VsZi5jYWNoZXMuZGVsZXRlKCJ0ZXN0MiIpLCBz
ZWxmLmNhY2hlcy5kZWxldGUoInRlc3QxIildKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlv
bigpOworICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsKKyAgICAgICAgfSku
dGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgW10p
OworICAgICAgICB9KTsKKyAgICB9LCAiQWRkaW5nL1JlbW92aW5nIGNhY2hlcyBhbmQgY2xlYXJp
bmcgaW4gbWVtb3J5IHJlcHJlc2VudGF0aW9uIGF0IHZhcmlvdXMgdGltZXMiKTsKKworICAgIHBy
b21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50
aGVuKGtleXMgPT4geworICAgICAgICAgICAgdmFyIHBlbmRpbmcgPSBbXTsKKyAgICAgICAgICAg
IGZvciAoa2V5IG9mIGtleXMpCisgICAgICAgICAgICAgICAgcGVuZGluZy5wdXNoKHNlbGYuY2Fj
aGVzLmRlbGV0ZShrZXlzWzBdKSk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVu
ZGluZyk7CisgICAgICAgIH0pOworICAgIH0sICJDbGVhbmluZyBhZGRlZCBjYWNoZXMiKTsKKyAg
ICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJh
bWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMv
Y2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc5Yzk4ZmVmOGU0NGIx
NTdhMTNmYzBkOTZhNDJmZjY0ZDQ4NTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZy
YW1lLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5
PgorICAgIDxzY3JpcHQ+CitmdW5jdGlvbiBkb1Rlc3QoKQoreworICAgIGlmICh3aW5kb3cubG9j
YXRpb24uaGFzaCA9PT0gIiNjaGVjayIpIHsKKyAgICAgICAgc2VsZi5jYWNoZXMua2V5cygpLnRo
ZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGtleXMu
bGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09ICJ0ZXN0Q2FjaGVOYW1lIiwgIioiKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZWxmLmNhY2hlcy5vcGVuKCJ0
ZXN0Q2FjaGVOYW1lIikudGhlbigoKSA9PiB7CisgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1l
c3NhZ2UoInJlYWR5IiwgIioiKTsKKyAgICB9KTsKK30KK2RvVGVzdCgpOworICAgIDwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNDE4MTA0OTRhZGEyOThmNDZlYzhmYzNhNDU1MDkyZmIzZjE1
NjJhNC4uZTU4Y2FmYTY2ZmQ3Yzc1Y2Q2OGIzYWNjNWY0ZjJhNjI5MDNlOGE2OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAsNiArMTAs
NyBAQCBlZGl0aW5nL2lucHV0L2ZvY3VzLWNoYW5nZS13aXRoLW1hcmtlZC10ZXh0Lmh0bWwgWyBQ
YXNzIF0KICMgTm8gc2VydmljZSB3b3JrZXIgaW1wbGVtZW50YXRpb24gZm9yIFdLMQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMgWyBTa2lwIF0KIGh0dHAv
d3B0L2NhY2hlLXN0b3JhZ2UgWyBTa2lwIF0KK2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZSBbIFNr
aXAgXQogCiAjIFNraXAgV2ViUlRDIGZvciBub3cgaW4gV0sxCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0YyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDM0NTEyNzAwMDc2NGJhNzQxNzk4NmFmNWI0NTgx
NWUwZDc0MmZkOTIuLmRjMDM2ZDQyYTk2ZjFlODBlZTBjZmI3Y2FiZGNmNjRmN2NiYThjY2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkz
LDYgKzkzLDcgQEAgaHR0cC90ZXN0cy9zc2wvbWVkaWEtc3RyZWFtCiAjIE5vIHNlcnZpY2Ugd29y
a2VyIGltcGxlbWVudGF0aW9uIGZvciBXSzEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzIFsgU2tpcCBdCiBodHRwL3dwdC9jYWNoZS1zdG9yYWdlIFsgU2tp
cCBdCitodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UgWyBTa2lwIF0KIAogIyBTa2lwIFdlYlJUQyBm
b3Igbm93IGluIFdLMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMgWyBT
a2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319303</attachid>
            <date>2017-08-29 16:36:51 -0700</date>
            <delta_ts>2017-08-30 14:54:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175995-20170829163650.patch</filename>
            <type>text/plain</type>
            <size>56339</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhmNTY1MDA0NzVhYmVi
OGJmMWQ5NTg5MDY4OTQ5MDAyNjViNGRlMS4uNmMwMjI4Yjc0NDI5NTA1MTY1NWNmMTM1YmM5YzM3
MDYwZmJjMjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE3LTA4LTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ2FjaGUgQVBJXSBTdXBw
b3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cGVyc2lzdGVuY3kuaHR0cHMuaHRtbAorCisgICAgICAgIEFkZGluZyBtZXRob2QgdG8gY2xlYXIg
dGhlIG1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FjaGUgc3RvcmFnZS4KKyAgICAgICAg
RXhwb3NpbmcgaXQgYXMgaW50ZXJuYWxzIHNvIHRoYXQgbGF5b3V0IHRlc3RzIGNhbiBiZSB1c2Vk
IGZvciB0ZXN0aW5nIHBlcnNpc3RlbmN5IGJ5IGNvbWJpbmluZyBjbGVhcmluZyBhbmQgcHJpdmF0
ZSBicm93c2luZyBtb2RlLgorCisgICAgICAgIEludHJvZHVjaW5nIFJlYWREaXNrIGFuZCBXcml0
ZURpc2sgZXJyb3JzIHRoYXQgYXJlIHVzZWQgYnkgQ2FjaGVTdG9yYWdlOjpFbmdpbmUuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OmVycm9yVG9FeGNlcHRpb24pOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRp
b24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuaWRsOgorCisyMDE3LTA4LTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKwogICAgICAgICBTZXR0aW5nIHRoZSBjYWNoZSBzdG9yYWdlIGVuZ2luZSByb290IHBh
dGggYWNjb3JkaW5nIHRoZSBzZXNzaW9uIFdlYnNpdGVEYXRhU3RvcmUKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA1NQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE4
MTNmM2MzNjQzMTY5MmRhOGU1ODc2OGRmYjRmOTZkZjliMDYwZmUuLmFkMDJkYjliYzczMTYyMzJm
MDM5ODNlNGJjYzM4NTQ1NjU3M2VmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODAgQEAKIDIwMTct
MDgtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCisgICAgICAgIFtDYWNo
ZSBBUEldIFN1cHBvcnQgY2FjaGUgbmFtZXMgcGVyc2lzdGVuY3kKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBkaXNrIHJlYWQvd3JpdGUgY2Fw
YWNpdGllcyB0byBDYWNoZVN0b3JhZ2UgZW5naW5lLgorICAgICAgICBUaGlzIGlzIHVzZWQgdG8g
c3RvcmUgcGVyLW9yaWdpbiBjYWNoZSBuYW1lcyBpbiBhIGZpbGUuCisgICAgICAgIE1ha2luZyBF
bmdpbmUgYSB0aHJlYWQgc2FmZSByZWZjb3VudGVkIG9iamVjdCBzbyB0aGF0IGl0IGRvZXMgcmVh
ZC93cml0ZSBpbiBhIGJhY2tncm91bmQgdGhyZWFkLgorCisgICAgICAgIEludHJvZHVjaW5nIENh
Y2hlU3RvcmFnZTo6Q2FjaGVzIGFzIHRoZSBvYmplY3QgbWFuYWdpbmcgdGhlIGxpc3Qgb2YgQ2Fj
aGUgb2JqZWN0cyBmb3IgYSBnaXZlbiBvcmlnaW4uCisgICAgICAgIENhY2hlcyB3aWxsIGJlIHJl
c3BvbnNpYmxlIHRvIGRvIGFsbCB0aGUgcmVhZC93cml0ZSBvcGVyYXRpb25zIGZvciBhbGwgb2Yg
aXRzIGNhY2hlcy4KKyAgICAgICAgSXQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcXVvdGEgbGlt
aXRhdGlvbiBhcyB3ZWxsLgorCisgICAgICAgIE1vdmluZyBwYXJ0IG9mIHRoZSBsb2dpYyBmcm9t
IENhY2hlU3RvcmFnZTo6RW5naW5lIGludG8gQ2FjaGVTdG9yYWdlOjpDYWNoZXMuCisKKyAgICAg
ICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUgaXMgaW5pdGlhbGl6ZWQgYXN5bmNocm9ub3VzbHkgYXMg
aXQgZmlyc3QgY3JlYXRlcyBhIHNhbHQgd2hpY2ggaXMgdXNlZAorICAgICAgICB0byBvYmZ1c2Nh
dGUgdGhlIG5hbWVzIG9mIHRoZSB2YXJpb3VzIGZpbGVzIHN0b3JlZCBvbiBkaXNrLgorCisgICAg
ICAgIEluIHRoZSBzYW1lIHNwaXJpdCwgQ2FjaGVTdG9yYWdlOjpDYWNoZXMgaXMgaW5pdGlhbGl6
ZWQgYXN5bmNocm9ub3VzbHkgYXMgaXQgbmVlZHMgdG8gcmVhZCBmcm9tIHRoZSBkaXNrIHRoZSBs
aXN0IG9mIGNhY2hlIG5hbWVzLgorICAgICAgICBPbmNlIHJlYWQsIHRoZSBuYW1lcyB3aWxsIGJl
IHN0b3JlZCBpbiBtZW1vcnkuCisgICAgICAgIEFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byBjbGVh
ciB0aGlzIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbi4gVGhpcyB3aWxsIGJlIHVzZWZ1bCBmb3Ig
dGVzdGluZy4KKyAgICAgICAgVGhpcyBtaWdodCBhbHNvIGJlIHVzZWZ1bCB0byBzYXZlIG1lbW9y
eSB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgdXNlIG9mIENhY2hlU3RvcmFnZSBieSB3ZWIgcGFnZXMu
CisKKyAgICAgICAgSW50cm9kdWNpbmcgYSBuZXcgY2FjaGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFt
ZSBwYXJhbWV0ZXIgZm9yIFdlYnNpdGVEYXRhU3RvcmUgc28gYXMgdG8gc2VnbWVudCB0aGUgZGlm
ZmVyZW50IHBlciBzZXNzaW9uIENhY2hlU3RvcmFnZUVuZ2luZQorICAgICAgICBpbiBkaXJlY3Qg
c3ViIGZvbGRlcnMgb2YgdGhlIG1haW4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5IGZvbGRlci4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJl
bW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZUNh
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZVJl
Y29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZWFkQ2FjaGVzRnJv
bURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2FjaGUpOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6d3JpdGVGaWxlKTogTWFraW5n
IHVzZSBvZiBkZWZhdWx0IHBhcmFtZXRlciB0byBkaXJlY3RseSByZXR1cm4gdG8gdGhlIG1haW4g
bG9vcC4KKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlYWRGaWxlKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJv
b3RQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnNh
bHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6bmV4dENh
Y2hlSWRlbnRpZmllcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6Y2FjaGVzUm9vdFBhdGgpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OmNhY2hl
c0xpc3RGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpD
YWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpmaW5kKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6Om9wZW4pOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjplbmNvZGVDYWNoZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpkZWNvZGVDYWNoZXNOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2Fj
aGVzOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkNhY2hlczo6d3JpdGVDYWNoZXNUb0Rpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpjYWNoZUluZm9zIGNvbnN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6aXNJbml0aWFsaXplZCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpkZXRhY2gpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjptYWtlU2FsdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmg6CisKKzIwMTctMDgtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCiAgICAgICAgIFNldHRpbmcgdGhlIGNhY2hlIHN0b3JhZ2UgZW5naW5lIHJvb3Qg
cGF0aCBhY2NvcmRpbmcgdGhlIHNlc3Npb24gV2Vic2l0ZURhdGFTdG9yZQogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDU1CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5k
ZXggZjIwODBkYzk5MWJmYTViNGU1NDM2Y2Q3NTdjZGJkNWYxMjg5YTA3OC4uNGM0MjI3MTA1ZGQz
NTU3YTNiZTZmODNhOTQ5MTdkYjBmNDQ3Y2QxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ1LDYgKzQ1LDkg
QEAgcHVibGljOgogICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBE
T01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGJhdGNoUHV0
T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPERPTUNhY2hlOjpSZWNv
cmQ+JiYsIERPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCisgICAgLy8g
VXNlZCBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBET01DYWNoZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRE9NQ2FjaGU6OkVycm9y
OjpOb3RJbXBsZW1lbnRlZCk7IH0KKwogcHJvdGVjdGVkOgogICAgIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24oKSA9ICBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCmluZGV4IDMzZGE4MDg1NDQ1YmRjOGYwYWFkY2U4ODI4ZTZlZGY0OTkwYjgxOWMuLjMz
ZjI3NGRkYjViZjYzMjMwZGRhNGJkY2I3YTBlNzExNjFmOWY5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC00MCw2ICs0MCwxMCBAQCBFeGNlcHRpb24g
ZXJyb3JUb0V4Y2VwdGlvbihFcnJvciBlcnJvcikKICAgICBzd2l0Y2ggKGVycm9yKSB7CiAgICAg
Y2FzZSBFcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJOb3QgaW1wbGVtZW50ZWQiKSB9OworICAg
IGNhc2UgRXJyb3I6OlJlYWREaXNrOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVy
cm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCByZWFkaW5nIGRhdGEgZnJvbSB0aGUgZmlsZSBzeXN0
ZW0iKSB9OworICAgIGNhc2UgRXJyb3I6OldyaXRlRGlzazoKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgd3JpdGluZyBkYXRhIHRvIHRo
ZSBmaWxlIHN5c3RlbSIpIH07CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJvciIpIH07CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IGMyMTIzYTk0YTM2NDUy
OTY2ZTMyYWEzNGY2NzI2NDZlZjExNWI0NTMuLmVlYmU2Njc4Mjc0MDkxYWMwYjc1NGIyYzVjMzRk
MDhiOTgxM2Y3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAg
LTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIERPTUNhY2hlIHsKIAogZW51bSBjbGFzcyBFcnJvciB7
CiAgICAgTm90SW1wbGVtZW50ZWQsCisgICAgUmVhZERpc2ssCisgICAgV3JpdGVEaXNrLAogICAg
IEludGVybmFsCiB9OwogCkBAIC05NCw2ICs5Niw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yLAogICAgICAgICBXZWJD
b3JlOjpET01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkLAorICAgICAgICBXZWJDb3JlOjpE
T01DYWNoZTo6RXJyb3I6OlJlYWREaXNrLAorICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJy
b3I6OldyaXRlRGlzaywKICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yOjpJbnRlcm5h
bAogICAgID47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg0Mjc1
ZGYzMzU5YzJjNzIxNDE1NmYyM2Q2MWM5ODViZGNkYTQ3MDMuLjJmOWFmMDIzMzE2YmMzNDRhYTg5
M2VlMTdlYmJlMWU1NDE5NmIzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuaCIKICNpbmNsdWRlICJD
U1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdXBwb3J0c1J1bGUuaCIKKyNpbmNsdWRlICJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIu
aCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00MTM2LDQgKzQxMzgsMTkgQEAgU3RyaW5n
IEludGVybmFsczo6YXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSBjb25zdAogICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogfQogCit2b2lkIEludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlS
ZXByZXNlbnRhdGlvbigpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQo
KTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fY2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbikgeworICAgICAgICBpZiAoYXV0byogcGFnZSA9IGNvbnRleHRE
b2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgICAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24g
PSBwYWdlLT5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24ocGFnZS0+c2Vzc2lvbklEKCkpOworICAgICAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVj
dGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLnRvU3RyaW5nKCksIFtdKHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGU6OkVycm9yPiYmKSB7IH0p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAppbmRleCBkMjc4MjdkMTM2ZTlmYTBlMGY4MjQ0Mjg5ZTQ4ZWFmN2JkMmUyYjM4Li4yYjgxNDYw
NGRjNWVlYzdiMzhlNzk0NjMzMDAzMjg3NWJkYWVkZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKQEAgLTQzLDYgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QXVkaW9Db250ZXh0OworY2xhc3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIGNsYXNzIERPTVJl
Y3Q7CiBjbGFzcyBET01SZWN0TGlzdDsKIGNsYXNzIERPTVVSTDsKQEAgLTU5OCw2ICs1OTksOCBA
QCBwdWJsaWM6CiAKICAgICBTdHJpbmcgYXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSBjb25zdDsKIAor
ICAgIHZvaWQgY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCYpOwogICAgIERvY3VtZW50KiBj
b250ZXh0RG9jdW1lbnQoKSBjb25zdDsKQEAgLTYxOCw2ICs2MjEsNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yU3R1YkZyb250ZW5kPiBtX2luc3Bl
Y3RvckZyb250ZW5kOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hl
U3RvcmFnZUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNDI3MWFlMmYyNmIwMjc2MGRiZWU1MTIxOTZm
ZTYwYThmYWJhZjgxNC4uZTg3YTc0YzU4YWM1YzJjNmYxZjk4YjFlYzhiZWZhZTQxMTE5MTIxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTQ0LDUgKzU0NCw3IEBAIGVu
dW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJF
QU1dIHZvaWQgcmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbSBzdHJlYW0sIE1lZGlh
U3RyZWFtVHJhY2sgdHJhY2spOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHZvaWQg
c2ltdWxhdGVNZWRpYVN0cmVhbVRyYWNrQ2FwdHVyZVNvdXJjZUZhaWx1cmUoTWVkaWFTdHJlYW1U
cmFjayB0cmFjayk7CiAKKyAgICB2b2lkIGNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50
YXRpb24oKTsKKwogICAgIERPTVN0cmluZyBhdWRpb1Nlc3Npb25DYXRlZ29yeSgpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CmluZGV4IGNkNDE4Yjk4NzI0Y2RhYzE4OGViNWUxYWIyNDhjZTBhNDI3OTZm
ZGYuLjI0ZDYzNjc3NDNjNjQ5MTUyZjMyOWJlNWViYzNkMzJlMzYyN2Y4MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dApAQCAtMTE3LDYgKzExNyw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBOZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKIAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKKyAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggODZjZmNkNmE3YWEyZmQyOTNkZWIwODAzOWFmMmJhMDVh
ODFlODE0My4uYTU5ZjM2M2M3ZmZiMmY3OTA4MzkxODI4NDFjNDdjMTk0NjcwYmM2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcApAQCAtODQsNDIgKzg0LDQwIEBAIHZvaWQgRW5naW5lOjpvcGVuKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlmaWVy
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvJiBjYWNoZXMg
PSBjYWNoZXNPckVycm9yLnZhbHVlKCkuZ2V0KCk7CisgICAgICAgIENhY2hlcyYgY2FjaGVzID0g
Y2FjaGVzT3JFcnJvci52YWx1ZSgpOwogCi0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBjYWNoZXMu
ZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLm5hbWUgPT0g
Y2FjaGVOYW1lOyB9KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIgPSArK21fbmV4dENhY2hlSWRlbnRpZmll
cjsKLSAgICAgICAgICAgIGNhY2hlcy5hcHBlbmQoQ2FjaGUgeyBjYWNoZUlkZW50aWZpZXIsIGNh
Y2hlTmFtZSwgVmVjdG9yPFJlY29yZD4oKSwgMCB9KTsKLSAgICAgICAgICAgIHdyaXRlQ2FjaGVz
VG9EaXNrKFtjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0
ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFs
dWUoKSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjYWxsYmFjayhjYWNoZXNbcG9zaXRpb25d
LmlkZW50aWZpZXIpOworICAgICAgICBpZiAoYXV0byogY2FjaGUgPSBjYWNoZXMuZmluZChjYWNo
ZU5hbWUpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhjYWNoZS0+aWRlbnRpZmllcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBjYWNoZXMub3BlbihTdHJpbmcg
eyBjYWNoZU5hbWUgfSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IENhY2hl
SWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhyZXN1bHQpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OnJlbW92
ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxDYWNoZT4gcmVtb3ZlZENhY2hlOworICAgIENh
Y2hlcyogY2FjaGVzVG9Nb2RpZnkgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgY2FjaGVzIDog
bV9jYWNoZXMudmFsdWVzKCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IGNhY2hlcy5maW5k
TWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9
PSBjYWNoZUlkZW50aWZpZXI7IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQp
IHsKLSAgICAgICAgICAgIHJlbW92ZWRDYWNoZSA9IFdURk1vdmUoY2FjaGVzW3Bvc2l0aW9uXSk7
Ci0gICAgICAgICAgICBjYWNoZXMucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICAgICAgYXV0byogY2Fj
aGVUb1JlbW92ZSA9IGNhY2hlcy0+ZmluZChjYWNoZUlkZW50aWZpZXIpOworICAgICAgICBpZiAo
Y2FjaGVUb1JlbW92ZSkgeworICAgICAgICAgICAgY2FjaGVzVG9Nb2RpZnkgPSBjYWNoZXMucHRy
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIXJlbW92
ZWRDYWNoZSkgewotICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChFcnJvcjo6SW50ZXJu
YWwpKTsKKyAgICBpZiAoIWNhY2hlc1RvTW9kaWZ5KSB7CisgICAgICAgIGF1dG8gcG9zaXRpb24g
PSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJl
dHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyOyB9KTsKKyAgICAgICAgaWYg
KHBvc2l0aW9uID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBl
Y3RlZChFcnJvcjo6SW50ZXJuYWwpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBjYWxsYmFjayhjYWNoZUlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIG1fcmVtb3ZlZENhY2hlcy5hcHBlbmQoV1RGTW92ZShyZW1vdmVkQ2FjaGUudmFsdWUo
KSkpOwotICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKKworICAg
IGNhY2hlc1RvTW9kaWZ5LT5yZW1vdmUoY2FjaGVJZGVudGlmaWVyLCBbY2FjaGVJZGVudGlmaWVy
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVy
cm9yKSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVu
ZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM2LDE0
ICsxMzQsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmln
aW4sIENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgYXV0byYgY2FjaGVzID0gY2FjaGVzT3JFcnJvci52YWx1ZSgp
LmdldCgpOwotCi0gICAgICAgIFZlY3RvcjxDYWNoZUluZm8+IGNhY2hlc0luZm87Ci0gICAgICAg
IGNhY2hlc0luZm8ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYWNoZXMuc2l6ZSgpKTsKLSAgICAg
ICAgZm9yIChhdXRvJiBjYWNoZSA6IGNhY2hlcykKLSAgICAgICAgICAgIGNhY2hlc0luZm8udW5j
aGVja2VkQXBwZW5kKENhY2hlSW5mbyB7IGNhY2hlLmlkZW50aWZpZXIsIGNhY2hlLm5hbWV9KTsK
LQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNhY2hlc0luZm8pKTsKKyAgICAgICAgY2FsbGJh
Y2soY2FjaGVzT3JFcnJvci52YWx1ZSgpLmdldCgpLmNhY2hlSW5mb3MoKSk7CiAgICAgfSk7CiB9
CiAKQEAgLTE1OSw3ICsxNTAsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhYwogCiAgICAgICAg
IFZlY3RvcjxSZWNvcmQ+IGNvcHk7CiAgICAgICAgIGNvcHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShyZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVzdWx0LnZh
bHVlKCkuZ2V0KCkucmVjb3JkcykKKyAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiByZWNvcmRz
KQogICAgICAgICAgICAgY29weS51bmNoZWNrZWRBcHBlbmQocmVjb3JkLmNvcHkoKSk7CiAKICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShjb3B5KSk7CkBAIC0yNDQsMjEgKzIzNSw2MiBAQCB2b2lk
IEVuZ2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6d3JpdGVDYWNo
ZXNUb0Rpc2soRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmKT4mJiBjYWxsYmFj
aykKK3ZvaWQgRW5naW5lOjppbml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxF
cnJvcj4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3cml0aW5n
LgotICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgaWYgKG1fc2FsdCkgeworICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKKyAgICAgICAgbV9zYWx0ID0gbWFrZVNhbHQoKTsKKyAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoInNhbHQiKSk7CisgICAgbV9pb1F1ZXVlLT5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBzYWx0UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBhdGgpOworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCB0aGlzLCBzYWx0ID0gcmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFzYWx0
KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXJyb3I6OldyaXRlRGlzayk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zYWx0ID0gV1RG
TW92ZShzYWx0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAg
IH0pOworICAgIH0pOwogfQogCiB2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgcmVhZGluZy4KLQotICAgIGF1dG8mIGNhY2hlcyA9IG1fY2FjaGVzLmVu
c3VyZShvcmlnaW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxDYWNoZT4oKTsKKyAgICBh
dXRvJiBjYWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBbJm9yaWdpbiwgdGhpc10gewor
ICAgICAgICByZXR1cm4gQ2FjaGVzOjpjcmVhdGUoKnRoaXMsIG9yaWdpbik7CiAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOwogCi0gICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxWZWN0
b3I8Q2FjaGU+PiB7IGNhY2hlcyB9KTsKKyAgICBpZiAoY2FjaGVzLT5pc0luaXRpYWxpemVkKCkp
IHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgY2Fj
aGVzLmdldCgpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW5pdGlhbGl6ZShb
dGhpcywgb3JpZ2luLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFs
PEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAg
ICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNhY2hlcyA9IG1fY2FjaGVzLmdl
dChvcmlnaW4pOworICAgICAgICBBU1NFUlQoY2FjaGVzKTsKKworICAgICAgICBjYWNoZXMtPmlu
aXRpYWxpemUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlc10oc3RkOjpvcHRp
b25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBj
YWxsYmFjayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlcz4geyAqY2FjaGVzIH0pOworICAg
ICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OnJlYWRDYWNoZSh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIENhY2hlQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTI4OCwxMSArMzIw
LDggQEAgQ2FjaGUqIEVuZ2luZTo6Y2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogewog
ICAgIENhY2hlKiByZXN1bHQgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgY2FjaGVzIDogbV9j
YWNoZXMudmFsdWVzKCkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IGNhY2hlcy5maW5kTWF0
Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBj
YWNoZUlkZW50aWZpZXI7IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsK
LSAgICAgICAgICAgIHJlc3VsdCA9ICZjYWNoZXNbcG9zaXRpb25dOworICAgICAgICBpZiAoKHJl
c3VsdCA9IGNhY2hlcy0+ZmluZChjYWNoZUlkZW50aWZpZXIpKSkKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9CiAgICAgfQogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGF1dG8gcG9z
aXRpb24gPSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVt
KSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyOyB9KTsKQEAgLTMy
MiwxNyArMzUxLDE0IEBAIHZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpLCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxl
IHsKKyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHko
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3Blbihm
aWxlbmFtZSwgSU9DaGFubmVsOjpUeXBlOjpDcmVhdGUpOwotICAgICAgICBjaGFubmVsLT53cml0
ZSgwLCBkYXRhLCBtX2lvUXVldWUuZ2V0KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShpbnQgZXJyb3IpIG11dGFibGUgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBlcnJvcl0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFVzZSBzcGVjaWZpYyBmaWxlc3lzdGVtIGVycm9yLgotICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhFcnJvcjo6SW50ZXJuYWwpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgICAgICAgICB9KTsKKyAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgZGF0YSwgbnVsbHB0ciwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGludCBlcnJvcikgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6V3Jp
dGVEaXNrKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAg
LTM0NCw3ICszNzAsNyBAQCB2b2lkIEVuZ2luZTo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IE5ldHdvcmtDYQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBmaWxlbmFtZSA9
IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIG1faW9RdWV1ZS0+ZGlz
cGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGZpbGVuYW1lID0gZmlsZW5hbWUu
aXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hh
bm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsKICAgICAgICAgaWYg
KGNoYW5uZWwtPmZpbGVEZXNjcmlwdG9yKCkgPCAwKSB7CiAgICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7
CkBAIC0zNTMsMTAgKzM3OSw5IEBAIHZvaWQgRW5naW5lOjpyZWFkRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgTmV0d29ya0NhCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIG1faW9RdWV1ZS5nZXQoKSwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGRhdGEsIGVycm9yXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKGRhdGEsIGVycm9yKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICBjaGFubmVsLT5y
ZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIG51bGxwdHIsIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11
dGFibGUgeworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB0aGUgZGVjb2Rpbmcg
aW4gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorICAgICAgICAgICAgY2FsbGJhY2soZGF0YSwgZXJy
b3IpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTM3MSw2ICszOTYsMTUgQEAgdm9pZCBF
bmdpbmU6OnJlbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICB9KTsKIH0KIAor
dm9pZCBFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmln
aW4pCit7CisgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW10oQ2FjaGVzT3JFcnJvciYm
IHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICByZXN1bHQudmFsdWUoKS5nZXQoKS5jbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uKCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIENhY2hlU3RvcmFnZQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IGI1ZTIyNjA0MTczYzA3MTVh
ZTQzYzJkODBlMDQ0MzczM2EwZWQ0OTAuLjkzYTc0YzFiMWE1NmJjNGQ5MjNmZDVhMjhlYTVjNTUy
OWRhNDc3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgiCisjaW5jbHVkZSAiQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRGF0YS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CkBAIC02MywxMyArNjMsMTkgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZEZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IE5ldHdvcmtDYWNo
ZTo6RGF0YSYsIGludCBlcnJvcik+JiYpOwogICAgIHZvaWQgcmVtb3ZlRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKTsKIAorICAgIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3RQYXRoOyB9CisgICAgY29uc3QgTmV0d29ya0NhY2hlOjpTYWx0JiBzYWx0KCkg
Y29uc3QgeyByZXR1cm4gbV9zYWx0LnZhbHVlKCk7IH0KKyAgICB1aW50NjRfdCBuZXh0Q2FjaGVJ
ZGVudGlmaWVyKCkgeyByZXR1cm4gKyttX25leHRDYWNoZUlkZW50aWZpZXI7IH0KKworICAgIHZv
aWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbik7CisKIHBy
aXZhdGU6CiAgICAgc3RhdGljIEVuZ2luZSYgZGVmYXVsdEVuZ2luZSgpOwogICAgIGV4cGxpY2l0
IEVuZ2luZShTdHJpbmcmJiByb290UGF0aCk7CiAKLSAgICB2b2lkIHdyaXRlQ2FjaGVzVG9EaXNr
KFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBpbml0
aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZTo6RXJy
b3I+JiYpPiYmKTsKIAotICAgIHVzaW5nIENhY2hlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFZlY3RvcjxDYWNoZT4+LCBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I+
OworICAgIHVzaW5nIENhY2hlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPENhY2hlcz4sIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj47CiAgICAgdXNpbmcgQ2FjaGVz
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVzT3JFcnJvciYmKT47CiAgICAgdm9p
ZCByZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNr
JiYpOwogCkBAIC04NCwxMSArOTAsMTIgQEAgcHJpdmF0ZToKIAogICAgIENhY2hlKiBjYWNoZSh1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxD
YWNoZT4+IG1fY2FjaGVzOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8Q2FjaGVzPj4gbV9jYWNo
ZXM7CiAgICAgVmVjdG9yPENhY2hlPiBtX3JlbW92ZWRDYWNoZXM7CiAgICAgdWludDY0X3QgbV9u
ZXh0Q2FjaGVJZGVudGlmaWVyIHsgMCB9OwogICAgIFN0cmluZyBtX3Jvb3RQYXRoOwogICAgIFJl
ZlB0cjxXb3JrUXVldWU+IG1faW9RdWV1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtDYWNo
ZTo6U2FsdD4gbV9zYWx0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGY4ODA2ODczNGY1MDU1MzM4Njcw
OTc1MTdiYmVlMWFjNmU0ZWNkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtMCwwICsx
LDI0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCisKKyNp
bmNsdWRlICJOZXR3b3JrQ2FjaGVDb2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25h
bWVzcGFjZSBDYWNoZVN0b3JhZ2UgeworCitzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNSb290
UGF0aChFbmdpbmUmIGVuZ2luZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgS2V5IGtl
eShlbmdpbmUucm9vdFBhdGgoKSwgeyB9LCB7IH0sIG9yaWdpbiwgZW5naW5lLnNhbHQoKSk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChlbmdpbmUucm9vdFBh
dGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKTsKK30KKworc3RhdGljIGlubGluZSBT
dHJpbmcgY2FjaGVzTGlzdEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCit7
CisgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290
UGF0aCwgQVNDSUlMaXRlcmFsKCJjYWNoZXNsaXN0IikpOworfQorCitDYWNoZXM6OkNhY2hlcyhF
bmdpbmUmIGVuZ2luZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCisgICAgOiBtX2VuZ2luZSgmZW5n
aW5lKQorICAgICwgbV9yb290UGF0aChjYWNoZXNSb290UGF0aChlbmdpbmUsIG9yaWdpbikpCit7
Cit9CisKK3ZvaWQgQ2FjaGVzOjppbml0aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9pc0luaXRpYWxpemVkIHx8ICFt
X2VuZ2luZSB8fCAhbV9lbmdpbmUtPnNob3VsZFBlcnNpc3QoKSkgeworICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3Rv
cmFnZSkgeworICAgICAgICBtX3BlbmRpbmdJbml0aWFsaXphdGlvbkNhbGxiYWNrcy5hcHBlbmQo
V1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBz
dG9yYWdlID0gU3RvcmFnZTo6b3BlbihtX3Jvb3RQYXRoLCBTdG9yYWdlOjpNb2RlOjpOb3JtYWwp
OworICAgIGlmICghc3RvcmFnZSkgeworICAgICAgICBjYWxsYmFjayhFcnJvcjo6V3JpdGVEaXNr
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3N0b3JhZ2UgPSBzdG9yYWdlLnJlbGVh
c2VOb25OdWxsKCk7CisgICAgcmVhZENhY2hlc0Zyb21EaXNrKFt0aGlzLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJvcj4mJiByZXN1bHQp
IHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAgICAgICAgICAgY2FsbGJh
Y2socmVzdWx0LmVycm9yKCkpOworCisgICAgICAgICAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3Mg
PSBXVEZNb3ZlKG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBwZW5kaW5nQ2FsbGJhY2tzKQorICAgICAgICAgICAgICAg
IGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBtX2NhY2hlcyA9IFdURk1vdmUocmVzdWx0LnZhbHVlKCkpOworICAgICAgICBt
X2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwor
CisgICAgICAgIGF1dG8gcGVuZGluZ0NhbGxiYWNrcyA9IFdURk1vdmUobV9wZW5kaW5nSW5pdGlh
bGl6YXRpb25DYWxsYmFja3MpOworICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcGVuZGlu
Z0NhbGxiYWNrcykKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgfSk7
Cit9CisKK0NhY2hlKiBDYWNoZXM6OmZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGF1
dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0p
IHsgcmV0dXJuIGl0ZW0ubmFtZSA9PSBuYW1lOyB9KTsKKyAgICByZXR1cm4gKHBvc2l0aW9uICE9
IG5vdEZvdW5kKSA/ICZtX2NhY2hlc1twb3NpdGlvbl0gOiBudWxscHRyOworfQorCitDYWNoZSog
Q2FjaGVzOjpmaW5kKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgYXV0byBwb3NpdGlvbiA9
IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRl
bS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgIGlmIChwb3NpdGlvbiAhPSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuICZtX2NhY2hlc1twb3NpdGlvbl07CisKKyAgICBwb3NpdGlv
biA9IG1fcmVtb3ZlZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsg
cmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICByZXR1cm4gKHBv
c2l0aW9uICE9IG5vdEZvdW5kKSA/ICZtX3JlbW92ZWRDYWNoZXNbcG9zaXRpb25dIDogbnVsbHB0
cjsKK30KKwordWludDY0X3QgQ2FjaGVzOjpvcGVuKFN0cmluZyYmIG5hbWUsIENhY2hlSWRlbnRp
ZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5naW5lKTsKKworICAg
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciA9IG1fZW5naW5lLT5uZXh0Q2FjaGVJZGVudGlmaWVy
KCk7CisgICAgbV9jYWNoZXMuYXBwZW5kKENhY2hlIHsgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3Zl
KG5hbWUpLCB7IH0sIDAgfSk7CisgICAgd3JpdGVDYWNoZXNUb0Rpc2soW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGNhY2hlSWRlbnRpZmllcl0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBl
cnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY2FsbGJh
Y2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKGNhY2hlSWRlbnRpZmllcik7CisgICAgfSk7Cisg
ICAgcmV0dXJuIGNhY2hlSWRlbnRpZmllcjsKK30KKwordm9pZCBDYWNoZXM6OnJlbW92ZSh1aW50
NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBB
U1NFUlQobV9lbmdpbmUpOworCisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRj
aGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlk
ZW50aWZpZXI7IH0pOworCisgICAgQVNTRVJUKHBvc2l0aW9uICE9IG5vdEZvdW5kKTsKKworICAg
IGF1dG8gY2FjaGUgPSBXVEZNb3ZlKG1fY2FjaGVzW3Bvc2l0aW9uXSk7CisgICAgbV9jYWNoZXMu
cmVtb3ZlKHBvc2l0aW9uKTsKKyAgICBtX3JlbW92ZWRDYWNoZXMuYXBwZW5kKFdURk1vdmUoY2Fj
aGUpKTsKKworICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwor
c3RhdGljIGlubGluZSBEYXRhIGVuY29kZUNhY2hlTmFtZXMoY29uc3QgVmVjdG9yPENhY2hlPiYg
Y2FjaGVzKQoreworICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKworICAg
IHVpbnQ2NF90IHNpemUgPSBjYWNoZXMuc2l6ZSgpOworICAgIGVuY29kZXIgPDwgc2l6ZTsKKyAg
ICBmb3IgKGF1dG8mIGNhY2hlIDogY2FjaGVzKQorICAgICAgICBlbmNvZGVyIDw8IGNhY2hlLm5h
bWU7CisKKyAgICByZXR1cm4gRGF0YSB7IGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpIH07Cit9CisKK3N0YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIEVy
cm9yPiBkZWNvZGVDYWNoZXNOYW1lcyhjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpCit7Cisg
ICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWRE
aXNrKTsKKworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOworICAgIHVpbnQ2NF90IGNvdW50OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY291bnQpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWRE
aXNrKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOworICAgIG5hbWVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoY291bnQpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBj
b3VudDsgKytpbmRleCkgeworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJv
cjo6UmVhZERpc2spOworCisgICAgICAgIG5hbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5h
bWUpKTsKKyAgICB9CisgICAgcmV0dXJuIG5hbWVzOworfQorCit2b2lkIENhY2hlczo6cmVhZENh
Y2hlc0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBF
cnJvcj4mJik+JiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5naW5lKTsKKyAgICBBU1NF
UlQoIW1faXNJbml0aWFsaXplZCk7CisgICAgQVNTRVJUKG1fY2FjaGVzLmlzRW1wdHkoKSk7CisK
KyAgICBpZiAoIW1fZW5naW5lLT5zaG91bGRQZXJzaXN0KCkpIHsKKyAgICAgICAgY2FsbGJhY2so
VmVjdG9yPENhY2hlPiB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBm
aWxlbmFtZSA9IGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKTsKKyAgICBpZiAoIVdlYkNv
cmU6OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CisgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNo
ZT4geyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZW5naW5lLT5yZWFkRmls
ZShmaWxlbmFtZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCFtX2VuZ2luZSkgeworICAgICAgICAgICAgY2FsbGJhY2soVmVj
dG9yPENhY2hlPiB7IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgYXV0byByZXN1bHQgPSBkZWNvZGVDYWNoZXNOYW1lcyhkYXRhLCBlcnJvcik7CisgICAgICAg
IGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgVmVjdG9yPENhY2hlPiBjYWNoZXM7CisgICAgICAgIGNhY2hlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHJlc3VsdC52YWx1ZSgpLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYg
bmFtZSA6IHJlc3VsdC52YWx1ZSgpKQorICAgICAgICAgICAgY2FjaGVzLnVuY2hlY2tlZEFwcGVu
ZChDYWNoZSB7IG1fZW5naW5lLT5uZXh0Q2FjaGVJZGVudGlmaWVyKCksIFdURk1vdmUobmFtZSks
IHsgfSwgMCB9KTsKKworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNhY2hlcykpOworICAgIH0p
OworfQorCit2b2lkIENhY2hlczo6d3JpdGVDYWNoZXNUb0Rpc2soQ29tcGxldGlvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2VuZ2luZS0+c2hvdWxkUGVyc2lzdCgpKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQobV9lbmdpbmUpOworCisgICAgaWYgKG1fY2FjaGVzLmlzRW1wdHkoKSkgewor
ICAgICAgICBtX2VuZ2luZS0+cmVtb3ZlRmlsZShjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0
aCkpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9lbmdpbmUtPndyaXRlRmlsZShjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290
UGF0aCksIGVuY29kZUNhY2hlTmFtZXMobV9jYWNoZXMpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsKKyAgICB9KTsKK30KKyAgICAKK3ZvaWQgQ2FjaGVz
OjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKCkKK3sKKyAgICBtX2NhY2hlcy5jbGVhcigpOwor
ICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOworICAgIG1fc3RvcmFnZSA9IG51bGxwdHI7Cit9
CisKK1ZlY3RvcjxDYWNoZUluZm8+IENhY2hlczo6Y2FjaGVJbmZvcygpIGNvbnN0Cit7CisgICAg
VmVjdG9yPENhY2hlSW5mbz4gY2FjaGVJbmZvczsKKyAgICBjYWNoZUluZm9zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9jYWNoZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNhY2hlIDogbV9j
YWNoZXMpCisgICAgICAgIGNhY2hlSW5mb3MudW5jaGVja2VkQXBwZW5kKENhY2hlSW5mbyB7IGNh
Y2hlLmlkZW50aWZpZXIsIGNhY2hlLm5hbWUgfSk7CisgICAgcmV0dXJuIGNhY2hlSW5mb3M7Cit9
CisKK30gLy8gbmFtZXNwYWNlIENhY2hlU3RvcmFnZQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkYzYxNTE4MjVhNmMwOGI3MzBk
ZjU2MWZkNDQ3NTY0MTUyYjI5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCkBAIC0wLDAgKzEs
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmgiCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CisKK2NsYXNzIEVuZ2lu
ZTsKKworY2xhc3MgQ2FjaGVzIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVzPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxDYWNoZXM+IGNyZWF0ZShFbmdpbmUmIGVuZ2luZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVzIHsgZW5naW5lLCBvcmln
aW4gfSk7IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0luaXRpYWxpemVkOyB9CisKKyAgICBDYWNoZSogZmluZChjb25zdCBTdHJpbmcmIG5h
bWUpOworICAgIENhY2hlKiBmaW5kKHVpbnQ2NF90IGlkZW50aWZpZXIpOworCisgICAgdWludDY0
X3Qgb3BlbihTdHJpbmcmJiBuYW1lLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVy
Q2FsbGJhY2smJik7CisgICAgdm9pZCByZW1vdmUodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKworICAgIFZlY3RvcjxXZWJDb3Jl
OjpET01DYWNoZTo6Q2FjaGVJbmZvPiBjYWNoZUluZm9zKCkgY29uc3Q7CisKKyAgICB2b2lkIGNs
ZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICB2b2lkIGRldGFjaCgpIHsgbV9lbmdpbmUg
PSBudWxscHRyOyB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVzKEVuZ2luZSYsIGNvbnN0IFN0cmlu
ZyYgcm9vdFBhdGgpOworCisgICAgdm9pZCByZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlv
bjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj4m
Jik+JiYpOworICAgIHZvaWQgd3JpdGVDYWNoZXNUb0Rpc2soV2ViQ29yZTo6RE9NQ2FjaGU6OkNv
bXBsZXRpb25DYWxsYmFjayYmKTsKKworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2Ug
fTsKKyAgICBFbmdpbmUqIG1fZW5naW5lIHsgbnVsbHB0ciB9OworICAgIFN0cmluZyBtX3Jvb3RQ
YXRoOworICAgIFZlY3RvcjxDYWNoZT4gbV9jYWNoZXM7CisgICAgVmVjdG9yPENhY2hlPiBtX3Jl
bW92ZWRDYWNoZXM7CisgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6U3RvcmFnZT4gbV9zdG9yYWdl
OworICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrPiBtX3Bl
bmRpbmdJbml0aWFsaXphdGlvbkNhbGxiYWNrczsKK307CisKK30gLy8gbmFtZXNwYWNlIENhY2hl
U3RvcmFnZQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwCmluZGV4IGJmNDk5Mzg4ZjM2N2QyZTljNmRlNzBmMDA5NzE3ODYyMDA1M2M0
YmMuLmMwMmNhZmQ3MDA5MDNkN2JjMzU2YjQwZDc5YmU4YWM5Zjk5YzE2OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcApAQCAtNjMsNiArNjMsMTEgQEAgdm9pZCBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXEKICAgICB9KTsKIH0KIAordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCku
Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihvcmlnaW4pOworfQorCiB2b2lkIENhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb246OnJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogewogICAg
IEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIs
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgcmVxdWVz
dElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5oCmluZGV4IGZiM2E2NjRlNTQ1YzRkYWY3NTU4ZmQxNDlhYTFlYTFmMWRm
OWQ1MzMuLjA4MmQxZTQ3MDMwNTdmM2Q3YjBjZGMyM2UzNDFhNzcyNzA4ZTc0ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCkBAIC01NCw2ICs1NCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZW1vdmUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlbW92ZVJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVzKFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCByZXRyaWV2ZUNhY2hlc0lkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKTsKIAorICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworCiAgICAgdm9pZCByZWNvcmRzKFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYpOwog
ICAgIHZvaWQgcHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hl
OjpSZWNvcmQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCmluZGV4IDU5MjJlZWQ2NjcyNzZkZGMxZTU0YTQ4MTg0M2RmYmUzYTllNTJkZTgu
LjRlYWM3NDg1N2UyM2Q2NWUyMTk4ZjRkZTE5YmJmZjJhZDljNzdlZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDgg
QEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7CiAgICAgUmVtb3Zl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFN0cmluZyBvcmlnaW4pOwogCisgICAg
Q2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyBvcmlnaW4pOworCiAgICAgUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIERl
bGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMgb3B0
aW9ucyk7CiAgICAgUHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJD
b3JlOjpET01DYWNoZTo6UmVjb3JkPiByZWNvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5kZXggMzFhZTQ4
ZmU1YWQyZDk3ZGI2YjFjZjY4NDdhMmVmODRjMjBkMDdiNS4uNzQ2ZGQ2ZTJkYzA3ODljMWYyZDI3
MjA5NWI4MTJkOGM4YTQ1MTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAg
Ym9vbCBieXRlc0VxdWFsKGNvbnN0IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCiAgICAgcmV0dXJu
ICFtZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBhLnNpemUoKSk7CiB9CiAKLXN0YXRpYyBTYWx0
IG1ha2VTYWx0KCkKK1NhbHQgbWFrZVNhbHQoKQogewogICAgIFNhbHQgc2FsdDsKICAgICBzdGF0
aWNfYXNzZXJ0KHNhbHQuc2l6ZSgpID09IDgsICJTYWx0IHNpemUiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5kZXgg
NjAwYjVlNDU4MDEyODBmOGY0NTc0MDBmNDRmNjBhZTA5ZTM3ODVhZi4uYzJjOTlkNWFlOGU2YWVm
ZTFkNTUwYWIxZjFjN2UwNjVlOWE3ODdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTEwNSw2ICsxMDUsNyBA
QCBEYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCk7CiAKIHVzaW5nIFNhbHQgPSBzdGQ6OmFy
cmF5PHVpbnQ4X3QsIDg+OwogCitTYWx0IG1ha2VTYWx0KCk7CiBzdGQ6Om9wdGlvbmFsPFNhbHQ+
IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7CiBTSEExOjpEaWdlc3QgY29tcHV0
ZVNIQTEoY29uc3QgRGF0YSYsIGNvbnN0IFNhbHQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGU2NDI5
YTdmYjFkMWQ4ZjE4NjJhNmZiOGU5MzVmYzBmMDUwZjk1ZWQuLmFkZDlhMDMyNTQ3NzE1ZDRkM2U0
MTIxNTZmOTRjODhmY2M5YzI0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xh
c3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+
LCBwdWJsaWMgV2ViUHJvY2Vzc0wKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQ29uZmlndXJhdGlvbiB7
CiAgICAgICAgIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIFN0cmluZyBj
YWNoZVN0b3JhZ2VTdWJkaXJlY3RvcnlOYW1lOwogICAgICAgICBTdHJpbmcgbmV0d29ya0NhY2hl
RGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAg
ICAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4
MmJiZWI5MjcwZjdjMTRiZTU1NTFlZTE4MTVkMzI5ZmQ4YTMwM2NiLi44MzFkYjczN2I1MDJhNzA2
MmU4ZmYyNWJhM2RiYjJhYWZkMjRmZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5MSw2ICs4OTEsNyBAQAogCQk0MTMwNzVCMjFE
RTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTYxREU4NUVFNzAwMzlFQzY5
IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCAqLzsgfTsKIAkJNDEzMDc1QjMxREU4NUY1ODAw
MzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJS
VENQcm92aWRlci5jcHAgKi87IH07CiAJCTQxMzA3NUI0MURFODVGNTgwMDM5RUM2OSAvKiBMaWJX
ZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87
IH07CisJCTQxMzVGQkQxMUY0RkI4MDkwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
NUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgKi87
IH07CiAJCTQxODk3RUNGMUY0MTVENjIwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
ODk3RUNFMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAq
LzsgfTsKIAkJNDE4OTdFRDAxRjQxNUQ2NTAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
ODk3RUNDMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgKi87
IH07CiAJCTQxODk3RUQxMUY0MTVENjgwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg5
N0VDRDFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oICovOyB9
OwpAQCAtMzE2Miw2ICszMTYzLDggQEAKIAkJNDEzMDc1QTYxREU4NUVFNzAwMzlFQzY5IC8qIExp
YldlYlJUQ1NvY2tldEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRD
U29ja2V0RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzVBNzFE
RTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExpYldlYlJUQ1Byb3ZpZGVyLmNw
cDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUu
bGFuZy5jcHA7IH07CiAJCTQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0g
TGliV2ViUlRDUHJvdmlkZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRl
bnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0
N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3
RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUNDMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNo
ZVN0b3JhZ2VQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUNEMUY0MTVE
NUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgyMDEsNiArODIwNCw4IEBACiAJCQkJNDE4OTdFRDYxRjQxNUQ4NjAwMTZGQTQyIC8qIENh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAgKi8sCiAJCQkJNDE4OTdFRDIxRjQxNUQ4NTAwMTZGQTQyIC8q
IENhY2hlU3RvcmFnZUVuZ2luZS5oICovLAogCQkJCTQxRkFCRDI4MUY0RERGREMwMDZBNkM5NyAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oICovLAorCQkJCTQxMzVGQkNGMUY0RkI3RjIwMDc0
QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwICovLAorCQkJCTQxMzVGQkQwMUY0
RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLywKIAkJCQk0MTg5
N0VEMzFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAg
Ki8sCiAJCQkJNDE4OTdFRDQxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uaCAqLywKIAkJCQk0MTg5N0VENTFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTk5OTEsNiArOTk5Niw3IEBA
CiAJCQkJRTE3MDg3NkIxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRjE4NjM4MTY3RDA3MUUwMEExQTg1QSAvKiBDYWNoZU1vZGVs
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODk3RUQ3MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzNUZCRDExRjRGQjgwOTAw
NzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTg5N0VEOTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUEyRTUxRTEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2Fj
aGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggYzNkMTMwMjc1MDljMzJiMzI3
YzI2ZDllNGYxMGY2MTM1OTI0YjIyMy4uYmZkMGJhM2FjMmVjOWE5MzkzNzhkYjU3NTcyNTk1ZTIw
ZjgzNDk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtODYsNiArODYsMTIgQEAgdm9p
ZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLAogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpQdXRSZWNvcmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0
SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZWNvcmRzKSwgMCk7CiB9CiAKK3ZvaWQgV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmIG9yaWdpbiwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNs
ZWFyTWVtb3J5UmVwcmVzZW50YXRpb24obV9zZXNzaW9uSUQsIG9yaWdpbiksIDApOworICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7Cit9CisKIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6b3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2FjaGVJ
ZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KQogewogICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
Om9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uaAppbmRleCAyNWFmZmNmMDBhZGMwOGY4MjE0ZWQ3NGY1MGZjODIxMzhjMTgxYzdjLi5mNTll
MmNmMzE2NTdmY2Y0NDk5ZTllM2JiMWY1M2U1OGZkYmVlZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmgKQEAgLTYwLDYgKzYwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVy
YXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9w
dGlvbnMmJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3Jl
OjpET01DYWNoZTo6UmVjb3JkPiYmKSBmaW5hbDsKIAorICAgIHZvaWQgY2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBs
ZXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKwogICAgIHZvaWQgb3BlbkNvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRp
Zmllck9yRXJyb3ImKTsKICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllck9yRXJy
b3ImKTsKICAgICB2b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
V2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mb3NPckVycm9yJiYpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJhYjQzMjE4
ZDI1NjNjYjA1N2NmMjI1MzYzMmIzOGFlYTQwNzBmMDAuLmEyNDJkNGMxMTljMmUyYTcyZGNlMDY1
Nzc2YWU0NjBlNDU4Mjg0ZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wOC0yOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NhY2hlIEFQSV0gU3Vw
cG9ydCBjYWNoZSBuYW1lcyBwZXJzaXN0ZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUHV0dGluZyB0aGVzZSB0ZXN0cyBpbiBodHRwL3Rlc3RzIGZv
bGRlciBzbyB0aGF0IHRoZXkgcnVuIGluIGEgZGlmZmVyZW50IG9yaWdpbiBhbmQgc28gYSBkaWZm
ZXJlbnQgQ2FjaGVzIHRoYW4gb3RoZXIgdGVzdHMuCisgICAgICAgIFRlc3RpbmcgcHJpdmF0ZSBi
cm93c2luZyBjYWNoaW5nIGFuZCBjbGVhcmluZyB0aGUgbWVtb3J5IHJlcHJlc2VudGF0aW9uIHdv
dWxkIHByb2JhYmx5IGFmZmVjdCBvdGhlciBjYWNoZStwcnZpYXRlIGJyb3dzaW5nIHRlc3RzIHRo
YXQgd291bGQgcnVuIGluIHBhcmFsbGVsLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1z
dG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMv
Y2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy13azEvVGVzdEV4cGVjdGF0aW9uczogU2tpcHBpbmcgbmV3IHRlc3Qgb24gV0sxLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczogRGl0dG8uCisKIDIwMTct
MDgtMjkgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICAgTWFya2Vk
IG1lZGlhL3ZpZGVvLWNvbnRyb2xzLW5vLWRpc3BsYXktd2l0aC10ZXh0LXRyYWNrLmh0bWwgYW5k
IG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWluLW1lZGlhLWRvY3VtZW50Lmh0bWwgYXMgZmxha3kuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVy
c2lzdGVuY3kuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNo
ZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MmNkMjBhNGMwMjk5YmZmZDA5MjZjMDYyM2Q0NzU3MWVjNGEyY2QwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3Rl
bmN5Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACisKKworUEFTUyBDbGVhbmlu
ZyBleGlzdGluZyBjYWNoZXMgCitQQVNTIENsZWFyIG1lbW9yeSByZXByZXNlbnRhdGlvbiBhbmQg
ZGlzYWJsZSBkaXNrIHBlcnNpc3RlbmN5IAorUEFTUyBDbGVhbmluZyBhZGRlZCBjYWNoZXMgZnJv
bSBwcmV2aW91cyB0ZXN0IDEgCitQQVNTIENsZWFyIG1lbW9yeSByZXByZXNlbnRhdGlvbiBidXQg
a2VlcCBkaXNrIHBlcnNpc3RlbmN5IAorUEFTUyBDbGVhbmluZyBhZGRlZCBjYWNoZXMgZnJvbSBw
cmV2aW91cyB0ZXN0IDIgCitQQVNTIEFkZGluZy9SZW1vdmluZyBjYWNoZXMgYW5kIGNsZWFyaW5n
IGluIG1lbW9yeSByZXByZXNlbnRhdGlvbiBhdCB2YXJpb3VzIHRpbWVzIAorUEFTUyBDbGVhbmlu
ZyBhZGRlZCBjYWNoZXMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWQwZjg4Y2E2ZmE5YmJmNWU3MzJiMTkwYmEwM2UzOWRkZjM3NGJlZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJz
aXN0ZW5jeS5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FjaGUgU3RvcmFnZTogdGVzdGluZyBwZXJzaXN0ZW5jeTwv
dGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJjaGVjayI+PC9kaXY+CisgICAgPHNjcmlw
dD4KKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIHJldHVybiBzZWxmLmNhY2hl
cy5rZXlzKCkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIHZhciBwZW5kaW5nID0gW107Cisg
ICAgICAgICAgICBmb3IgKGtleSBvZiBrZXlzKQorICAgICAgICAgICAgICAgIHBlbmRpbmcucHVz
aChzZWxmLmNhY2hlcy5kZWxldGUoa2V5c1swXSkpOworICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UuYWxsKHBlbmRpbmcpOworICAgICAgICB9KTsKKyAgICB9LCAiQ2xlYW5pbmcgZXhpc3Rpbmcg
Y2FjaGVzIik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlmICghd2lu
ZG93LmludGVybmFscyB8fCAhd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzIik7CisKKyAgICAgICAgdGVz
dFJ1bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHRydWUpOworCisgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKChldmVudCkgPT4gewor
ICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09PSAicmVhZHkiKSB7CisgICAgICAgICAg
ICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9u
KCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrLmlubmVySFRNTCA9ICI8aWZyYW1lIHNyYz0n
cmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sI2NoZWNrJz48L2lmcmFtZT4i
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKGV2ZW50LmRhdGEgPT09IGZhbHNlLCAiTm8gY2FjaGUgb2Jq
ZWN0IHNob3VsZCBiZSBmb3VuZCIpOworICAgICAgICAJdGVzdFJ1bm5lci5zZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAg
ICAgICB9KSk7CisgICAgICAgICAgICBjaGVjay5pbm5lckhUTUwgPSAiPGlmcmFtZSBzcmM9J3Jl
c291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbCc+PC9pZnJhbWU+IjsKKyAgICAg
ICAgfSkKKyAgICB9LCAiQ2xlYXIgbWVtb3J5IHJlcHJlc2VudGF0aW9uIGFuZCBkaXNhYmxlIGRp
c2sgcGVyc2lzdGVuY3kiKTsKKworICAgIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0
b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFs
c2UpOworCisgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhlbihrZXlzID0+IHsK
KyAgICAgICAgICAgIHZhciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBmb3IgKGtleSBvZiBr
ZXlzKQorICAgICAgICAgICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hlcy5kZWxldGUoa2V5
c1swXSkpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmcpOworICAgICAg
ICB9KTsKKyAgICB9LCAiQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJldmlvdXMgdGVzdCAx
Iik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlmICghd2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiVGVzdCByZXF1aXJl
cyBpbnRlcm5hbHMiKTsKKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQu
ZGF0YSA9PT0gInJlYWR5IikgeworICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJD
YWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAgICAgICAgICBj
aGVjay5pbm5lckhUTUwgPSAiPGlmcmFtZSBzcmM9J3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5j
eS1pZnJhbWUuaHRtbCNjaGVjayc+PC9pZnJhbWU+IjsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShldmVu
dC5kYXRhID09PSB0cnVlLCAiQSBjYWNoZSBvYmplY3Qgc2hvdWxkIGJlIGZvdW5kIik7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgY2hl
Y2suaW5uZXJIVE1MID0gIjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3kt
aWZyYW1lLmh0bWwnPjwvaWZyYW1lPiI7CisgICAgICAgIH0pCisgICAgfSwgIkNsZWFyIG1lbW9y
eSByZXByZXNlbnRhdGlvbiBidXQga2VlcCBkaXNrIHBlcnNpc3RlbmN5Iik7CisKKyAgICBwcm9t
aXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhl
bihrZXlzID0+IHsKKyAgICAgICAgICAgIHZhciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBm
b3IgKGtleSBvZiBrZXlzKQorICAgICAgICAgICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hl
cy5kZWxldGUoa2V5c1swXSkpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRp
bmcpOworICAgICAgICB9KTsKKyAgICB9LCAiQ2xlYW5pbmcgYWRkZWQgY2FjaGVzIGZyb20gcHJl
dmlvdXMgdGVzdCAyIik7CisKKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlm
ICghd2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgi
VGVzdCByZXF1aXJlcyBpbnRlcm5hbHMiKTsKKworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwo
W3NlbGYuY2FjaGVzLm9wZW4oInRlc3QyIiksIHNlbGYuY2FjaGVzLm9wZW4oInRlc3QxIildKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkKKyAgICAg
ICAgfSkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5
cywgWyJ0ZXN0MiIsICJ0ZXN0MSJdKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOwor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsKKyAgICAgICAgfSkudGhlbihr
ZXlzID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgWyJ0ZXN0MiIs
ICJ0ZXN0MSJdKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5kZWxldGUoInRlc3Qy
Iik7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFy
Q2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmLmNhY2hlcy5rZXlzKCk7CisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDEiXSk7CisgICAgICAgIH0pLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLm9wZW4oInRlc3QyIik7Cisg
ICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVT
dG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNh
Y2hlcy5rZXlzKCk7CisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDEiLCAidGVzdDIiXSk7CisgICAgICAgIH0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtzZWxmLmNhY2hlcy5k
ZWxldGUoInRlc3QyIiksIHNlbGYuY2FjaGVzLmRlbGV0ZSgidGVzdDEiKV0pOworICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1l
bW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5
cygpOworICAgICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhrZXlzLCBbXSk7CisgICAgICAgIH0pOworICAgIH0sICJBZGRpbmcvUmVtb3Zpbmcg
Y2FjaGVzIGFuZCBjbGVhcmluZyBpbiBtZW1vcnkgcmVwcmVzZW50YXRpb24gYXQgdmFyaW91cyB0
aW1lcyIpOworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICByZXR1cm4gc2Vs
Zi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB2YXIgcGVuZGluZyA9
IFtdOworICAgICAgICAgICAgZm9yIChrZXkgb2Yga2V5cykKKyAgICAgICAgICAgICAgICBwZW5k
aW5nLnB1c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKKyAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChwZW5kaW5nKTsKKyAgICAgICAgfSk7CisgICAgfSwgIkNsZWFuaW5nIGFk
ZGVkIGNhY2hlcyIpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hl
LXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1z
dG9yYWdlL3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NzljOThmZWY4ZTQ0YjE1N2ExM2ZjMGQ5NmE0MmZmNjRkNDg1MTZkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL3Jlc291cmNlcy9jYWNo
ZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+CisgICAgPHNjcmlwdD4KK2Z1bmN0aW9uIGRvVGVzdCgpCit7Cisg
ICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoID09PSAiI2NoZWNrIikgeworICAgICAgICBzZWxm
LmNhY2hlcy5rZXlzKCkudGhlbihrZXlzID0+IHsKKyAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQu
cG9zdE1lc3NhZ2Uoa2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gInRlc3RDYWNoZU5h
bWUiLCAiKiIpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNl
bGYuY2FjaGVzLm9wZW4oInRlc3RDYWNoZU5hbWUiKS50aGVuKCgpID0+IHsKKyAgICAgICAgd2lu
ZG93LnBhcmVudC5wb3N0TWVzc2FnZSgicmVhZHkiLCAiKiIpOworICAgIH0pOworfQorZG9UZXN0
KCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0MTgxMDQ5NGFkYTI5OGY0NmVj
OGZjM2E0NTUwOTJmYjNmMTU2MmE0Li5lNThjYWZhNjZmZDdjNzVjZDY4YjNhY2M1ZjRmMmE2Mjkw
M2U4YTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRp
b25zCkBAIC0xMCw2ICsxMCw3IEBAIGVkaXRpbmcvaW5wdXQvZm9jdXMtY2hhbmdlLXdpdGgtbWFy
a2VkLXRleHQuaHRtbCBbIFBhc3MgXQogIyBObyBzZXJ2aWNlIHdvcmtlciBpbXBsZW1lbnRhdGlv
biBmb3IgV0sxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cyBbIFNraXAgXQogaHR0cC93cHQvY2FjaGUtc3RvcmFnZSBbIFNraXAgXQoraHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlIFsgU2tpcCBdCiAKICMgU2tpcCBXZWJSVEMgZm9yIG5vdyBpbiBXSzEKIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjIFsgU2tpcCBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzQ1MTI3MDAwNzY0
YmE3NDE3OTg2YWY1YjQ1ODE1ZTBkNzQyZmQ5Mi4uZGMwMzZkNDJhOTZmMWU4MGVlMGNmYjdjYWJk
Y2Y2NGY3Y2JhOGNjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtOTMsNiArOTMsNyBAQCBodHRwL3Rlc3RzL3NzbC9tZWRpYS1zdHJlYW0K
ICMgTm8gc2VydmljZSB3b3JrZXIgaW1wbGVtZW50YXRpb24gZm9yIFdLMQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMgWyBTa2lwIF0KIGh0dHAvd3B0L2Nh
Y2hlLXN0b3JhZ2UgWyBTa2lwIF0KK2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZSBbIFNraXAgXQog
CiAjIFNraXAgV2ViUlRDIGZvciBub3cgaW4gV0sxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0YyBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319409</attachid>
            <date>2017-08-30 14:54:09 -0700</date>
            <delta_ts>2017-08-30 15:50:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175995-20170830145408.patch</filename>
            <type>text/plain</type>
            <size>56202</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFkM2Q1NzFmMGQ3YzVh
MTM1NTMxZmM0MzQ1ODgwNDc2OWJlYmE0ZC4uYzg4NjYzYjEyYjVjMzA5NWEzZDRhOTRmY2NkMjBh
YTBjZDA3YzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE3LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ2FjaGUgQVBJXSBTdXBw
b3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENo
cmlzdGVuc2VuLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNo
ZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sCisKKyAgICAgICAgQWRkaW5nIG1ldGhvZCB0byBjbGVh
ciB0aGUgbWVtb3J5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjYWNoZSBzdG9yYWdlLgorICAgICAg
ICBFeHBvc2luZyBpdCBhcyBpbnRlcm5hbHMgc28gdGhhdCBsYXlvdXQgdGVzdHMgY2FuIGJlIHVz
ZWQgZm9yIHRlc3RpbmcgcGVyc2lzdGVuY3kgYnkgY29tYmluaW5nIGNsZWFyaW5nIGFuZCBwcml2
YXRlIGJyb3dzaW5nIG1vZGUuCisKKyAgICAgICAgSW50cm9kdWNpbmcgUmVhZERpc2sgYW5kIFdy
aXRlRGlzayBlcnJvcnMgdGhhdCBhcmUgdXNlZCBieSBDYWNoZVN0b3JhZ2U6OkVuZ2luZS4KKwor
ICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01DYWNoZTo6ZXJyb3JUb0V4Y2VwdGlvbik6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5pZGw6CisKKzIwMTctMDgtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCiAgICAgICAgIE1vdmUgY29uc3VtZSBwcm9taXNlIGZyb20gRmV0Y2hCb2R5IHRv
IEZldGNoQm9keUNvbnN1bWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzYxMjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0M2E0MjM2N2U5ZTY3YWZhNjJiNjZhOWQx
OTc4ODIxY2I5NTIzMjQ2Li4yYTkwN2Q0MzgwNWZkYmY0YjRmMWRmMDhkYzI5MjEzNDBmYmQwMjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE3LTA4LTMwICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5h
bWVzIHBlcnNpc3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgor
CisgICAgICAgIEFkZGluZyBkaXNrIHJlYWQvd3JpdGUgY2FwYWNpdGllcyB0byBDYWNoZVN0b3Jh
Z2UgZW5naW5lLgorICAgICAgICBUaGlzIGlzIHVzZWQgdG8gc3RvcmUgcGVyLW9yaWdpbiBjYWNo
ZSBuYW1lcyBpbiBhIGZpbGUuCisgICAgICAgIE1ha2luZyBFbmdpbmUgYSB0aHJlYWQgc2FmZSBy
ZWZjb3VudGVkIG9iamVjdCBzbyB0aGF0IGl0IGRvZXMgcmVhZC93cml0ZSBpbiBhIGJhY2tncm91
bmQgdGhyZWFkLgorCisgICAgICAgIEludHJvZHVjaW5nIENhY2hlU3RvcmFnZTo6Q2FjaGVzIGFz
IHRoZSBvYmplY3QgbWFuYWdpbmcgdGhlIGxpc3Qgb2YgQ2FjaGUgb2JqZWN0cyBmb3IgYSBnaXZl
biBvcmlnaW4uCisgICAgICAgIENhY2hlcyB3aWxsIGJlIHJlc3BvbnNpYmxlIHRvIGRvIGFsbCB0
aGUgcmVhZC93cml0ZSBvcGVyYXRpb25zIGZvciBhbGwgb2YgaXRzIGNhY2hlcy4KKyAgICAgICAg
SXQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcXVvdGEgbGltaXRhdGlvbiBhcyB3ZWxsLgorCisg
ICAgICAgIE1vdmluZyBwYXJ0IG9mIHRoZSBsb2dpYyBmcm9tIENhY2hlU3RvcmFnZTo6RW5naW5l
IGludG8gQ2FjaGVTdG9yYWdlOjpDYWNoZXMuCisKKyAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdp
bmUgaXMgaW5pdGlhbGl6ZWQgYXN5bmNocm9ub3VzbHkgYXMgaXQgZmlyc3QgY3JlYXRlcyBhIHNh
bHQgd2hpY2ggaXMgdXNlZAorICAgICAgICB0byBvYmZ1c2NhdGUgdGhlIG5hbWVzIG9mIHRoZSB2
YXJpb3VzIGZpbGVzIHN0b3JlZCBvbiBkaXNrLgorCisgICAgICAgIEluIHRoZSBzYW1lIHNwaXJp
dCwgQ2FjaGVTdG9yYWdlOjpDYWNoZXMgaXMgaW5pdGlhbGl6ZWQgYXN5bmNocm9ub3VzbHkgYXMg
aXQgbmVlZHMgdG8gcmVhZCBmcm9tIHRoZSBkaXNrIHRoZSBsaXN0IG9mIGNhY2hlIG5hbWVzLgor
ICAgICAgICBPbmNlIHJlYWQsIHRoZSBuYW1lcyB3aWxsIGJlIHN0b3JlZCBpbiBtZW1vcnkuCisg
ICAgICAgIEFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byBjbGVhciB0aGlzIGluLW1lbW9yeSByZXBy
ZXNlbnRhdGlvbi4gVGhpcyB3aWxsIGJlIHVzZWZ1bCBmb3IgdGVzdGluZy4KKyAgICAgICAgVGhp
cyBtaWdodCBhbHNvIGJlIHVzZWZ1bCB0byBzYXZlIG1lbW9yeSB3aGVuIHRoZXJlIGlzIG5vIG1v
cmUgdXNlIG9mIENhY2hlU3RvcmFnZSBieSB3ZWIgcGFnZXMuCisKKyAgICAgICAgSW50cm9kdWNp
bmcgYSBuZXcgY2FjaGVTdG9yYWdlU3ViZGlyZWN0b3J5TmFtZSBwYXJhbWV0ZXIgZm9yIFdlYnNp
dGVEYXRhU3RvcmUgc28gYXMgdG8gc2VnbWVudCB0aGUgZGlmZmVyZW50IHBlciBzZXNzaW9uIENh
Y2hlU3RvcmFnZUVuZ2luZQorICAgICAgICBpbiBkaXJlY3Qgc3ViIGZvbGRlcnMgb2YgdGhlIG1h
aW4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5IGZvbGRlci4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlbW92ZSk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6d3JpdGVGaWxlKTogTWFraW5nIHVzZSBvZiBkZWZhdWx0IHBhcmFt
ZXRlciB0byBkaXJlY3RseSByZXR1cm4gdG8gdGhlIG1haW4gbG9vcC4KKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlYWRGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJvb3RQYXRoIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnNhbHQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6bmV4dENhY2hlSWRlbnRpZmllcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Y2FjaGVzUm9vdFBhdGgpOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OmNhY2hlc0xpc3RGaWxlbmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpDYWNoZXMpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpmaW5kKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpDYWNoZXM6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hl
czo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjplbmNvZGVDYWNoZU5h
bWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpkZWNvZGVDYWNoZXNOYW1lcyk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURp
c2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6d3JpdGVDYWNoZXNU
b0Rpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6Y2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVz
OjpjYWNoZUluZm9zIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6Q2FjaGVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNh
Y2hlczo6aXNJbml0aWFsaXplZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6Q2FjaGVzOjpkZXRhY2gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlU2FsdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisKIDIw
MTctMDgtMzAgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dQRV0gRW5hYmxlIE1FTU9SWV9TQU1QTEVSCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IGYy
MDgwZGM5OTFiZmE1YjRlNTQzNmNkNzU3Y2RiZDVmMTI4OWEwNzguLjRjNDIyNzEwNWRkMzU1N2Ez
YmU2ZjgzYTk0OTE3ZGIwZjQ0N2NkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC00NSw2ICs0NSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgRE9NQ2Fj
aGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBiYXRjaFB1dE9wZXJh
dGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNoZTo6UmVjb3JkPiYm
LCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIAorICAgIC8vIFVzZWQg
b25seSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgRE9NQ2FjaGU6OkNvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlOjpFcnJvcjo6Tm90
SW1wbGVtZW50ZWQpOyB9CisKIHByb3RlY3RlZDoKICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
KCkgPSAgZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cAppbmRleCAzM2RhODA4NTQ0NWJkYzhmMGFhZGNlODgyOGU2ZWRmNDk5MGI4MTljLi4zM2YyNzRk
ZGI1YmY2MzIzMGRkYTRiZGNiN2EwZTcxMTYxZjlmOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtNDAsNiArNDAsMTAgQEAgRXhjZXB0aW9uIGVycm9y
VG9FeGNlcHRpb24oRXJyb3IgZXJyb3IpCiAgICAgc3dpdGNoIChlcnJvcikgewogICAgIGNhc2Ug
RXJyb3I6Ok5vdEltcGxlbWVudGVkOgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfTsKKyAgICBjYXNl
IEVycm9yOjpSZWFkRGlzazoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgcmVhZGluZyBkYXRhIGZyb20gdGhlIGZpbGUgc3lzdGVtIikg
fTsKKyAgICBjYXNlIEVycm9yOjpXcml0ZURpc2s6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHdyaXRpbmcgZGF0YSB0byB0aGUgZmls
ZSBzeXN0ZW0iKSB9OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9OwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCBjMjEyM2E5NGEzNjQ1Mjk2NmUz
MmFhMzRmNjcyNjQ2ZWYxMTViNDUzLi5lZWJlNjY3ODI3NDA5MWFjMGI3NTRiMmM1YzM0ZDA4Yjk4
MTNmNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC00MCw2
ICs0MCw4IEBAIG5hbWVzcGFjZSBET01DYWNoZSB7CiAKIGVudW0gY2xhc3MgRXJyb3IgewogICAg
IE5vdEltcGxlbWVudGVkLAorICAgIFJlYWREaXNrLAorICAgIFdyaXRlRGlzaywKICAgICBJbnRl
cm5hbAogfTsKIApAQCAtOTQsNiArOTYsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvciwKICAgICAgICAgV2ViQ29yZTo6
RE9NQ2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCwKKyAgICAgICAgV2ViQ29yZTo6RE9NQ2Fj
aGU6OkVycm9yOjpSZWFkRGlzaywKKyAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yOjpX
cml0ZURpc2ssCiAgICAgICAgIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcjo6SW50ZXJuYWwKICAg
ICA+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4NDI3NWRmMzM1
OWMyYzcyMTQxNTZmMjNkNjFjOTg1YmRjZGE0NzAzLi4yZjlhZjAyMzMxNmJjMzQ0YWE4OTNlZTE3
ZWJiZTFlNTQxOTZiMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0z
OSw2ICszOSw4IEBACiAjaW5jbHVkZSAiQ1NTTWVkaWFSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5
bGVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU3VwcG9ydHNSdWxlLmgiCisjaW5jbHVkZSAiQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgogI2luY2x1ZGUgIkNocm9tZS5oIgpAQCAtNDEzNiw0ICs0MTM4LDE5IEBAIFN0cmluZyBJbnRl
cm5hbHM6OmF1ZGlvU2Vzc2lvbkNhdGVnb3J5KCkgY29uc3QKICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVz
ZW50YXRpb24oKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBjb250ZXh0RG9jdW1l
bnQoKS0+cGFnZSgpKQorICAgICAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gcGFn
ZS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKHBh
Z2UtPnNlc3Npb25JRCgpKTsKKyAgICAgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24p
CisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS50
b1N0cmluZygpLCBbXShzdGQ6Om9wdGlvbmFsPERPTUNhY2hlOjpFcnJvcj4mJikgeyB9KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggZDI3ODI3ZDEzNmU5ZmEwZTBmODI0NDI4OWU0OGVhZjdiZDJlMmIzOC4uMmI4MTQ2MDRkYzVl
ZWM3YjM4ZTc5NDYzMzAwMzI4NzViZGFlZGYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCkBAIC00Myw2ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlv
Q29udGV4dDsKK2NsYXNzIENhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiBjbGFzcyBET01SZWN0Owog
Y2xhc3MgRE9NUmVjdExpc3Q7CiBjbGFzcyBET01VUkw7CkBAIC01OTgsNiArNTk5LDggQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nIGF1ZGlvU2Vzc2lvbkNhdGVnb3J5KCkgY29uc3Q7CiAKKyAgICB2
b2lkIGNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAgICBEb2N1bWVudCogY29udGV4
dERvY3VtZW50KCkgY29uc3Q7CkBAIC02MTgsNiArNjIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclN0dWJGcm9udGVuZD4gbV9pbnNwZWN0b3JG
cm9udGVuZDsKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDQyNzFhZTJmMjZiMDI3NjBkYmVlNTEyMTk2ZmU2MGE4
ZmFiYWY4MTQuLmU4N2E3NGM1OGFjNWMyYzZmMWY5OGIxZWM4YmVmYWU0MTExOTEyMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU0NCw1ICs1NDQsNyBAQCBlbnVtIEV2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2
b2lkIHJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW0gc3RyZWFtLCBNZWRpYVN0cmVh
bVRyYWNrIHRyYWNrKTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2b2lkIHNpbXVs
YXRlTWVkaWFTdHJlYW1UcmFja0NhcHR1cmVTb3VyY2VGYWlsdXJlKE1lZGlhU3RyZWFtVHJhY2sg
dHJhY2spOwogCisgICAgdm9pZCBjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9u
KCk7CisKICAgICBET01TdHJpbmcgYXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAppbmRleCBjZDQxOGI5ODcyNGNkYWMxODhlYjVlMWFiMjQ4Y2UwYTQyNzk2ZmRmLi4y
NGQ2MzY3NzQzYzY0OTE1MmYzMjliZTVlYmMzZDMyZTM2MjdmODE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQKQEAgLTExNyw2ICsxMTcsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAog
ICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCmluZGV4IDg2Y2ZjZDZhN2FhMmZkMjkzZGViMDgwMzlhZjJiYTA1YTgxZTgx
NDMuLmE0NWY3M2YwMDljOWIxYzBiNzgwNWVkOTk1YjMyNmJkNzYwMDA5NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKQEAgLTg0LDQyICs4NCw0MCBAQCB2b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllcgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byYgY2FjaGVzID0gY2Fj
aGVzT3JFcnJvci52YWx1ZSgpLmdldCgpOworICAgICAgICBDYWNoZXMmIGNhY2hlcyA9IGNhY2hl
c09yRXJyb3IudmFsdWUoKTsKIAotICAgICAgICBhdXRvIHBvc2l0aW9uID0gY2FjaGVzLmZpbmRN
YXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5uYW1lID09IGNhY2hl
TmFtZTsgfSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkgewotICAgICAgICAg
ICAgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyID0gKyttX25leHRDYWNoZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBjYWNoZXMuYXBwZW5kKENhY2hlIHsgY2FjaGVJZGVudGlmaWVyLCBjYWNoZU5h
bWUsIFZlY3RvcjxSZWNvcmQ+KCksIDAgfSk7Ci0gICAgICAgICAgICB3cml0ZUNhY2hlc1RvRGlz
ayhbY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9w
dGlvbmFsPEVycm9yPiYmIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkp
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBjYWxsYmFjayhjYWNoZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FsbGJhY2soY2FjaGVzW3Bvc2l0aW9uXS5pZGVu
dGlmaWVyKTsKKyAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0gY2FjaGVzLmZpbmQoY2FjaGVOYW1l
KSkgeworICAgICAgICAgICAgY2FsbGJhY2soY2FjaGUtPmlkZW50aWZpZXIpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAgICAgY2FjaGVzLm9wZW4oU3RyaW5nIHsgY2Fj
aGVOYW1lIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBDYWNoZUlkZW50
aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2socmVz
dWx0KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRW5naW5lOjpyZW1vdmUodWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNr
KQogewotICAgIHN0ZDo6b3B0aW9uYWw8Q2FjaGU+IHJlbW92ZWRDYWNoZTsKKyAgICBDYWNoZXMq
IGNhY2hlc1RvTW9kaWZ5ID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2Fj
aGVzLnZhbHVlcygpKSB7Ci0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBjYWNoZXMuZmluZE1hdGNo
aW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2Fj
aGVJZGVudGlmaWVyOyB9KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0g
ICAgICAgICAgICByZW1vdmVkQ2FjaGUgPSBXVEZNb3ZlKGNhY2hlc1twb3NpdGlvbl0pOwotICAg
ICAgICAgICAgY2FjaGVzLnJlbW92ZShwb3NpdGlvbik7CisgICAgICAgIGF1dG8qIGNhY2hlVG9S
ZW1vdmUgPSBjYWNoZXMtPmZpbmQoY2FjaGVJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGNhY2hl
VG9SZW1vdmUpIHsKKyAgICAgICAgICAgIGNhY2hlc1RvTW9kaWZ5ID0gY2FjaGVzLnB0cigpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFyZW1vdmVkQ2Fj
aGUpIHsKLSAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkludGVybmFsKSk7
CisgICAgaWYgKCFjYWNoZXNUb01vZGlmeSkgeworICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9y
ZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4g
aXRlbS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcjsgfSk7CisgICAgICAgIGlmIChwb3Np
dGlvbiA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
RXJyb3I6OkludGVybmFsKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgY2FsbGJhY2soY2FjaGVJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBtX3JlbW92ZWRDYWNoZXMuYXBwZW5kKFdURk1vdmUocmVtb3ZlZENhY2hlLnZhbHVlKCkpKTsK
LSAgICB3cml0ZUNhY2hlc1RvRGlzayhbY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7CisKKyAgICBjYWNo
ZXNUb01vZGlmeS0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW2NhY2hlSWRlbnRpZmllciwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikg
ewogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVj
dGVkKGVycm9yLnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzNiwxNCArMTM0
LDcgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBD
YWNoZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGF1dG8mIGNhY2hlcyA9IGNhY2hlc09yRXJyb3IudmFsdWUoKS5nZXQo
KTsKLQotICAgICAgICBWZWN0b3I8Q2FjaGVJbmZvPiBjYWNoZXNJbmZvOwotICAgICAgICBjYWNo
ZXNJbmZvLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FjaGVzLnNpemUoKSk7Ci0gICAgICAgIGZv
ciAoYXV0byYgY2FjaGUgOiBjYWNoZXMpCi0gICAgICAgICAgICBjYWNoZXNJbmZvLnVuY2hlY2tl
ZEFwcGVuZChDYWNoZUluZm8geyBjYWNoZS5pZGVudGlmaWVyLCBjYWNoZS5uYW1lfSk7Ci0KLSAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShjYWNoZXNJbmZvKSk7CisgICAgICAgIGNhbGxiYWNrKGNh
Y2hlc09yRXJyb3IudmFsdWUoKS5nZXQoKS5jYWNoZUluZm9zKCkpOwogICAgIH0pOwogfQogCkBA
IC0xNTksNyArMTUwLDcgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWMKIAogICAgICAgICBWZWN0
b3I8UmVjb3JkPiBjb3B5OwogICAgICAgICBjb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVj
b3Jkcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJlc3VsdC52YWx1ZSgp
LmdldCgpLnJlY29yZHMpCisgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3JkcykKICAg
ICAgICAgICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOwogCiAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoY29weSkpOwpAQCAtMjQ0LDIxICsyMzUsNjIgQEAgdm9pZCBFbmdp
bmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmUKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OndyaXRlQ2FjaGVzVG9E
aXNrKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2FsbGJhY2spCit2
b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+
JiYpPiYmIGNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd3JpdGluZy4KLSAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgIGlmIChtX3NhbHQpIHsKKyAgICAgICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
c2hvdWxkUGVyc2lzdCgpKSB7CisgICAgICAgIG1fc2FsdCA9IG1ha2VTYWx0KCk7CisgICAgICAg
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBT
dHJpbmcgc2FsdFBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290
UGF0aCwgQVNDSUlMaXRlcmFsKCJzYWx0IikpOworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgc2FsdFBhdGggPSBXVEZNb3ZlKHNhbHRQYXRoKV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhtX3Jvb3RQYXRoKTsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgdGhpcywgc2FsdCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghc2FsdCkgewor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURpc2spOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fc2FsdCA9IFdURk1vdmUo
c2FsdCk7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICB9KTsK
KyAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OnJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBTdHJp
bmcmIG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHJlYWRpbmcuCi0KLSAgICBhdXRvJiBjYWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUo
b3JpZ2luLCBbXSB7Ci0gICAgICAgIHJldHVybiBWZWN0b3I8Q2FjaGU+KCk7CisgICAgYXV0byYg
Y2FjaGVzID0gbV9jYWNoZXMuZW5zdXJlKG9yaWdpbiwgWyZvcmlnaW4sIHRoaXNdIHsKKyAgICAg
ICAgcmV0dXJuIENhY2hlczo6Y3JlYXRlKCp0aGlzLCBvcmlnaW4pOwogICAgIH0pLml0ZXJhdG9y
LT52YWx1ZTsKIAotICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VmVjdG9yPENh
Y2hlPj4geyBjYWNoZXMgfSk7CisgICAgaWYgKGNhY2hlcy0+aXNJbml0aWFsaXplZCgpKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiB7IGNhY2hlcy5n
ZXQoKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluaXRpYWxpemUoW3RoaXMs
IG9yaWdpbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJv
cj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAg
Y2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBjYWNoZXMgPSBtX2NhY2hlcy5nZXQob3Jp
Z2luKTsKKyAgICAgICAgQVNTRVJUKGNhY2hlcyk7CisKKyAgICAgICAgY2FjaGVzLT5pbml0aWFs
aXplKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjYWNoZXNdKHN0ZDo6b3B0aW9uYWw8
RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGJh
Y2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgKmNhY2hlcyB9KTsKKyAgICAgICAg
fSk7CisgICAgfSk7CiB9CiAKIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGUodWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBDYWNoZUNhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC0yODgsMTEgKzMyMCw4IEBA
IENhY2hlKiBFbmdpbmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKICAgICBD
YWNoZSogcmVzdWx0ID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVz
LnZhbHVlcygpKSB7Ci0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBjYWNoZXMuZmluZE1hdGNoaW5n
KFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gY2FjaGVJ
ZGVudGlmaWVyOyB9KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICByZXN1bHQgPSAmY2FjaGVzW3Bvc2l0aW9uXTsKKyAgICAgICAgaWYgKChyZXN1bHQg
PSBjYWNoZXMtPmZpbmQoY2FjaGVJZGVudGlmaWVyKSkpCiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQogICAgIH0KICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBhdXRvIHBvc2l0aW9u
ID0gbV9yZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyBy
ZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcjsgfSk7CkBAIC0zMjIsMTcg
KzM1MSwxNSBAQCB2b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBkYXRhID0gV1RGTW92ZShk
YXRhKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7Cisg
ICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZGF0
YSA9IFdURk1vdmUoZGF0YSksIGZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCldICgp
IG11dGFibGUgewogICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oZmlsZW5h
bWUsIElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRlKTsKLSAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwg
ZGF0YSwgbV9pb1F1ZXVlLmdldCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oaW50
IGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXJyb3JdKCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2Ug
c3BlY2lmaWMgZmlsZXN5c3RlbSBlcnJvci4KLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
RXJyb3I6OkludGVybmFsKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwotICAgICAg
ICAgICAgfSk7CisgICAgICAgIGNoYW5uZWwtPndyaXRlKDAsIGRhdGEsIG51bGxwdHIsIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAgICAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmIChlcnJvcikgewor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURpc2spOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMzQ0LDcgKzM3MSw3IEBAIHZvaWQg
RW5naW5lOjpyZWFkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoY29uc3QgTmV0d29ya0NhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2lvUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5
KCldKCkgbXV0YWJsZSB7CisgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJ
T0NoYW5uZWw6OlR5cGU6OlJlYWQpOwogICAgICAgICBpZiAoY2hhbm5lbC0+ZmlsZURlc2NyaXB0
b3IoKSA8IDApIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKQEAgLTM1MywxMCArMzgwLDEwIEBA
IHZvaWQgRW5naW5lOjpyZWFkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoY29uc3QgTmV0d29ya0NhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCksIG1faW9RdWV1ZS5nZXQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNv
bnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRhdGEsIGVy
cm9yXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEsIGVycm9yKTsK
LSAgICAgICAgICAgIH0pOworICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCksIG51bGxwdHIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBkbyB0aGUgZGVjb2RpbmcgaW4gdGhlIGJhY2tncm91bmQgdGhy
ZWFkLgorICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKGRhdGEsIGVycm9yKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC0zNzEs
NiArMzk4LDE1IEBAIHZvaWQgRW5naW5lOjpyZW1vdmVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUpCiAgICAgfSk7CiB9CiAKK3ZvaWQgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIHJlYWRDYWNoZXNGcm9tRGlzayhvcmlnaW4s
IFtdKENhY2hlc09yRXJyb3ImJiByZXN1bHQpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFs
dWUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcmVzdWx0LnZhbHVlKCkuZ2V0KCku
Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBDYWNoZVN0b3JhZ2UKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRl
eCBiNWUyMjYwNDE3M2MwNzE1YWU0M2MyZDgwZTA0NDM3MzNhMGVkNDkwLi45M2E3NGMxYjFhNTZi
YzRkOTIzZmQ1YTI4ZWE1YzU1MjlkYTQ3NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI1LDcgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDYWNoZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtNjMsMTMgKzYzLDE5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmLCBpbnQgZXJyb3IpPiYmKTsKICAgICB2b2lkIHJl
bW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CiAKKyAgICBjb25zdCBTdHJpbmcmIHJv
b3RQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9yb290UGF0aDsgfQorICAgIGNvbnN0IE5ldHdvcmtD
YWNoZTo6U2FsdCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FsdC52YWx1ZSgpOyB9CisgICAg
dWludDY0X3QgbmV4dENhY2hlSWRlbnRpZmllcigpIHsgcmV0dXJuICsrbV9uZXh0Q2FjaGVJZGVu
dGlmaWVyOyB9CisKKyAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBvcmlnaW4pOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmdpbmUmIGRlZmF1bHRFbmdp
bmUoKTsKICAgICBleHBsaWNpdCBFbmdpbmUoU3RyaW5nJiYgcm9vdFBhdGgpOwogCi0gICAgdm9p
ZCB3cml0ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNr
JiYpOworICAgIHZvaWQgaW5pdGlhbGl6ZShGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RE9NQ2FjaGU6OkVycm9yPiYmKT4mJik7CiAKLSAgICB1c2luZyBDYWNoZXNPckVycm9y
ID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxWZWN0b3I8Q2FjaGU+PiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OkVycm9yPjsKKyAgICB1c2luZyBDYWNoZXNPckVycm9yID0gRXhwZWN0ZWQ8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+LCBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I+
OwogICAgIHVzaW5nIENhY2hlc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlc09y
RXJyb3ImJik+OwogICAgIHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBDYWNoZXNDYWxsYmFjayYmKTsKIApAQCAtODQsMTEgKzkwLDEyIEBAIHByaXZhdGU6CiAK
ICAgICBDYWNoZSogY2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAgIEhhc2hN
YXA8U3RyaW5nLCBWZWN0b3I8Q2FjaGU+PiBtX2NhY2hlczsKKyAgICBIYXNoTWFwPFN0cmluZywg
UmVmPENhY2hlcz4+IG1fY2FjaGVzOwogICAgIFZlY3RvcjxDYWNoZT4gbV9yZW1vdmVkQ2FjaGVz
OwogICAgIHVpbnQ2NF90IG1fbmV4dENhY2hlSWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcg
bV9yb290UGF0aDsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2lvUXVldWU7CisgICAgc3RkOjpv
cHRpb25hbDxOZXR3b3JrQ2FjaGU6OlNhbHQ+IG1fc2FsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IENhY2hlU3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkw
ZDZhMTA3OWQ4OWJmODMyYWRjMmY3ZDFmNTU4YWFlZjRiODg0NTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5jcHAKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhY2hlU3Rv
cmFnZUVuZ2luZS5oIgorCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlQ29kZXJzLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6
RE9NQ2FjaGU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKKworc3RhdGljIGlubGlu
ZSBTdHJpbmcgY2FjaGVzUm9vdFBhdGgoRW5naW5lJiBlbmdpbmUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKQoreworICAgIEtleSBrZXkoZW5naW5lLnJvb3RQYXRoKCksIHsgfSwgeyB9LCBvcmlnaW4s
IGVuZ2luZS5zYWx0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoZW5naW5lLnJvb3RQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGNhY2hlc1Jvb3RQYXRoKQoreworICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoY2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgiY2FjaGVzbGlzdCIpKTsKK30K
KworQ2FjaGVzOjpDYWNoZXMoRW5naW5lJiBlbmdpbmUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQor
ICAgIDogbV9lbmdpbmUoJmVuZ2luZSkKKyAgICAsIG1fcm9vdFBhdGgoY2FjaGVzUm9vdFBhdGgo
ZW5naW5lLCBvcmlnaW4pKQoreworfQorCit2b2lkIENhY2hlczo6aW5pdGlhbGl6ZShXZWJDb3Jl
OjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1f
aXNJbml0aWFsaXplZCB8fCAhbV9lbmdpbmUgfHwgIW1fZW5naW5lLT5zaG91bGRQZXJzaXN0KCkp
IHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX3N0b3JhZ2UpIHsKKyAgICAgICAgbV9wZW5kaW5nSW5pdGlhbGl6YXRp
b25DYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGF1dG8gc3RvcmFnZSA9IFN0b3JhZ2U6Om9wZW4obV9yb290UGF0aCwgU3Rv
cmFnZTo6TW9kZTo6Tm9ybWFsKTsKKyAgICBpZiAoIXN0b3JhZ2UpIHsKKyAgICAgICAgY2FsbGJh
Y2soRXJyb3I6OldyaXRlRGlzayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9zdG9y
YWdlID0gc3RvcmFnZS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJlYWRDYWNoZXNGcm9tRGlzayhb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oRXhwZWN0ZWQ8VmVjdG9yPENhY2hl
PiwgRXJyb3I+JiYgcmVzdWx0KSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpKTsKKworICAgICAgICAgICAgYXV0
byBwZW5kaW5nQ2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdJbml0aWFsaXphdGlvbkNhbGxi
YWNrcyk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcGVuZGluZ0NhbGxiYWNr
cykKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9jYWNoZXMgPSBXVEZNb3ZlKHJlc3VsdC52
YWx1ZSgpKTsKKyAgICAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgY2FsbGJh
Y2soc3RkOjpudWxsb3B0KTsKKworICAgICAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3MgPSBXVEZN
b3ZlKG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzKTsKKyAgICAgICAgZm9yIChhdXRv
JiBjYWxsYmFjayA6IHBlbmRpbmdDYWxsYmFja3MpCisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6
Om51bGxvcHQpOworICAgIH0pOworfQorCitDYWNoZSogQ2FjaGVzOjpmaW5kKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsm
XShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLm5hbWUgPT0gbmFtZTsgfSk7CisgICAg
cmV0dXJuIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgPyAmbV9jYWNoZXNbcG9zaXRpb25dIDogbnVs
bHB0cjsKK30KKworQ2FjaGUqIENhY2hlczo6ZmluZCh1aW50NjRfdCBpZGVudGlmaWVyKQorewor
ICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICBp
ZiAocG9zaXRpb24gIT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiAmbV9jYWNoZXNbcG9zaXRp
b25dOworCisgICAgcG9zaXRpb24gPSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShj
b25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsg
fSk7CisgICAgcmV0dXJuIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgPyAmbV9yZW1vdmVkQ2FjaGVz
W3Bvc2l0aW9uXSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgQ2FjaGVzOjpvcGVuKFN0cmluZyYmIG5h
bWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1f
ZW5naW5lKTsKKworICAgIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciA9IG1fZW5naW5lLT5uZXh0
Q2FjaGVJZGVudGlmaWVyKCk7CisgICAgbV9jYWNoZXMuYXBwZW5kKENhY2hlIHsgY2FjaGVJZGVu
dGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCB7IH0sIDAgfSk7CisgICAgd3JpdGVDYWNoZXNUb0Rpc2so
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlSWRlbnRpZmllcl0oc3RkOjpvcHRp
b25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKGNhY2hlSWRlbnRpZmll
cik7CisgICAgfSk7Cit9CisKK3ZvaWQgQ2FjaGVzOjpyZW1vdmUodWludDY0X3QgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fZW5naW5l
KTsKKworICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0
IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsK
KworICAgIEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3VuZCk7CisKKyAgICBhdXRvIGNhY2hlID0g
V1RGTW92ZShtX2NhY2hlc1twb3NpdGlvbl0pOworICAgIG1fY2FjaGVzLnJlbW92ZShwb3NpdGlv
bik7CisgICAgbV9yZW1vdmVkQ2FjaGVzLmFwcGVuZChXVEZNb3ZlKGNhY2hlKSk7CisKKyAgICB3
cml0ZUNhY2hlc1RvRGlzayhXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
RGF0YSBlbmNvZGVDYWNoZU5hbWVzKGNvbnN0IFZlY3RvcjxDYWNoZT4mIGNhY2hlcykKK3sKKyAg
ICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CisKKyAgICB1aW50NjRfdCBzaXpl
ID0gY2FjaGVzLnNpemUoKTsKKyAgICBlbmNvZGVyIDw8IHNpemU7CisgICAgZm9yIChhdXRvJiBj
YWNoZSA6IGNhY2hlcykKKyAgICAgICAgZW5jb2RlciA8PCBjYWNoZS5uYW1lOworCisgICAgcmV0
dXJuIERhdGEgeyBlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSB9OworfQor
CitzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBFcnJvcj4gZGVjb2RlQ2Fj
aGVzTmFtZXMoY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKQoreworICAgIGlmIChlcnJvcikK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CisKKyAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICB1aW50NjRfdCBjb3VudDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvdW50KSkK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CisKKyAgICBW
ZWN0b3I8U3RyaW5nPiBuYW1lczsKKyAgICBuYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNv
dW50KTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgp
IHsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobmFt
ZSkpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWREaXNrKTsK
KworICAgICAgICBuYW1lcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lKSk7CisgICAgfQor
ICAgIHJldHVybiBuYW1lczsKK30KKwordm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayhX
VEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3I+JiYpPiYmIGNh
bGxiYWNrKQoreworICAgIEFTU0VSVChtX2VuZ2luZSk7CisgICAgQVNTRVJUKCFtX2lzSW5pdGlh
bGl6ZWQpOworICAgIEFTU0VSVChtX2NhY2hlcy5pc0VtcHR5KCkpOworCisgICAgaWYgKCFtX2Vu
Z2luZS0+c2hvdWxkUGVyc2lzdCgpKSB7CisgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4g
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZmlsZW5hbWUgPSBjYWNo
ZXNMaXN0RmlsZW5hbWUobV9yb290UGF0aCk7CisgICAgaWYgKCFXZWJDb3JlOjpmaWxlRXhpc3Rz
KGZpbGVuYW1lKSkgeworICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2VuZ2luZS0+cmVhZEZpbGUoZmlsZW5hbWUsIFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
IGlmICghbV9lbmdpbmUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4geyB9
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gcmVzdWx0
ID0gZGVjb2RlQ2FjaGVzTmFtZXMoZGF0YSwgZXJyb3IpOworICAgICAgICBpZiAoIXJlc3VsdC5o
YXNWYWx1ZSgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQu
ZXJyb3IoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFZlY3Rv
cjxDYWNoZT4gY2FjaGVzOworICAgICAgICBjYWNoZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShy
ZXN1bHQudmFsdWUoKS5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiByZXN1bHQu
dmFsdWUoKSkKKyAgICAgICAgICAgIGNhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGUgeyBtX2Vu
Z2luZS0+bmV4dENhY2hlSWRlbnRpZmllcigpLCBXVEZNb3ZlKG5hbWUpLCB7IH0sIDAgfSk7CisK
KyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjYWNoZXMpKTsKKyAgICB9KTsKK30KKwordm9pZCBD
YWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQor
eworICAgIGlmICghbV9lbmdpbmUtPnNob3VsZFBlcnNpc3QoKSkgeworICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG1f
ZW5naW5lKTsKKworICAgIGlmIChtX2NhY2hlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9lbmdp
bmUtPnJlbW92ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpKTsKKyAgICAgICAg
Y2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
ZW5naW5lLT53cml0ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpLCBlbmNvZGVD
YWNoZU5hbWVzKG1fY2FjaGVzKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6
b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKGVycm9yKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgQ2FjaGVzOjpjbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKCkKK3sKKyAgICBtX2NhY2hlcy5jbGVhcigpOworICAgIG1faXNJbml0aWFsaXpl
ZCA9IGZhbHNlOworICAgIG1fc3RvcmFnZSA9IG51bGxwdHI7Cit9CisKK1ZlY3RvcjxDYWNoZUlu
Zm8+IENhY2hlczo6Y2FjaGVJbmZvcygpIGNvbnN0Cit7CisgICAgVmVjdG9yPENhY2hlSW5mbz4g
Y2FjaGVJbmZvczsKKyAgICBjYWNoZUluZm9zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jYWNo
ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNhY2hlIDogbV9jYWNoZXMpCisgICAgICAgIGNh
Y2hlSW5mb3MudW5jaGVja2VkQXBwZW5kKENhY2hlSW5mbyB7IGNhY2hlLmlkZW50aWZpZXIsIGNh
Y2hlLm5hbWUgfSk7CisgICAgcmV0dXJuIGNhY2hlSW5mb3M7Cit9CisKK30gLy8gbmFtZXNwYWNl
IENhY2hlU3RvcmFnZQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE1NWM1MWQzMDUwMGQyZTUzNDVjMDUxYWMwNDFhOGY0N2Q5YWRj
N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgiCisj
aW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
bmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CisKK2NsYXNzIEVuZ2luZTsKKworY2xhc3MgQ2FjaGVz
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxD
YWNoZXM+IGNyZWF0ZShFbmdpbmUmIGVuZ2luZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVzIHsgZW5naW5lLCBvcmlnaW4gfSk7IH0KKworICAgIHZv
aWQgaW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwor
CisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVk
OyB9CisKKyAgICBDYWNoZSogZmluZChjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIENhY2hlKiBm
aW5kKHVpbnQ2NF90IGlkZW50aWZpZXIpOworCisgICAgdm9pZCBvcGVuKFN0cmluZyYmIG5hbWUs
IFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lk
IHJlbW92ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlv
bkNhbGxiYWNrJiYpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUluZm8+
IGNhY2hlSW5mb3MoKSBjb25zdDsKKworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bigpOworICAgIHZvaWQgZGV0YWNoKCkgeyBtX2VuZ2luZSA9IG51bGxwdHI7IH0KKworcHJpdmF0
ZToKKyAgICBDYWNoZXMoRW5naW5lJiwgY29uc3QgU3RyaW5nJiByb290UGF0aCk7CisKKyAgICB2
b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9y
PENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPiYmKT4mJik7CisgICAgdm9pZCB3cml0
ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwor
CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAgIEVuZ2luZSogbV9lbmdp
bmUgeyBudWxscHRyIH07CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgVmVjdG9yPENhY2hl
PiBtX2NhY2hlczsKKyAgICBWZWN0b3I8Q2FjaGU+IG1fcmVtb3ZlZENhY2hlczsKKyAgICBSZWZQ
dHI8TmV0d29ya0NhY2hlOjpTdG9yYWdlPiBtX3N0b3JhZ2U7CisgICAgVmVjdG9yPFdlYkNvcmU6
OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2s+IG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2Fs
bGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKaW5kZXggYmY0
OTkzODhmMzY3ZDJlOWM2ZGU3MGYwMDk3MTc4NjIwMDUzYzRiYy4uYzAyY2FmZDcwMDkwM2Q3YmMz
NTZiNDBkNzliZThhYzlmOTljMTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24uY3BwCkBAIC02Myw2ICs2MywxMSBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcQogICAgIH0p
OwogfQogCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdp
bikKK3sKKyAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVhck1lbW9yeVJlcHJlc2VudGF0
aW9uKG9yaWdpbik7Cit9CisKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVj
b3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAgRW5naW5lOjpmcm9tKHNlc3Npb25J
RCkucmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jkc09y
RXJyb3ImJiByZXN1bHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKaW5kZXgg
ZmIzYTY2NGU1NDVjNGRhZjc1NThmZDE0OWFhMWVhMWYxZGY5ZDUzMy4uMDgyZDFlNDcwMzA1N2Yz
ZDdiMGNkYzIzZTM0MWE3NzI3MDhlNzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmgKQEAgLTU0LDYgKzU0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZShQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcmVtb3ZlUmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJl
dHJpZXZlQ2FjaGVzSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCisgICAgdm9p
ZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IG9yaWdpbik7CisKICAgICB2b2lkIHJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGVs
ZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJik7CiAgICAgdm9pZCBwdXRSZWNvcmRzKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNTkyMmVl
ZDY2NzI3NmRkYzFlNTRhNDgxODQzZGZiZTNhOWU1MmRlOC4uNGVhYzc0ODU3ZTIzZDY1ZTIxOThm
NGRlMTliYmZmMmFkOWM3N2VkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsOCBAQCBtZXNzYWdlcyAtPiBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uIHsKICAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KTsKICAgICBDYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgU3RyaW5nIG9yaWdpbik7CiAKKyAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbik7CisKICAgICBSZWNv
cmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0
cnVjdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBQdXRSZWNvcmRz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+
IHJlY29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCAzMWFlNDhmZTVhZDJkOTdkYjZiMWNmNjg0N2Ey
ZWY4NGMyMGQwN2I1Li43NDZkZDZlMmRjMDc4OWMxZjJkMjcyMDk1YjgxMmQ4YzhhNDUxNTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBib29sIGJ5dGVzRXF1YWwoY29uc3Qg
RGF0YSYgYSwgY29uc3QgRGF0YSYgYikKICAgICByZXR1cm4gIW1lbWNtcChhLmRhdGEoKSwgYi5k
YXRhKCksIGEuc2l6ZSgpKTsKIH0KIAotc3RhdGljIFNhbHQgbWFrZVNhbHQoKQorU2FsdCBtYWtl
U2FsdCgpCiB7CiAgICAgU2FsdCBzYWx0OwogICAgIHN0YXRpY19hc3NlcnQoc2FsdC5zaXplKCkg
PT0gOCwgIlNhbHQgc2l6ZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAppbmRleCA2MDBiNWU0NTgwMTI4MGY4ZjQ1NzQw
MGY0NGY2MGFlMDllMzc4NWFmLi5jMmM5OWQ1YWU4ZTZhZWZlMWQ1NTBhYjFmMWM3ZTA2NWU5YTc4
N2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGEuaApAQCAtMTA1LDYgKzEwNSw3IEBAIERhdGEgbWFwRmlsZShjb25zdCBj
aGFyKiBwYXRoKTsKIAogdXNpbmcgU2FsdCA9IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47CiAKK1Nh
bHQgbWFrZVNhbHQoKTsKIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIFNIQTE6OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRhJiwgY29u
c3QgU2FsdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggZTY0MjlhN2ZiMWQxZDhmMTg2MmE2ZmI4ZTkz
NWZjMGYwNTBmOTVlZC4uYWRkOWEwMzI1NDc3MTVkNGQzZTQxMjE1NmY5NGM4OGZjYzljMjRlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaApAQCAtNjgsNiArNjgsNyBAQCBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDog
cHVibGljIFJlZkNvdW50ZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBXZWJQcm9jZXNzTAog
cHVibGljOgogICAgIHN0cnVjdCBDb25maWd1cmF0aW9uIHsKICAgICAgICAgU3RyaW5nIGNhY2hl
U3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgU3RyaW5nIGNhY2hlU3RvcmFnZVN1YmRpcmVjdG9y
eU5hbWU7CiAgICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIFN0
cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgYXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgyYmJlYjkyNzBmN2MxNGJlNTU1MWVl
MTgxNWQzMjlmZDhhMzAzY2IuLjgzMWRiNzM3YjUwMmE3MDYyZThmZjI1YmEzZGJiMmFhZmQyNGZm
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODkxLDYgKzg5MSw3IEBACiAJCTQxMzA3NUIyMURFODVGNTgwMDM5RUM2OSAvKiBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFj
dG9yeS5oICovOyB9OwogCQk0MTMwNzVCMzFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLzsgfTsK
IAkJNDEzMDc1QjQxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBODFERTg1RUU3
MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDEzNUZCRDExRjRGQjgw
OTAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0Ig
LyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLzsgfTsKIAkJNDE4OTdFQ0YxRjQxNUQ2
MjAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0UxRjQxNUQ1QzAwMTZGQTQy
IC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovOyB9OwogCQk0MTg5N0VEMDFGNDE1
RDY1MDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQy
IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDE4OTdFRDExRjQxNUQ2
ODAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAv
KiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi87IH07CkBAIC0zMTYyLDYgKzMxNjMsOCBA
QAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENTb2NrZXRGYWN0b3J5
Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJX
ZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRp
bmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1
YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJNDEzMDc1
QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5oOyBw
YXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5v
YmpjcHA7IH07CisJCTQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEz
NUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0IxRjQxNUQ1QzAwMTZGQTQyIC8q
IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0QxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIwMSw2ICs4MjA0LDggQEAK
IAkJCQk0MTg5N0VENjFGNDE1RDg2MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCAq
LywKIAkJCQk0MTg5N0VEMjFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmgg
Ki8sCiAJCQkJNDFGQUJEMjgxRjREREZEQzAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmggKi8sCisJCQkJNDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAgKi8sCisJCQkJNDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5oICovLAogCQkJCTQxODk3RUQzMUY0MTVEODUwMDE2RkE0MiAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk0MTg5N0VENDFGNDE1
RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oICovLAogCQkJCTQx
ODk3RUQ1MUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1l
c3NhZ2VzLmluICovLApAQCAtOTk5MSw2ICs5OTk2LDcgQEAKIAkJCQlFMTcwODc2QjE2RDZDQTY5
MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNG
MTg2MzgxNjdEMDcxRTAwQTFBODVBIC8qIENhY2hlTW9kZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE4OTdFRDcxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0MTM1RkJEMTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODk3RUQ5MUY0MTVEOEEwMDE2
RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTJFNTFFMTJFNEMw
NUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAppbmRleCBjM2QxMzAyNzUwOWMzMmIzMjdjMjZkOWU0ZjEwZjYxMzU5MjRiMjIz
Li5iZmQwYmEzYWMyZWM5YTkzOTM3OGRiNTc1NzI1OTVlMjBmODM0OTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC04Niw2ICs4NiwxMiBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAg
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OlB1dFJlY29yZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50
aWZpZXIsIHJlY29yZHMpLCAwKTsKIH0KIAordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Q2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgMCk7CisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
K30KKwogdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1
bHQpCiB7CiAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZChyZXF1ZXN0
SWRlbnRpZmllciwgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDI1YWZmY2YwMGFk
YzA4ZjgyMTRlZDc0ZjUwZmM4MjEzOGMxODFjN2MuLmY1OWUyY2YzMTY1N2ZjZjQ0OTllOWUzYmIx
ZjUzZTU4ZmRiZWVkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNjAsNiArNjAsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKICAgICB2
b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYp
IGZpbmFsOwogCisgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpIGZpbmFs
OworCiAgICAgdm9pZCBvcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwogICAgIHZv
aWQgcmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwogICAgIHZvaWQgdXBkYXRl
Q2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q2Fj
aGVJbmZvc09yRXJyb3ImJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDdjNzIwMTc4ZDIwZWNmMTRjNDJmZjU4NDlkNDUx
NDY4ZGVmMDY5YS4uNTM0YTUyZDA4MGM1MGRjZmIxMjM1NTBjZjQzZmVjZmM2M2U2OGY3OCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA4LTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5hbWVzIHBlcnNp
c3RlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
IFB1dHRpbmcgdGhlc2UgdGVzdHMgaW4gaHR0cC90ZXN0cyBmb2xkZXIgc28gdGhhdCB0aGV5IHJ1
biBpbiBhIGRpZmZlcmVudCBvcmlnaW4gYW5kIHNvIGEgZGlmZmVyZW50IENhY2hlcyB0aGFuIG90
aGVyIHRlc3RzLgorICAgICAgICBUZXN0aW5nIHByaXZhdGUgYnJvd3NpbmcgY2FjaGluZyBhbmQg
Y2xlYXJpbmcgdGhlIG1lbW9yeSByZXByZXNlbnRhdGlvbiB3b3VsZCBwcm9iYWJseSBhZmZlY3Qg
b3RoZXIgY2FjaGUrcHJ2aWF0ZSBicm93c2luZyB0ZXN0cyB0aGF0IHdvdWxkIHJ1biBpbiBwYXJh
bGxlbC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0
ZW5jeS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2Fj
aGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlm
cmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnM6IFNraXBwaW5nIG5ldyB0ZXN0IG9uIFdLMS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnM6IERpdHRvLgorCiAyMDE3LTA4LTMwICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV2ViQ3J5cHRvXSBBZGQgbGF5b3V0
IHRlc3RzIGNvdmVyaW5nIEVDIFAtNTIxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcGVyc2lzdGVuY3kuaHR0cHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0
dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmNkMjBhNGMwMjk5YmZmZDA5MjZjMDYyM2Q0
NzU3MWVjNGEyY2QwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlL2NhY2hlLXBlcnNpc3RlbmN5Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEwIEBACisKKworUEFTUyBDbGVhbmluZyBleGlzdGluZyBjYWNoZXMgCitQQVNTIENsZWFy
IG1lbW9yeSByZXByZXNlbnRhdGlvbiBhbmQgZGlzYWJsZSBkaXNrIHBlcnNpc3RlbmN5IAorUEFT
UyBDbGVhbmluZyBhZGRlZCBjYWNoZXMgZnJvbSBwcmV2aW91cyB0ZXN0IDEgCitQQVNTIENsZWFy
IG1lbW9yeSByZXByZXNlbnRhdGlvbiBidXQga2VlcCBkaXNrIHBlcnNpc3RlbmN5IAorUEFTUyBD
bGVhbmluZyBhZGRlZCBjYWNoZXMgZnJvbSBwcmV2aW91cyB0ZXN0IDIgCitQQVNTIEFkZGluZy9S
ZW1vdmluZyBjYWNoZXMgYW5kIGNsZWFyaW5nIGluIG1lbW9yeSByZXByZXNlbnRhdGlvbiBhdCB2
YXJpb3VzIHRpbWVzIAorUEFTUyBDbGVhbmluZyBhZGRlZCBjYWNoZXMgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXBl
cnNpc3RlbmN5Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjZjY2VlMTE0NjM0NGVhMTZiNmJhOTRl
ZmIyN2I1MjQzYTQ4YzQ0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1wZXJzaXN0ZW5jeS5odHRwcy5odG1sCkBAIC0wLDAgKzEs
MTI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FjaGUgU3Rv
cmFnZTogdGVzdGluZyBwZXJzaXN0ZW5jeTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlk
PSJjaGVjayI+PC9kaXY+CisgICAgPHNjcmlwdD4KKyAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7
CisgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhlbihrZXlzID0+IHsKKyAgICAg
ICAgICAgIHZhciBwZW5kaW5nID0gW107CisgICAgICAgICAgICBmb3IgKGtleSBvZiBrZXlzKQor
ICAgICAgICAgICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hlcy5kZWxldGUoa2V5c1swXSkp
OworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmcpOworICAgICAgICB9KTsK
KyAgICB9LCAiQ2xlYW5pbmcgZXhpc3RpbmcgY2FjaGVzIik7CisKKyAgICBwcm9taXNlX3Rlc3Qo
dGVzdCA9PiB7CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMg
aW50ZXJuYWxzIik7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKHRydWUpOworCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRl
c3Quc3RlcF9mdW5jKChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRh
ID09PSAicmVhZHkiKSB7CisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hl
U3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNr
LmlubmVySFRNTCA9ICI8aWZyYW1lIHNyYz0ncmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlm
cmFtZS5odG1sI2NoZWNrJz48L2lmcmFtZT4iOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGV2ZW50LmRh
dGEgPT09IGZhbHNlLCAiTm8gY2FjaGUgb2JqZWN0IHNob3VsZCBiZSBmb3VuZCIpOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSkpOworICAgICAgICAgICAg
Y2hlY2suaW5uZXJIVE1MID0gIjxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVu
Y3ktaWZyYW1lLmh0bWwnPjwvaWZyYW1lPiI7CisgICAgICAgIH0pCisgICAgfSwgIkNsZWFyIG1l
bW9yeSByZXByZXNlbnRhdGlvbiBhbmQgZGlzYWJsZSBkaXNrIHBlcnNpc3RlbmN5Iik7CisKKyAg
ICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRp
b24oKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKworICAgICAgICByZXR1cm4g
c2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICB2YXIgcGVuZGlu
ZyA9IFtdOworICAgICAgICAgICAgZm9yIChrZXkgb2Yga2V5cykKKyAgICAgICAgICAgICAgICBw
ZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKKyAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChwZW5kaW5nKTsKKyAgICAgICAgfSk7CisgICAgfSwgIkNsZWFuaW5n
IGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMSIpOworCisgICAgcHJvbWlzZV90ZXN0
KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzIik7CisKKyAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMoKGV2ZW50
KSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICJyZWFkeSIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVz
ZW50YXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2suaW5uZXJIVE1MID0gIjxpZnJh
bWUgc3JjPSdyZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwjY2hlY2snPjwv
aWZyYW1lPiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZXZlbnQuZGF0YSA9PT0gdHJ1ZSwgIkEgY2Fj
aGUgb2JqZWN0IHNob3VsZCBiZSBmb3VuZCIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIGNoZWNrLmlubmVySFRNTCA9ICI8aWZyYW1l
IHNyYz0ncmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1sJz48L2lmcmFtZT4i
OworICAgICAgICB9KQorICAgIH0sICJDbGVhciBtZW1vcnkgcmVwcmVzZW50YXRpb24gYnV0IGtl
ZXAgZGlzayBwZXJzaXN0ZW5jeSIpOworCisgICAgcHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAg
ICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAg
ICB2YXIgcGVuZGluZyA9IFtdOworICAgICAgICAgICAgZm9yIChrZXkgb2Yga2V5cykKKyAgICAg
ICAgICAgICAgICBwZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKKyAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5nKTsKKyAgICAgICAgfSk7CisgICAg
fSwgIkNsZWFuaW5nIGFkZGVkIGNhY2hlcyBmcm9tIHByZXZpb3VzIHRlc3QgMiIpOworCisgICAg
cHJvbWlzZV90ZXN0KHRlc3QgPT4geworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50ZXJuYWxz
Iik7CisKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0
MiIpLCBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MSIpXSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpCisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7Cisg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDIiLCAidGVzdDEiXSk7
CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2Fj
aGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxm
LmNhY2hlcy5rZXlzKCk7CisgICAgICAgIH0pLnRoZW4oa2V5cyA9PiB7CisgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGtleXMsIFsidGVzdDIiLCAidGVzdDEiXSk7CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5jYWNoZXMuZGVsZXRlKCJ0ZXN0MiIpOworICAgICAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJl
c2VudGF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpOworICAg
ICAgICB9KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhr
ZXlzLCBbInRlc3QxIl0pOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MiIpOworICAgICAgICB9KS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpOworICAgICAgICB9
KS50aGVuKGtleXMgPT4geworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhrZXlzLCBb
InRlc3QxIiwgInRlc3QyIl0pOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChbc2VsZi5jYWNoZXMuZGVsZXRlKCJ0ZXN0MiIpLCBzZWxmLmNh
Y2hlcy5kZWxldGUoInRlc3QxIildKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOwor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKTsKKyAgICAgICAgfSkudGhlbihr
ZXlzID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoa2V5cywgW10pOworICAg
ICAgICB9KTsKKyAgICB9LCAiQWRkaW5nL1JlbW92aW5nIGNhY2hlcyBhbmQgY2xlYXJpbmcgaW4g
bWVtb3J5IHJlcHJlc2VudGF0aW9uIGF0IHZhcmlvdXMgdGltZXMiKTsKKworICAgIHByb21pc2Vf
dGVzdCh0ZXN0ID0+IHsKKyAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50aGVuKGtl
eXMgPT4geworICAgICAgICAgICAgdmFyIHBlbmRpbmcgPSBbXTsKKyAgICAgICAgICAgIGZvciAo
a2V5IG9mIGtleXMpCisgICAgICAgICAgICAgICAgcGVuZGluZy5wdXNoKHNlbGYuY2FjaGVzLmRl
bGV0ZShrZXlzWzBdKSk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVuZGluZyk7
CisgICAgICAgIH0pOworICAgIH0sICJDbGVhbmluZyBhZGRlZCBjYWNoZXMiKTsKKyAgICA8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS1zdG9yYWdlL3Jlc291cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMvY2FjaGUt
cGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc5Yzk4ZmVmOGU0NGIxNTdhMTNm
YzBkOTZhNDJmZjY0ZDQ4NTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0
bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAg
IDxzY3JpcHQ+CitmdW5jdGlvbiBkb1Rlc3QoKQoreworICAgIGlmICh3aW5kb3cubG9jYXRpb24u
aGFzaCA9PT0gIiNjaGVjayIpIHsKKyAgICAgICAgc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5
cyA9PiB7CisgICAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGtleXMubGVuZ3Ro
ID09PSAxICYmIGtleXNbMF0gPT09ICJ0ZXN0Q2FjaGVOYW1lIiwgIioiKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0Q2Fj
aGVOYW1lIikudGhlbigoKSA9PiB7CisgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uo
InJlYWR5IiwgIioiKTsKKyAgICB9KTsKK30KK2RvVGVzdCgpOworICAgIDwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggNDE4MTA0OTRhZGEyOThmNDZlYzhmYzNhNDU1MDkyZmIzZjE1NjJhNC4u
ZTU4Y2FmYTY2ZmQ3Yzc1Y2Q2OGIzYWNjNWY0ZjJhNjI5MDNlOGE2OSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAsNiArMTAsNyBAQCBl
ZGl0aW5nL2lucHV0L2ZvY3VzLWNoYW5nZS13aXRoLW1hcmtlZC10ZXh0Lmh0bWwgWyBQYXNzIF0K
ICMgTm8gc2VydmljZSB3b3JrZXIgaW1wbGVtZW50YXRpb24gZm9yIFdLMQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMgWyBTa2lwIF0KIGh0dHAvd3B0L2Nh
Y2hlLXN0b3JhZ2UgWyBTa2lwIF0KK2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZSBbIFNraXAgXQog
CiAjIFNraXAgV2ViUlRDIGZvciBub3cgaW4gV0sxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0YyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDVmZjhhY2JjOTc0ZDU2OTFhYzNhNjEwZTU4M2QyMDczZTM1
OTg0OGMuLmZjMzk3ODdmMWVjOTI3MjlkZDAzYWJjYzdiZDg4NjhhNmYzYjEyZGMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTk0LDYgKzk0
LDcgQEAgaHR0cC90ZXN0cy9zc2wvbWVkaWEtc3RyZWFtCiAjIE5vIHNlcnZpY2Ugd29ya2VyIGlt
cGxlbWVudGF0aW9uIGZvciBXSzEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzIFsgU2tpcCBdCiBodHRwL3dwdC9jYWNoZS1zdG9yYWdlIFsgU2tpcCBdCito
dHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UgWyBTa2lwIF0KIAogIyBTa2lwIFdlYlJUQyBmb3Igbm93
IGluIFdLMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>