<?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>186903</bug_id>
          
          <creation_ts>2018-06-21 17:12:33 -0700</creation_ts>
          <short_desc>Resource Load Statistics: Make WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains() wait for the network process before calling its callback</short_desc>
          <delta_ts>2018-06-27 08:56:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=183714</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>
          <dependson>187099</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fred.wang</cc>
    
    <cc>fujii</cc>
    
    <cc>realdawei</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1435318</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-21 17:12:33 -0700</bug_when>
    <thetext>WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains() should wait for the network process&apos; signal that cookie partitioning and blocking has been updated before calling its callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435319</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-21 17:13:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/41350182&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435325</commentid>
    <comment_count>2</comment_count>
      <attachid>343297</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-21 17:23:53 -0700</bug_when>
    <thetext>Created attachment 343297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435612</commentid>
    <comment_count>3</comment_count>
      <attachid>343370</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-22 14:43:52 -0700</bug_when>
    <thetext>Created attachment 343370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435668</commentid>
    <comment_count>4</comment_count>
      <attachid>343389</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-22 16:13:17 -0700</bug_when>
    <thetext>Created attachment 343389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436144</commentid>
    <comment_count>5</comment_count>
      <attachid>343389</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-25 11:05:33 -0700</bug_when>
    <thetext>Comment on attachment 343389
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:406
&gt; +void NetworkProcess::updatePrevalentDomainsToPartitionOrBlockCookies(PAL::SessionID sessionID, const Vector&lt;String&gt;&amp; domainsToPartition, const Vector&lt;String&gt;&amp; domainsToBlock, const Vector&lt;String&gt;&amp; domainsToNeitherPartitionNorBlock, bool shouldClearFirst, uint64_t contextId)

We usually call these callbackID, not contextId.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:410
&gt; +    parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::UpdatePartitionOrBlockCookiesDone(contextId), 0);

We would normally call this DidUpdatePartitionOrBlockCookies

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:137
&gt; +    void updatePrevalentDomainsToPartitionOrBlockCookies(PAL::SessionID, const Vector&lt;String&gt;&amp; domainsToPartition, const Vector&lt;String&gt;&amp; domainsToBlock, const Vector&lt;String&gt;&amp; domainsToNeitherPartitionNorBlock, bool shouldClearFirst, uint64_t contextId);

ditto.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.messages.in:84
&gt; +    UpdatePrevalentDomainsToPartitionOrBlockCookies(PAL::SessionID sessionID, Vector&lt;String&gt; domainsToPartition, Vector&lt;String&gt; domainsToBlock, Vector&lt;String&gt; domainsToNeitherPartitionNorBlock, bool shouldClearFirst, uint64_t contextId)

We usually call these callbackID, not contextId.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:434
&gt; +static uint64_t nextUpdatePartitionOrBlockCookiesContextId()

Not needed, please rely on the existing generateCallbackID() in this file.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:447
&gt; +    auto contextId = nextUpdatePartitionOrBlockCookiesContextId();

Please use generateCallbackID() and call this variable callbackID everywhere.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:453
&gt; +void NetworkProcessProxy::updatePartitionOrBlockCookiesDone(uint64_t contextId)

callbackID

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:455
&gt; +    auto callback = m_updatePartitionOrBlockCookiesCallbackMap.take(contextId);

In NetworkProcessProxy::clearCallbackStates(), please make sure you call your completion handlers (This is called when the network process crashes during a request).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436153</commentid>
    <comment_count>6</comment_count>
      <attachid>343520</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-25 11:30:07 -0700</bug_when>
    <thetext>Created attachment 343520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436154</commentid>
    <comment_count>7</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-25 11:30:32 -0700</bug_when>
    <thetext>Thanks, Chris! I&apos;ve fixed all the issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436163</commentid>
    <comment_count>8</comment_count>
      <attachid>343520</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-25 11:53:00 -0700</bug_when>
    <thetext>Comment on attachment 343520
Patch

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

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:1305
&gt; +        m_updatePrevalentDomainsToPartitionOrBlockCookiesHandler(domainsToPartition, domainsToBlock, domainsToNeitherPartitionNorBlock, ShouldClearFirst::No, WTFMove(completionHandler));

We want completionHandler to be called on the background thread here since WebResourceLoadStatisticsStore::updateCookiePartitioning() gets called on the background thread. Therefore, I believe this should be:
m_updatePrevalentDomainsToPartitionOrBlockCookiesHandler(domainsToPartition, domainsToBlock, domainsToNeitherPartitionNorBlock, ShouldClearFirst::No, [completionHandler = WTFMove(completionHandler] {
    m_statisticsQueue-&gt;dispatch([completionHandler = WTFMove(completionHandler)]() mutable {
             completionHandler();
     });
});

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:1337
&gt; +        m_updatePrevalentDomainsToPartitionOrBlockCookiesHandler(domainsToPartition, domainsToBlock, domainsToNeitherPartitionNorBlock, shouldClearFirst, WTFMove(completionHandler));

Same issue here, WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains() gets called on the background thread, so completionHandler needs to be called on the background thread.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1211
&gt; +        processPool-&gt;networkProcess()-&gt;updatePrevalentDomainsToPartitionOrBlockCookies(m_sessionID, domainsToPartition, domainsToBlock, domainsToNeitherPartitionNorBlock, shouldClearFirst, WTFMove(completionHandler));

processPool-&gt;networkProcess() can return null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436257</commentid>
    <comment_count>9</comment_count>
      <attachid>343539</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-25 14:29:42 -0700</bug_when>
    <thetext>Created attachment 343539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436261</commentid>
    <comment_count>10</comment_count>
      <attachid>343539</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-25 14:33:34 -0700</bug_when>
    <thetext>Comment on attachment 343539
Patch

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

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1213
&gt; +            process-&gt;updatePrevalentDomainsToPartitionOrBlockCookies(m_sessionID, domainsToPartition, domainsToBlock, domainsToNeitherPartitionNorBlock, shouldClearFirst, WTFMove(completionHandler));

This is not correct and will crash if there is more than one process pool because you keep WTFMove() ing the same completionHandler. What you want is to use a WTF::CallbackAggregator to wait for all network processes to complete their requests before calling completionHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436293</commentid>
    <comment_count>11</comment_count>
      <attachid>343550</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-25 15:36:14 -0700</bug_when>
    <thetext>Created attachment 343550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436295</commentid>
    <comment_count>12</comment_count>
      <attachid>343550</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-25 15:41:34 -0700</bug_when>
    <thetext>Comment on attachment 343550
Patch

r=me if the bots are happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436296</commentid>
    <comment_count>13</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-25 15:44:18 -0700</bug_when>
    <thetext>Thanks, Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436300</commentid>
    <comment_count>14</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-25 16:02:29 -0700</bug_when>
    <thetext>Mac-wk2 test flakiness is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436316</commentid>
    <comment_count>15</comment_count>
      <attachid>343550</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-25 16:37:45 -0700</bug_when>
    <thetext>Comment on attachment 343550
Patch

Clearing flags on attachment: 343550

Committed r233180: &lt;https://trac.webkit.org/changeset/233180&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436317</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-25 16:37:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436446</commentid>
    <comment_count>17</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-06-26 01:50:37 -0700</bug_when>
    <thetext>Filed bug 187035 to fix the WinCairo build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436536</commentid>
    <comment_count>18</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-06-26 09:36:07 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #15)
&gt; Comment on attachment 343550 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 343550
&gt; 
&gt; Committed r233180: &lt;https://trac.webkit.org/changeset/233180&gt;

Looks like this revision has caused an API test regression:

Sample output:
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/3827/steps/run-api-tests/logs/stdio

Crashed

    TestWebKitAPI.ResourceLoadStatistics.GrandfatherCallback
        ASSERTION FAILED: Completion handler should always be called
        !m_function
        /Volumes/Data/slave/highsierra-debug/build/WebKitBuild/Debug/usr/local/include/wtf/CompletionHandler.h(51) : WTF::CompletionHandler&lt;void ()&gt;::~CompletionHandler()
        1   0x10d1dee89 WTFCrash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436549</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-26 10:00:10 -0700</bug_when>
    <thetext>(In reply to David Fenton (realdawei) from comment #18)
&gt; (In reply to WebKit Commit Bot from comment #15)
&gt; &gt; Comment on attachment 343550 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 343550
&gt; &gt; 
&gt; &gt; Committed r233180: &lt;https://trac.webkit.org/changeset/233180&gt;
&gt; 
&gt; Looks like this revision has caused an API test regression:
&gt; 
&gt; Sample output:
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/3827/steps/run-api-
&gt; tests/logs/stdio
&gt; 
&gt; Crashed
&gt; 
&gt;     TestWebKitAPI.ResourceLoadStatistics.GrandfatherCallback
&gt;         ASSERTION FAILED: Completion handler should always be called
&gt;         !m_function
&gt;        
&gt; /Volumes/Data/slave/highsierra-debug/build/WebKitBuild/Debug/usr/local/
&gt; include/wtf/CompletionHandler.h(51) : WTF::CompletionHandler&lt;void
&gt; ()&gt;::~CompletionHandler()
&gt;         1   0x10d1dee89 WTFCrash

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436552</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-26 10:04:42 -0700</bug_when>
    <thetext>Reopening for follow-up crash fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436553</commentid>
    <comment_count>21</comment_count>
      <attachid>343614</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-26 10:06:18 -0700</bug_when>
    <thetext>Created attachment 343614
Follow-up fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436598</commentid>
    <comment_count>22</comment_count>
      <attachid>343614</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-26 11:26:37 -0700</bug_when>
    <thetext>Comment on attachment 343614
Follow-up fix

Clearing flags on attachment: 343614

Committed r233208: &lt;https://trac.webkit.org/changeset/233208&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436599</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-26 11:26:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436923</commentid>
    <comment_count>24</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-06-27 04:54:05 -0700</bug_when>
    <thetext>@Chris: The ASSERTION failure is still happening on GTK. See https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Tests%29/builds/3277</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436951</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-27 08:47:59 -0700</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #24)
&gt; @Chris: The ASSERTION failure is still happening on GTK. See
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Tests%29/
&gt; builds/3277

My bet is that this one is GTK specific, John&apos;s patch probably only takes care of the #if HAVE(CFNETWORK_STORAGE_PARTITIONING) code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436956</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-27 08:56:27 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #25)
&gt; (In reply to Frédéric Wang (:fredw) from comment #24)
&gt; &gt; @Chris: The ASSERTION failure is still happening on GTK. See
&gt; &gt; https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Tests%29/
&gt; &gt; builds/3277
&gt; 
&gt; My bet is that this one is GTK specific, John&apos;s patch probably only takes
&gt; care of the #if HAVE(CFNETWORK_STORAGE_PARTITIONING) code path.

Taking care of it via https://bugs.webkit.org/show_bug.cgi?id=187099.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343297</attachid>
            <date>2018-06-21 17:23:53 -0700</date>
            <delta_ts>2018-06-22 14:43:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186903-20180621172353.patch</filename>
            <type>text/plain</type>
            <size>28449</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI0NWEwNGRhOWQxMGFkNThj
M2QzNjdkMTg0ZDU0MmUyZjM5MDhmMmQuLjUzYTYwNDE1MzM5MDQ2MjU4MzRjNmFlYzA5YWMxOTk0
MTc1OTVhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMDYtMjEgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBNYWtlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWlucygpIHdhaXQgZm9yIHRoZSBuZXR3b3JrIHByb2Nlc3MgYmVm
b3JlIGNhbGxpbmcgaXRzIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMzUwMTgy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggc3RvcmVzIHRoZSBjYWxsYmFjayBzZW50IHRvCisgICAgICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucygpLAor
ICAgICAgICBzZXRzIHVwIGEgY29udGV4dCBJRCwgYW5kIHNlbmRzIHRoYXQgSUQgdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcyB3aGVuCisgICAgICAgIGFza2luZyBpdCB0byB1cGRhdGUgY29va2llIHBh
cnRpdGlvbmluZyBhbmQgYmxvY2tpbmcuIFRoZSBuZXR3b3JrCisgICAgICAgIHByb2Nlc3MgdGhl
biB0ZWxscyB0aGUgVUkgcHJvY2VzcyB3aGVuIGl0J3MgZG9uZSwgYXQgd2hpY2ggcG9pbnQgdGhl
CisgICAgICAgIGNhbGxiYWNrIGlzIGNhbGxlZC4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIG1l
YW50IHRvIGFkZHJlc3MgbGF5b3V0IHRlc3QgZmxha2luZXNzLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om5l
eHRVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0NvbnRleHRJZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlv
bk9yQmxvY2tDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
dXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNEb25lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAxOC0wNi0yMSAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gV2ViRHJpdmVyOiBhbGxvdyBhcHBs
eWluZyBob3N0LXNwZWNpZmljIFRMUyBjZXJ0aWZpY2F0ZXMgZm9yIGF1dG9tYXRlZCBzZXNzaW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCAxODRkMTI3YzM4YmY2NmFmNWU2YzAxZGY4MDAzOWIyMjA2ZjllNDU4Li5iYTJkZWE1Zjcx
YjRkZWU5MjZmY2UyYjZkZTVkN2FkYmI2NGZkODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNDAzLDEwICs0MDMsMTEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgY29uc3QgU3RyaW5nJgogfQogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJU
SVRJT05JTkcpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0
aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZpcnN0KQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0
aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xl
YXJGaXJzdCwgdWludDY0X3QgY29udGV4dElkKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0UHJldmFsZW50RG9tYWlu
c1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9C
bG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0
KTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0RvbmUoY29udGV4dElk
KSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmUzNDkzMTliMWE0ZGI4ZDM0ODg0YmJiNTE5
MjQ4NWEwNTA1MjI4NC4uNGNmNmU0NWZkNzM5ZGRlMDZhYTQ2NzVkYjQ1MDY5Nzg3MWU2NWYwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAt
MTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywg
RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAgdm9pZCB1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBh
cnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQp
OwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggODM3NmJiYzliNDhh
NmI0MTM4YzQxNGFiZGQ5YTZjYzhmOTRlZWFkYi4uYmJhMWRmN2YzMDM4N2U3MmY5MDBhZTE2MDBi
NTBiZTg2NDRiMjhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04MSw3ICs4MSw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcmVjb25uZWN0VG8oV2Vi
Q29yZTo6VVJMIHVybCwgZW51bSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJ
VElPTklORykKLSAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29v
a2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1Bh
cnRpdGlvbiwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIFZlY3RvcjxTdHJpbmc+IGRv
bWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZpcnN0KQor
ICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvUGFydGl0aW9uLCBW
ZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jaywgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvTmVp
dGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNv
bnRleHRJZCkKICAgICBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAg
ICBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IGNvbnRleHRJZCkKICAgICBHcmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWlu
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNiYjE4MmI2NWE2YzBhY2UxNTMwMGRl
OTY0MzMzMDEzNDY0NjI0YmUuLjMzMmQzMWI5ZjM1YjQ4YjllMDg2YmZjNTYwYzkwYTk3ZjYzMWVm
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDI4LDYgKzQyOCwzMSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3Qg
bG9hZGVySQogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklO
RykKK3N0YXRpYyB1aW50NjRfdCBuZXh0VXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNDb250
ZXh0SWQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBuZXh0Q29udGV4dElkID0gMDsKKyAgICBy
ZXR1cm4gKytuZXh0Q29udGV4dElkOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNo
b3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sK
KyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29udGV4dElkID0gbmV4dFVwZGF0ZVBhcnRp
dGlvbk9yQmxvY2tDb29raWVzQ29udGV4dElkKCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Vw
ZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RG
TW92ZShjYWxsYmFjaykpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKHNlc3Npb25JRCwgZG9tYWlu
c1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBzaG91bGRDbGVhckZpcnN0ID09IFNob3VsZENsZWFyRmlyc3Q6OlllcywgY29udGV4
dElkKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXNEb25lKHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBhdXRvIGNhbGxi
YWNrID0gbV91cGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0NhbGxiYWNrTWFwLnRha2UoY29u
dGV4dElkKTsKKyAgICBjYWxsYmFjaygpOworfQorCiBzdGF0aWMgdWludDY0X3QgbmV4dFJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCkKIHsKICAgICBzdGF0aWMgdWludDY0X3QgbmV4dENv
bnRleHRJZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDZjYzUyMWM2YWMxZDRjNGNmMGFhNDg3Mjc0OTgx
MDdjMjBhM2E0NmYuLjJkMzk0Zjc2YzRjNGMwMTgyNmY5OGMwNDg3N2I0NTU5OWQwNzExNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0
ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9y
aWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NU
T1JBR0VfUEFSVElUSU9OSU5HKQorICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9j
aywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9j
aywgU2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY2FsbGJhY2spOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5z
KT4mJik7CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKQEAgLTE0NCw2ICsxNDUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1
aW50NjRfdCBsb2FkZXJJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgogI2lmIEhBVkUoQ0ZORVRXT1JL
X1NUT1JBR0VfUEFSVElUSU9OSU5HKQorICAgIHZvaWQgdXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXNEb25lKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBzdG9yYWdlQWNjZXNzUmVx
dWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9p
ZCBhbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMs
IHVpbnQ2NF90IGNvbnRleHRJZCk7CiAjZW5kaWYKQEAgLTE3Niw2ICsxNzgsNyBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fc3luY0FsbENvb2tpZXNDb3VudGVyIHsgMCB9OwogCiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPj4gbV93
cml0ZUJsb2JUb0ZpbGVQYXRoQ2FsbGJhY2tNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV91cGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0Nh
bGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01h
cDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucyk+PiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5OTZhNGE1OTVkMjkzNTM3Mjg3
ZDJlMGE2NzIyMjk4M2YwYzJiNTA1Li45NTNiN2MzZDI0MGZjZDgwNDZmMzA3ODE1ZTVlMjM5NGY3
ZWZjY2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00Nyw2ICs0Nyw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIENh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVySUQsIHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
IHByb3RlY3Rpb25TcGFjZSkKICNlbmRpZgogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFS
VElUSU9OSU5HKQorICAgIFVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzRG9uZSh1aW50NjRf
dCBjb250ZXh0SWQpCiAgICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoYm9vbCB3YXNHcmFu
dGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1
bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcAppbmRleCA2ZGFiMjYzN2I5YTg4NTdjOGRiMjM3MTQ0NTMxNjdkOGVm
NmRiYzA5Li4xOTc0ZmM2MGNlZDA2ZThkNTZlNTk3M2JjZGU1NDFlYjJkMWE1ZmZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTEyMTYsNyArMTIxNiw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoQ29tcGxldGlvbkhhbmRs
ZXI8CiAgICAgfQogCiAgICAgaWYgKGRvbWFpbnNUb1BhcnRpdGlvbi5pc0VtcHR5KCkgJiYgZG9t
YWluc1RvQmxvY2suaXNFbXB0eSgpICYmIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9j
ay5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSB7CisgICAgICAg
ICAgICBjYWxsYmFjaygpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI1NCw5ICsxMjU2LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyhDb21wbGV0aW9uSGFuZGxlcjwKICAgICB9CiAjZW5k
aWYKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
c1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0gKCkgewotICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1Bh
cnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNU
b0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmly
c3Q6Ok5vKTsKLSAgICAgICAgY2FsbGJhY2soKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUGFydGl0
aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb1BhcnRpdGlvbiksIGRvbWFpbnNUb0Jsb2Nr
ID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWluc1RvTmVpdGhlclBhcnRp
dGlvbk5vckJsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25O
b3JCbG9jayksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAg
ICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFu
ZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVy
UGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9f
SUYobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJE
b25lIHVwZGF0aW5nIGNvb2tpZSBwYXJ0aXRpb25pbmcgYW5kIGJsb2NraW5nLiIpOwogI2VuZGlm
CkBAIC0xMjY3LDEyICsxMjY4LDE0IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKGRvbWFpbnNUb1BhcnRpdGlvbi5p
c0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2suaXNFbXB0eSgpICYmIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jay5pc0VtcHR5KCkgJiYgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRD
bGVhckZpcnN0OjpObykgewotICAgICAgICBjYWxsYmFjaygpOworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJz
dCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBj
cm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9z
c1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
KV0gKCkgewotICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxv
Y2tDb29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21h
aW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QpOworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJzdCwgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENv
cHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHko
ZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9z
c1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIG1fdXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKGRvbWFpbnNUb1BhcnRp
dGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywg
c2hvdWxkQ2xlYXJGaXJzdCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0pOwogCiAgICAgaWYg
KHNob3VsZENsZWFyRmlyc3QgPT0gU2hvdWxkQ2xlYXJGaXJzdDo6WWVzKQpAQCAtMTI5MCw4ICsx
MjkzLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmUKIAogICAgIGZvciAoYXV0byYgZG9tYWlu
IDogZG9tYWluc1RvQmxvY2spCiAgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclBy
aW1hcnlEb21haW4oZG9tYWluKS5pc01hcmtlZEZvckNvb2tpZUJsb2NraW5nID0gdHJ1ZTsKLQot
ICAgIGNhbGxiYWNrKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpjbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCA0ZjExNjI0NGJhMWU0YzBkY2Y0MDQ2NDhhZWNlYmIzOTMxZjU0NDUwLi5mYTgy
Zjc4Y2QwYmFlM2Q3YjkzMzhjM2Y3M2Q1ZjIwOWNmZDI0ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApA
QCAtNjgsMTIgKzY4LDEyIEBAIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyB7CiAKIGNs
YXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNv
bm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgdXNpbmcg
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0g
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRp
b24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJz
dCk+OworICAgIHVzaW5nIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ss
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ss
IFNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OwogICAgIHVz
aW5nIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spPjsKICAgICB1c2luZyBHcmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3
YXNHcmFudGVkKT4mJiBjYWxsYmFjayk+OwogICAgIHVzaW5nIFJlbW92ZUFsbFN0b3JhZ2VBY2Nl
c3NIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+OwogICAgIHVzaW5nIFJlbW92ZVByZXZh
bGVudERvbWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpPjsKLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVu
Y3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBo
ZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hh
bmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hh
bmRsZXIgPSBbXShjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0KSB7
IH0sIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3Qs
IHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgR3JhbnRTdG9yYWdl
QWNjZXNzSGFuZGxlciYmIGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBbXShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiwgdWludDY0X3QsIFdU
Rjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFu
ZGxlciYmIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oKSB7IH0sIFJlbW92ZVBy
ZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3Qg
V1RGOjpWZWN0b3I8U3RyaW5nPiYpIHsgfSkKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0Nh
bGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBT
aG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2sgPSBb
XSgpIHsgfSkgeyB9LCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IHVpbnQ2NF90LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIEdy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10o
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIHVp
bnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgUmVtb3ZlQWxsU3RvcmFn
ZUFjY2Vzc0hhbmRsZXImJiByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFtdKCkgeyB9
LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0g
W10gKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mKSB7IH0pCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2spLCBpc0VwaGVt
ZXJhbCwgV1RGTW92ZSh1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29v
a2llc0hhbmRsZXIpLCBXVEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBX
VEZNb3ZlKGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIpLCBXVEZNb3ZlKHJlbW92ZUFsbFN0b3Jh
Z2VBY2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IGMzZjMxODJkZjA1YzhmMWM1NTgwMzFiNWM1ZmVhNGMwMWNk
M2NkYzUuLjlmNzJlMTRkZGNkNGI3Yzk1OTMzY2NmMTMwYjA4ZDdlZTBhN2I1MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0xMjA1LDEwICsxMjA1LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cmVtb3ZlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKE9wdGlvblNldDxXZWJz
CiB9CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLXZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFy
Rmlyc3QpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1Bh
cnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0
aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJG
aXJzdCBzaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJh
Y2spCiB7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAg
ICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
cyhtX3Nlc3Npb25JRCwgZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0ID09IFNob3VsZENs
ZWFyRmlyc3Q6OlllcykpOworICAgICAgICBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMobV9zZXNzaW9u
SUQsIGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCwgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spCkBAIC0xNDcyLDkgKzE0
NzIsOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2soRnVuY3RpbwogICAgIH0KIAogI2lmIEhBVkUoQ0ZORVRX
T1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9zZXNz
aW9uSUQuaXNFcGhlbWVyYWwoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhl
clBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpIHsK
KyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSwgV1RGTW92ZShjYWxsYmFjayksIG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCksIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxk
Q2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y2FsbGJhY2spIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMt
PnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGRvbWFpbnNU
b1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JC
bG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9u
LCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91
bGRDbGVhckZpcnN0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSwgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2sp
IHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgd2Vha1RoaXMtPmhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4s
IGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDk3
OGMzZDk0NWM1YzA4M2NiY2ZjZjY3Yzg0MmFiMjYzOWQwMDcxYWEuLjU2N2EyNGU1MWUzODQ0NGRi
NGUwMzM2NzdlMzZjNjhhM2Q3YzBlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTEzMCw3ICsxMzAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uPiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW5zLCBGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2
b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCk7CisgICAgdm9pZCB1cGRhdGVQcmV2
YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxv
Y2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxv
Y2ssIFNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNB
Y2Nlc3MpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CiAg
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWE5ODE3ODYyOTcyODgz
MmI2ZDM4YzRiZThkOTY5NWIwZWI3ZjIzZC4uYjUxNDZmNjQ3OWQ2M2RjNTlhYTg4NTFiN2U1NDgw
YzIyOGIzNTY3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTA2LTIxICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlz
dGljczogTWFrZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMoKSB3YWl0IGZvciB0aGUgbmV0d29yayBwcm9jZXNzIGJlZm9y
ZSBjYWxsaW5nIGl0cyBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg2OTAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTM1MDE4Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9y
YWdlLWFjY2Vzcy11bmRlci1vcGVuZXIuaHRtbDoKKyAgICAgICAgICAgIE1vdmVkIHRoZSBjb2Rl
IGJsb2NrIHRvIHRoZSBwYWdlJ3MgYm9keSBpbnN0ZWFkIG9mIGl0cyBoZWFkLgorICAgICAgICAg
ICAgQWRkZWQgYW4gaW5pdGlhbCBjb25zb2xlIGxvZyBzdGF0ZW1lbnQuIFRoZSByZWFzb24gZm9y
IHRoZXNlCisgICAgICAgICAgICBjaGFuZ2VzIGlzIHRoYXQgd2UncmUgc2VlaW5nIGZsYWt5IHRp
bWVvdXRzIHdpdGggbm8gb3V0cHV0LgorCiAyMDE4LTA2LTIxICBSeWFuIEhhZGRhZCAgPHJ5YW5o
YWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIGZvciBo
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvdGhpcmQtcGFydHktcmVnaXN0cmF0aW9uLmh0bWwuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3Rv
cmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhw
ZWN0ZWQudHh0CmluZGV4IDUzMDg4MDQxNDIxMWJmYjg3ZTMxNmRmNWIxNWU0MjFlYTIxOGQ3NWYu
LmJjNWE4MDk4NTE1Mzg3MDcxZGNlMWFlYjdjYTVlMjYwNjRlOWFhMzAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11
bmRlci1vcGVuZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhwZWN0ZWQudHh0
CkBAIC0xLDcgKzEsOCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU0OiBSdW5uaW5nIHRlc3Qu
Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjc6IEFib3V0IHRvIGNhbGwgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
Njk6IEFib3V0IHRvIG9wZW4gdGhlIG5ldyB3aW5kb3cuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
NDM6IEFib3V0IHRvIG9wZW4gdGhlIHRoaXJkIHBhcnR5IGlmcmFtZS4KK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA4OiBGaXJzdCBKYXZhU2NyaXB0IHN0YXRlbWVudC4KK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA1NzogUnVubmluZyB0ZXN0LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDczOiBBYm91dCB0
byBjYWxsIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpLgor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDc1OiBBYm91dCB0byBvcGVuIHRoZSBuZXcgd2luZG93Lgor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDQ1OiBBYm91dCB0byBvcGVuIHRoZSB0aGlyZCBwYXJ0eSBp
ZnJhbWUuCiBUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIHdpbmRvdyBmcm9tIGEgcHJldmFsZW50
IGRvbWFpbiB3aXRoIG5vbi1yZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBnZXRzIGltbWVkaWF0ZSBz
dG9yYWdlIGFjY2VzcyB1bmRlciBpdHMgb3BlbmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3Jh
bnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLmh0bWwK
aW5kZXggMWNiZDFjNzdiOWIzMWEyZjljZjQ3OTg0Mzk2YWM2Yzc3MmMwMDUxMy4uYWE3NDM2OWEy
NzY4YjNjMzAyMDA5NzIyZGFmZmJiMmJmOGZhN2Q3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5l
ci5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1z
dG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXIuaHRtbApAQCAtMiw3ICsyLDExIEBACiA8aHRtbD4K
IDxoZWFkPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1bigpIj4KICAgICA8c2NyaXB0Pgor
ICAgICAgICBjb25zb2xlLmxvZygiRmlyc3QgSmF2YVNjcmlwdCBzdGF0ZW1lbnQuIik7CisKICAg
ICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBjcm9zcy1vcmlnaW4gd2luZG93IGZyb20g
YSBwcmV2YWxlbnQgZG9tYWluIHdpdGggbm9uLXJlY2VudCB1c2VyIGludGVyYWN0aW9uIGdldHMg
aW1tZWRpYXRlIHN0b3JhZ2UgYWNjZXNzIHVuZGVyIGl0cyBvcGVuZXIuIik7CiAgICAgICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwogCkBAIC0xNCw4ICsxOCw2IEBACiAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKGVuYWJsZSk7CiAgICAgICAgIH0KIAot
ICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdl
LCBmYWxzZSk7Ci0KICAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKICAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UpOwogICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CkBA
IC01MCw5ICs1MiwxMyBAQAogICAgICAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJm
aXJzdFBhcnR5Q29va2llIjsKICAgICAgICAgY29uc3Qgc3ViUGF0aFRvR2V0Q29va2llcyA9ICIv
Z2V0LWNvb2tpZXMucGhwP25hbWUxPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZTsKICAgICAgICAg
dmFyIG5ld1dpbjsKKwogICAgICAgICBmdW5jdGlvbiBydW4oKSB7CiAgICAgICAgICAgICBjb25z
b2xlLmxvZygiUnVubmluZyB0ZXN0LiIpOwogICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0
cnVlKTsKKworICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBy
ZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9w
ZW5XaW5kb3dzKCk7CiAKICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHRoaXJkUGFydHlPcmlnaW4sIHRydWUpOwpAQCAtNzEsNyArNzcsNSBAQAog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
IG9ubG9hZD0icnVuKCkiPgogPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343370</attachid>
            <date>2018-06-22 14:43:52 -0700</date>
            <delta_ts>2018-06-22 16:13:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186903-20180622144351.patch</filename>
            <type>text/plain</type>
            <size>35936</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0Nzk3MDY1MzVkZWU0ZjA2
YmJiMjdkZjA1YzNmOTUyNmJkN2Q3NTcuLmI4YWI5NGIwZTU0ODk5ZmFiNzc5NjBhMDRhYjY4ZTk3
YWEzMTYwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMDYtMjIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBNYWtlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWlucygpIHdhaXQgZm9yIHRoZSBuZXR3b3JrIHByb2Nlc3MgYmVm
b3JlIGNhbGxpbmcgaXRzIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMzUwMTgy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggc3RvcmVzIHRoZSBjYWxsYmFjayBzZW50IHRvCisgICAgICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucygpLAor
ICAgICAgICBzZXRzIHVwIGEgY29udGV4dCBJRCwgYW5kIHNlbmRzIHRoYXQgSUQgdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcyB3aGVuCisgICAgICAgIGFza2luZyBpdCB0byB1cGRhdGUgY29va2llIHBh
cnRpdGlvbmluZyBhbmQgYmxvY2tpbmcuIFRoZSBuZXR3b3JrCisgICAgICAgIHByb2Nlc3MgdGhl
biB0ZWxscyB0aGUgVUkgcHJvY2VzcyB3aGVuIGl0J3MgZG9uZSwgYXQgd2hpY2ggcG9pbnQgdGhl
CisgICAgICAgIGNhbGxiYWNrIGlzIGNhbGxlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBt
ZWFudCB0byBhZGRyZXNzIGxheW91dCB0ZXN0IGZsYWtpbmVzcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpu
ZXh0VXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNDb250ZXh0SWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OnVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzRG9uZSk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTgtMDYtMjIgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlY2FsYyBzdHlsZXMgZXZlcnkgdGltZSBk
ZWZhdWx0QXBwZWFyYW5jZSBjaGFuZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxODRkMTI3YzM4YmY2NmFmNWU2YzAxZGY4MDAz
OWIyMjA2ZjllNDU4Li5iYTJkZWE1ZjcxYjRkZWU5MjZmY2UyYjZkZTVkN2FkYmI2NGZkODIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtNDAzLDEwICs0MDMsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxl
UGF0aChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJgogfQogCiAjaWYgSEFW
RShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZp
cnN0KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCwgdWludDY0X3QgY29udGV4dElkKQogewog
ICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWlu
c1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBzaG91bGRDbGVhckZpcnN0KTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpVcGRhdGVQYXJ0aXRpb25PckJs
b2NrQ29va2llc0RvbmUoY29udGV4dElkKSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmUz
NDkzMTliMWE0ZGI4ZDM0ODg0YmJiNTE5MjQ4NWEwNTA1MjI4NC4uNGNmNmU0NWZkNzM5ZGRlMDZh
YTQ2NzVkYjQ1MDY5Nzg3MWU2NWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2
b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7
CisgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlv
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFy
Rmlyc3QsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggODM3NmJiYzliNDhhNmI0MTM4YzQxNGFiZGQ5YTZjYzhmOTRlZWFkYi4uYmJh
MWRmN2YzMDM4N2U3MmY5MDBhZTE2MDBiNTBiZTg2NDRiMjhhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC04MSw3ICs4MSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBQcmVjb25uZWN0VG8oV2ViQ29yZTo6VVJMIHVybCwgZW51bSBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICBVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZl
Y3RvcjxTdHJpbmc+IGRvbWFpbnNUb1BhcnRpdGlvbiwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1Rv
QmxvY2ssIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywg
Ym9vbCBzaG91bGRDbGVhckZpcnN0KQorICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRp
dGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmlu
Zz4gZG9tYWluc1RvUGFydGl0aW9uLCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jaywgVmVj
dG9yPFN0cmluZz4gZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3Vs
ZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBIYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0
cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBHcmFudFN0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4s
IFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGU3YjJlZWM0MTU2MmQyOWZmMGIyNzlhOTRhYmVhNjQ2ZTg0YTNiMjMuLjA2ZWZkMzg5MzQwNmE2
OTc0NjAwYWQ4OTljMWRlZDBhMTA3YzViYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDMxLDYgKzQz
MSwzMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVySQogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKK3N0YXRpYyB1aW50NjRfdCBuZXh0VXBkYXRlUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNDb250ZXh0SWQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBu
ZXh0Q29udGV4dElkID0gMDsKKyAgICByZXR1cm4gKytuZXh0Q29udGV4dElkOworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKKyAg
ICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRv
IGNvbnRleHRJZCA9IG5leHRVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0NvbnRleHRJZCgp
OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0Nh
bGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyhzZXNzaW9uSUQsIGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ss
IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBT
aG91bGRDbGVhckZpcnN0OjpZZXMsIGNvbnRleHRJZCksIDApOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzRG9uZSh1aW50NjRfdCBj
b250ZXh0SWQpCit7CisgICAgYXV0byBjYWxsYmFjayA9IG1fdXBkYXRlUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCk7CisgICAgY2FsbGJhY2soKTsKK30K
Kwogc3RhdGljIHVpbnQ2NF90IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpCiB7
CiAgICAgc3RhdGljIHVpbnQ2NF90IG5leHRDb250ZXh0SWQgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2
Y2M1MjFjNmFjMWQ0YzRjZjBhYTQ4NzI3NDk4MTA3YzIwYTNhNDZmLi43ZTAyZDBmNWQzOWQ0YzAw
NGJlZTA0YTAxZjI0OTVlMTI5NWJmNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNzgsNiArNzgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Y29va2llSG9zdE5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyAgICB2b2lk
IHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIGdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwogICAgIHZvaWQgZ3JhbnRTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjayk7CkBAIC0xNDQsNiArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVySUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7
CiAjZW5kaWYKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyAgICB2
b2lkIHVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzRG9uZSh1aW50NjRfdCBjb250ZXh0SWQp
OwogICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoYm9vbCB3YXNHcmFudGVkLCB1
aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1
bHQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpOwogI2VuZGlm
CkBAIC0xNzYsNyArMTc4LDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29r
aWVzQ291bnRlciB7IDAgfTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4+IG1fd3JpdGVCbG9iVG9GaWxlUGF0aENhbGxiYWNrTWFw
OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
IHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3VwZGF0ZVBhcnRp
dGlvbk9yQmxvY2tDb29raWVzQ2FsbGJhY2tNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVz
cG9uc2VDYWxsYmFja01hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+PiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzQ2FsbGJhY2tNYXA7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDk5NmE0YTU5NWQyOTM1MzcyODdkMmUwYTY3MjIy
OTgzZjBjMmI1MDUuLjk1M2I3YzNkMjQwZmNkODA0NmYzMDc4MTVlNWUyMzk0ZjdlZmNjZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ3LDYgKzQ3LDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRfdCBsb2FkZXJJRCwgdWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlv
blNwYWNlKQogI2VuZGlmCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcp
CisgICAgVXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNEb25lKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKICAgICBTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2
NF90IGNvbnRleHRJZCkKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8
U3RyaW5nPiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCmluZGV4IGZiZDViYjU1YWI1NDhjM2Y2MmQ4ODAxYzAxN2RlOTJlZDUzYjRhNTcuLmE0
MzY0M2Y0ZGZmYTYzYTE2NzJmNmE2MGYzZDMzZWI5MjBhM2I2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcApAQCAtMTMwMiwxMCArMTMwMiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoQ29tcGxldGlvbkhhbmRsZXI8CiAjZW5k
aWYKIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
c1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1f
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKGRv
bWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwotICAgICAgICBtX3N0YXRpc3RpY3NR
dWV1ZS0+ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIH0p
OworICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29r
aWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9O
ZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFJF
TEVBU0VfTE9HX0lORk9fSUYobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWcsICJEb25lIHVwZGF0aW5nIGNvb2tpZSBwYXJ0aXRpb25pbmcgYW5kIGJsb2Nr
aW5nLiIpOwogI2VuZGlmCkBAIC0xMzIwLDEwICsxMzE3LDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29u
c3QgVmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3RoaXMsIHNob3VsZENsZWFyRmlyc3QsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZG9tYWluc1RvUGFydGl0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb1Bh
cnRpdGlvbiksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2Nr
KSwgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRv
bWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayldICgpIHsKLSAgICAgICAgbV91cGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIoZG9tYWluc1Rv
UGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBzaG91bGRDbGVhckZpcnN0KTsKLSAgICB9KTsKLQogICAgIGlmIChzaG91bGRDbGVhckZp
cnN0ID09IFNob3VsZENsZWFyRmlyc3Q6OlllcykKICAgICAgICAgcmVzZXRDb29raWVQYXJ0aXRp
b25pbmdTdGF0ZSgpOwogICAgIGVsc2UgewpAQCAtMTM0MCw3ICsxMzMzLDkgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRv
bWFpbnMoY29uc3QgVmUKICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb0Jsb2NrKQog
ICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGRvbWFpbiku
aXNNYXJrZWRGb3JDb29raWVCbG9ja2luZyA9IHRydWU7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJz
dCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBj
cm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9z
c1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0
YWJsZSB7CisgICAgICAgIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNIYW5kbGVyKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFp
bnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggZWU2OGU4NTBkODMzNTdhNThmNDExOTBk
MmM3MTVhYWVkYTY4NmJhYi4uMWU0MjFlZmRmMjVlYjAzODBjYzQ3NjM4MjVhNDAzZjgxMWUwOGUw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTY4LDEyICs2OCwxMiBAQCBlbnVtIGNsYXNzIFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMgewogCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUg
ZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgotICAgIHVzaW5nIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2ssIFNob3VsZENsZWFyRmlyc3QpPjsKKyAgICB1c2luZyBVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVp
dGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpPjsKICAgICB1c2luZyBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKT47CiAg
ICAgdXNpbmcgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spPjsKICAgICB1c2lu
ZyBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZCgpPjsK
ICAgICB1c2luZyBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciA9IFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT47Ci0gICAgc3RhdGljIFJlZjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIHRlc3Rp
bmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+
JiwgU2hvdWxkQ2xlYXJGaXJzdCkgeyB9LCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVy
JiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wp
PiYmKSB7IH0sIEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NI
YW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4sIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgUmVt
b3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXImJiByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxl
ciA9IFtdKCkgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFp
bnNIYW5kbGVyID0gW10gKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mKSB7IH0pCisgICAgc3Rh
dGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29uc3Qg
V1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBX
VEY6OlZlY3RvcjxTdHJpbmc+JiwgU2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNhbGxiYWNrID0gW10oKSB7IH0pIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgZ3JhbnRTdG9y
YWdlQWNjZXNzSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
KSB7IH0sIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgcmVtb3ZlQWxsU3RvcmFnZUFj
Y2Vzc0hhbmRsZXIgPSBbXSgpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiBy
ZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JikgeyB9
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVz
dGluZ0NhbGxiYWNrKSwgaXNFcGhlbWVyYWwsIFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWlu
c1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKSwgV1RGTW92ZShoYXNTdG9yYWdlQWNj
ZXNzRm9yRnJhbWVIYW5kbGVyKSwgV1RGTW92ZShncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKSwg
V1RGTW92ZShyZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9t
YWluc0hhbmRsZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBjM2YzMTgyZGYwNWM4
ZjFjNTU4MDMxYjVjNWZlYTRjMDFjZDNjZGM1Li5lZDM3ZDQyOTQ4Y2IxYjUyNTVkODY5MjFlMmQz
OTk2M2NhNzFkNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTIwNSwxMCArMTIwNSwxMCBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWlucyhPcHRpb25TZXQ8V2VicwogfQogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxk
Q2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp1cGRh
dGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VXBkYXRlUHJldmFsZW50
RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMobV9zZXNzaW9uSUQsIGRvbWFpbnNUb1Bh
cnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9j
aywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZZXMpKTsKKyAgICAgICAg
cHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCktPnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1Bh
cnRpdGlvbk9yQmxvY2tDb29raWVzKG1fc2Vzc2lvbklELCBkb21haW5zVG9QYXJ0aXRpb24sIGRv
bWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIHNob3VsZENs
ZWFyRmlyc3QsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKQpAQCAtMTQ3MiwxNSArMTQ3MiwxNSBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5n
Q2FsbGJhY2soRnVuY3RpbwogICAgIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFS
VElUSU9OSU5HKQotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9zZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpIHsKKyAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSht
X2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShj
YWxsYmFjayksIG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91
bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGRvbWFpbnNUb1BhcnRp
dGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywg
c2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
XSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spIHsKKyAgICAgICAgICAg
IHdlYWtUaGlzLT51cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
cyhkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBTdHJp
bmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
IGhhc0FjY2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgaWYgKHdlYWtUaGlz
KQotICAgICAgICAgICAgd2Vha1RoaXMtPmhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIo
cmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92
ZShjYWxsYmFjaykpOwotICAgIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFp
biwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjaykgewor
ICAgICAgICAgICAgd2Vha1RoaXMtPmhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIocmVz
b3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0
eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgewogICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhp
cy0+Z3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURv
bWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgICAgICB3
ZWFrVGhpcy0+Z3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQ
YXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoKSB7CiAgICAgICAgIGlm
ICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtUaGlzLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNz
SGFuZGxlcigpOwpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW8K
ICAgICAgICAgICAgIHdlYWtUaGlzLT5yZW1vdmVQcmV2YWxlbnREb21haW5zKGRvbWFpbnNUb1Jl
bW92ZSk7CiAgICAgfSk7CiAjZWxzZQotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9zZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3Nl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICNlbmRpZgogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNz
UG9vbCA6IHByb2Nlc3NQb29scyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBm
YWxzZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOTc4YzNkOTQ1YzVjMDgzY2JjZmNmNjdjODQyYWIyNjM5
ZDAwNzFhYS4uMWE1NmEwMTg2OTg1NTFlZWMzYTYwOGQ0NmM0NjgyMmNlNDY1MmI5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaApAQCAtMTMwLDEzICsxMzAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0
YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucywgRnVuY3Rpb248dm9pZChIYXNoU2V0
PFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdPUktf
U1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFy
dGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFy
Rmlyc3QpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBT
dHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ss
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ss
IFNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4m
Jik7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRl
ZCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25z
dCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4s
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKCk7CiAgICAgdm9pZCByZW1vdmVQcmV2YWxlbnREb21haW5z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChi
b29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BG
cmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRF
bmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsK
ICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmlu
ZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29s
IHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBmYjQ2Y2VlNzYyNzE2NzljNTA2ODgyMjQyYmJjOWRiMWVlMjk3YzBkLi5iNDNi
MzE2YzEwMWQ2YzUzNjBkMTljNGE2YjI2MjIwOGQ3ZGQ2MzY2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTgtMDYtMjIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBNYWtlIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucygpIHdhaXQgZm9y
IHRoZSBuZXR3b3JrIHByb2Nlc3MgYmVmb3JlIGNhbGxpbmcgaXRzIGNhbGxiYWNrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5MDMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQxMzUwMTgyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3Jh
Z2UtYWNjZXNzLXVuZGVyLW9wZW5lci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sOgor
ICAgICAgICAgICAgTW92ZWQgdGhlIGNvZGUgYmxvY2sgdG8gdGhlIHBhZ2UncyBib2R5IGluc3Rl
YWQgb2YgaXRzIGhlYWQuCisgICAgICAgICAgICBBZGRlZCBhbiBpbml0aWFsIGNvbnNvbGUgbG9n
IHN0YXRlbWVudC4gVGhlIHJlYXNvbiBmb3IgdGhlc2UKKyAgICAgICAgICAgIGNoYW5nZXMgaXMg
dGhhdCB3ZSdyZSBzZWVpbmcgZmxha3kgdGltZW91dHMgd2l0aCBubyBvdXRwdXQuCisKIDIwMTgt
MDYtMjIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjIzMDk1MCk6IFtHVEtdIFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKCk6IFdlYktpdFdlYlByb2Nlc3Mga2lsbGVkIGJ5IFNJ
R1NFR1YgKEFTU0VSVElPTiBGQUlMRUQ6IGl0ICE9IG1fdGlsZXMuZW5kKCkpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nl
c3MtdW5kZXItb3BlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhwZWN0ZWQudHh0
CmluZGV4IDUzMDg4MDQxNDIxMWJmYjg3ZTMxNmRmNWIxNWU0MjFlYTIxOGQ3NWYuLmJjNWE4MDk4
NTE1Mzg3MDcxZGNlMWFlYjdjYTVlMjYwNjRlOWFhMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVu
ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhwZWN0ZWQudHh0CkBAIC0xLDcg
KzEsOCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU0OiBSdW5uaW5nIHRlc3QuCi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjc6IEFib3V0IHRvIGNhbGwgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBk
YXRlQ29va2llUGFydGl0aW9uaW5nKCkuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjk6IEFib3V0
IHRvIG9wZW4gdGhlIG5ldyB3aW5kb3cuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNDM6IEFib3V0
IHRvIG9wZW4gdGhlIHRoaXJkIHBhcnR5IGlmcmFtZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA4
OiBGaXJzdCBKYXZhU2NyaXB0IHN0YXRlbWVudC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1Nzog
UnVubmluZyB0ZXN0LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDczOiBBYm91dCB0byBjYWxsIHRl
c3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpLgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDc1OiBBYm91dCB0byBvcGVuIHRoZSBuZXcgd2luZG93LgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDQ1OiBBYm91dCB0byBvcGVuIHRoZSB0aGlyZCBwYXJ0eSBpZnJhbWUuCiBU
ZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIHdpbmRvdyBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3
aXRoIG5vbi1yZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBnZXRzIGltbWVkaWF0ZSBzdG9yYWdlIGFj
Y2VzcyB1bmRlciBpdHMgb3BlbmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFn
ZS1hY2Nlc3MtdW5kZXItb3BlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLmh0bWwKaW5kZXggMWNi
ZDFjNzdiOWIzMWEyZjljZjQ3OTg0Mzk2YWM2Yzc3MmMwMDUxMy4uYzRhM2U0NzVhY2VjM2ExYTA0
ZTMwYjVlZmI2YmMxZWUyZGZiODdlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFj
Y2Vzcy11bmRlci1vcGVuZXIuaHRtbApAQCAtMiw3NiArMiw4MCBAQAogPGh0bWw+CiA8aGVhZD4K
ICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgY3Jvc3Mt
b3JpZ2luIHdpbmRvdyBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3aXRoIG5vbi1yZWNlbnQgdXNl
ciBpbnRlcmFjdGlvbiBnZXRzIGltbWVkaWF0ZSBzdG9yYWdlIGFjY2VzcyB1bmRlciBpdHMgb3Bl
bmVyLiIpOwotICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuKCkiPgorPHNjcmlwdD4KKyAgICBjb25zb2xlLmxvZygiRmlyc3QgSmF2YVNjcmlw
dCBzdGF0ZW1lbnQuIik7CiAKLSAgICAgICAgZnVuY3Rpb24gc2V0RW5hYmxlRmVhdHVyZShlbmFi
bGUpIHsKLSAgICAgICAgICAgIGlmICghZW5hYmxlKQotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKLSAgICAgICAgICAgIGludGVy
bmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGUpOwotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUp
OwotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlQWNjZXNzQVBJRW5hYmxlZChlbmFi
bGUpOwotICAgICAgICB9CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBjcm9zcy1vcmln
aW4gd2luZG93IGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpdGggbm9uLXJlY2VudCB1c2VyIGlu
dGVyYWN0aW9uIGdldHMgaW1tZWRpYXRlIHN0b3JhZ2UgYWNjZXNzIHVuZGVyIGl0cyBvcGVuZXIu
Iik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworICAgIGZ1bmN0aW9u
IHNldEVuYWJsZUZlYXR1cmUoZW5hYmxlKSB7CisgICAgICAgIGlmICghZW5hYmxlKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOworICAg
ICAgICBpbnRlcm5hbHMuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChl
bmFibGUpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKGVu
YWJsZSk7CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotICAgICAgICB9CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KIAotICAg
ICAgICBmdW5jdGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgewotICAgICAgICAg
ICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAg
ICAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7Ci0gICAgICAgICAgICBpZiAob25Mb2FkSGFuZGxl
cikgewotICAgICAgICAgICAgICAgIGVsZW1lbnQub25sb2FkID0gb25Mb2FkSGFuZGxlcjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgZnVuY3Rpb24gb3BlbklmcmFtZSh1cmwsIG9uTG9hZEhhbmRsZXIpIHsKKyAgICAg
ICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAg
ICAgICBlbGVtZW50LnNyYyA9IHVybDsKKyAgICAgICAgaWYgKG9uTG9hZEhhbmRsZXIpIHsKKyAg
ICAgICAgICAgIGVsZW1lbnQub25sb2FkID0gb25Mb2FkSGFuZGxlcjsKICAgICAgICAgfQorICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KIAotICAgICAg
ICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgewotICAgICAgICAgICAgaWYgKGV2ZW50
Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQotICAgICAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsK
LSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVk
IGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsK
KyAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICBpZiAoZXZlbnQu
b3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgaWYgKGV2
ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBl
Y3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOwogCi0gICAgICAgICAgICBuZXdXaW4uY2xv
c2UoKTsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBvcGVuIHRoZSB0aGlyZCBw
YXJ0eSBpZnJhbWUuIik7Ci0gICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJs
ICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgcmVjZWl2ZSBmaXJzdC1w
YXJ0eSBjb29raWUuIiwgZmluaXNoVGVzdCk7Ci0gICAgICAgIH0KKyAgICAgICAgbmV3V2luLmNs
b3NlKCk7CisgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBvcGVuIHRoZSB0aGlyZCBwYXJ0
eSBpZnJhbWUuIik7CisgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQ
YXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNob3VsZCByZWNlaXZlIGZpcnN0LXBhcnR5IGNv
b2tpZS4iLCBmaW5pc2hUZXN0KTsKKyAgICB9CiAKLSAgICAgICAgY29uc3QgdGhpcmRQYXJ0eU9y
aWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOwotICAgICAgICBjb25zdCByZXNvdXJjZVBh
dGggPSAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzIjsKLSAgICAgICAgY29uc3QgdGhpcmRQYXJ0
eUJhc2VVcmwgPSB0aGlyZFBhcnR5T3JpZ2luICsgcmVzb3VyY2VQYXRoOwotICAgICAgICBjb25z
dCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2llIjsKLSAgICAgICAgY29u
c3Qgc3ViUGF0aFRvR2V0Q29va2llcyA9ICIvZ2V0LWNvb2tpZXMucGhwP25hbWUxPSIgKyBmaXJz
dFBhcnR5Q29va2llTmFtZTsKLSAgICAgICAgdmFyIG5ld1dpbjsKLSAgICAgICAgZnVuY3Rpb24g
cnVuKCkgewotICAgICAgICAgICAgY29uc29sZS5sb2coIlJ1bm5pbmcgdGVzdC4iKTsKLSAgICAg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dENhbk9wZW5XaW5kb3dzKCk7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHJlc291cmNlUGF0aCA9ICIvc3RvcmFnZUFjY2Vz
cy9yZXNvdXJjZXMiOworICAgIGNvbnN0IHRoaXJkUGFydHlCYXNlVXJsID0gdGhpcmRQYXJ0eU9y
aWdpbiArIHJlc291cmNlUGF0aDsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJm
aXJzdFBhcnR5Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9HZXRDb29raWVzID0gIi9nZXQt
Y29va2llcy5waHA/bmFtZTE9IiArIGZpcnN0UGFydHlDb29raWVOYW1lOworICAgIHZhciBuZXdX
aW47CiAKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKHRoaXJkUGFydHlPcmlnaW4sIHRydWUpOwotICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRoaXJkUGFydHlPcmlnaW4pKQotICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCBy
ZXNvdXJjZS4iKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZE5v
blJlY2VudFVzZXJJbnRlcmFjdGlvbih0aGlyZFBhcnR5T3JpZ2luLCB0cnVlKTsKLSAgICAgICAg
ICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odGhp
cmRQYXJ0eU9yaWdpbikpCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90
IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7Ci0gICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRD
bG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgZnVuY3Rpb24gcnVu
KCkgeworICAgICAgICBjb25zb2xlLmxvZygiUnVubmluZyB0ZXN0LiIpOworICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKHRydWUpOwogCi0gICAgICAgICAgICBjb25zb2xlLmxvZygiQWJvdXQgdG8g
Y2FsbCB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKS4iKTsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
ZyhmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkFib3V0IHRvIG9w
ZW4gdGhlIG5ldyB3aW5kb3cuIik7Ci0gICAgICAgICAgICAgICAgbmV3V2luID0gd2luZG93Lm9w
ZW4odGhpcmRQYXJ0eU9yaWdpbiArICIvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvc2V0LWNvb2tp
ZS1hbmQtcmVwb3J0LWJhY2suaHRtbCIsICJ0ZXN0V2luZG93Iik7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW4oKSI+
CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3Nh
Z2UsIGZhbHNlKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodGhpcmRQ
YXJ0eU9yaWdpbiwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5T3JpZ2luKSkKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkTm9uUmVjZW50VXNlckludGVyYWN0aW9u
KHRoaXJkUGFydHlPcmlnaW4sIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmlnaW4pKQorICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rp
b24uIik7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUp
OworCisgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBjYWxsIHRlc3RSdW5uZXIuc3RhdGlz
dGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpLiIpOworICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgY29uc29sZS5sb2coIkFib3V0IHRvIG9wZW4gdGhlIG5ldyB3aW5kb3cuIik7CisgICAgICAg
ICAgICBuZXdXaW4gPSB3aW5kb3cub3Blbih0aGlyZFBhcnR5T3JpZ2luICsgIi9zdG9yYWdlQWNj
ZXNzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1yZXBvcnQtYmFjay5odG1sIiwgInRlc3RXaW5k
b3ciKTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343389</attachid>
            <date>2018-06-22 16:13:17 -0700</date>
            <delta_ts>2018-06-25 11:29:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186903-20180622161316.patch</filename>
            <type>text/plain</type>
            <size>35313</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0Nzk3MDY1MzVkZWU0ZjA2
YmJiMjdkZjA1YzNmOTUyNmJkN2Q3NTcuLmI4YWI5NGIwZTU0ODk5ZmFiNzc5NjBhMDRhYjY4ZTk3
YWEzMTYwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMDYtMjIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBNYWtlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWlucygpIHdhaXQgZm9yIHRoZSBuZXR3b3JrIHByb2Nlc3MgYmVm
b3JlIGNhbGxpbmcgaXRzIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMzUwMTgy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggc3RvcmVzIHRoZSBjYWxsYmFjayBzZW50IHRvCisgICAgICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucygpLAor
ICAgICAgICBzZXRzIHVwIGEgY29udGV4dCBJRCwgYW5kIHNlbmRzIHRoYXQgSUQgdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcyB3aGVuCisgICAgICAgIGFza2luZyBpdCB0byB1cGRhdGUgY29va2llIHBh
cnRpdGlvbmluZyBhbmQgYmxvY2tpbmcuIFRoZSBuZXR3b3JrCisgICAgICAgIHByb2Nlc3MgdGhl
biB0ZWxscyB0aGUgVUkgcHJvY2VzcyB3aGVuIGl0J3MgZG9uZSwgYXQgd2hpY2ggcG9pbnQgdGhl
CisgICAgICAgIGNhbGxiYWNrIGlzIGNhbGxlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBt
ZWFudCB0byBhZGRyZXNzIGxheW91dCB0ZXN0IGZsYWtpbmVzcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpu
ZXh0VXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNDb250ZXh0SWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OnVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzRG9uZSk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTgtMDYtMjIgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlY2FsYyBzdHlsZXMgZXZlcnkgdGltZSBk
ZWZhdWx0QXBwZWFyYW5jZSBjaGFuZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxODRkMTI3YzM4YmY2NmFmNWU2YzAxZGY4MDAz
OWIyMjA2ZjllNDU4Li5iYTJkZWE1ZjcxYjRkZWU5MjZmY2UyYjZkZTVkN2FkYmI2NGZkODIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtNDAzLDEwICs0MDMsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxl
UGF0aChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJgogfQogCiAjaWYgSEFW
RShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZp
cnN0KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCwgdWludDY0X3QgY29udGV4dElkKQogewog
ICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWlu
c1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBzaG91bGRDbGVhckZpcnN0KTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpVcGRhdGVQYXJ0aXRpb25PckJs
b2NrQ29va2llc0RvbmUoY29udGV4dElkKSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmUz
NDkzMTliMWE0ZGI4ZDM0ODg0YmJiNTE5MjQ4NWEwNTA1MjI4NC4uNGNmNmU0NWZkNzM5ZGRlMDZh
YTQ2NzVkYjQ1MDY5Nzg3MWU2NWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2
b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7
CisgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlv
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFy
Rmlyc3QsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggODM3NmJiYzliNDhhNmI0MTM4YzQxNGFiZGQ5YTZjYzhmOTRlZWFkYi4uYmJh
MWRmN2YzMDM4N2U3MmY5MDBhZTE2MDBiNTBiZTg2NDRiMjhhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC04MSw3ICs4MSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBQcmVjb25uZWN0VG8oV2ViQ29yZTo6VVJMIHVybCwgZW51bSBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICBVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZl
Y3RvcjxTdHJpbmc+IGRvbWFpbnNUb1BhcnRpdGlvbiwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1Rv
QmxvY2ssIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywg
Ym9vbCBzaG91bGRDbGVhckZpcnN0KQorICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRp
dGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmlu
Zz4gZG9tYWluc1RvUGFydGl0aW9uLCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jaywgVmVj
dG9yPFN0cmluZz4gZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3Vs
ZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBIYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0
cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBHcmFudFN0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4s
IFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGU3YjJlZWM0MTU2MmQyOWZmMGIyNzlhOTRhYmVhNjQ2ZTg0YTNiMjMuLjA2ZWZkMzg5MzQwNmE2
OTc0NjAwYWQ4OTljMWRlZDBhMTA3YzViYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDMxLDYgKzQz
MSwzMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVySQogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKK3N0YXRpYyB1aW50NjRfdCBuZXh0VXBkYXRlUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNDb250ZXh0SWQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBu
ZXh0Q29udGV4dElkID0gMDsKKyAgICByZXR1cm4gKytuZXh0Q29udGV4dElkOworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKKyAg
ICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRv
IGNvbnRleHRJZCA9IG5leHRVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0NvbnRleHRJZCgp
OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0Nh
bGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyhzZXNzaW9uSUQsIGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ss
IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBT
aG91bGRDbGVhckZpcnN0OjpZZXMsIGNvbnRleHRJZCksIDApOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzRG9uZSh1aW50NjRfdCBj
b250ZXh0SWQpCit7CisgICAgYXV0byBjYWxsYmFjayA9IG1fdXBkYXRlUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCk7CisgICAgY2FsbGJhY2soKTsKK30K
Kwogc3RhdGljIHVpbnQ2NF90IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpCiB7
CiAgICAgc3RhdGljIHVpbnQ2NF90IG5leHRDb250ZXh0SWQgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2
Y2M1MjFjNmFjMWQ0YzRjZjBhYTQ4NzI3NDk4MTA3YzIwYTNhNDZmLi43ZTAyZDBmNWQzOWQ0YzAw
NGJlZTA0YTAxZjI0OTVlMTI5NWJmNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNzgsNiArNzgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Y29va2llSG9zdE5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyAgICB2b2lk
IHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIGdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwogICAgIHZvaWQgZ3JhbnRTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjayk7CkBAIC0xNDQsNiArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVySUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7
CiAjZW5kaWYKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyAgICB2
b2lkIHVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzRG9uZSh1aW50NjRfdCBjb250ZXh0SWQp
OwogICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoYm9vbCB3YXNHcmFudGVkLCB1
aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1
bHQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpOwogI2VuZGlm
CkBAIC0xNzYsNyArMTc4LDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29r
aWVzQ291bnRlciB7IDAgfTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4+IG1fd3JpdGVCbG9iVG9GaWxlUGF0aENhbGxiYWNrTWFw
OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
IHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3VwZGF0ZVBhcnRp
dGlvbk9yQmxvY2tDb29raWVzQ2FsbGJhY2tNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVz
cG9uc2VDYWxsYmFja01hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+PiBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzQ2FsbGJhY2tNYXA7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDk5NmE0YTU5NWQyOTM1MzcyODdkMmUwYTY3MjIy
OTgzZjBjMmI1MDUuLjk1M2I3YzNkMjQwZmNkODA0NmYzMDc4MTVlNWUyMzk0ZjdlZmNjZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ3LDYgKzQ3LDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRfdCBsb2FkZXJJRCwgdWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlv
blNwYWNlKQogI2VuZGlmCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcp
CisgICAgVXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNEb25lKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKICAgICBTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2
NF90IGNvbnRleHRJZCkKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8
U3RyaW5nPiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCmluZGV4IGZiZDViYjU1YWI1NDhjM2Y2MmQ4ODAxYzAxN2RlOTJlZDUzYjRhNTcuLmE0
MzY0M2Y0ZGZmYTYzYTE2NzJmNmE2MGYzZDMzZWI5MjBhM2I2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcApAQCAtMTMwMiwxMCArMTMwMiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoQ29tcGxldGlvbkhhbmRsZXI8CiAjZW5k
aWYKIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
c1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1f
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKGRv
bWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwotICAgICAgICBtX3N0YXRpc3RpY3NR
dWV1ZS0+ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIH0p
OworICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29r
aWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9O
ZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFJF
TEVBU0VfTE9HX0lORk9fSUYobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWcsICJEb25lIHVwZGF0aW5nIGNvb2tpZSBwYXJ0aXRpb25pbmcgYW5kIGJsb2Nr
aW5nLiIpOwogI2VuZGlmCkBAIC0xMzIwLDEwICsxMzE3LDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29u
c3QgVmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3RoaXMsIHNob3VsZENsZWFyRmlyc3QsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZG9tYWluc1RvUGFydGl0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb1Bh
cnRpdGlvbiksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2Nr
KSwgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRv
bWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayldICgpIHsKLSAgICAgICAgbV91cGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIoZG9tYWluc1Rv
UGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBzaG91bGRDbGVhckZpcnN0KTsKLSAgICB9KTsKLQogICAgIGlmIChzaG91bGRDbGVhckZp
cnN0ID09IFNob3VsZENsZWFyRmlyc3Q6OlllcykKICAgICAgICAgcmVzZXRDb29raWVQYXJ0aXRp
b25pbmdTdGF0ZSgpOwogICAgIGVsc2UgewpAQCAtMTM0MCw3ICsxMzMzLDkgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRv
bWFpbnMoY29uc3QgVmUKICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb0Jsb2NrKQog
ICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGRvbWFpbiku
aXNNYXJrZWRGb3JDb29raWVCbG9ja2luZyA9IHRydWU7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJz
dCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBj
cm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9z
c1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0
YWJsZSB7CisgICAgICAgIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNIYW5kbGVyKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFp
bnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggZWU2OGU4NTBkODMzNTdhNThmNDExOTBk
MmM3MTVhYWVkYTY4NmJhYi4uMWU0MjFlZmRmMjVlYjAzODBjYzQ3NjM4MjVhNDAzZjgxMWUwOGUw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTY4LDEyICs2OCwxMiBAQCBlbnVtIGNsYXNzIFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMgewogCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUg
ZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgotICAgIHVzaW5nIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2ssIFNob3VsZENsZWFyRmlyc3QpPjsKKyAgICB1c2luZyBVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVp
dGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpPjsKICAgICB1c2luZyBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKT47CiAg
ICAgdXNpbmcgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spPjsKICAgICB1c2lu
ZyBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZCgpPjsK
ICAgICB1c2luZyBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciA9IFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT47Ci0gICAgc3RhdGljIFJlZjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIHRlc3Rp
bmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+
JiwgU2hvdWxkQ2xlYXJGaXJzdCkgeyB9LCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVy
JiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wp
PiYmKSB7IH0sIEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NI
YW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4sIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgUmVt
b3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXImJiByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxl
ciA9IFtdKCkgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFp
bnNIYW5kbGVyID0gW10gKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mKSB7IH0pCisgICAgc3Rh
dGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29uc3Qg
V1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBX
VEY6OlZlY3RvcjxTdHJpbmc+JiwgU2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNhbGxiYWNrID0gW10oKSB7IH0pIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgZ3JhbnRTdG9y
YWdlQWNjZXNzSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
KSB7IH0sIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgcmVtb3ZlQWxsU3RvcmFnZUFj
Y2Vzc0hhbmRsZXIgPSBbXSgpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiBy
ZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JikgeyB9
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVz
dGluZ0NhbGxiYWNrKSwgaXNFcGhlbWVyYWwsIFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWlu
c1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKSwgV1RGTW92ZShoYXNTdG9yYWdlQWNj
ZXNzRm9yRnJhbWVIYW5kbGVyKSwgV1RGTW92ZShncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKSwg
V1RGTW92ZShyZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9t
YWluc0hhbmRsZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBjM2YzMTgyZGYwNWM4
ZjFjNTU4MDMxYjVjNWZlYTRjMDFjZDNjZGM1Li45MDZhOGJhZGU4MzI5MmVhY2I2NTgyNWM4YjMx
YTFmYmE2OTdkNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTIwNSwxMCArMTIwNSwxMCBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWlucyhPcHRpb25TZXQ8V2VicwogfQogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxk
Q2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp1cGRh
dGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VXBkYXRlUHJldmFsZW50
RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMobV9zZXNzaW9uSUQsIGRvbWFpbnNUb1Bh
cnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9j
aywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZZXMpKTsKKyAgICAgICAg
cHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCktPnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1Bh
cnRpdGlvbk9yQmxvY2tDb29raWVzKG1fc2Vzc2lvbklELCBkb21haW5zVG9QYXJ0aXRpb24sIGRv
bWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIHNob3VsZENs
ZWFyRmlyc3QsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKQpAQCAtMTQ3MiwxNSArMTQ3MiwxNSBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5n
Q2FsbGJhY2soRnVuY3RpbwogICAgIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFS
VElUSU9OSU5HKQotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9zZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpIHsKKyAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSht
X2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShj
YWxsYmFjayksIG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91
bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGRvbWFpbnNUb1BhcnRp
dGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywg
c2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
XSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spIHsKKyAgICAgICAgICAg
IHdlYWtUaGlzLT51cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
cyhkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBTdHJp
bmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
IGhhc0FjY2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgaWYgKHdlYWtUaGlz
KQotICAgICAgICAgICAgd2Vha1RoaXMtPmhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIo
cmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92
ZShjYWxsYmFjaykpOwotICAgIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFp
biwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjaykgewor
ICAgICAgICAgICAgd2Vha1RoaXMtPmhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIocmVz
b3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0
eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgewogICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhp
cy0+Z3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURv
bWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgICAgICB3
ZWFrVGhpcy0+Z3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQ
YXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoKSB7CiAgICAgICAgIGlm
ICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtUaGlzLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNz
SGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDk3OGMzZDk0NWM1YzA4M2NiY2ZjZjY3Yzg0MmFi
MjYzOWQwMDcxYWEuLjFhNTZhMDE4Njk4NTUxZWVjM2E2MDhkNDZjNDY4MjJjZTQ2NTJiOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKQEAgLTEzMCwxMyArMTMwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92
ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMsIEZ1bmN0aW9uPHZvaWQoSGFz
aFNldDxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogI2lmIEhBVkUoQ0ZORVRX
T1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWlu
c1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRD
bGVhckZpcnN0KTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgdXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291
cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vz
cyk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKLSAgICB2b2lkIGdyYW50
U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3Qg
U3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dy
YW50ZWQpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1v
dmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlcigpOwogICAgIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9t
YWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7Ci0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZCAoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcm
JiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJv
bXB0RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4m
Jik7CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBT
dHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Ym9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZmI0NmNlZTc2MjcxNjc5YzUwNjg4MjI0MmJiYzlkYjFlZTI5N2MwZC4u
YjQzYjMxNmMxMDFkNmM1MzYwZDE5YzRhNmIyNjIyMDhkN2RkNjM2NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE4LTA2LTIyICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogTWFrZSBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoKSB3YWl0
IGZvciB0aGUgbmV0d29yayBwcm9jZXNzIGJlZm9yZSBjYWxsaW5nIGl0cyBjYWxsYmFjaworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTAzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80MTM1MDE4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1z
dG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXIuaHRt
bDoKKyAgICAgICAgICAgIE1vdmVkIHRoZSBjb2RlIGJsb2NrIHRvIHRoZSBwYWdlJ3MgYm9keSBp
bnN0ZWFkIG9mIGl0cyBoZWFkLgorICAgICAgICAgICAgQWRkZWQgYW4gaW5pdGlhbCBjb25zb2xl
IGxvZyBzdGF0ZW1lbnQuIFRoZSByZWFzb24gZm9yIHRoZXNlCisgICAgICAgICAgICBjaGFuZ2Vz
IGlzIHRoYXQgd2UncmUgc2VlaW5nIGZsYWt5IHRpbWVvdXRzIHdpdGggbm8gb3V0cHV0LgorCiAy
MDE4LTA2LTIyICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OKHIyMzA5NTApOiBbR1RLXSBXZWJLaXQ6OkNvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcigpOiBXZWJLaXRXZWJQcm9jZXNzIGtpbGxlZCBi
eSBTSUdTRUdWIChBU1NFUlRJT04gRkFJTEVEOiBpdCAhPSBtX3RpbGVzLmVuZCgpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2Ut
YWNjZXNzLXVuZGVyLW9wZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWV4cGVjdGVk
LnR4dAppbmRleCA1MzA4ODA0MTQyMTFiZmI4N2UzMTZkZjViMTVlNDIxZWEyMThkNzVmLi5iYzVh
ODA5ODUxNTM4NzA3MWRjZTFhZWI3Y2E1ZTI2MDY0ZTlhYTMwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXIt
b3BlbmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWV4cGVjdGVkLnR4dApAQCAt
MSw3ICsxLDggQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA1NDogUnVubmluZyB0ZXN0LgotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDY3OiBBYm91dCB0byBjYWxsIHRlc3RSdW5uZXIuc3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY5OiBB
Ym91dCB0byBvcGVuIHRoZSBuZXcgd2luZG93LgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQzOiBB
Ym91dCB0byBvcGVuIHRoZSB0aGlyZCBwYXJ0eSBpZnJhbWUuCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgODogRmlyc3QgSmF2YVNjcmlwdCBzdGF0ZW1lbnQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
NTc6IFJ1bm5pbmcgdGVzdC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3MzogQWJvdXQgdG8gY2Fs
bCB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKS4KK0NPTlNP
TEUgTUVTU0FHRTogbGluZSA3NTogQWJvdXQgdG8gb3BlbiB0aGUgbmV3IHdpbmRvdy4KK0NPTlNP
TEUgTUVTU0FHRTogbGluZSA0NTogQWJvdXQgdG8gb3BlbiB0aGUgdGhpcmQgcGFydHkgaWZyYW1l
LgogVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiB3aW5kb3cgZnJvbSBhIHByZXZhbGVudCBkb21h
aW4gd2l0aCBub24tcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gZ2V0cyBpbW1lZGlhdGUgc3RvcmFn
ZSBhY2Nlc3MgdW5kZXIgaXRzIG9wZW5lci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0
b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sCmluZGV4
IDFjYmQxYzc3YjliMzFhMmY5Y2Y0Nzk4NDM5NmFjNmM3NzJjMDA1MTMuLmM0YTNlNDc1YWNlYzNh
MWEwNGUzMGI1ZWZiNmJjMWVlMmRmYjg3ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXIuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFn
ZS1hY2Nlc3MtdW5kZXItb3BlbmVyLmh0bWwKQEAgLTIsNzYgKzIsODAgQEAKIDxodG1sPgogPGhl
YWQ+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0PgotICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGNy
b3NzLW9yaWdpbiB3aW5kb3cgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2l0aCBub24tcmVjZW50
IHVzZXIgaW50ZXJhY3Rpb24gZ2V0cyBpbW1lZGlhdGUgc3RvcmFnZSBhY2Nlc3MgdW5kZXIgaXRz
IG9wZW5lci4iKTsKLSAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1bigpIj4KKzxzY3JpcHQ+CisgICAgY29uc29sZS5sb2coIkZpcnN0IEphdmFT
Y3JpcHQgc3RhdGVtZW50LiIpOwogCi0gICAgICAgIGZ1bmN0aW9uIHNldEVuYWJsZUZlYXR1cmUo
ZW5hYmxlKSB7Ci0gICAgICAgICAgICBpZiAoIWVuYWJsZSkKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7Ci0gICAgICAgICAgICBp
bnRlcm5hbHMuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlKTsKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoZW5h
YmxlKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQo
ZW5hYmxlKTsKLSAgICAgICAgfQorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgY3Jvc3Mt
b3JpZ2luIHdpbmRvdyBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3aXRoIG5vbi1yZWNlbnQgdXNl
ciBpbnRlcmFjdGlvbiBnZXRzIGltbWVkaWF0ZSBzdG9yYWdlIGFjY2VzcyB1bmRlciBpdHMgb3Bl
bmVyLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKyAgICBmdW5j
dGlvbiBzZXRFbmFibGVGZWF0dXJlKGVuYWJsZSkgeworICAgICAgICBpZiAoIWVuYWJsZSkKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsK
KyAgICAgICAgaW50ZXJuYWxzLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJs
ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJs
ZWQoZW5hYmxlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlQWNjZXNzQVBJRW5hYmxl
ZChlbmFibGUpOworICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAg
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSk7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICAgICAgfQorICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUoZmFsc2UpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CiAK
LSAgICAgICAgZnVuY3Rpb24gb3BlbklmcmFtZSh1cmwsIG9uTG9hZEhhbmRsZXIpIHsKLSAgICAg
ICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsK
LSAgICAgICAgICAgIGVsZW1lbnQuc3JjID0gdXJsOwotICAgICAgICAgICAgaWYgKG9uTG9hZEhh
bmRsZXIpIHsKLSAgICAgICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IG9uTG9hZEhhbmRsZXI7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOworICAgIGZ1bmN0aW9uIG9wZW5JZnJhbWUodXJsLCBvbkxvYWRIYW5kbGVyKSB7Cisg
ICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsK
KyAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7CisgICAgICAgIGlmIChvbkxvYWRIYW5kbGVyKSB7
CisgICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IG9uTG9hZEhhbmRsZXI7CiAgICAgICAgIH0K
KyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CiAKLSAg
ICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKLSAgICAgICAgICAgIGlmIChl
dmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKLSAgICAgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0
YSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNl
aXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdp
bik7CisgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgaWYgKGV2
ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgIGlm
IChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVu
ZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKIAotICAgICAgICAgICAgbmV3V2lu
LmNsb3NlKCk7Ci0gICAgICAgICAgICBjb25zb2xlLmxvZygiQWJvdXQgdG8gb3BlbiB0aGUgdGhp
cmQgcGFydHkgaWZyYW1lLiIpOwotICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5QmFz
ZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hvdWxkIHJlY2VpdmUgZmly
c3QtcGFydHkgY29va2llLiIsIGZpbmlzaFRlc3QpOwotICAgICAgICB9CisgICAgICAgIG5ld1dp
bi5jbG9zZSgpOworICAgICAgICBjb25zb2xlLmxvZygiQWJvdXQgdG8gb3BlbiB0aGUgdGhpcmQg
cGFydHkgaWZyYW1lLiIpOworICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJsICsg
c3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgcmVjZWl2ZSBmaXJzdC1wYXJ0
eSBjb29raWUuIiwgZmluaXNoVGVzdCk7CisgICAgfQogCi0gICAgICAgIGNvbnN0IHRoaXJkUGFy
dHlPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKLSAgICAgICAgY29uc3QgcmVzb3Vy
Y2VQYXRoID0gIi9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcyI7Ci0gICAgICAgIGNvbnN0IHRoaXJk
UGFydHlCYXNlVXJsID0gdGhpcmRQYXJ0eU9yaWdpbiArIHJlc291cmNlUGF0aDsKLSAgICAgICAg
Y29uc3QgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgPSAiZmlyc3RQYXJ0eUNvb2tpZSI7Ci0gICAgICAg
IGNvbnN0IHN1YlBhdGhUb0dldENvb2tpZXMgPSAiL2dldC1jb29raWVzLnBocD9uYW1lMT0iICsg
Zmlyc3RQYXJ0eUNvb2tpZU5hbWU7Ci0gICAgICAgIHZhciBuZXdXaW47Ci0gICAgICAgIGZ1bmN0
aW9uIHJ1bigpIHsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCJSdW5uaW5nIHRlc3QuIik7Ci0g
ICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOwotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIGNvbnN0IHRoaXJkUGFydHlPcmlnaW4gPSAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCByZXNvdXJjZVBhdGggPSAiL3N0b3JhZ2VB
Y2Nlc3MvcmVzb3VyY2VzIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5QmFzZVVybCA9IHRoaXJkUGFy
dHlPcmlnaW4gKyByZXNvdXJjZVBhdGg7CisgICAgY29uc3QgZmlyc3RQYXJ0eUNvb2tpZU5hbWUg
PSAiZmlyc3RQYXJ0eUNvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvR2V0Q29va2llcyA9ICIv
Z2V0LWNvb2tpZXMucGhwP25hbWUxPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZTsKKyAgICB2YXIg
bmV3V2luOwogCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSh0aGlyZFBhcnR5T3JpZ2luLCB0cnVlKTsKLSAgICAgICAgICAgIGlmICghdGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5T3JpZ2luKSkKLSAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxl
bnQgcmVzb3VyY2UuIik7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNI
YWROb25SZWNlbnRVc2VySW50ZXJhY3Rpb24odGhpcmRQYXJ0eU9yaWdpbiwgdHJ1ZSk7Ci0gICAg
ICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9u
KHRoaXJkUGFydHlPcmlnaW4pKQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlk
IG5vdCBnZXQgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOwotICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworICAgIGZ1bmN0aW9u
IHJ1bigpIHsKKyAgICAgICAgY29uc29sZS5sb2coIlJ1bm5pbmcgdGVzdC4iKTsKKyAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKIAotICAgICAgICAgICAgY29uc29sZS5sb2coIkFib3V0
IHRvIGNhbGwgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCku
Iik7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRp
b25pbmcoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0
byBvcGVuIHRoZSBuZXcgd2luZG93LiIpOwotICAgICAgICAgICAgICAgIG5ld1dpbiA9IHdpbmRv
dy5vcGVuKHRoaXJkUGFydHlPcmlnaW4gKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3NldC1j
b29raWUtYW5kLXJlcG9ydC1iYWNrLmh0bWwiLCAidGVzdFdpbmRvdyIpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVu
KCkiPgorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVN
ZXNzYWdlLCBmYWxzZSk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygp
OworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRo
aXJkUGFydHlPcmlnaW4sIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2UodGhpcmRQYXJ0eU9yaWdpbikpCisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZE5vblJlY2VudFVzZXJJbnRlcmFj
dGlvbih0aGlyZFBhcnR5T3JpZ2luLCB0cnVlKTsKKyAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbih0aGlyZFBhcnR5T3JpZ2luKSkKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgbG9nZ2VkIGZvciB1c2VyIGludGVy
YWN0aW9uLiIpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwor
ICAgICAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0
cnVlKTsKKworICAgICAgICBjb25zb2xlLmxvZygiQWJvdXQgdG8gY2FsbCB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKS4iKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBvcGVuIHRoZSBuZXcgd2luZG93LiIpOworICAg
ICAgICAgICAgbmV3V2luID0gd2luZG93Lm9wZW4odGhpcmRQYXJ0eU9yaWdpbiArICIvc3RvcmFn
ZUFjY2Vzcy9yZXNvdXJjZXMvc2V0LWNvb2tpZS1hbmQtcmVwb3J0LWJhY2suaHRtbCIsICJ0ZXN0
V2luZG93Iik7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343520</attachid>
            <date>2018-06-25 11:30:07 -0700</date>
            <delta_ts>2018-06-25 14:29:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186903-20180625113006.patch</filename>
            <type>text/plain</type>
            <size>35785</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0Nzk3MDY1MzVkZWU0ZjA2
YmJiMjdkZjA1YzNmOTUyNmJkN2Q3NTcuLmY1ZmIyZjBjYWExZDJhOTU3MDM1NmQ3MWUwM2JjYWRi
MmYzY2YxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTgtMDYtMjUgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBNYWtlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWlucygpIHdhaXQgZm9yIHRoZSBuZXR3b3JrIHByb2Nlc3MgYmVm
b3JlIGNhbGxpbmcgaXRzIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMzUwMTgy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggc3RvcmVzIHRoZSBjYWxsYmFjayBzZW50IHRvCisgICAgICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucygpLAor
ICAgICAgICBzZXRzIHVwIGEgY29udGV4dCBJRCwgYW5kIHNlbmRzIHRoYXQgSUQgdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcyB3aGVuCisgICAgICAgIGFza2luZyBpdCB0byB1cGRhdGUgY29va2llIHBh
cnRpdGlvbmluZyBhbmQgYmxvY2tpbmcuIFRoZSBuZXR3b3JrCisgICAgICAgIHByb2Nlc3MgdGhl
biB0ZWxscyB0aGUgVUkgcHJvY2VzcyB3aGVuIGl0J3MgZG9uZSwgYXQgd2hpY2ggcG9pbnQgdGhl
CisgICAgICAgIGNhbGxiYWNrIGlzIGNhbGxlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBt
ZWFudCB0byBhZGRyZXNzIGxheW91dCB0ZXN0IGZsYWtpbmVzcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFVw
ZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Fu
ZFNldFRlc3RpbmdDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaDoKKwogMjAxOC0wNi0yMiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3Ro
eUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVjYWxjIHN0eWxlcyBldmVyeSB0aW1lIGRlZmF1bHRB
cHBlYXJhbmNlIGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IDE4NGQxMjdjMzhiZjY2YWY1ZTZjMDFkZjgwMDM5YjIyMDZm
OWU0NTguLjY3YmM5ZTFkYmU2ZjUwYTI4OGRkNzY1ZDQxMzQwNWFjNWY1YWE3YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00MDMs
MTAgKzQwMywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiB9CiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9j
aywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9j
aywgYm9vbCBzaG91bGRDbGVhckZpcnN0LCB1aW50NjRfdCBjYWxsYmFja0lkKQogewogICAgIGlm
IChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
c2V0UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFy
dGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
LCBzaG91bGRDbGVhckZpcnN0KTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRVcGRhdGVQYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhjYWxsYmFja0lkKSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmUzNDkzMTli
MWE0ZGI4ZDM0ODg0YmJiNTE5MjQ4NWEwNTA1MjI4NC4uOTdlMmY1ZjUyZmNlZWUzYjhkNDcxNzY1
ZjAwZDEyMTBhNTFiMGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50
U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAg
dm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3Qs
IHVpbnQ2NF90IGNhbGxiYWNrSWQpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDgzNzZiYmM5YjQ4YTZiNDEzOGM0MTRhYmRkOWE2Y2M4Zjk0ZWVhZGIuLjRiZmQ2YzI3
OWY4ZGVmZmIyNzVlNWQ1OGFkNjBhMjg0NWJiY2VjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODEs
NyArODEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgUHJlY29ubmVjdFRvKFdlYkNvcmU6OlVSTCB1cmwsIGVudW0gV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAjaWYgSEFWRShDRk5F
VFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8
U3RyaW5nPiBkb21haW5zVG9QYXJ0aXRpb24sIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2Nr
LCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wg
c2hvdWxkQ2xlYXJGaXJzdCkKKyAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRv
bWFpbnNUb1BhcnRpdGlvbiwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIFZlY3RvcjxT
dHJpbmc+IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVh
ckZpcnN0LCB1aW50NjRfdCBjYWxsYmFja0lkKQogICAgIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5n
IGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgY29udGV4dElkKQogICAgIEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQogICAgIEdyYW50U3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3Ry
aW5nIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZTdi
MmVlYzQxNTYyZDI5ZmYwYjI3OWE5NGFiZWE2NDZlODRhM2IyMy4uMTE3YTU1MTAwZGNmYWQ0NGYx
YzI2MjI0OTFmYjBjZGQzMjRhNGUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yMzQsNiArMjM0LDEy
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcygpCiAKICAg
ICB3aGlsZSAoIW1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy5p
c0VtcHR5KCkpCiAgICAgICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0Nh
bGxiYWNrcy50YWtlKG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNr
cy5iZWdpbigpLT5rZXkpKCk7CisKKyAgICB3aGlsZSAoIW1fdXBkYXRlUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNDYWxsYmFja01hcC5pc0VtcHR5KCkpCisgICAgICAgIG1fdXBkYXRlUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXNDYWxsYmFja01hcC50YWtlKG1fdXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXNDYWxsYmFja01hcC5iZWdpbigpLT5rZXkpKCk7CisgICAgCisgICAgd2hpbGUgKCFtX3N0
b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdG9y
YWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC50YWtlKG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
Q2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KShmYWxzZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC00MzEsNiArNDM3LDI0IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRf
dCBsb2FkZXJJCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0
aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2Fn
ZSgpKSB7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgYXV0byBjYWxsYmFja0lkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3VwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzQ2FsbGJhY2tNYXAuYWRk
KGNhbGxiYWNrSWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhz
ZXNzaW9uSUQsIGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZp
cnN0OjpZZXMsIGNhbGxiYWNrSWQpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQor
eworICAgIG1fdXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNDYWxsYmFja01hcC50YWtlKGNh
bGxiYWNrSWQpKCk7Cit9CisKIHN0YXRpYyB1aW50NjRfdCBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb250ZXh0SWQoKQogewogICAgIHN0YXRpYyB1aW50NjRfdCBuZXh0Q29udGV4dElkID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggNmNjNTIxYzZhYzFkNGM0Y2YwYWE0ODcyNzQ5ODEwN2MyMGEzYTQ2Zi4u
ZjcwN2M2OTI5MWY2ODEyMDQzN2NhYzhjM2YyM2I3ODNmN2ViOTc1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJ
T05JTkcpCisgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1Bh
cnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVh
ckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7
CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spOwpAQCAtMTQ0LDYgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGxvYWRl
cklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJU
SVRJT05JTkcpCisgICAgdm9pZCBkaWRVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llcyh1aW50
NjRfdCBjYWxsYmFja0lkKTsKICAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJv
b2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29u
dGV4dElkKTsKICNlbmRpZgpAQCAtMTc2LDcgKzE3OCw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgeyAwIH07CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+PiBtX3dyaXRlQmxvYlRvRmls
ZVBhdGhDYWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4+IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2Fs
bGJhY2tNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
Pj4gbV91cGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0NhbGxiYWNrTWFwOworICAgIEhhc2hN
YXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4+IG1f
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPj4gbV9hbGxT
dG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5OTZhNGE1OTVkMjkz
NTM3Mjg3ZDJlMGE2NzIyMjk4M2YwYzJiNTA1Li5iMWJhOTI5NTliODhjZThmM2ZmM2U5MGFjYWMw
NzBjMzgwZWMwZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00Nyw2ICs0
Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIENhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVy
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlIHByb3RlY3Rpb25TcGFjZSkKICNlbmRpZgogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKQorICAgIERpZFVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSWQpCiAgICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoYm9vbCB3
YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNSZXN1bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBmYmQ1YmI1NWFiNTQ4YzNmNjJkODgwMWMwMTdk
ZTkyZWQ1M2I0YTU3Li5hNDM2NDNmNGRmZmE2M2ExNjcyZjZhNjBmM2QzM2ViOTIwYTNiNjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTEzMDIsMTAgKzEzMDIsNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKENvbXBsZXRp
b25IYW5kbGVyPAogI2VuZGlmCiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUGFydGl0aW9uID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb1BhcnRpdGlvbiksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NU
aHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewotICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKLSAgICAg
ICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwotICAgICAgICB9KTsKKyAgICAgICAgbV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0
aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9C
bG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0
OjpObywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKG1fZGVidWdMb2dnaW5nRW5hYmxlZCwg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiRG9uZSB1cGRhdGluZyBjb29raWUgcGFydGl0
aW9uaW5nIGFuZCBibG9ja2luZy4iKTsKICNlbmRpZgpAQCAtMTMyMCwxMCArMTMxNyw2IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JEb21haW5zKGNvbnN0IFZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzaG91bGRDbGVhckZpcnN0LCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1BhcnRpdGlvbiA9IGNyb3NzVGhyZWFk
Q29weShkb21haW5zVG9QYXJ0aXRpb24pLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29w
eShkb21haW5zVG9CbG9jayksIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayA9IGNy
b3NzVGhyZWFkQ29weShkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2spXSAoKSB7Ci0g
ICAgICAgIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNI
YW5kbGVyKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRo
ZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgfSk7Ci0KICAgICBp
ZiAoc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZZXMpCiAgICAgICAgIHJl
c2V0Q29va2llUGFydGl0aW9uaW5nU3RhdGUoKTsKICAgICBlbHNlIHsKQEAgLTEzNDAsNyArMTMz
Myw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQ
YXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlCiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBk
b21haW5zVG9CbG9jaykKICAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihkb21haW4pLmlzTWFya2VkRm9yQ29va2llQmxvY2tpbmcgPSB0cnVlOwogCi0gICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHNob3VsZENsZWFyRmlyc3QsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWlu
c1RvUGFydGl0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb1BhcnRpdGlvbiksIGRvbWFp
bnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWluc1RvTmVp
dGhlclBhcnRpdGlvbk5vckJsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jayksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNU
b1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFp
bnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFy
Rmlyc3QsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JE
b21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGVlNjhlODUw
ZDgzMzU3YTU4ZjQxMTkwZDJjNzE1YWFlZGE2ODZiYWIuLjFlNDIxZWZkZjI1ZWIwMzgwY2M0NzYz
ODI1YTQwM2Y4MTFlMDhlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC02OCwxMiArNjgsMTIgQEAg
ZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIHsKIAogY2xhc3MgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlIGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICB1c2luZyBVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVp
dGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0KT47CisgICAgdXNpbmcgVXBk
YXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKT47CiAgICAgdXNpbmcgSGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHJlc291
cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4m
JiBjYWxsYmFjayk+OwogICAgIHVzaW5nIEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxi
YWNrKT47CiAgICAgdXNpbmcgUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT47CiAgICAgdXNpbmcgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0YXRp
YyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZh
bGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZh
bGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFtdKGNvbnN0IFdU
Rjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RG
OjpWZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgZ3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmKSB7IH0sIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgcmVtb3ZlQWxsU3Rv
cmFnZUFjY2Vzc0hhbmRsZXIgPSBbXSgpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRs
ZXImJiByZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+
JikgeyB9KQorICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhl
bWVyYWwsIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFu
ZGxlciYmIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFu
ZGxlciA9IFtdKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjayA9IFtdKCkgeyB9KSB7IH0sIEhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgR3JhbnRTdG9yYWdlQWNjZXNzSGFu
ZGxlciYmIGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiwgdWludDY0X3QsIFdURjo6RnVuY3Rp
b248dm9pZChib29sKT4mJikgeyB9LCBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciYmIHJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oKSB7IH0sIFJlbW92ZVByZXZhbGVudERv
bWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgV1RGOjpWZWN0
b3I8U3RyaW5nPiYpIHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayksIGlzRXBoZW1lcmFsLCBXVEZNb3ZlKHVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciksIFdURk1v
dmUoaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciksIFdURk1vdmUoZ3JhbnRTdG9yYWdl
QWNjZXNzSGFuZGxlciksIFdURk1vdmUocmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXIpLCBX
VEZNb3ZlKHJlbW92ZURvbWFpbnNIYW5kbGVyKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5k
ZXggYzNmMzE4MmRmMDVjOGYxYzU1ODAzMWI1YzVmZWE0YzAxY2QzY2RjNS4uOTA2YThiYWRlODMy
OTJlYWNiNjU4MjVjOGIzMWExZmJhNjk3ZDY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTEyMDUs
MTAgKzEyMDUsMTAgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhRm9yVG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbnMoT3B0aW9uU2V0PFdlYnMKIH0KIAogI2lmIEhBVkUoQ0ZO
RVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp1cGRh
dGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkKK3ZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tp
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
TmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmly
c3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nl
c3NQb29sLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKG1fc2Vzc2lv
bklELCBkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVy
UGFydGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QgPT0gU2hvdWxkQ2xlYXJGaXJzdDo6
WWVzKSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT51cGRhdGVQcmV2
YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhtX3Nlc3Npb25JRCwgZG9tYWlu
c1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBzaG91bGRDbGVhckZpcnN0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKQEAgLTE0NzIsMTUgKzE0
NzIsMTUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW8KICAgICB9CiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24u
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxsYmFjayksIG1fc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRo
ZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7
CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIFdURk1vdmUoY2FsbGJhY2spLCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3Vs
ZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAg
IHdlYWtUaGlzLT51cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
cyhkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QpOwotICAgIH0sIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNr
KSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBh
cnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAg
ICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5oYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWVIYW5kbGVyKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlE
LCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+
JiYgY2FsbGJhY2spIHsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5oYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBw
YWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9LCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3Jh
bnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAg
ICAgICAgICAgd2Vha1RoaXMtPmdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIocmVzb3VyY2VEb21h
aW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykp
OworICAgICAgICAgICAgd2Vha1RoaXMtPmdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIocmVzb3Vy
Y2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0g
KCkgewogICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+cmVtb3Zl
QWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA5NzhjM2Q5NDVjNWMw
ODNjYmNmY2Y2N2M4NDJhYjI2MzlkMDA3MWFhLi4xYTU2YTAxODY5ODU1MWVlYzNhNjA4ZDQ2YzQ2
ODIyY2U0NjUyYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMzAsMTMgKzEzMCwxMyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZW1vdmVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9u
PiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zLCBG
dW5jdGlvbjx2b2lkKEhhc2hTZXQ8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAK
ICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25O
b3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYg
Zmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKTsKKyAg
ICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRo
ZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCBoYXNBY2Nlc3MpPiYmKTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7
Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBncmFudFN0b3Jh
Z2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYp
OwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXIoKTsKICAgICB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwotICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRv
cEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFt
ZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1N0YXR1cyk+JiYpOwogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYm
IHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZiNDZjZWU3NjI3MTY3OWM1MDY4ODIyNDJi
YmM5ZGIxZWUyOTdjMGQuLjllNjg2NGE0YjA1NjgzY2FjMjQyZDI3YWJiMTk3YWQwYmJmNDY1ZDAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wNi0yNSAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IE1ha2Ug
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdG
b3JEb21haW5zKCkgd2FpdCBmb3IgdGhlIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgY2FsbGluZyBp
dHMgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NjkwMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDEzNTAxODI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3Mt
dW5kZXItb3BlbmVyLmh0bWw6CisgICAgICAgICAgICBNb3ZlZCB0aGUgY29kZSBibG9jayB0byB0
aGUgcGFnZSdzIGJvZHkgaW5zdGVhZCBvZiBpdHMgaGVhZC4KKyAgICAgICAgICAgIEFkZGVkIGFu
IGluaXRpYWwgY29uc29sZSBsb2cgc3RhdGVtZW50LiBUaGUgcmVhc29uIGZvciB0aGVzZQorICAg
ICAgICAgICAgY2hhbmdlcyBpcyB0aGF0IHdlJ3JlIHNlZWluZyBmbGFreSB0aW1lb3V0cyB3aXRo
IG5vIG91dHB1dC4KKwogMjAxOC0wNi0yMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJv
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjMwOTUwKTogW0dUS10gV2ViS2l0
OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoKTogV2ViS2l0V2Vi
UHJvY2VzcyBraWxsZWQgYnkgU0lHU0VHViAoQVNTRVJUSU9OIEZBSUxFRDogaXQgIT0gbV90aWxl
cy5lbmQoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVy
LW9wZW5lci1leHBlY3RlZC50eHQKaW5kZXggNTMwODgwNDE0MjExYmZiODdlMzE2ZGY1YjE1ZTQy
MWVhMjE4ZDc1Zi4uYmM1YTgwOTg1MTUzODcwNzFkY2UxYWViN2NhNWUyNjA2NGU5YWEzMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3Jh
Z2UtYWNjZXNzLXVuZGVyLW9wZW5lci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci1l
eHBlY3RlZC50eHQKQEAgLTEsNyArMSw4IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNTQ6IFJ1
bm5pbmcgdGVzdC4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2NzogQWJvdXQgdG8gY2FsbCB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKS4KLUNPTlNPTEUgTUVT
U0FHRTogbGluZSA2OTogQWJvdXQgdG8gb3BlbiB0aGUgbmV3IHdpbmRvdy4KLUNPTlNPTEUgTUVT
U0FHRTogbGluZSA0MzogQWJvdXQgdG8gb3BlbiB0aGUgdGhpcmQgcGFydHkgaWZyYW1lLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDg6IEZpcnN0IEphdmFTY3JpcHQgc3RhdGVtZW50LgorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDU3OiBSdW5uaW5nIHRlc3QuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
NzM6IEFib3V0IHRvIGNhbGwgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0
aW9uaW5nKCkuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzU6IEFib3V0IHRvIG9wZW4gdGhlIG5l
dyB3aW5kb3cuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDU6IEFib3V0IHRvIG9wZW4gdGhlIHRo
aXJkIHBhcnR5IGlmcmFtZS4KIFRlc3RzIHRoYXQgYSBjcm9zcy1vcmlnaW4gd2luZG93IGZyb20g
YSBwcmV2YWxlbnQgZG9tYWluIHdpdGggbm9uLXJlY2VudCB1c2VyIGludGVyYWN0aW9uIGdldHMg
aW1tZWRpYXRlIHN0b3JhZ2UgYWNjZXNzIHVuZGVyIGl0cyBvcGVuZXIuCiAKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXIuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1v
cGVuZXIuaHRtbAppbmRleCAxY2JkMWM3N2I5YjMxYTJmOWNmNDc5ODQzOTZhYzZjNzcyYzAwNTEz
Li5jNGEzZTQ3NWFjZWMzYTFhMDRlMzBiNWVmYjZiYzFlZTJkZmI4N2U4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3Mt
dW5kZXItb3BlbmVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sCkBAIC0yLDc2ICsyLDgw
IEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgYSBjcm9zcy1vcmlnaW4gd2luZG93IGZyb20gYSBwcmV2YWxlbnQgZG9tYWlu
IHdpdGggbm9uLXJlY2VudCB1c2VyIGludGVyYWN0aW9uIGdldHMgaW1tZWRpYXRlIHN0b3JhZ2Ug
YWNjZXNzIHVuZGVyIGl0cyBvcGVuZXIuIik7Ci0gICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW4oKSI+Cis8c2NyaXB0PgorICAgIGNvbnNvbGUu
bG9nKCJGaXJzdCBKYXZhU2NyaXB0IHN0YXRlbWVudC4iKTsKIAotICAgICAgICBmdW5jdGlvbiBz
ZXRFbmFibGVGZWF0dXJlKGVuYWJsZSkgewotICAgICAgICAgICAgaWYgKCFlbmFibGUpCi0gICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgp
OwotICAgICAgICAgICAgaW50ZXJuYWxzLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGVuYWJsZSk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRp
b25pbmdFbmFibGVkKGVuYWJsZSk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VB
Y2Nlc3NBUElFbmFibGVkKGVuYWJsZSk7Ci0gICAgICAgIH0KKyAgICBkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCBhIGNyb3NzLW9yaWdpbiB3aW5kb3cgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2l0
aCBub24tcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gZ2V0cyBpbW1lZGlhdGUgc3RvcmFnZSBhY2Nl
c3MgdW5kZXIgaXRzIG9wZW5lci4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBm
YWxzZSk7CisgICAgZnVuY3Rpb24gc2V0RW5hYmxlRmVhdHVyZShlbmFibGUpIHsKKyAgICAgICAg
aWYgKCFlbmFibGUpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlKCk7CisgICAgICAgIGludGVybmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChlbmFibGUpOworICAgICAgICB0ZXN0UnVubmVyLnNldENvb2tpZVN0b3JhZ2VQ
YXJ0aXRpb25pbmdFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RvcmFn
ZUFjY2Vzc0FQSUVuYWJsZWQoZW5hYmxlKTsKKyAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24gZmlu
aXNoVGVzdCgpIHsKLSAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UpOwotICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIH0KKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0
KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlKTsKKyAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIG9wZW5JZnJhbWUodXJsLCBvbkxvYWRI
YW5kbGVyKSB7Ci0gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaWZyYW1lIik7Ci0gICAgICAgICAgICBlbGVtZW50LnNyYyA9IHVybDsKLSAgICAgICAg
ICAgIGlmIChvbkxvYWRIYW5kbGVyKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5vbmxvYWQg
PSBvbkxvYWRIYW5kbGVyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBmdW5jdGlvbiBvcGVuSWZyYW1lKHVybCwgb25M
b2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQuc3JjID0gdXJsOworICAgICAgICBpZiAo
b25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxlbWVudC5vbmxvYWQgPSBvbkxvYWRIYW5k
bGVyOwogICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7Ci0g
ICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikg
ewotICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEp
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNT
ICIsICIiKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKGV2ZW50LmRhdGEpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46
ICIgKyBldmVudC5vcmlnaW4pOworICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7
CisgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7
CisgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRh
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1l
c3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CiAKLSAg
ICAgICAgICAgIG5ld1dpbi5jbG9zZSgpOwotICAgICAgICAgICAgY29uc29sZS5sb2coIkFib3V0
IHRvIG9wZW4gdGhlIHRoaXJkIHBhcnR5IGlmcmFtZS4iKTsKLSAgICAgICAgICAgIG9wZW5JZnJh
bWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNo
b3VsZCByZWNlaXZlIGZpcnN0LXBhcnR5IGNvb2tpZS4iLCBmaW5pc2hUZXN0KTsKLSAgICAgICAg
fQorICAgICAgICBuZXdXaW4uY2xvc2UoKTsKKyAgICAgICAgY29uc29sZS5sb2coIkFib3V0IHRv
IG9wZW4gdGhlIHRoaXJkIHBhcnR5IGlmcmFtZS4iKTsKKyAgICAgICAgb3BlbklmcmFtZSh0aGly
ZFBhcnR5QmFzZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hvdWxkIHJl
Y2VpdmUgZmlyc3QtcGFydHkgY29va2llLiIsIGZpbmlzaFRlc3QpOworICAgIH0KIAotICAgICAg
ICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7Ci0gICAg
ICAgIGNvbnN0IHJlc291cmNlUGF0aCA9ICIvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMiOwotICAg
ICAgICBjb25zdCB0aGlyZFBhcnR5QmFzZVVybCA9IHRoaXJkUGFydHlPcmlnaW4gKyByZXNvdXJj
ZVBhdGg7Ci0gICAgICAgIGNvbnN0IGZpcnN0UGFydHlDb29raWVOYW1lID0gImZpcnN0UGFydHlD
b29raWUiOwotICAgICAgICBjb25zdCBzdWJQYXRoVG9HZXRDb29raWVzID0gIi9nZXQtY29va2ll
cy5waHA/bmFtZTE9IiArIGZpcnN0UGFydHlDb29raWVOYW1lOwotICAgICAgICB2YXIgbmV3V2lu
OwotICAgICAgICBmdW5jdGlvbiBydW4oKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmxvZygiUnVu
bmluZyB0ZXN0LiIpOwotICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICBjb25zdCB0aGlyZFBh
cnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CisgICAgY29uc3QgcmVzb3VyY2VQ
YXRoID0gIi9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcyI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUJh
c2VVcmwgPSB0aGlyZFBhcnR5T3JpZ2luICsgcmVzb3VyY2VQYXRoOworICAgIGNvbnN0IGZpcnN0
UGFydHlDb29raWVOYW1lID0gImZpcnN0UGFydHlDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhU
b0dldENvb2tpZXMgPSAiL2dldC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tp
ZU5hbWU7CisgICAgdmFyIG5ld1dpbjsKIAotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodGhpcmRQYXJ0eU9yaWdpbiwgdHJ1ZSk7Ci0gICAgICAg
ICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodGhpcmRQ
YXJ0eU9yaWdpbikpCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdl
dCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzSGFzSGFkTm9uUmVjZW50VXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmln
aW4sIHRydWUpOwotICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hh
ZFVzZXJJbnRlcmFjdGlvbih0aGlyZFBhcnR5T3JpZ2luKSkKLSAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVl
KTsKKyAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJSdW5uaW5nIHRl
c3QuIik7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CiAKLSAgICAgICAgICAgIGNv
bnNvbGUubG9nKCJBYm91dCB0byBjYWxsIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZygpLiIpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBk
YXRlQ29va2llUGFydGl0aW9uaW5nKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBjb25z
b2xlLmxvZygiQWJvdXQgdG8gb3BlbiB0aGUgbmV3IHdpbmRvdy4iKTsKLSAgICAgICAgICAgICAg
ICBuZXdXaW4gPSB3aW5kb3cub3Blbih0aGlyZFBhcnR5T3JpZ2luICsgIi9zdG9yYWdlQWNjZXNz
L3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1yZXBvcnQtYmFjay5odG1sIiwgInRlc3RXaW5kb3ci
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9InJ1bigpIj4KKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0
Q2FuT3BlbldpbmRvd3MoKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5T3JpZ2luLCB0cnVlKTsKKyAgICAgICAgaWYgKCF0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRoaXJkUGFydHlPcmlnaW4pKQor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50
IHJlc291cmNlLiIpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWROb25S
ZWNlbnRVc2VySW50ZXJhY3Rpb24odGhpcmRQYXJ0eU9yaWdpbiwgdHJ1ZSk7CisgICAgICAgIGlm
ICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odGhpcmRQYXJ0
eU9yaWdpbikpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IGxvZ2dl
ZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRG
cmFtZXNBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRv
d3NXaGVuQ29tcGxldGUodHJ1ZSk7CisKKyAgICAgICAgY29uc29sZS5sb2coIkFib3V0IHRvIGNh
bGwgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkuIik7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyhmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiQWJvdXQgdG8gb3BlbiB0aGUgbmV3
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIG5ld1dpbiA9IHdpbmRvdy5vcGVuKHRoaXJkUGFydHlP
cmlnaW4gKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXJlcG9ydC1i
YWNrLmh0bWwiLCAidGVzdFdpbmRvdyIpOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343539</attachid>
            <date>2018-06-25 14:29:42 -0700</date>
            <delta_ts>2018-06-25 15:36:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186903-20180625142942.patch</filename>
            <type>text/plain</type>
            <size>36407</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0Nzk3MDY1MzVkZWU0ZjA2
YmJiMjdkZjA1YzNmOTUyNmJkN2Q3NTcuLmY1ZmIyZjBjYWExZDJhOTU3MDM1NmQ3MWUwM2JjYWRi
MmYzY2YxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTgtMDYtMjUgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBNYWtlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWlucygpIHdhaXQgZm9yIHRoZSBuZXR3b3JrIHByb2Nlc3MgYmVm
b3JlIGNhbGxpbmcgaXRzIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMzUwMTgy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggc3RvcmVzIHRoZSBjYWxsYmFjayBzZW50IHRvCisgICAgICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucygpLAor
ICAgICAgICBzZXRzIHVwIGEgY29udGV4dCBJRCwgYW5kIHNlbmRzIHRoYXQgSUQgdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcyB3aGVuCisgICAgICAgIGFza2luZyBpdCB0byB1cGRhdGUgY29va2llIHBh
cnRpdGlvbmluZyBhbmQgYmxvY2tpbmcuIFRoZSBuZXR3b3JrCisgICAgICAgIHByb2Nlc3MgdGhl
biB0ZWxscyB0aGUgVUkgcHJvY2VzcyB3aGVuIGl0J3MgZG9uZSwgYXQgd2hpY2ggcG9pbnQgdGhl
CisgICAgICAgIGNhbGxiYWNrIGlzIGNhbGxlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBt
ZWFudCB0byBhZGRyZXNzIGxheW91dCB0ZXN0IGZsYWtpbmVzcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFVw
ZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Fu
ZFNldFRlc3RpbmdDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaDoKKwogMjAxOC0wNi0yMiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3Ro
eUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVjYWxjIHN0eWxlcyBldmVyeSB0aW1lIGRlZmF1bHRB
cHBlYXJhbmNlIGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IDE4NGQxMjdjMzhiZjY2YWY1ZTZjMDFkZjgwMDM5YjIyMDZm
OWU0NTguLjY3YmM5ZTFkYmU2ZjUwYTI4OGRkNzY1ZDQxMzQwNWFjNWY1YWE3YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00MDMs
MTAgKzQwMywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiB9CiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9j
aywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9j
aywgYm9vbCBzaG91bGRDbGVhckZpcnN0LCB1aW50NjRfdCBjYWxsYmFja0lkKQogewogICAgIGlm
IChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
c2V0UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFy
dGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
LCBzaG91bGRDbGVhckZpcnN0KTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRVcGRhdGVQYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhjYWxsYmFja0lkKSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmUzNDkzMTli
MWE0ZGI4ZDM0ODg0YmJiNTE5MjQ4NWEwNTA1MjI4NC4uOTdlMmY1ZjUyZmNlZWUzYjhkNDcxNzY1
ZjAwZDEyMTBhNTFiMGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50
U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAg
dm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3Qs
IHVpbnQ2NF90IGNhbGxiYWNrSWQpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDgzNzZiYmM5YjQ4YTZiNDEzOGM0MTRhYmRkOWE2Y2M4Zjk0ZWVhZGIuLjRiZmQ2YzI3
OWY4ZGVmZmIyNzVlNWQ1OGFkNjBhMjg0NWJiY2VjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODEs
NyArODEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgUHJlY29ubmVjdFRvKFdlYkNvcmU6OlVSTCB1cmwsIGVudW0gV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAjaWYgSEFWRShDRk5F
VFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8
U3RyaW5nPiBkb21haW5zVG9QYXJ0aXRpb24sIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2Nr
LCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wg
c2hvdWxkQ2xlYXJGaXJzdCkKKyAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRv
bWFpbnNUb1BhcnRpdGlvbiwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIFZlY3RvcjxT
dHJpbmc+IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVh
ckZpcnN0LCB1aW50NjRfdCBjYWxsYmFja0lkKQogICAgIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5n
IGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgY29udGV4dElkKQogICAgIEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQogICAgIEdyYW50U3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3Ry
aW5nIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZTdi
MmVlYzQxNTYyZDI5ZmYwYjI3OWE5NGFiZWE2NDZlODRhM2IyMy4uMTE3YTU1MTAwZGNmYWQ0NGYx
YzI2MjI0OTFmYjBjZGQzMjRhNGUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yMzQsNiArMjM0LDEy
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcygpCiAKICAg
ICB3aGlsZSAoIW1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy5p
c0VtcHR5KCkpCiAgICAgICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0Nh
bGxiYWNrcy50YWtlKG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNr
cy5iZWdpbigpLT5rZXkpKCk7CisKKyAgICB3aGlsZSAoIW1fdXBkYXRlUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNDYWxsYmFja01hcC5pc0VtcHR5KCkpCisgICAgICAgIG1fdXBkYXRlUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXNDYWxsYmFja01hcC50YWtlKG1fdXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXNDYWxsYmFja01hcC5iZWdpbigpLT5rZXkpKCk7CisgICAgCisgICAgd2hpbGUgKCFtX3N0
b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdG9y
YWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC50YWtlKG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
Q2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KShmYWxzZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC00MzEsNiArNDM3LDI0IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRf
dCBsb2FkZXJJCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0
aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2Fn
ZSgpKSB7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgYXV0byBjYWxsYmFja0lkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3VwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzQ2FsbGJhY2tNYXAuYWRk
KGNhbGxiYWNrSWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhz
ZXNzaW9uSUQsIGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZp
cnN0OjpZZXMsIGNhbGxiYWNrSWQpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQor
eworICAgIG1fdXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNDYWxsYmFja01hcC50YWtlKGNh
bGxiYWNrSWQpKCk7Cit9CisKIHN0YXRpYyB1aW50NjRfdCBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb250ZXh0SWQoKQogewogICAgIHN0YXRpYyB1aW50NjRfdCBuZXh0Q29udGV4dElkID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggNmNjNTIxYzZhYzFkNGM0Y2YwYWE0ODcyNzQ5ODEwN2MyMGEzYTQ2Zi4u
ZjcwN2M2OTI5MWY2ODEyMDQzN2NhYzhjM2YyM2I3ODNmN2ViOTc1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJ
T05JTkcpCisgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1Bh
cnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVh
ckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7
CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spOwpAQCAtMTQ0LDYgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGxvYWRl
cklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJU
SVRJT05JTkcpCisgICAgdm9pZCBkaWRVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llcyh1aW50
NjRfdCBjYWxsYmFja0lkKTsKICAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJv
b2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29u
dGV4dElkKTsKICNlbmRpZgpAQCAtMTc2LDcgKzE3OCw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgeyAwIH07CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+PiBtX3dyaXRlQmxvYlRvRmls
ZVBhdGhDYWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4+IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2Fs
bGJhY2tNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
Pj4gbV91cGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0NhbGxiYWNrTWFwOworICAgIEhhc2hN
YXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4+IG1f
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPj4gbV9hbGxT
dG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5OTZhNGE1OTVkMjkz
NTM3Mjg3ZDJlMGE2NzIyMjk4M2YwYzJiNTA1Li5iMWJhOTI5NTliODhjZThmM2ZmM2U5MGFjYWMw
NzBjMzgwZWMwZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00Nyw2ICs0
Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIENhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVy
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlIHByb3RlY3Rpb25TcGFjZSkKICNlbmRpZgogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKQorICAgIERpZFVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSWQpCiAgICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoYm9vbCB3
YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNSZXN1bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBmYmQ1YmI1NWFiNTQ4YzNmNjJkODgwMWMwMTdk
ZTkyZWQ1M2I0YTU3Li41Y2JiMTYwMTBlYjYyYmM4MzRmNWNlYjk1MWY1NGMwZWQzZWQwNTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTEzMDIsOSArMTMwMiwxMCBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKENvbXBsZXRp
b25IYW5kbGVyPAogI2VuZGlmCiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUGFydGl0aW9uID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb1BhcnRpdGlvbiksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NU
aHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewotICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKLSAgICAg
ICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgbV9zdGF0aXN0
aWNzUXVldWUtPmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJEb25lIHVwZGF0aW5nIGNvb2tpZSBwYXJ0aXRp
b25pbmcgYW5kIGJsb2NraW5nLiIpOwpAQCAtMTMyMCwxMCArMTMyMSw2IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21h
aW5zKGNvbnN0IFZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzaG91bGRDbGVhckZpcnN0LCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1BhcnRpdGlvbiA9IGNyb3NzVGhyZWFkQ29weShkb21h
aW5zVG9QYXJ0aXRpb24pLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5z
VG9CbG9jayksIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayA9IGNyb3NzVGhyZWFk
Q29weShkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2spXSAoKSB7Ci0gICAgICAgIG1f
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKGRv
bWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgfSk7Ci0KICAgICBpZiAoc2hvdWxk
Q2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZZXMpCiAgICAgICAgIHJlc2V0Q29va2ll
UGFydGl0aW9uaW5nU3RhdGUoKTsKICAgICBlbHNlIHsKQEAgLTEzNDAsNyArMTMzNywxMyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9u
aW5nRm9yRG9tYWlucyhjb25zdCBWZQogICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1Rv
QmxvY2spCiAgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4o
ZG9tYWluKS5pc01hcmtlZEZvckNvb2tpZUJsb2NraW5nID0gdHJ1ZTsKIAotICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzaG91bGRD
bGVhckZpcnN0LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1BhcnRp
dGlvbiA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9QYXJ0aXRpb24pLCBkb21haW5zVG9CbG9j
ayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9jayksIGRvbWFpbnNUb05laXRoZXJQYXJ0
aXRpb25Ob3JCbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2spLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgbV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llc0hhbmRsZXIoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9j
aywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0LCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgbV9z
dGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclBhcnRpdGlvbmluZ1N0YXRl
Rm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBlZTY4
ZTg1MGQ4MzM1N2E1OGY0MTE5MGQyYzcxNWFhZWRhNjg2YmFiLi4xZTQyMWVmZGYyNWViMDM4MGNj
NDc2MzgyNWE0MDNmODExZTA4ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNjgsMTIgKzY4LDEy
IEBAIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyB7CiAKIGNsYXNzIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgVXBkYXRlUHJldmFsZW50
RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCk+OworICAgIHVzaW5n
IFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0
aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmly
c3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OwogICAgIHVzaW5nIEhhc1N0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIGhhc0FjY2Vz
cyk+JiYgY2FsbGJhY2spPjsKICAgICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0g
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBj
YWxsYmFjayk+OwogICAgIHVzaW5nIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gV1RG
OjpGdW5jdGlvbjx2b2lkKCk+OwogICAgIHVzaW5nIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5k
bGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPjsKLSAgICBz
dGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25z
dCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFdURjo6VmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0KSB7IH0sIEhhc1N0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0g
W10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciYm
IGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJikgeyB9LCBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciYmIHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oKSB7IH0sIFJlbW92ZVByZXZhbGVudERvbWFpbnNI
YW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgV1RGOjpWZWN0b3I8U3Ry
aW5nPiYpIHsgfSkKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwg
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlz
RXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
c0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
c0hhbmRsZXIgPSBbXShjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2sgPSBbXSgpIHsgfSkgeyB9LCBI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50
NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIEdyYW50U3RvcmFnZUFjY2Vz
c0hhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIHVpbnQ2NF90LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXIm
JiByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFtdKCkgeyB9LCBSZW1vdmVQcmV2YWxl
bnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10gKGNvbnN0IFdURjo6
VmVjdG9yPFN0cmluZz4mKSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2spLCBpc0VwaGVtZXJhbCwgV1RGTW92ZSh1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBX
VEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZNb3ZlKGdyYW50U3Rv
cmFnZUFjY2Vzc0hhbmRsZXIpLCBXVEZNb3ZlKHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVy
KSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CmluZGV4IGMzZjMxODJkZjA1YzhmMWM1NTgwMzFiNWM1ZmVhNGMwMWNkM2NkYzUuLjIwMjQ2MzA2
MjBmMDFiZTM5ZmRlNmJkOTg5MWZhZmI4Nzc3MGI1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0x
MjA1LDEwICsxMjA1LDE1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YUZvclRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKE9wdGlvblNldDxXZWJzCiB9CiAKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRp
dGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVh
ckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBw
cm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhtX3Nl
c3Npb25JRCwgZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVp
dGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0ID09IFNob3VsZENsZWFyRmly
c3Q6OlllcykpOworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkg
eworICAgICAgICBhdXRvIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKTsK
KyAgICAgICAgaWYgKHByb2Nlc3MpCisgICAgICAgICAgICBwcm9jZXNzLT51cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhtX3Nlc3Npb25JRCwgZG9tYWluc1Rv
UGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBzaG91bGRDbGVhckZpcnN0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQogfQogCiB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spCkBAIC0xNDcyLDE1ICsxNDc3LDE1
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Fu
ZFNldFRlc3RpbmdDYWxsYmFjayhGdW5jdGlvCiAgICAgfQogCiAjaWYgSEFWRShDRk5FVFdPUktf
U1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUoY2FsbGJhY2spLCBtX3Nlc3Npb25J
RC5pc0VwaGVtZXJhbCgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkgeworICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
LCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSwgW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1Bh
cnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVh
ckZpcnN0IHNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFr
VGhpcy0+dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9t
YWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlv
bk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0KTsKLSAgICB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykgewor
ICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNU
b05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0g
KGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBp
ZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+aGFzU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFn
ZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJz
dFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNh
bGxiYWNrKSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlE
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSwgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAg
ICAgIHdlYWtUaGlzLT5ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHJlc291cmNlRG9tYWluLCBm
aXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHJlc291cmNlRG9t
YWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldICgpIHsK
ICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgd2Vha1RoaXMtPnJlbW92ZUFsbFN0
b3JhZ2VBY2Nlc3NIYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOTc4YzNkOTQ1YzVjMDgzY2Jj
ZmNmNjdjODQyYWIyNjM5ZDAwNzFhYS4uMWE1NmEwMTg2OTg1NTFlZWMzYTYwOGQ0NmM0NjgyMmNl
NDY1MmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTMwLDEzICsxMzAsMTMgQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3ZlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucywgRnVuY3Rp
b248dm9pZChIYXNoU2V0PFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYg
SEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgdm9pZCB1cGRhdGVQcmV2
YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxv
Y2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxv
Y2ssIFNob3VsZENsZWFyRmlyc3QpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjayk7CisgICAgdm9p
ZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgaGFzQWNjZXNzKT4mJik7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAg
IHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNj
ZXNzSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmKTsKICAg
ICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKCk7CiAgICAgdm9pZCByZW1vdmVQ
cmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKLSAgICB2b2lk
IGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFt
ZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0
LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgYm9vbCBwcm9tcHRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJG
cmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYjQ2Y2VlNzYyNzE2NzljNTA2ODgyMjQyYmJjOWRi
MWVlMjk3YzBkLi45ZTY4NjRhNGIwNTY4M2NhYzI0MmQyN2FiYjE5N2FkMGJiZjQ2NWQwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDYtMjUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBNYWtlIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9t
YWlucygpIHdhaXQgZm9yIHRoZSBuZXR3b3JrIHByb2Nlc3MgYmVmb3JlIGNhbGxpbmcgaXRzIGNh
bGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODY5MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMzUwMTgyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVy
LW9wZW5lci5odG1sOgorICAgICAgICAgICAgTW92ZWQgdGhlIGNvZGUgYmxvY2sgdG8gdGhlIHBh
Z2UncyBib2R5IGluc3RlYWQgb2YgaXRzIGhlYWQuCisgICAgICAgICAgICBBZGRlZCBhbiBpbml0
aWFsIGNvbnNvbGUgbG9nIHN0YXRlbWVudC4gVGhlIHJlYXNvbiBmb3IgdGhlc2UKKyAgICAgICAg
ICAgIGNoYW5nZXMgaXMgdGhhdCB3ZSdyZSBzZWVpbmcgZmxha3kgdGltZW91dHMgd2l0aCBubyBv
dXRwdXQuCisKIDIwMTgtMDYtMjIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIzMDk1MCk6IFtHVEtdIFdlYktpdDo6Q29v
cmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKCk6IFdlYktpdFdlYlByb2Nl
c3Mga2lsbGVkIGJ5IFNJR1NFR1YgKEFTU0VSVElPTiBGQUlMRUQ6IGl0ICE9IG1fdGlsZXMuZW5k
KCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3Jh
bnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVu
ZXItZXhwZWN0ZWQudHh0CmluZGV4IDUzMDg4MDQxNDIxMWJmYjg3ZTMxNmRmNWIxNWU0MjFlYTIx
OGQ3NWYuLmJjNWE4MDk4NTE1Mzg3MDcxZGNlMWFlYjdjYTVlMjYwNjRlOWFhMzAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFj
Y2Vzcy11bmRlci1vcGVuZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhwZWN0
ZWQudHh0CkBAIC0xLDcgKzEsOCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU0OiBSdW5uaW5n
IHRlc3QuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjc6IEFib3V0IHRvIGNhbGwgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkuCi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgNjk6IEFib3V0IHRvIG9wZW4gdGhlIG5ldyB3aW5kb3cuCi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgNDM6IEFib3V0IHRvIG9wZW4gdGhlIHRoaXJkIHBhcnR5IGlmcmFtZS4KK0NPTlNPTEUg
TUVTU0FHRTogbGluZSA4OiBGaXJzdCBKYXZhU2NyaXB0IHN0YXRlbWVudC4KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA1NzogUnVubmluZyB0ZXN0LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDczOiBB
Ym91dCB0byBjYWxsIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
ZygpLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc1OiBBYm91dCB0byBvcGVuIHRoZSBuZXcgd2lu
ZG93LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ1OiBBYm91dCB0byBvcGVuIHRoZSB0aGlyZCBw
YXJ0eSBpZnJhbWUuCiBUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIHdpbmRvdyBmcm9tIGEgcHJl
dmFsZW50IGRvbWFpbiB3aXRoIG5vbi1yZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBnZXRzIGltbWVk
aWF0ZSBzdG9yYWdlIGFjY2VzcyB1bmRlciBpdHMgb3BlbmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVy
Lmh0bWwKaW5kZXggMWNiZDFjNzdiOWIzMWEyZjljZjQ3OTg0Mzk2YWM2Yzc3MmMwMDUxMy4uYzRh
M2U0NzVhY2VjM2ExYTA0ZTMwYjVlZmI2YmMxZWUyZGZiODdlOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVy
LW9wZW5lci5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9n
cmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXIuaHRtbApAQCAtMiw3NiArMiw4MCBAQAog
PGh0bWw+CiA8aGVhZD4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIHdpbmRvdyBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3aXRo
IG5vbi1yZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBnZXRzIGltbWVkaWF0ZSBzdG9yYWdlIGFjY2Vz
cyB1bmRlciBpdHMgb3BlbmVyLiIpOwotICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuKCkiPgorPHNjcmlwdD4KKyAgICBjb25zb2xlLmxvZygi
Rmlyc3QgSmF2YVNjcmlwdCBzdGF0ZW1lbnQuIik7CiAKLSAgICAgICAgZnVuY3Rpb24gc2V0RW5h
YmxlRmVhdHVyZShlbmFibGUpIHsKLSAgICAgICAgICAgIGlmICghZW5hYmxlKQotICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKLSAg
ICAgICAgICAgIGludGVybmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFi
bGUpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5n
RW5hYmxlZChlbmFibGUpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlQWNjZXNz
QVBJRW5hYmxlZChlbmFibGUpOwotICAgICAgICB9CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRo
YXQgYSBjcm9zcy1vcmlnaW4gd2luZG93IGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpdGggbm9u
LXJlY2VudCB1c2VyIGludGVyYWN0aW9uIGdldHMgaW1tZWRpYXRlIHN0b3JhZ2UgYWNjZXNzIHVu
ZGVyIGl0cyBvcGVuZXIuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2Up
OworICAgIGZ1bmN0aW9uIHNldEVuYWJsZUZlYXR1cmUoZW5hYmxlKSB7CisgICAgICAgIGlmICgh
ZW5hYmxlKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZSgpOworICAgICAgICBpbnRlcm5hbHMuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoZW5hYmxlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFydGl0
aW9uaW5nRW5hYmxlZChlbmFibGUpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VBY2Nl
c3NBUElFbmFibGVkKGVuYWJsZSk7CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7Ci0gICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlKTsKLSAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsK
KyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxl
cikgewotICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlmcmFtZSIpOwotICAgICAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7Ci0gICAgICAgICAgICBp
ZiAob25Mb2FkSGFuZGxlcikgewotICAgICAgICAgICAgICAgIGVsZW1lbnQub25sb2FkID0gb25M
b2FkSGFuZGxlcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgZnVuY3Rpb24gb3BlbklmcmFtZSh1cmwsIG9uTG9hZEhh
bmRsZXIpIHsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlmcmFtZSIpOworICAgICAgICBlbGVtZW50LnNyYyA9IHVybDsKKyAgICAgICAgaWYgKG9uTG9h
ZEhhbmRsZXIpIHsKKyAgICAgICAgICAgIGVsZW1lbnQub25sb2FkID0gb25Mb2FkSGFuZGxlcjsK
ICAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOwor
ICAgIH0KIAotICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgewotICAgICAg
ICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQotICAg
ICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAi
IikpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZChldmVudC5kYXRhKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsg
ZXZlbnQub3JpZ2luKTsKKyAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAg
ICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAg
ICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdl
IGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOwogCi0gICAgICAg
ICAgICBuZXdXaW4uY2xvc2UoKTsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBv
cGVuIHRoZSB0aGlyZCBwYXJ0eSBpZnJhbWUuIik7Ci0gICAgICAgICAgICBvcGVuSWZyYW1lKHRo
aXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQg
cmVjZWl2ZSBmaXJzdC1wYXJ0eSBjb29raWUuIiwgZmluaXNoVGVzdCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgbmV3V2luLmNsb3NlKCk7CisgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBvcGVu
IHRoZSB0aGlyZCBwYXJ0eSBpZnJhbWUuIik7CisgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0
eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNob3VsZCByZWNlaXZl
IGZpcnN0LXBhcnR5IGNvb2tpZS4iLCBmaW5pc2hUZXN0KTsKKyAgICB9CiAKLSAgICAgICAgY29u
c3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOwotICAgICAgICBj
b25zdCByZXNvdXJjZVBhdGggPSAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzIjsKLSAgICAgICAg
Y29uc3QgdGhpcmRQYXJ0eUJhc2VVcmwgPSB0aGlyZFBhcnR5T3JpZ2luICsgcmVzb3VyY2VQYXRo
OwotICAgICAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2ll
IjsKLSAgICAgICAgY29uc3Qgc3ViUGF0aFRvR2V0Q29va2llcyA9ICIvZ2V0LWNvb2tpZXMucGhw
P25hbWUxPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZTsKLSAgICAgICAgdmFyIG5ld1dpbjsKLSAg
ICAgICAgZnVuY3Rpb24gcnVuKCkgewotICAgICAgICAgICAgY29uc29sZS5sb2coIlJ1bm5pbmcg
dGVzdC4iKTsKLSAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9y
aWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHJlc291cmNlUGF0aCA9
ICIvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMiOworICAgIGNvbnN0IHRoaXJkUGFydHlCYXNlVXJs
ID0gdGhpcmRQYXJ0eU9yaWdpbiArIHJlc291cmNlUGF0aDsKKyAgICBjb25zdCBmaXJzdFBhcnR5
Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9HZXRD
b29raWVzID0gIi9nZXQtY29va2llcy5waHA/bmFtZTE9IiArIGZpcnN0UGFydHlDb29raWVOYW1l
OworICAgIHZhciBuZXdXaW47CiAKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKHRoaXJkUGFydHlPcmlnaW4sIHRydWUpOwotICAgICAgICAgICAg
aWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRoaXJkUGFydHlP
cmlnaW4pKQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0
IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc0hhc0hhZE5vblJlY2VudFVzZXJJbnRlcmFjdGlvbih0aGlyZFBhcnR5T3JpZ2luLCB0
cnVlKTsKLSAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2Vy
SW50ZXJhY3Rpb24odGhpcmRQYXJ0eU9yaWdpbikpCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7Ci0gICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7Cisg
ICAgZnVuY3Rpb24gcnVuKCkgeworICAgICAgICBjb25zb2xlLmxvZygiUnVubmluZyB0ZXN0LiIp
OworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOwogCi0gICAgICAgICAgICBjb25zb2xl
LmxvZygiQWJvdXQgdG8gY2FsbCB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0
aXRpb25pbmcoKS4iKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZyhmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5s
b2coIkFib3V0IHRvIG9wZW4gdGhlIG5ldyB3aW5kb3cuIik7Ci0gICAgICAgICAgICAgICAgbmV3
V2luID0gd2luZG93Lm9wZW4odGhpcmRQYXJ0eU9yaWdpbiArICIvc3RvcmFnZUFjY2Vzcy9yZXNv
dXJjZXMvc2V0LWNvb2tpZS1hbmQtcmVwb3J0LWJhY2suaHRtbCIsICJ0ZXN0V2luZG93Iik7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkg
b25sb2FkPSJydW4oKSI+CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9w
ZW5XaW5kb3dzKCk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UodGhpcmRQYXJ0eU9yaWdpbiwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5l
ci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5T3JpZ2luKSkKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNv
dXJjZS4iKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkTm9uUmVjZW50
VXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmlnaW4sIHRydWUpOworICAgICAgICBpZiAoIXRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmln
aW4pKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9y
IHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hl
bkNvbXBsZXRlKHRydWUpOworCisgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBjYWxsIHRl
c3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpLiIpOworICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgY29uc29sZS5sb2coIkFib3V0IHRvIG9wZW4gdGhlIG5ldyB3aW5k
b3cuIik7CisgICAgICAgICAgICBuZXdXaW4gPSB3aW5kb3cub3Blbih0aGlyZFBhcnR5T3JpZ2lu
ICsgIi9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1yZXBvcnQtYmFjay5o
dG1sIiwgInRlc3RXaW5kb3ciKTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343550</attachid>
            <date>2018-06-25 15:36:14 -0700</date>
            <delta_ts>2018-06-26 10:06:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186903-20180625153613.patch</filename>
            <type>text/plain</type>
            <size>36734</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0Nzk3MDY1MzVkZWU0ZjA2
YmJiMjdkZjA1YzNmOTUyNmJkN2Q3NTcuLmY1ZmIyZjBjYWExZDJhOTU3MDM1NmQ3MWUwM2JjYWRi
MmYzY2YxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTgtMDYtMjUgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBNYWtlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWlucygpIHdhaXQgZm9yIHRoZSBuZXR3b3JrIHByb2Nlc3MgYmVm
b3JlIGNhbGxpbmcgaXRzIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMzUwMTgy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggc3RvcmVzIHRoZSBjYWxsYmFjayBzZW50IHRvCisgICAgICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucygpLAor
ICAgICAgICBzZXRzIHVwIGEgY29udGV4dCBJRCwgYW5kIHNlbmRzIHRoYXQgSUQgdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcyB3aGVuCisgICAgICAgIGFza2luZyBpdCB0byB1cGRhdGUgY29va2llIHBh
cnRpdGlvbmluZyBhbmQgYmxvY2tpbmcuIFRoZSBuZXR3b3JrCisgICAgICAgIHByb2Nlc3MgdGhl
biB0ZWxscyB0aGUgVUkgcHJvY2VzcyB3aGVuIGl0J3MgZG9uZSwgYXQgd2hpY2ggcG9pbnQgdGhl
CisgICAgICAgIGNhbGxiYWNrIGlzIGNhbGxlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBt
ZWFudCB0byBhZGRyZXNzIGxheW91dCB0ZXN0IGZsYWtpbmVzcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFVw
ZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Fu
ZFNldFRlc3RpbmdDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaDoKKwogMjAxOC0wNi0yMiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3Ro
eUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVjYWxjIHN0eWxlcyBldmVyeSB0aW1lIGRlZmF1bHRB
cHBlYXJhbmNlIGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IDE4NGQxMjdjMzhiZjY2YWY1ZTZjMDFkZjgwMDM5YjIyMDZm
OWU0NTguLjY3YmM5ZTFkYmU2ZjUwYTI4OGRkNzY1ZDQxMzQwNWFjNWY1YWE3YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00MDMs
MTAgKzQwMywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiB9CiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9j
aywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9j
aywgYm9vbCBzaG91bGRDbGVhckZpcnN0LCB1aW50NjRfdCBjYWxsYmFja0lkKQogewogICAgIGlm
IChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
c2V0UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFy
dGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
LCBzaG91bGRDbGVhckZpcnN0KTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRVcGRhdGVQYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhjYWxsYmFja0lkKSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmUzNDkzMTli
MWE0ZGI4ZDM0ODg0YmJiNTE5MjQ4NWEwNTA1MjI4NC4uOTdlMmY1ZjUyZmNlZWUzYjhkNDcxNzY1
ZjAwZDEyMTBhNTFiMGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50
U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAg
dm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3Qs
IHVpbnQ2NF90IGNhbGxiYWNrSWQpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDgzNzZiYmM5YjQ4YTZiNDEzOGM0MTRhYmRkOWE2Y2M4Zjk0ZWVhZGIuLjRiZmQ2YzI3
OWY4ZGVmZmIyNzVlNWQ1OGFkNjBhMjg0NWJiY2VjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODEs
NyArODEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgUHJlY29ubmVjdFRvKFdlYkNvcmU6OlVSTCB1cmwsIGVudW0gV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAjaWYgSEFWRShDRk5F
VFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8
U3RyaW5nPiBkb21haW5zVG9QYXJ0aXRpb24sIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2Nr
LCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wg
c2hvdWxkQ2xlYXJGaXJzdCkKKyAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRv
bWFpbnNUb1BhcnRpdGlvbiwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIFZlY3RvcjxT
dHJpbmc+IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVh
ckZpcnN0LCB1aW50NjRfdCBjYWxsYmFja0lkKQogICAgIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5n
IGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgY29udGV4dElkKQogICAgIEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQogICAgIEdyYW50U3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3Ry
aW5nIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZTdi
MmVlYzQxNTYyZDI5ZmYwYjI3OWE5NGFiZWE2NDZlODRhM2IyMy4uMTE3YTU1MTAwZGNmYWQ0NGYx
YzI2MjI0OTFmYjBjZGQzMjRhNGUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yMzQsNiArMjM0LDEy
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcygpCiAKICAg
ICB3aGlsZSAoIW1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy5p
c0VtcHR5KCkpCiAgICAgICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0Nh
bGxiYWNrcy50YWtlKG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNr
cy5iZWdpbigpLT5rZXkpKCk7CisKKyAgICB3aGlsZSAoIW1fdXBkYXRlUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNDYWxsYmFja01hcC5pc0VtcHR5KCkpCisgICAgICAgIG1fdXBkYXRlUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXNDYWxsYmFja01hcC50YWtlKG1fdXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXNDYWxsYmFja01hcC5iZWdpbigpLT5rZXkpKCk7CisgICAgCisgICAgd2hpbGUgKCFtX3N0
b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdG9y
YWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC50YWtlKG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
Q2FsbGJhY2tNYXAuYmVnaW4oKS0+a2V5KShmYWxzZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC00MzEsNiArNDM3LDI0IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRf
dCBsb2FkZXJJCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0
aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2Fn
ZSgpKSB7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgYXV0byBjYWxsYmFja0lkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3VwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzQ2FsbGJhY2tNYXAuYWRk
KGNhbGxiYWNrSWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhz
ZXNzaW9uSUQsIGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZp
cnN0OjpZZXMsIGNhbGxiYWNrSWQpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQor
eworICAgIG1fdXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNDYWxsYmFja01hcC50YWtlKGNh
bGxiYWNrSWQpKCk7Cit9CisKIHN0YXRpYyB1aW50NjRfdCBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb250ZXh0SWQoKQogewogICAgIHN0YXRpYyB1aW50NjRfdCBuZXh0Q29udGV4dElkID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggNmNjNTIxYzZhYzFkNGM0Y2YwYWE0ODcyNzQ5ODEwN2MyMGEzYTQ2Zi4u
ZjcwN2M2OTI5MWY2ODEyMDQzN2NhYzhjM2YyM2I3ODNmN2ViOTc1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJ
T05JTkcpCisgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1Bh
cnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVh
ckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7
CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spOwpAQCAtMTQ0LDYgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGxvYWRl
cklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJU
SVRJT05JTkcpCisgICAgdm9pZCBkaWRVcGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llcyh1aW50
NjRfdCBjYWxsYmFja0lkKTsKICAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJv
b2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29u
dGV4dElkKTsKICNlbmRpZgpAQCAtMTc2LDcgKzE3OCw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgeyAwIH07CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+PiBtX3dyaXRlQmxvYlRvRmls
ZVBhdGhDYWxsYmFja01hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4+IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2Fs
bGJhY2tNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
Pj4gbV91cGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0NhbGxiYWNrTWFwOworICAgIEhhc2hN
YXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4+IG1f
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPj4gbV9hbGxT
dG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5OTZhNGE1OTVkMjkz
NTM3Mjg3ZDJlMGE2NzIyMjk4M2YwYzJiNTA1Li5iMWJhOTI5NTliODhjZThmM2ZmM2U5MGFjYWMw
NzBjMzgwZWMwZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00Nyw2ICs0
Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIENhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVy
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlIHByb3RlY3Rpb25TcGFjZSkKICNlbmRpZgogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKQorICAgIERpZFVwZGF0ZVBhcnRpdGlvbk9yQmxvY2tDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSWQpCiAgICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoYm9vbCB3
YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNSZXN1bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBmYmQ1YmI1NWFiNTQ4YzNmNjJkODgwMWMwMTdk
ZTkyZWQ1M2I0YTU3Li41Y2JiMTYwMTBlYjYyYmM4MzRmNWNlYjk1MWY1NGMwZWQzZWQwNTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTEzMDIsOSArMTMwMiwxMCBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKENvbXBsZXRp
b25IYW5kbGVyPAogI2VuZGlmCiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUGFydGl0aW9uID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb1BhcnRpdGlvbiksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NU
aHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewotICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKLSAgICAg
ICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgbV9zdGF0aXN0
aWNzUXVldWUtPmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJEb25lIHVwZGF0aW5nIGNvb2tpZSBwYXJ0aXRp
b25pbmcgYW5kIGJsb2NraW5nLiIpOwpAQCAtMTMyMCwxMCArMTMyMSw2IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21h
aW5zKGNvbnN0IFZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzaG91bGRDbGVhckZpcnN0LCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1BhcnRpdGlvbiA9IGNyb3NzVGhyZWFkQ29weShkb21h
aW5zVG9QYXJ0aXRpb24pLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5z
VG9CbG9jayksIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayA9IGNyb3NzVGhyZWFk
Q29weShkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2spXSAoKSB7Ci0gICAgICAgIG1f
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKGRv
bWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgfSk7Ci0KICAgICBpZiAoc2hvdWxk
Q2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZZXMpCiAgICAgICAgIHJlc2V0Q29va2ll
UGFydGl0aW9uaW5nU3RhdGUoKTsKICAgICBlbHNlIHsKQEAgLTEzNDAsNyArMTMzNywxMyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9u
aW5nRm9yRG9tYWlucyhjb25zdCBWZQogICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1Rv
QmxvY2spCiAgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4o
ZG9tYWluKS5pc01hcmtlZEZvckNvb2tpZUJsb2NraW5nID0gdHJ1ZTsKIAotICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzaG91bGRD
bGVhckZpcnN0LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1BhcnRp
dGlvbiA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9QYXJ0aXRpb24pLCBkb21haW5zVG9CbG9j
ayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9jayksIGRvbWFpbnNUb05laXRoZXJQYXJ0
aXRpb25Ob3JCbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2spLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgbV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llc0hhbmRsZXIoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9j
aywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0LCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgbV9z
dGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclBhcnRpdGlvbmluZ1N0YXRl
Rm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBlZTY4
ZTg1MGQ4MzM1N2E1OGY0MTE5MGQyYzcxNWFhZWRhNjg2YmFiLi4xZTQyMWVmZGYyNWViMDM4MGNj
NDc2MzgyNWE0MDNmODExZTA4ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNjgsMTIgKzY4LDEy
IEBAIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyB7CiAKIGNsYXNzIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgVXBkYXRlUHJldmFsZW50
RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCk+OworICAgIHVzaW5n
IFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0
aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmly
c3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OwogICAgIHVzaW5nIEhhc1N0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIGhhc0FjY2Vz
cyk+JiYgY2FsbGJhY2spPjsKICAgICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0g
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBj
YWxsYmFjayk+OwogICAgIHVzaW5nIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gV1RG
OjpGdW5jdGlvbjx2b2lkKCk+OwogICAgIHVzaW5nIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5k
bGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPjsKLSAgICBz
dGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25z
dCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFdURjo6VmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0KSB7IH0sIEhhc1N0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0g
W10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciYm
IGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJikgeyB9LCBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciYmIHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oKSB7IH0sIFJlbW92ZVByZXZhbGVudERvbWFpbnNI
YW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgV1RGOjpWZWN0b3I8U3Ry
aW5nPiYpIHsgfSkKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwg
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlz
RXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
c0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
c0hhbmRsZXIgPSBbXShjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2sgPSBbXSgpIHsgfSkgeyB9LCBI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50
NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIEdyYW50U3RvcmFnZUFjY2Vz
c0hhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIHVpbnQ2NF90LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXIm
JiByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFtdKCkgeyB9LCBSZW1vdmVQcmV2YWxl
bnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10gKGNvbnN0IFdURjo6
VmVjdG9yPFN0cmluZz4mKSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2spLCBpc0VwaGVtZXJhbCwgV1RGTW92ZSh1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBX
VEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZNb3ZlKGdyYW50U3Rv
cmFnZUFjY2Vzc0hhbmRsZXIpLCBXVEZNb3ZlKHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVy
KSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CmluZGV4IGMzZjMxODJkZjA1YzhmMWM1NTgwMzFiNWM1ZmVhNGMwMWNkM2NkYzUuLjdkMTgxYjlj
ZTY5MjYzOGYzNTZiOGUxZmFiOTBlYTk1NWRhOTkwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC00
Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGll
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CkBAIC0xMjA1LDEwICsxMjA2
LDE0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YUZvclRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW5zKE9wdGlvblNldDxXZWJzCiB9CiAKICNpZiBIQVZFKENGTkVUV09SS19T
VE9SQUdFX1BBUlRJVElPTklORykKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6dXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2Nr
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
LCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+
c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhtX3Nlc3Npb25JRCwgZG9t
YWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlv
bk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0ID09IFNob3VsZENsZWFyRmlyc3Q6OlllcykpOwor
ICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBwcm9jZXNzLT51cGRhdGVQcmV2
YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhtX3Nlc3Npb25JRCwgZG9tYWlu
c1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBzaG91bGRDbGVhckZpcnN0LCAgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQogfQogCiB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhh
c0FjY2Vzcyk+JiYgY2FsbGJhY2spCkBAIC0xNDcyLDE1ICsxNDc3LDE1IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FuZFNldFRlc3RpbmdDYWxs
YmFjayhGdW5jdGlvCiAgICAgfQogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJ
T05JTkcpCi0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnksIFdURk1vdmUoY2FsbGJhY2spLCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgp
LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ss
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ss
IFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkgeworICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29u
ZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENs
ZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ewogICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9u
LCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91
bGRDbGVhckZpcnN0KTsKLSAgICB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykgeworICAgICAgICAgICAgd2Vh
a1RoaXMtPnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGRv
bWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFz
QWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAod2Vha1RoaXMpCi0g
ICAgICAgICAgICB3ZWFrVGhpcy0+aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihyZXNv
dXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Ci0gICAgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKSB7CisgICAg
ICAgICAgICB3ZWFrVGhpcy0+aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihyZXNvdXJj
ZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5n
cmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWlu
LCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgICAgIHdlYWtU
aGlzLT5ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5
RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICB9LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldICgpIHsKICAgICAgICAgaWYgKHdl
YWtUaGlzKQogICAgICAgICAgICAgd2Vha1RoaXMtPnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5k
bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOTc4YzNkOTQ1YzVjMDgzY2JjZmNmNjdjODQyYWIyNjM5
ZDAwNzFhYS4uMWE1NmEwMTg2OTg1NTFlZWMzYTYwOGQ0NmM0NjgyMmNlNDY1MmI5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaApAQCAtMTMwLDEzICsxMzAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0
YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlucywgRnVuY3Rpb248dm9pZChIYXNoU2V0
PFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdPUktf
U1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFy
dGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFy
Rmlyc3QpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBT
dHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ss
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ss
IFNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4m
Jik7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRl
ZCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25z
dCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4s
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKCk7CiAgICAgdm9pZCByZW1vdmVQcmV2YWxlbnREb21haW5z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChi
b29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BG
cmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRF
bmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsK
ICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmlu
ZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29s
IHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBmYjQ2Y2VlNzYyNzE2NzljNTA2ODgyMjQyYmJjOWRiMWVlMjk3YzBkLi45ZTY4
NjRhNGIwNTY4M2NhYzI0MmQyN2FiYjE5N2FkMGJiZjQ2NWQwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTgtMDYtMjUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBNYWtlIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucygpIHdhaXQgZm9y
IHRoZSBuZXR3b3JrIHByb2Nlc3MgYmVmb3JlIGNhbGxpbmcgaXRzIGNhbGxiYWNrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5MDMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQxMzUwMTgyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3Jh
Z2UtYWNjZXNzLXVuZGVyLW9wZW5lci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sOgor
ICAgICAgICAgICAgTW92ZWQgdGhlIGNvZGUgYmxvY2sgdG8gdGhlIHBhZ2UncyBib2R5IGluc3Rl
YWQgb2YgaXRzIGhlYWQuCisgICAgICAgICAgICBBZGRlZCBhbiBpbml0aWFsIGNvbnNvbGUgbG9n
IHN0YXRlbWVudC4gVGhlIHJlYXNvbiBmb3IgdGhlc2UKKyAgICAgICAgICAgIGNoYW5nZXMgaXMg
dGhhdCB3ZSdyZSBzZWVpbmcgZmxha3kgdGltZW91dHMgd2l0aCBubyBvdXRwdXQuCisKIDIwMTgt
MDYtMjIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjIzMDk1MCk6IFtHVEtdIFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKCk6IFdlYktpdFdlYlByb2Nlc3Mga2lsbGVkIGJ5IFNJ
R1NFR1YgKEFTU0VSVElPTiBGQUlMRUQ6IGl0ICE9IG1fdGlsZXMuZW5kKCkpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nl
c3MtdW5kZXItb3BlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhwZWN0ZWQudHh0
CmluZGV4IDUzMDg4MDQxNDIxMWJmYjg3ZTMxNmRmNWIxNWU0MjFlYTIxOGQ3NWYuLmJjNWE4MDk4
NTE1Mzg3MDcxZGNlMWFlYjdjYTVlMjYwNjRlOWFhMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVu
ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9ncmFudC1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItZXhwZWN0ZWQudHh0CkBAIC0xLDcg
KzEsOCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU0OiBSdW5uaW5nIHRlc3QuCi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjc6IEFib3V0IHRvIGNhbGwgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBk
YXRlQ29va2llUGFydGl0aW9uaW5nKCkuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjk6IEFib3V0
IHRvIG9wZW4gdGhlIG5ldyB3aW5kb3cuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNDM6IEFib3V0
IHRvIG9wZW4gdGhlIHRoaXJkIHBhcnR5IGlmcmFtZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA4
OiBGaXJzdCBKYXZhU2NyaXB0IHN0YXRlbWVudC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1Nzog
UnVubmluZyB0ZXN0LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDczOiBBYm91dCB0byBjYWxsIHRl
c3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpLgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDc1OiBBYm91dCB0byBvcGVuIHRoZSBuZXcgd2luZG93LgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDQ1OiBBYm91dCB0byBvcGVuIHRoZSB0aGlyZCBwYXJ0eSBpZnJhbWUuCiBU
ZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIHdpbmRvdyBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3
aXRoIG5vbi1yZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBnZXRzIGltbWVkaWF0ZSBzdG9yYWdlIGFj
Y2VzcyB1bmRlciBpdHMgb3BlbmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFn
ZS1hY2Nlc3MtdW5kZXItb3BlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLmh0bWwKaW5kZXggMWNi
ZDFjNzdiOWIzMWEyZjljZjQ3OTg0Mzk2YWM2Yzc3MmMwMDUxMy4uYzRhM2U0NzVhY2VjM2ExYTA0
ZTMwYjVlZmI2YmMxZWUyZGZiODdlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdlLWFj
Y2Vzcy11bmRlci1vcGVuZXIuaHRtbApAQCAtMiw3NiArMiw4MCBAQAogPGh0bWw+CiA8aGVhZD4K
ICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgY3Jvc3Mt
b3JpZ2luIHdpbmRvdyBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3aXRoIG5vbi1yZWNlbnQgdXNl
ciBpbnRlcmFjdGlvbiBnZXRzIGltbWVkaWF0ZSBzdG9yYWdlIGFjY2VzcyB1bmRlciBpdHMgb3Bl
bmVyLiIpOwotICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuKCkiPgorPHNjcmlwdD4KKyAgICBjb25zb2xlLmxvZygiRmlyc3QgSmF2YVNjcmlw
dCBzdGF0ZW1lbnQuIik7CiAKLSAgICAgICAgZnVuY3Rpb24gc2V0RW5hYmxlRmVhdHVyZShlbmFi
bGUpIHsKLSAgICAgICAgICAgIGlmICghZW5hYmxlKQotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKLSAgICAgICAgICAgIGludGVy
bmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGUpOwotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUp
OwotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlQWNjZXNzQVBJRW5hYmxlZChlbmFi
bGUpOwotICAgICAgICB9CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBjcm9zcy1vcmln
aW4gd2luZG93IGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpdGggbm9uLXJlY2VudCB1c2VyIGlu
dGVyYWN0aW9uIGdldHMgaW1tZWRpYXRlIHN0b3JhZ2UgYWNjZXNzIHVuZGVyIGl0cyBvcGVuZXIu
Iik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworICAgIGZ1bmN0aW9u
IHNldEVuYWJsZUZlYXR1cmUoZW5hYmxlKSB7CisgICAgICAgIGlmICghZW5hYmxlKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOworICAg
ICAgICBpbnRlcm5hbHMuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChl
bmFibGUpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKGVu
YWJsZSk7CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotICAgICAgICB9CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KIAotICAg
ICAgICBmdW5jdGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgewotICAgICAgICAg
ICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAg
ICAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7Ci0gICAgICAgICAgICBpZiAob25Mb2FkSGFuZGxl
cikgewotICAgICAgICAgICAgICAgIGVsZW1lbnQub25sb2FkID0gb25Mb2FkSGFuZGxlcjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgZnVuY3Rpb24gb3BlbklmcmFtZSh1cmwsIG9uTG9hZEhhbmRsZXIpIHsKKyAgICAg
ICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAg
ICAgICBlbGVtZW50LnNyYyA9IHVybDsKKyAgICAgICAgaWYgKG9uTG9hZEhhbmRsZXIpIHsKKyAg
ICAgICAgICAgIGVsZW1lbnQub25sb2FkID0gb25Mb2FkSGFuZGxlcjsKICAgICAgICAgfQorICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KIAotICAgICAg
ICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgewotICAgICAgICAgICAgaWYgKGV2ZW50
Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQotICAgICAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsK
LSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVk
IGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsK
KyAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICBpZiAoZXZlbnQu
b3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgaWYgKGV2
ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBl
Y3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOwogCi0gICAgICAgICAgICBuZXdXaW4uY2xv
c2UoKTsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBvcGVuIHRoZSB0aGlyZCBw
YXJ0eSBpZnJhbWUuIik7Ci0gICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJs
ICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgcmVjZWl2ZSBmaXJzdC1w
YXJ0eSBjb29raWUuIiwgZmluaXNoVGVzdCk7Ci0gICAgICAgIH0KKyAgICAgICAgbmV3V2luLmNs
b3NlKCk7CisgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBvcGVuIHRoZSB0aGlyZCBwYXJ0
eSBpZnJhbWUuIik7CisgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQ
YXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNob3VsZCByZWNlaXZlIGZpcnN0LXBhcnR5IGNv
b2tpZS4iLCBmaW5pc2hUZXN0KTsKKyAgICB9CiAKLSAgICAgICAgY29uc3QgdGhpcmRQYXJ0eU9y
aWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOwotICAgICAgICBjb25zdCByZXNvdXJjZVBh
dGggPSAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzIjsKLSAgICAgICAgY29uc3QgdGhpcmRQYXJ0
eUJhc2VVcmwgPSB0aGlyZFBhcnR5T3JpZ2luICsgcmVzb3VyY2VQYXRoOwotICAgICAgICBjb25z
dCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29va2llIjsKLSAgICAgICAgY29u
c3Qgc3ViUGF0aFRvR2V0Q29va2llcyA9ICIvZ2V0LWNvb2tpZXMucGhwP25hbWUxPSIgKyBmaXJz
dFBhcnR5Q29va2llTmFtZTsKLSAgICAgICAgdmFyIG5ld1dpbjsKLSAgICAgICAgZnVuY3Rpb24g
cnVuKCkgewotICAgICAgICAgICAgY29uc29sZS5sb2coIlJ1bm5pbmcgdGVzdC4iKTsKLSAgICAg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dENhbk9wZW5XaW5kb3dzKCk7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHJlc291cmNlUGF0aCA9ICIvc3RvcmFnZUFjY2Vz
cy9yZXNvdXJjZXMiOworICAgIGNvbnN0IHRoaXJkUGFydHlCYXNlVXJsID0gdGhpcmRQYXJ0eU9y
aWdpbiArIHJlc291cmNlUGF0aDsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJm
aXJzdFBhcnR5Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9HZXRDb29raWVzID0gIi9nZXQt
Y29va2llcy5waHA/bmFtZTE9IiArIGZpcnN0UGFydHlDb29raWVOYW1lOworICAgIHZhciBuZXdX
aW47CiAKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKHRoaXJkUGFydHlPcmlnaW4sIHRydWUpOwotICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRoaXJkUGFydHlPcmlnaW4pKQotICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCBy
ZXNvdXJjZS4iKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZE5v
blJlY2VudFVzZXJJbnRlcmFjdGlvbih0aGlyZFBhcnR5T3JpZ2luLCB0cnVlKTsKLSAgICAgICAg
ICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odGhp
cmRQYXJ0eU9yaWdpbikpCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90
IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7Ci0gICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRD
bG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgZnVuY3Rpb24gcnVu
KCkgeworICAgICAgICBjb25zb2xlLmxvZygiUnVubmluZyB0ZXN0LiIpOworICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKHRydWUpOwogCi0gICAgICAgICAgICBjb25zb2xlLmxvZygiQWJvdXQgdG8g
Y2FsbCB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKS4iKTsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
ZyhmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkFib3V0IHRvIG9w
ZW4gdGhlIG5ldyB3aW5kb3cuIik7Ci0gICAgICAgICAgICAgICAgbmV3V2luID0gd2luZG93Lm9w
ZW4odGhpcmRQYXJ0eU9yaWdpbiArICIvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvc2V0LWNvb2tp
ZS1hbmQtcmVwb3J0LWJhY2suaHRtbCIsICJ0ZXN0V2luZG93Iik7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW4oKSI+
CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3Nh
Z2UsIGZhbHNlKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodGhpcmRQ
YXJ0eU9yaWdpbiwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5T3JpZ2luKSkKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkTm9uUmVjZW50VXNlckludGVyYWN0aW9u
KHRoaXJkUGFydHlPcmlnaW4sIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmlnaW4pKQorICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rp
b24uIik7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUp
OworCisgICAgICAgIGNvbnNvbGUubG9nKCJBYm91dCB0byBjYWxsIHRlc3RSdW5uZXIuc3RhdGlz
dGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpLiIpOworICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgY29uc29sZS5sb2coIkFib3V0IHRvIG9wZW4gdGhlIG5ldyB3aW5kb3cuIik7CisgICAgICAg
ICAgICBuZXdXaW4gPSB3aW5kb3cub3Blbih0aGlyZFBhcnR5T3JpZ2luICsgIi9zdG9yYWdlQWNj
ZXNzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1yZXBvcnQtYmFjay5odG1sIiwgInRlc3RXaW5k
b3ciKTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343614</attachid>
            <date>2018-06-26 10:06:18 -0700</date>
            <delta_ts>2018-06-26 11:26:37 -0700</delta_ts>
            <desc>Follow-up fix</desc>
            <filename>bug-186903-20180626100617.patch</filename>
            <type>text/plain</type>
            <size>2319</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1ZmE3NTEyM2M1NzAxN2Mz
YTQ2MGY3YWM2ZmQyOTc5YWU1YThjMzUuLjJhZTRlNmM2MmI0NDJhYjVmOTc5NjkzZDg4YzBlNWJk
ZDk0ZGVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMDYtMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3Rp
Y3M6IE1ha2UgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0
aXRpb25pbmdGb3JEb21haW5zKCkgd2FpdCBmb3IgdGhlIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUg
Y2FsbGluZyBpdHMgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NjkwMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDEzNTAxODI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9sbG93LXVw
IGZpeCBhZnRlciByMjMzMTgwIHRvIGFkZHJlc3MgYW4gQVBJIHRlc3QgY3Jhc2guIFdlIG5lZWQg
dG8ga2VlcCB0aGUKKyAgICAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSBhbGl2ZSBkdXJpbmcgdGhl
IGFzeW5jIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzCisg
ICAgICAgIHJlcXVlc3QgdG8gbWFrZSBzdXJlIGl0IGNvbXBsZXRlcy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llcyk6CisKIDIwMTgtMDYtMjYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmku
RnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl0gJ2RlcmVmJzogaXMgbm90IGEgbWVtYmVy
IG9mICdXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWluczo6PGxhbWJkYV85ZDc2MWE2ZGMxMmQ5NWRiN2ZhMmQ2ZjNm
NWFhMjZmYT4nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxMTdhNTUxMDBkY2ZhZDQ0ZjFjMjYyMjQ5MWZi
MGNkZDMyNGE0ZTBiLi5lMTgzOGNiNjEyOGMwMDIxNjIyOTdkZmVmZDk1NDE0ODI4MWUxNmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKQEAgLTQ0NSw3ICs0NDUsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6
UwogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQo
KTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXBkYXRlUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXND
YWxsYmFja01hcC5hZGQoY2FsbGJhY2tJZCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV91cGRhdGVQYXJ0aXRpb25PckJsb2NrQ29va2llc0NhbGxiYWNrTWFwLmFk
ZChjYWxsYmFja0lkLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0b2tlbiA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKICAgICBBU1NFUlRfVU5V
U0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIHNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhzZXNzaW9uSUQsIGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRv
bWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91
bGRDbGVhckZpcnN0OjpZZXMsIGNhbGxiYWNrSWQpLCAwKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>