<?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>238524</bug_id>
          
          <creation_ts>2022-03-29 15:11:09 -0700</creation_ts>
          <short_desc>Move canAccessStorage() check from SecurityOrigin to ScriptExecutionContext</short_desc>
          <delta_ts>2022-04-09 01:29:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856211</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-29 15:11:09 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856215</commentid>
    <comment_count>1</comment_count>
      <attachid>456069</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-29 15:27:15 -0700</bug_when>
    <thetext>Created attachment 456069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857134</commentid>
    <comment_count>2</comment_count>
      <attachid>456318</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-31 21:12:25 -0700</bug_when>
    <thetext>Created attachment 456318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857346</commentid>
    <comment_count>3</comment_count>
      <attachid>456383</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-01 11:52:29 -0700</bug_when>
    <thetext>Created attachment 456383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858614</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-05 15:12:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/91318259&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858697</commentid>
    <comment_count>5</comment_count>
      <attachid>456785</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-05 23:04:35 -0700</bug_when>
    <thetext>Created attachment 456785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858863</commentid>
    <comment_count>6</comment_count>
      <attachid>456785</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 09:17:41 -0700</bug_when>
    <thetext>Comment on attachment 456785
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:99
&gt; +    CDMPrivate::LocalStorageAccess access = CDMPrivate::LocalStorageAccess::Allowed;

auto

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:101
&gt; +    if (isEphemeral || !document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::LocalStorage) || !document-&gt;canAccessResourceAsThirdParty())

The additional canAccessResourceAsThirdParty() check doesn&apos;t look great. Why is this needed now?
Seems to make the code more complicated than before your patch.

&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:91
&gt; +    bool isTransient = !context.canAccessResourceAsThirdParty();

It is not directly obvious that these are equivalent.

&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:112
&gt; +    bool isTransient = !context.canAccessResourceAsThirdParty();

ditto.

&gt; Source/WebCore/Modules/storage/StorageManager.cpp:70
&gt; +    if (!context-&gt;canAccessResource(ScriptExecutionContext::ResourceType::LocalStorage))

This change seems Web observable, why is it OK? Is it the ordering of the spec?

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:584
&gt; +    if (m_storageBlockingPolicy != StorageBlockingPolicy::BlockThirdParty)

I am not sure I understand why BlockThirdParty behaves differently from BlockAll / AllowAll.

&gt; Source/WebCore/dom/ScriptExecutionContext.h:313
&gt; +    WEBCORE_EXPORT bool canAccessResource(ResourceType);

Can this be const?

&gt; Source/WebCore/dom/ScriptExecutionContext.h:314
&gt; +    bool canAccessResourceAsThirdParty();

ditto.

Also, this is a bit unclear. Which resource?

&gt; Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:571
&gt; +    return !frame-&gt;document()-&gt;canAccessResource(ScriptExecutionContext::ResourceType::ApplicationCache);

I have trouble seeing how this is equivalent. This seems to adduce that the origin of the current document is the same origin as the resource request URL. Why is that guaranteed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858928</commentid>
    <comment_count>7</comment_count>
      <attachid>456785</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-06 11:12:02 -0700</bug_when>
    <thetext>Comment on attachment 456785
Patch

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

&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:99
&gt;&gt; +    CDMPrivate::LocalStorageAccess access = CDMPrivate::LocalStorageAccess::Allowed;
&gt; 
&gt; auto

Sure.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:101
&gt;&gt; +    if (isEphemeral || !document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::LocalStorage) || !document-&gt;canAccessResourceAsThirdParty())
&gt; 
&gt; The additional canAccessResourceAsThirdParty() check doesn&apos;t look great. Why is this needed now?
&gt; Seems to make the code more complicated than before your patch.

As mentioned in the changelog... some types don&apos;t do this check here, but use it for deciding persistency.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:91
&gt;&gt; +    bool isTransient = !context.canAccessResourceAsThirdParty();
&gt; 
&gt; It is not directly obvious that these are equivalent.

canAccessDatabase(topOrigin) is equal to canAccessResourceAsThirdParty() &amp;&amp; canAccessResource(ResourceType::IndexedDB)
canAccessDatabase(nullptr) is equal to canAccessResource(ResourceType::IndexedDB). 
We already check canAccessResource(ResourceType::IndexedDB) above (with shouldThrowSecurityException), so we only need canAccessResourceAsThirdParty() here.

This patch eliminates a redundant check.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:112
&gt;&gt; +    bool isTransient = !context.canAccessResourceAsThirdParty();
&gt; 
&gt; ditto.

Ditto.

&gt;&gt; Source/WebCore/Modules/storage/StorageManager.cpp:70
&gt;&gt; +    if (!context-&gt;canAccessResource(ScriptExecutionContext::ResourceType::LocalStorage))
&gt; 
&gt; This change seems Web observable, why is it OK? Is it the ordering of the spec?

Actually we can remove the origin check below. If origin is null, this check will fail.

The spec says: 
If key’s origin is an opaque origin, then return failure.
If the user has disabled storage, then return failure.
The ordering of canAccessResource aligns with it.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:584
&gt;&gt; +    if (m_storageBlockingPolicy != StorageBlockingPolicy::BlockThirdParty)
&gt; 
&gt; I am not sure I understand why BlockThirdParty behaves differently from BlockAll / AllowAll.

I am not sure too, but this is align with original implementation. The patch does not change the original behavior.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.h:313
&gt;&gt; +    WEBCORE_EXPORT bool canAccessResource(ResourceType);
&gt; 
&gt; Can this be const?

Sure.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.h:314
&gt;&gt; +    bool canAccessResourceAsThirdParty();
&gt; 
&gt; ditto.
&gt; 
&gt; Also, this is a bit unclear. Which resource?

This check has no difference between different types..

&gt;&gt; Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:571
&gt;&gt; +    return !frame-&gt;document()-&gt;canAccessResource(ScriptExecutionContext::ResourceType::ApplicationCache);
&gt; 
&gt; I have trouble seeing how this is equivalent. This seems to adduce that the origin of the current document is the same origin as the resource request URL. Why is that guaranteed?

I can&apos;t find spec of appcache as it is deprecated, but it seems the origin must be the same as the page contains it https://webplatform.github.io/docs/apis/appcache/ApplicationCache/.
And the change passes existing tests according to bots (which might be good enough for a deprecated API?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858929</commentid>
    <comment_count>8</comment_count>
      <attachid>456785</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 11:16:02 -0700</bug_when>
    <thetext>Comment on attachment 456785
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:101
&gt;&gt;&gt; +    if (isEphemeral || !document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::LocalStorage) || !document-&gt;canAccessResourceAsThirdParty())
&gt;&gt; 
&gt;&gt; The additional canAccessResourceAsThirdParty() check doesn&apos;t look great. Why is this needed now?
&gt;&gt; Seems to make the code more complicated than before your patch.
&gt; 
&gt; As mentioned in the changelog... some types don&apos;t do this check here, but use it for deciding persistency.

I am just saying, there has got to be a way to write your new API so that it is not worse than the old one (in that it results in more verbose / complicated code).

We use to have a single canAccess() for each type. Now we have a canAccess() with the type as parameter but then we have an extra canAccessResourceAsThirdParty()? This seems unnecessarily complicated and I am having trouble reasoning about it.
We don&apos;t want people to make mistakes with those permissions so I think it is critical that the new API be very straightforward / easy to use. I personally don&apos;t think this achieves it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858931</commentid>
    <comment_count>9</comment_count>
      <attachid>456840</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-06 11:17:49 -0700</bug_when>
    <thetext>Created attachment 456840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858948</commentid>
    <comment_count>10</comment_count>
      <attachid>456840</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 11:39:44 -0700</bug_when>
    <thetext>Comment on attachment 456840
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:101
&gt; +    if (isEphemeral || !document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::LocalStorage) || !document-&gt;canAccessResourceAsThirdParty())

Can you please find a way to make your new API as easy to use as the previous one?

The new code here is more complicated. Security checks should be as easy / straightforward as possible to avoid getting them wrong.

We shouldn&apos;t need separate canAccessResource / canAccessResourceAsThirdParty functions when the previous code didn&apos;t need to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858951</commentid>
    <comment_count>11</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-06 11:52:33 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Comment on attachment 456840 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456840&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:101
&gt; &gt; +    if (isEphemeral || !document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::LocalStorage) || !document-&gt;canAccessResourceAsThirdParty())
&gt; 
&gt; Can you please find a way to make your new API as easy to use as the
&gt; previous one?
&gt; 
&gt; The new code here is more complicated. Security checks should be as easy /
&gt; straightforward as possible to avoid getting them wrong.
&gt; 
&gt; We shouldn&apos;t need separate canAccessResource / canAccessResourceAsThirdParty
&gt; functions when the previous code didn&apos;t need to.

The reason we didn&apos;t use separate functions is because the caller passes different parameter (without or without topOrigin) to check for different things (access check &amp; third-party check). It is actually more error-prone for callers as they need to understand when to pass topOrigin and what origin to pass. And for canAccess* function, it can&apos;t tell if the topOrigin is empty because of some error, or it&apos;s null because the caller doesn&apos;t want third-party check (we treat it as no third-party check).

The new API makes that clear by offering two separate functions (motivated by the FIXME in SecurityOrigin::canAccessStorage). 

When a new type is added, the developer needs to update CanAccessResourceType, get a chance to look at the checks (I think the new naming is more clearer about what is checked).

It might be clearer if canAccessResourceType() returns access type (e.g. Deny, Persistent, Session), but not all types have the difference so I didn&apos;t add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858955</commentid>
    <comment_count>12</comment_count>
      <attachid>456840</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 11:59:04 -0700</bug_when>
    <thetext>Comment on attachment 456840
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:101
&gt;&gt;&gt; +    if (isEphemeral || !document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::LocalStorage) || !document-&gt;canAccessResourceAsThirdParty())
&gt;&gt; 
&gt;&gt; Can you please find a way to make your new API as easy to use as the previous one?
&gt;&gt; 
&gt;&gt; The new code here is more complicated. Security checks should be as easy / straightforward as possible to avoid getting them wrong.
&gt;&gt; 
&gt;&gt; We shouldn&apos;t need separate canAccessResource / canAccessResourceAsThirdParty functions when the previous code didn&apos;t need to.
&gt; 
&gt; The reason we didn&apos;t use separate functions is because the caller passes different parameter (without or without topOrigin) to check for different things (access check &amp; third-party check). It is actually more error-prone for callers as they need to understand when to pass topOrigin and what origin to pass. And for canAccess* function, it can&apos;t tell if the topOrigin is empty because of some error, or it&apos;s null because the caller doesn&apos;t want third-party check (we treat it as no third-party check).
&gt; 
&gt; The new API makes that clear by offering two separate functions (motivated by the FIXME in SecurityOrigin::canAccessStorage). 
&gt; 
&gt; When a new type is added, the developer needs to update CanAccessResourceType, get a chance to look at the checks (I think the new naming is more clearer about what is checked).
&gt; 
&gt; It might be clearer if canAccessResourceType() returns access type (e.g. Deny, Persistent, Session), but not all types have the difference so I didn&apos;t add.

Then maybe there should be a single canAccessFunction() but with an extra mandatory parameter to indicate the behavior with regards to origin checks.

Sorry but canAccessResource(ResourceType) &amp; canAccessResourceAsThirdParty() (without type) are super confusing to me.

What adds to the confusion I think is that canAccessResourceAsThirdParty() doesn&apos;t take a resource type and the naming of the function too. Since to indicate we should only call this when in a third-party iframe but clearly that&apos;s not the case based on how it is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858966</commentid>
    <comment_count>13</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-06 12:14:50 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; Comment on attachment 456840 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456840&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:101
&gt; &gt;&gt;&gt; +    if (isEphemeral || !document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::LocalStorage) || !document-&gt;canAccessResourceAsThirdParty())
&gt; &gt;&gt; 
&gt; &gt;&gt; Can you please find a way to make your new API as easy to use as the previous one?
&gt; &gt;&gt; 
&gt; &gt;&gt; The new code here is more complicated. Security checks should be as easy / straightforward as possible to avoid getting them wrong.
&gt; &gt;&gt; 
&gt; &gt;&gt; We shouldn&apos;t need separate canAccessResource / canAccessResourceAsThirdParty functions when the previous code didn&apos;t need to.
&gt; &gt; 
&gt; &gt; The reason we didn&apos;t use separate functions is because the caller passes different parameter (without or without topOrigin) to check for different things (access check &amp; third-party check). It is actually more error-prone for callers as they need to understand when to pass topOrigin and what origin to pass. And for canAccess* function, it can&apos;t tell if the topOrigin is empty because of some error, or it&apos;s null because the caller doesn&apos;t want third-party check (we treat it as no third-party check).
&gt; &gt; 
&gt; &gt; The new API makes that clear by offering two separate functions (motivated by the FIXME in SecurityOrigin::canAccessStorage). 
&gt; &gt; 
&gt; &gt; When a new type is added, the developer needs to update CanAccessResourceType, get a chance to look at the checks (I think the new naming is more clearer about what is checked).
&gt; &gt; 
&gt; &gt; It might be clearer if canAccessResourceType() returns access type (e.g. Deny, Persistent, Session), but not all types have the difference so I didn&apos;t add.
&gt; 
&gt; Then maybe there should be a single canAccessFunction() but with an extra
&gt; mandatory parameter to indicate the behavior with regards to origin checks.
&gt; 
&gt; Sorry but canAccessResource(ResourceType) &amp; canAccessResourceAsThirdParty()
&gt; (without type) are super confusing to me.
&gt; 
&gt; What adds to the confusion I think is that canAccessResourceAsThirdParty()
&gt; doesn&apos;t take a resource type and the naming of the function too. Since to
&gt; indicate we should only call this when in a third-party iframe but clearly
&gt; that&apos;s not the case based on how it is used.

Okay, will try making it one function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859030</commentid>
    <comment_count>14</comment_count>
      <attachid>456863</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-06 14:47:34 -0700</bug_when>
    <thetext>Created attachment 456863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859274</commentid>
    <comment_count>15</comment_count>
      <attachid>456932</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-07 09:01:13 -0700</bug_when>
    <thetext>Created attachment 456932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859787</commentid>
    <comment_count>16</comment_count>
      <attachid>456932</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-08 10:46:19 -0700</bug_when>
    <thetext>Comment on attachment 456932
Patch

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

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:733
&gt; +    case ResourceType::ApplicationCache:

Same comment as for WebSQL, seems we only allow this as first party?

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:734
&gt; +    case ResourceType::Plugin:

Same comment as for WebSQL.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:735
&gt; +    case ResourceType::WebSQL:

Why does ResourceType::WebSQL fall through? Looks to me like we never allow WebSQL access as third party (looking at call sites). Therefore, it seems nonsensical to ever return AccessLevel::ThirdPartyAccess?
Seems we should either return FirstPartyAccess or NoAccess. Then the call sites can check for NoAccess to avoid confusion.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:738
&gt; +    case ResourceType::StorageManager:

Isn&apos;t this unused?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859808</commentid>
    <comment_count>17</comment_count>
      <attachid>457100</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 11:15:19 -0700</bug_when>
    <thetext>Created attachment 457100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859809</commentid>
    <comment_count>18</comment_count>
      <attachid>456932</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 11:17:17 -0700</bug_when>
    <thetext>Comment on attachment 456932
Patch

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

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:735
&gt;&gt; +    case ResourceType::WebSQL:
&gt; 
&gt; Why does ResourceType::WebSQL fall through? Looks to me like we never allow WebSQL access as third party (looking at call sites). Therefore, it seems nonsensical to ever return AccessLevel::ThirdPartyAccess?
&gt; Seems we should either return FirstPartyAccess or NoAccess. Then the call sites can check for NoAccess to avoid confusion.

Made it return NoAccess for third-party with these types.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:738
&gt;&gt; +    case ResourceType::StorageManager:
&gt; 
&gt; Isn&apos;t this unused?

Nice catch! Fixed to use it in StorageManager.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859844</commentid>
    <comment_count>19</comment_count>
      <attachid>457100</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-08 12:50:18 -0700</bug_when>
    <thetext>Comment on attachment 457100
Patch

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

&gt; Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp:50
&gt; +    if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) != ScriptExecutionContext::AccessLevel::FirstPartyAccess)

I think this would be clearer as:
if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) == ScriptExecutionContext::AccessLevel::NoAccess)

That is why I asked to make the previous changes.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:747
&gt; +            return AccessLevel::ThirdPartyAccess;

Something is still confusing here... `m_storageBlockingPolicy == StorageBlockingPolicy::BlockThirdParty` so this seems to indicate that third party storage access is forbidden.
However, we&apos;re returning AccessLevel::ThirdPartyAccess (which seems to indicate we&apos;re allowing access as third-party, since it is not NoAccess).

Either I am misreading or we have a bug or the naming is still confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859868</commentid>
    <comment_count>20</comment_count>
      <attachid>457100</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 13:30:07 -0700</bug_when>
    <thetext>Comment on attachment 457100
Patch

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

&gt;&gt; Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp:50
&gt;&gt; +    if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) != ScriptExecutionContext::AccessLevel::FirstPartyAccess)
&gt; 
&gt; I think this would be clearer as:
&gt; if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) == ScriptExecutionContext::AccessLevel::NoAccess)
&gt; 
&gt; That is why I asked to make the previous changes.

Oh I see, will update.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:747
&gt;&gt; +            return AccessLevel::ThirdPartyAccess;
&gt; 
&gt; Something is still confusing here... `m_storageBlockingPolicy == StorageBlockingPolicy::BlockThirdParty` so this seems to indicate that third party storage access is forbidden.
&gt; However, we&apos;re returning AccessLevel::ThirdPartyAccess (which seems to indicate we&apos;re allowing access as third-party, since it is not NoAccess).
&gt; 
&gt; Either I am misreading or we have a bug or the naming is still confusing.

As I said in the initial patch, a storage API can have three states: no storage allowed (no access),  in-memory storage only, persistent storage; so there are three access levels here.
If we return NoAccess, the caller can&apos;t tell the difference.
The confusion is caused by different types having different &quot;block&quot; policy; some types only have two states.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859872</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-08 13:35:55 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #20)
&gt; Comment on attachment 457100 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457100&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp:50
&gt; &gt;&gt; +    if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) != ScriptExecutionContext::AccessLevel::FirstPartyAccess)
&gt; &gt; 
&gt; &gt; I think this would be clearer as:
&gt; &gt; if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) == ScriptExecutionContext::AccessLevel::NoAccess)
&gt; &gt; 
&gt; &gt; That is why I asked to make the previous changes.
&gt; 
&gt; Oh I see, will update.
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:747
&gt; &gt;&gt; +            return AccessLevel::ThirdPartyAccess;
&gt; &gt; 
&gt; &gt; Something is still confusing here... `m_storageBlockingPolicy == StorageBlockingPolicy::BlockThirdParty` so this seems to indicate that third party storage access is forbidden.
&gt; &gt; However, we&apos;re returning AccessLevel::ThirdPartyAccess (which seems to indicate we&apos;re allowing access as third-party, since it is not NoAccess).
&gt; &gt; 
&gt; &gt; Either I am misreading or we have a bug or the naming is still confusing.
&gt; 
&gt; As I said in the initial patch, a storage API can have three states: no
&gt; storage allowed (no access),  in-memory storage only, persistent storage; so
&gt; there are three access levels here.
&gt; If we return NoAccess, the caller can&apos;t tell the difference.
&gt; The confusion is caused by different types having different &quot;block&quot; policy;
&gt; some types only have two states.

Do you mean that when StorageBlockingPolicy::BlockThirdParty policy is used and a third-party iframe is trying to access storage, we allow access but it uses a special in-memory only access and not the persistent storage?
If so, I believe the issue may be with the naming. Maybe AccessLevel should be something like, NoAccess/FullAccess/InMemoryAccess ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859875</commentid>
    <comment_count>22</comment_count>
      <attachid>457100</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 13:43:27 -0700</bug_when>
    <thetext>Comment on attachment 457100
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp:50
&gt;&gt;&gt;&gt; +    if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) != ScriptExecutionContext::AccessLevel::FirstPartyAccess)
&gt;&gt;&gt; 
&gt;&gt;&gt; I think this would be clearer as:
&gt;&gt;&gt; if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) == ScriptExecutionContext::AccessLevel::NoAccess)
&gt;&gt;&gt; 
&gt;&gt;&gt; That is why I asked to make the previous changes.
&gt;&gt; 
&gt;&gt; Oh I see, will update.
&gt; 
&gt; Do you mean that when StorageBlockingPolicy::BlockThirdParty policy is used and a third-party iframe is trying to access storage, we allow access but it uses a special in-memory only access and not the persistent storage?
&gt; If so, I believe the issue may be with the naming. Maybe AccessLevel should be something like, NoAccess/FullAccess/InMemoryAccess ?

Yes, you got it! I think the action should not be decided by this function, it should be decided by the caller... The function should basically say: &quot;you should deny/allow/treat it as third party&quot;, and the caller gets to decide what action to take... That&apos;s why I used FALLTHOUGH for WebSQL and the others types. They can decide how they want to treat 3rd party.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859879</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-08 13:54:33 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #22)
&gt; Comment on attachment 457100 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457100&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp:50
&gt; &gt;&gt;&gt;&gt; +    if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) != ScriptExecutionContext::AccessLevel::FirstPartyAccess)
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; I think this would be clearer as:
&gt; &gt;&gt;&gt; if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) == ScriptExecutionContext::AccessLevel::NoAccess)
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; That is why I asked to make the previous changes.
&gt; &gt;&gt; 
&gt; &gt;&gt; Oh I see, will update.
&gt; &gt; 
&gt; &gt; Do you mean that when StorageBlockingPolicy::BlockThirdParty policy is used and a third-party iframe is trying to access storage, we allow access but it uses a special in-memory only access and not the persistent storage?
&gt; &gt; If so, I believe the issue may be with the naming. Maybe AccessLevel should be something like, NoAccess/FullAccess/InMemoryAccess ?
&gt; 
&gt; Yes, you got it! I think the action should not be decided by this function,
&gt; it should be decided by the caller... The function should basically say:
&gt; &quot;you should deny/allow/treat it as third party&quot;, and the caller gets to
&gt; decide what action to take... That&apos;s why I used FALLTHOUGH for WebSQL and
&gt; the others types. They can decide how they want to treat 3rd party.

I still think we need to tweak the enum naming somehow to clarify this. Trying to come up with a proposal...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859881</commentid>
    <comment_count>24</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 14:00:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #23)
&gt; (In reply to Sihui Liu from comment #22)
&gt; &gt; Comment on attachment 457100 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=457100&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt;&gt; Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp:50
&gt; &gt; &gt;&gt;&gt;&gt; +    if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) != ScriptExecutionContext::AccessLevel::FirstPartyAccess)
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; I think this would be clearer as:
&gt; &gt; &gt;&gt;&gt; if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) == ScriptExecutionContext::AccessLevel::NoAccess)
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; That is why I asked to make the previous changes.
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Oh I see, will update.
&gt; &gt; &gt; 
&gt; &gt; &gt; Do you mean that when StorageBlockingPolicy::BlockThirdParty policy is used and a third-party iframe is trying to access storage, we allow access but it uses a special in-memory only access and not the persistent storage?
&gt; &gt; &gt; If so, I believe the issue may be with the naming. Maybe AccessLevel should be something like, NoAccess/FullAccess/InMemoryAccess ?
&gt; &gt; 
&gt; &gt; Yes, you got it! I think the action should not be decided by this function,
&gt; &gt; it should be decided by the caller... The function should basically say:
&gt; &gt; &quot;you should deny/allow/treat it as third party&quot;, and the caller gets to
&gt; &gt; decide what action to take... That&apos;s why I used FALLTHOUGH for WebSQL and
&gt; &gt; the others types. They can decide how they want to treat 3rd party.
&gt; 
&gt; I still think we need to tweak the enum naming somehow to clarify this.
&gt; Trying to come up with a proposal...

Sure, I am looking forward to your solution to this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859882</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-08 14:02:58 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #23)
&gt; (In reply to Sihui Liu from comment #22)
&gt; &gt; Comment on attachment 457100 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=457100&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt;&gt; Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp:50
&gt; &gt; &gt;&gt;&gt;&gt; +    if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) != ScriptExecutionContext::AccessLevel::FirstPartyAccess)
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; I think this would be clearer as:
&gt; &gt; &gt;&gt;&gt; if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) == ScriptExecutionContext::AccessLevel::NoAccess)
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; That is why I asked to make the previous changes.
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Oh I see, will update.
&gt; &gt; &gt; 
&gt; &gt; &gt; Do you mean that when StorageBlockingPolicy::BlockThirdParty policy is used and a third-party iframe is trying to access storage, we allow access but it uses a special in-memory only access and not the persistent storage?
&gt; &gt; &gt; If so, I believe the issue may be with the naming. Maybe AccessLevel should be something like, NoAccess/FullAccess/InMemoryAccess ?
&gt; &gt; 
&gt; &gt; Yes, you got it! I think the action should not be decided by this function,
&gt; &gt; it should be decided by the caller... The function should basically say:
&gt; &gt; &quot;you should deny/allow/treat it as third party&quot;, and the caller gets to
&gt; &gt; decide what action to take... That&apos;s why I used FALLTHOUGH for WebSQL and
&gt; &gt; the others types. They can decide how they want to treat 3rd party.
&gt; 
&gt; I still think we need to tweak the enum naming somehow to clarify this.
&gt; Trying to come up with a proposal...

HasResourceAccess { No, Yes, DefaultForThirdParty } ?
or
HasResourceAccess { No, Yes, MaybeForThirdParty } ?
or
HasResourceAccess { No, Yes, YesAsThirdParty } ?

Consider the Cookies/Geolocation access for example. In your patch, it returns FirstPartyAccess no matter if first party or not, which I find confusing. I think it returning HasResourceAccess::Yes would be clearer. Mentioning &quot;FirstParty&quot; when we didn&apos;t do any first party checks is not ideal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859893</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-08 14:37:25 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #25)
&gt; (In reply to Chris Dumez from comment #23)
&gt; &gt; (In reply to Sihui Liu from comment #22)
&gt; &gt; &gt; Comment on attachment 457100 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=457100&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt;&gt;&gt; Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp:50
&gt; &gt; &gt; &gt;&gt;&gt;&gt; +    if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) != ScriptExecutionContext::AccessLevel::FirstPartyAccess)
&gt; &gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt; &gt;&gt;&gt; I think this would be clearer as:
&gt; &gt; &gt; &gt;&gt;&gt; if (document-&gt;canAccessResource(ScriptExecutionContext::ResourceType::WebSQL) == ScriptExecutionContext::AccessLevel::NoAccess)
&gt; &gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt; &gt;&gt;&gt; That is why I asked to make the previous changes.
&gt; &gt; &gt; &gt;&gt; 
&gt; &gt; &gt; &gt;&gt; Oh I see, will update.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Do you mean that when StorageBlockingPolicy::BlockThirdParty policy is used and a third-party iframe is trying to access storage, we allow access but it uses a special in-memory only access and not the persistent storage?
&gt; &gt; &gt; &gt; If so, I believe the issue may be with the naming. Maybe AccessLevel should be something like, NoAccess/FullAccess/InMemoryAccess ?
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, you got it! I think the action should not be decided by this function,
&gt; &gt; &gt; it should be decided by the caller... The function should basically say:
&gt; &gt; &gt; &quot;you should deny/allow/treat it as third party&quot;, and the caller gets to
&gt; &gt; &gt; decide what action to take... That&apos;s why I used FALLTHOUGH for WebSQL and
&gt; &gt; &gt; the others types. They can decide how they want to treat 3rd party.
&gt; &gt; 
&gt; &gt; I still think we need to tweak the enum naming somehow to clarify this.
&gt; &gt; Trying to come up with a proposal...
&gt; 
&gt; HasResourceAccess { No, Yes, DefaultForThirdParty } ?
&gt; or
&gt; HasResourceAccess { No, Yes, MaybeForThirdParty } ?
&gt; or
&gt; HasResourceAccess { No, Yes, YesAsThirdParty } ?
&gt; 
&gt; Consider the Cookies/Geolocation access for example. In your patch, it
&gt; returns FirstPartyAccess no matter if first party or not, which I find
&gt; confusing. I think it returning HasResourceAccess::Yes would be clearer.
&gt; Mentioning &quot;FirstParty&quot; when we didn&apos;t do any first party checks is not
&gt; ideal.

For the record, I changed my mind on `HasResourceAccess { No, Yes, YesAsThirdParty }`. YesAsThirdParty would be confusing since WebSQL denies access for third-party (so it is not really a &apos;Yes&apos; anymore). For this reason, I like `{ No, Yes, DefaultForThirdParty }` better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859896</commentid>
    <comment_count>27</comment_count>
      <attachid>457100</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-08 14:42:30 -0700</bug_when>
    <thetext>Comment on attachment 457100
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:289
&gt; +    [[configuration preferences] _setStorageBlockingPolicy:_WKStorageBlockingPolicyAllowAll];

Also please explain (in the changelog) why this is needed. This seems to indicate you changed behavior in some way, which is a bit unexpected in a large refactoring patch.
We may want to consider doing the behavior change (assuming it is an intentional bug fix) in a separate patch for clarity (unless you&apos;re very confident we can do it in the same patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859921</commentid>
    <comment_count>28</comment_count>
      <attachid>457123</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 16:00:32 -0700</bug_when>
    <thetext>Created attachment 457123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859922</commentid>
    <comment_count>29</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 16:01:26 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #27)
&gt; Comment on attachment 457100 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457100&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:289
&gt; &gt; +    [[configuration preferences] _setStorageBlockingPolicy:_WKStorageBlockingPolicyAllowAll];
&gt; 
&gt; Also please explain (in the changelog) why this is needed. This seems to
&gt; indicate you changed behavior in some way, which is a bit unexpected in a
&gt; large refactoring patch.
&gt; We may want to consider doing the behavior change (assuming it is an
&gt; intentional bug fix) in a separate patch for clarity (unless you&apos;re very
&gt; confident we can do it in the same patch).

That change turns out to be not needed; removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859940</commentid>
    <comment_count>30</comment_count>
      <attachid>457123</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-08 16:48:22 -0700</bug_when>
    <thetext>Comment on attachment 457123
Patch

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

r=me

&gt; Source/WebCore/dom/ScriptExecutionContext.h:313
&gt; +    enum class HasResourceAccess : uint8_t {

nit: this enum could definitely be on one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859988</commentid>
    <comment_count>31</comment_count>
      <attachid>457149</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 22:46:03 -0700</bug_when>
    <thetext>Created attachment 457149
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860003</commentid>
    <comment_count>32</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-09 01:29:41 -0700</bug_when>
    <thetext>Committed r292677 (249469@main): &lt;https://commits.webkit.org/249469@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457149.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456069</attachid>
            <date>2022-03-29 15:27:15 -0700</date>
            <delta_ts>2022-03-31 21:12:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238524-20220329152715.patch</filename>
            <type>text/plain</type>
            <size>31441</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRjZjgzZmFkYzQ5NWFh
MDY4NjMxNTJjOThmN2U0MTNhNWQ3MzdlNS4uZGM5MWYyMzFlNDY2YmYyYTIxMDFhMTkxNjg3ZDM1
Y2M5YjE3MTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIyLTAzLTI5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNh
bkFjY2Vzc1Jlc291cmNlKCkgdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBiZWNhdXNlIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW4sIAorICAgICAgICBz
aG91bGQgYmUgdGhlIHBsYWNlIHRoYXQgaG9sZHMgU3RvcmFnZUJsb2NraW5nUG9saWN5LiBJdCdz
IHdlaXJkIHRoYXQgdGhlIG9yaWdpbiBhbmQgdG9wIG9yaWdpbiBkaXNhZ3JlZXMgd2l0aAorICAg
ICAgICBlYWNoIG90aGVyIG9uIFN0b3JhZ2VCbG9ja2luZ1BvbGljeS4gQWxzbywgYmVjYXVzZSBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IGhhcyBhY2Nlc3MgdG8gb3JpZ2luIGFuZCB0b3BPcmlnaW4s
CisgICAgICAgIHdlIGRvbid0IG5lZWQgdG8gZXhwbGljaXRseSBnZXQgdGhlbSBiZWZvcmUgdGhl
IGFjY2VzcyBjaGVjay4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhIGZ1bmN0aW9u
IGNhbk9yaWdpbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCkgZm9yIHRoaXJkLXBhcnR5IGFj
Y2VzcyBjaGVjay4gU29tZQorICAgICAgICB0eXBlcyBuZWVkIHRoZSBjaGVjayBzZXBhcmF0ZWx5
IGZyb20gY2FuQWNjZXNzUmVzb3VyY2UoKSwgYmVjYXVzZSB0aGV5IGRvbid0IHdhbnQgdG8gZGVu
eSB0aGlyZC1wYXJ0eSBhY2Nlc3M7CisgICAgICAgIHRoZXkganVzdCBuZWVkIHRvIHN3aXRjaCB0
byBub24tcGVyc2lzdGVudCBzdG9yYWdlLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVx
dWVzdHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2hvdWxkVGhyb3dTZWN1cml0eUV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvc3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25uZWN0aW9uSW5mbyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3dXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvb2tp
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6YXBwbHlRdWlja0xvb2tTYW5kYm94KToKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5PcmlnaW5BY2Nlc3NS
ZXNvdXJjZUFzVGhpcmRQYXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpjYW5BY2Nlc3NSZXNvdXJjZSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhv
dXRNYW5pZmVzdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnVwZGF0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0
aW9uQ2FjaGVCbG9ja2VkRm9yUmVxdWVzdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3Bw
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXR1
cEZvclJlbW90ZVdvcmtlcik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc1N0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NEYXRhYmFzZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzU2Vzc2lvblN0
b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNhbkFjY2Vzc0xvY2FsU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzU3RvcmFnZU1hbmFnZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc1BsdWdpblN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNh
bkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc0Nvb2tpZXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3RHZW9sb2NhdGlvbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0
b3JhZ2VBcmVhKToKKwogMjAyMi0wMy0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFByZXBhcmUgV2ViQ29yZSBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3Qg
Y2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEwNzY0NTIzMGEwNGNlM2Mw
MDczODAwYTM1ZDJlY2QwMmRmOThjMDQuLjNkMDgwNjcwNmZlZDczMmE4N2MwMTZmMDQ1MmJkMjA0
ZDI4ZWM3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMjkgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjYW5BY2Nlc3NTdG9yYWdl
KCkgY2hlY2sgZnJvbSBTZWN1cml0eU9yaWdpbiB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKKwogMjAyMi0wMy0yOCAgRnVqaWkgSGlyb25v
cmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeCBhZnRlciAyOTE5NzkgZm9yIFdpbkNhaXJvIGFuZCBQbGF5U3RhdGlvbiBEZWJ1ZyBidWls
ZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRl
eCA2NTQzZjM5MTk4M2M3YzQ2MzNkMjc4YTllYTk1ZjUwYzM5OWEyNGZlLi5hZWM4MWYyN2UxZmE1
Zjg0NWJiYmM4N2ZjZDVmNWQzMGMyYzE5NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC05NiwxMSArOTYsMTAgQEAgdm9pZCBDRE06Omdl
dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2Fu
ZGlkYXRlQ29uZmkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIENETVByaXZhdGU6Okxv
Y2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MgPSBDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3M6
OkFsbG93ZWQ7CiAgICAgYm9vbCBpc0VwaGVtZXJhbCA9ICFkb2N1bWVudC0+cGFnZSgpIHx8IGRv
Y3VtZW50LT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7Ci0KLSAgICBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiA9IGRvY3VtZW50LT50b3BPcmlnaW4oKTsKLSAgICBDRE1Qcml2
YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzID0gIWlzRXBoZW1lcmFsICYmIG9yaWdpbi5j
YW5BY2Nlc3NMb2NhbFN0b3JhZ2UoJnRvcE9yaWdpbikgPyBDRE1Qcml2YXRlOjpMb2NhbFN0b3Jh
Z2VBY2Nlc3M6OkFsbG93ZWQgOiBDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3M6Ok5vdEFs
bG93ZWQ7CisgICAgaWYgKCFpc0VwaGVtZXJhbCB8fCAhZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291
cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSB8
fCAhZG9jdW1lbnQtPmNhbk9yaWdpbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCkpCisgICAg
ICAgIGFjY2VzcyA9IENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZDsK
ICAgICBtX3ByaXZhdGUtPmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShjYW5kaWRh
dGVDb25maWd1cmF0aW9uKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5k
ZXggY2QzNzJmNDM2OTFhZGQ0ZDdkZjBjOWU1MjU3MGVhZmZkMjkzNDAzNy4uNzk5MGQ5ZGFmNmY4
ZTFhNTcwNzg5NTlhYjIzYzRkZTY4NmM0ZWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTM3MSw3ICszNzEsNyBAQCBi
b29sIEdlb2xvY2F0aW9uOjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVzdHMoKQogICAgIGJv
b2wgaXNTZWN1cmUgPSBTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmUoZG9jdW1lbnQoKS0+dXJsKCkp
IHx8IGRvY3VtZW50KCktPmlzU2VjdXJlQ29udGV4dCgpOwogICAgIGJvb2wgaGFzTWl4ZWRDb250
ZW50ID0gIWRvY3VtZW50KCktPmZvdW5kTWl4ZWRDb250ZW50KCkuaXNFbXB0eSgpOwogICAgIGJv
b2wgaXNMb2NhbE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKTsKLSAgICBpZiAo
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkpIHsKKyAgICBpZiAoZG9j
dW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3Vy
Y2VUeXBlOjpHZW9sb2NhdGlvbikpIHsKICAgICAgICAgaWYgKGlzTG9jYWxPcmlnaW4gfHwgKGlz
U2VjdXJlICYmICFoYXNNaXhlZENvbnRlbnQpIHx8IGlzUmVxdWVzdEZyb21JQm9va3MoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDU2YzE3MjdkZGI4MjEwZDEzNjk3NzVi
YmMzOTVlZjdmOGZiNjM5OTYuLjEzMDhmMGM0YmMyYTFmNGYyNTAwNGQ3NWQ0M2RlOTlmYmJmNDUx
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRocm93U2VjdXJpdHlFeGNl
cHRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGlmICghY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5B
Y2Nlc3NEYXRhYmFzZShudWxscHRyKSkKKyAgICBpZiAoIWNvbnRleHQuY2FuQWNjZXNzUmVzb3Vy
Y2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpJbmRleGVkREIpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTkxLDcgKzkxLDcgQEAg
RXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3Vy
aXR5RXJyb3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0
eSBjb250ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsK
LSAgICBib29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNj
ZXNzRGF0YWJhc2UoJmNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIGJvb2wgaXNUcmFuc2llbnQg
PSAhY29udGV4dC5jYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpOwogICAgIElE
QkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmln
aW5EYXRhIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfSwgU2VjdXJpdHlPcmln
aW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgaXNUcmFuc2llbnQpOwogICAg
IGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgIklEQkZhY3Rvcnkub3BlbigpIGNhbGxlZCB3aXRoIGFuIGludmFs
aWQgc2VjdXJpdHkgb3JpZ2luIl9zIH07CkBAIC0xMTIsNyArMTEyLDcgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db24KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJ
REJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkg
Y29udGV4dCJfcyB9OwogCiAgICAgQVNTRVJUKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7Ci0g
ICAgYm9vbCBpc1RyYW5zaWVudCA9ICFjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vz
c0RhdGFiYXNlKCZjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBib29sIGlzVHJhbnNpZW50ID0g
IWNvbnRleHQuY2FuT3JpZ2luQWNjZXNzUmVzb3VyY2VBc1RoaXJkUGFydHkoKTsKICAgICBJREJE
YXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2lu
RGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2lu
RGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGlzVHJhbnNpZW50KTsKICAgICBp
ZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIHdpdGgg
YW4gaW52YWxpZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDYzNmI0OGM5ZjA0NzliYzVh
ZTMxOTRlYTFlODkwNTY5NjU3MTdhNDUuLjQ2NzQyOTNhYzFkY2U1NDRkNjAyNDA4ZDNkNzI3Njgw
YTU0MjFkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcApAQCAtNjcsMTMgKzY3LDEzIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxDb25u
ZWN0aW9uSW5mbz4gY29ubmVjdGlvbkluZm8oTmF2aWdhdG9yQmFzZSogbmF2aWdhdG9yKQogICAg
IGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9zIH07CiAKKyAgICBpZiAoIWNvbnRleHQtPmNhbkFj
Y2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxT
dG9yYWdlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNvbnRleHQg
bm90IGFjY2VzcyBzdG9yYWdlIl9zIH07CisKICAgICBhdXRvKiBvcmlnaW4gPSBjb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJPcmlnaW4gaXMgaW52YWxpZCJfcyB9OwogCi0gICAg
aWYgKCFvcmlnaW4tPmNhbkFjY2Vzc1N0b3JhZ2VNYW5hZ2VyKCkpCi0gICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IsICJPcmlnaW4gc2hvdWxkIG5vdCBhY2Nlc3Mgc3RvcmFnZSJf
cyB9OwotCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewogICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS0+c3RvcmFnZUNvbm5l
Y3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBDb25uZWN0aW9uSW5mbyB7ICpjb25uZWN0aW9u
LCB7IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKSwgb3JpZ2luLT5kYXRhKCkgfSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmNwcAppbmRleCA1NmFjMGU0MjJkZDRkZjkzNmUzY2NiMDBjZTVmNDVjM2Q2
NTU0MTViLi44MDI0NjRiOTg5ODM0MDY5ZmQ3OWJhNmRlOTYyODhmZGJhYmE1NWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmNwcApAQCAtNDcsOSArNDcsOSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8RGF0
YWJhc2U+PiBET01XaW5kb3dXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKERPTVdpbmRvdyYgd2lu
ZAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OwogICAgIGRvY3Vt
ZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTdG9yYWdlLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsICJXZWIgU1FMIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgSW5kZXhlZERC
IGluc3RlYWQuIl9zKTsKIAotICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKCFzZWN1cml0eU9yaWdpbi5jYW5BY2Nlc3NEYXRhYmFz
ZSgmZG9jdW1lbnQtPnRvcE9yaWdpbigpKSkKKyAgICBpZiAoIWRvY3VtZW50LT5jYW5BY2Nlc3NS
ZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OldlYlNRTCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CisKICAgICBhdXRvIHJl
c3VsdCA9IG1hbmFnZXIub3BlbkRhdGFiYXNlKCp3aW5kb3cuZG9jdW1lbnQoKSwgbmFtZSwgdmVy
c2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIFdURk1vdmUoY3JlYXRpb25DYWxsYmFj
aykpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgLy8gRklYTUU6
IFRvIHByZXNlcnZlIG91ciBwYXN0IGJlaGF2aW9yLCB0aGlzIGRpc2NhcmRzIHRoZSBlcnJvciBz
dHJpbmcgaW4gdGhlIGV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGY0ZWY4
MTExYjYyNGE1Nzc5ZDgzMzU4YmNmZTM4OTAxOTg4OWM0NTEuLmQzZTFmZjYyY2MxNjZiMjVlNTgz
YjI5MzYwYzBmY2M1Y2I2NWE3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTMzOSw3
ICs1MzM5LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBEb2N1bWVudDo6Y29va2llKCkKICAgICBp
ZiAoaXNDb29raWVBdmVyc2UoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYg
KCFzZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0Nvb2tpZXMoKSkKKyAgICBpZiAoIWNhbkFjY2Vz
c1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6Q29va2llcykp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKICAgICBVUkwg
Y29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CkBAIC01MzYwLDcgKzUzNjAsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgaWYgKGlzQ29va2llQXZlcnNlKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAo
IXNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQ29va2llcygpKQorICAgIGlmICghY2FuQWNjZXNz
UmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpDb29raWVzKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIFVSTCBj
b29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKQEAgLTU3OTAsNyArNTc5MCw3IEBAIGJvb2wg
RG9jdW1lbnQ6Om1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSgpIGNvbnN0CiAKIHZvaWQgRG9j
dW1lbnQ6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCkKIHsKLSAgICBzZWN1cml0eU9y
aWdpbigpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSgpKTsKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MoKS5zdG9y
YWdlQmxvY2tpbmdQb2xpY3koKSk7CiB9CiAKIC8vIFVzZWQgb25seSBieSBXZWJLaXRMZWdhY3ku
CkBAIC02MzQ2LDcgKzYzNDYsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0
KCkKICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2luKCkuc2V0RW5mb3JjZXNGaWxlUGF0aFNlcGFy
YXRpb24oKTsKICAgICAgICAgfQogICAgIH0KLSAgICBzZWN1cml0eU9yaWdpbigpLnNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKKyAg
ICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xp
Y3koKSk7CiAKICAgICBSZWZQdHIgcGFyZW50RG9jdW1lbnQgPSBvd25lckVsZW1lbnQoKSA/ICZv
d25lckVsZW1lbnQoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYgKHBhcmVudERvY3Vt
ZW50ICYmIG1fZnJhbWUtPmxvYWRlcigpLnNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudCh1
cmwoKSkpIHsKQEAgLTc4ODcsOCArNzg4Nyw4IEBAIHZvaWQgRG9jdW1lbnQ6OmFwcGx5UXVpY2tM
b29rU2FuZGJveCgpCiAgICAgQVNTRVJUKCFkb2N1bWVudFVSTC5wcm90b2NvbElzKFFMUHJldmll
d1Byb3RvY29sKSk7CiAgICAgQVNTRVJUKHJlc3BvbnNlVVJMLnByb3RvY29sSXMoUUxQcmV2aWV3
UHJvdG9jb2wpKTsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTdG9yYWdlQmxvY2tp
bmdQb2xpY3k6OkJsb2NrQWxsKTsKICAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZU5vbkxvY2FsV2l0aEFsbG93ZWRGaWxlUGF0aChyZXNwb25zZVVSTCwgZG9j
dW1lbnRVUkwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgc2VjdXJpdHlPcmlnaW4tPnNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeShTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrQWxsKTsKICAgICBz
ZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1v
dmUoc2VjdXJpdHlPcmlnaW4pKSk7CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBxdWlja0xvb2tDU1AgPSBtYWtlU3RyaW5nKCJkZWZhdWx0LXNyYyAiLCBRTFByZXZpZXdQcm90
b2NvbCwgIjogJ3Vuc2FmZS1pbmxpbmUnOyBiYXNlLXVyaSAnbm9uZSc7IHNhbmRib3ggYWxsb3ct
c2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDM4ZjA3MTEwN2Q3NzZlZjZiZWI0NDc5Y2IwNTc5
N2ViZTBjNWIxMDQuLjEyNmRjMmY2MDRmNjExZGRiZTllNzBiNDg1MzhhY2JlYTQzMTJmZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTU3
OCw3ICs1NzgsMTMgQEAgSlNDOjpKU0dsb2JhbE9iamVjdCogU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Z2xvYmFsT2JqZWN0KCkKIAogU3RyaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbi5pc051bGwoKSA/IHRvcE9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFydGl0aW9u
KCkgOiBtX2RvbWFpbkZvckNhY2hlUGFydGl0aW9uOworICAgIGlmICghbV9kb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb247CisKKyAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgIT0gU3RvcmFnZUJsb2Nr
aW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OworCisgICAgcmV0dXJuIHRvcE9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCk7CiB9
CiAKIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWxsb3dzTWVkaWFEZXZpY2VzKCkgY29u
c3QKQEAgLTcwOSw0ICs3MTUsNTIgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0
VGFza1RvUmVzcG9uc2libGVEb2N1bWVudChGdW5jdGlvbjx2b2lkKERvY3VtZW4KICAgICAgICAg
Y2FsbGJhY2soKmRvY3VtZW50KTsKIH0KIAorYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpj
YW5PcmlnaW5BY2Nlc3NSZXNvdXJjZSgpCit7CisgICAgYXV0byogb3JpZ2luID0gc2VjdXJpdHlP
cmlnaW4oKTsKKyAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKG9yaWdpbi0+aXNVbmlxdWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KG9yaWdpbi0+aXNMb2NhbCgpICYmICFvcmlnaW4tPm5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxl
VVJMc1F1aXJrKCkgJiYgIW9yaWdpbi0+aGFzVW5pdmVyc2FsQWNjZXNzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBTdG9yYWdl
QmxvY2tpbmdQb2xpY3k6OkJsb2NrQWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5PcmlnaW5B
Y2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpCit7CisgICAgYXV0byogb3JpZ2luID0gc2VjdXJp
dHlPcmlnaW4oKTsKKyAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6
QmxvY2tUaGlyZFBhcnR5KQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kg
PT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbDsKKworICAgIHJldHVybiB0b3BPcmln
aW4oKS5pc1NhbWVPcmlnaW5Bcygqb3JpZ2luKTsKK30KKworYm9vbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpjYW5BY2Nlc3NSZXNvdXJjZShSZXNvdXJjZVR5cGUgdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6Q29va2llczoKKyAgICBjYXNlIFJl
c291cmNlVHlwZTo6R2VvbG9jYXRpb246CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlNlc3Npb25T
dG9yYWdlOgorICAgICAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW4oKSA/ICFzZWN1cml0eU9yaWdp
bigpLT5pc1VuaXF1ZSgpIDogZmFsc2U7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkFwcGxpY2F0
aW9uQ2FjaGU6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlBsdWdpbjoKKyAgICBjYXNlIFJlc291
cmNlVHlwZTo6V2ViU1FMOgorICAgICAgICByZXR1cm4gY2FuT3JpZ2luQWNjZXNzUmVzb3VyY2Uo
KSAmJiBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpOworICAgIGNhc2UgUmVz
b3VyY2VUeXBlOjpJbmRleGVkREI6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkxvY2FsU3RvcmFn
ZToKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6U3RvcmFnZU1hbmFnZXI6CisgICAgICAgIHJldHVy
biBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZSgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5k
ZXggMDNmZTI0NDdiNDNlMDhiYTUxZGE3MmFmZjIzYzY5OTlmMTI1MTVlMS4uMjk5MzViNmQ1YWIw
NGI1NzU4YjhmYjA4NWM5ZWZhN2VkYTZiOTdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VCbG9ja2luZ1BvbGljeS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hhbmRsZVR5cGVzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMjk3
LDYgKzI5OCwyMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5j
cnlwdGlvbldhcm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2hhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRF
bmNyeXB0aW9uV2FybmluZzsgfQogICAgIHZvaWQgc2V0SGFzTG9nZ2VkQXV0aGVudGljYXRlZEVu
Y3J5cHRpb25XYXJuaW5nKGJvb2wgdmFsdWUpIHsgbV9oYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5j
cnlwdGlvbldhcm5pbmcgPSB2YWx1ZTsgfQogCisgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1Bv
bGljeSA9IHBvbGljeTsgfQorICAgIGVudW0gY2xhc3MgUmVzb3VyY2VUeXBlIDogdWludDhfdCB7
CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUsCisgICAgICAgIENvb2tpZXMsCisgICAgICAgIEdl
b2xvY2F0aW9uLAorICAgICAgICBJbmRleGVkREIsCisgICAgICAgIExvY2FsU3RvcmFnZSwKKyAg
ICAgICAgUGx1Z2luLAorICAgICAgICBTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAgU3RvcmFnZU1h
bmFnZXIsCisgICAgICAgIFdlYlNRTAorICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBj
YW5BY2Nlc3NSZXNvdXJjZShSZXNvdXJjZVR5cGUpOworICAgIGJvb2wgY2FuT3JpZ2luQWNjZXNz
UmVzb3VyY2VBc1RoaXJkUGFydHkoKTsKKwogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNv
bGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6CkBAIC0zMzksNiArMzU1
LDcgQEAgcHJpdmF0ZToKICAgICBSZWplY3RlZFByb21pc2VUcmFja2VyJiBlbnN1cmVSZWplY3Rl
ZFByb21pc2VUcmFja2VyU2xvdygpOwogCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29u
c3Q7CisgICAgYm9vbCBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZSgpOwogCiAgICAgSGFzaFNldDxN
ZXNzYWdlUG9ydCo+IG1fbWVzc2FnZVBvcnRzOwogICAgIEhhc2hTZXQ8Q29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIqPiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOwpAQCAtMzc4LDYgKzM5NSw3IEBA
IHByaXZhdGU6CiAgICAgbXV0YWJsZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAKICAgICBib29sIG1faGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRp
b25XYXJuaW5nIHsgZmFsc2UgfTsKKyAgICBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdl
QmxvY2tpbmdQb2xpY3kgeyBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAppbmRleCA4Nzg2YzUyNTliODk4MDEyODM1NzQ0NTIwZmVmNTliYWMwNjRmOTU3Li45
M2YxODkzZDgxYmFmNGU5NGNlYmNhYzdhNWM5ODgyODA0ZWY3MDM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIxNDksNyArMjE0OSw2IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
ICAgICAgICAgbWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbigq
bV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1haW5SZXNvdXJjZVJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkpOwotICAgICAgICBvcmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShm
cmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkp
OwogICAgICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9u
KG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCmluZGV4IDg1YzdkMDE4M2FjMTZkZTEzYTcxNDZhOGFkYzkwZmQ3MjE5NDI3OWQuLjNlZDRl
M2QwZGU3ZmVlNGZlNDI0YjBmMDBkZWQ5M2NlMTBkMDc1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hl
KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBwYXNzZWRNYW5pZmVzdFUKICAgICB9CiAKICAgICAv
LyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVu
YWJsZWQuCi0gICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAh
ZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNh
Y2hlKGZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewor
ICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRv
Y3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291
cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSkpIHsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhl
dmVudE5hbWVzKCkuY2hlY2tpbmdFdmVudCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0
TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBkb2N1bWVudExvYWRlcik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwoRnJhbWUmIGZyYW1lKQogICAgIEFT
U0VSVCghZG9jdW1lbnRMb2FkZXIuYXBwbGljYXRpb25DYWNoZUhvc3QoKS5hcHBsaWNhdGlvbkNh
Y2hlKCkpOwogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0
ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVy
YWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNj
ZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSkpIHsKKyAgICBpZiAoZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lv
bigpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkFwcGxpY2F0aW9uQ2FjaGUpKSB7CiAgICAgICAgIHBv
c3RMaXN0ZW5lclRhc2soZXZlbnROYW1lcygpLmNoZWNraW5nRXZlbnQsIGRvY3VtZW50TG9hZGVy
KTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZG9j
dW1lbnRMb2FkZXIpOwogICAgICAgICByZXR1cm47CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnVwZGF0ZShGcmFtZSYgZnJhbWUsIEFwcGxpY2F0aW9uQ2Fj
aGVVcGRhdGVPcHRpb24gdXAKICAgICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcg
b24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLnBh
Z2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50b3AoKS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS5wYWdlKCktPnVz
ZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291
cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNo
ZSkpIHsKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5pc0Vt
cHR5KCkpOwogICAgICAgICBBU1NFUlQobV9wZW5kaW5nRW50cmllcy5pc0VtcHR5KCkpOwogICAg
ICAgICBBU1NFUlQoIW1fY2FjaGVCZWluZ1VwZGF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggZWQ3
NTY2NTI2YjJkN2VmYmYxYzUxNzAyMDk1YTg3OWJhZjU2OTQ0Ny4uMjk4NWM3YjAzNWVjYzI3YWM2
MzZiYTJjYTBmN2FiMDkyYjNmODIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC01NjEsMTQgKzU2MSwx
NCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KCkKICAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2Fk
ZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQo
KSAmJiAhbV9kb2N1bWVudExvYWRlci5mcmFtZSgpLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNz
aW9uKCk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNo
ZUJsb2NrZWRGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jvb2wg
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCiB7CiAgICAgYXV0byogZnJhbWUgPSBtX2RvY3VtZW50
TG9hZGVyLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0LnVybCgpKS0+Y2FuQWNjZXNz
QXBwbGljYXRpb25DYWNoZShmcmFtZS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpOworICAgIHJl
dHVybiAhZnJhbWUtPmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSk7CiB9CiAKIH0gIC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggZGQzY2NkYmJk
MTM0NWZhYjkyMmY5ZmYzNjBlMmE4ZWFiOTZmYmZhNC4uNjEyM2E4MDRlNmMyNjI3MzUwZmM4YTY0
NDExMTEyYWM5YTIwOTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODM2LDcg
KzgzNiw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdl
KCkKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlm
ICghZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoZG9j
dW1lbnQtPnRvcE9yaWdpbigpKSkKKyAgICBpZiAoIWRvY3VtZW50LT5jYW5BY2Nlc3NSZXNvdXJj
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OlNlc3Npb25TdG9yYWdlKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIGlmICht
X3Nlc3Npb25TdG9yYWdlKQpAQCAtODYyLDcgKzg2Miw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2Uq
PiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZSgpCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmNh
bkFjY2Vzc0xvY2FsU3RvcmFnZShudWxscHRyKSkKKyAgICBpZiAoIWRvY3VtZW50LT5jYW5BY2Nl
c3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkxvY2FsU3Rv
cmFnZSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKICAg
ICBhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGQ5
NGQzY2QxN2FlNWZmMDU2YmY2YTNmMGIyOTdiZDBiNmE1MWU3ZjEuLjcyOTcxYzNkODQ0MzVhMGIw
MWM2MjdjZTkxNTQ3MWZhNGI4NTAzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzk1MCwxMCAr
Mzk1MCw5IEBAIHZvaWQgUGFnZTo6c2V0dXBGb3JSZW1vdGVXb3JrZXIoY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9N
V2luZG93KCk7CiAKICAgICBkb2N1bWVudC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2Uo
KTsKKyAgICBkb2N1bWVudC0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3Rv
cmFnZUJsb2NraW5nUG9saWN5KCkpOwogCiAgICAgYXV0byBvcmlnaW4gPSB0b3BPcmlnaW4uc2Vj
dXJpdHlPcmlnaW4oKTsKLSAgICBvcmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0
aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKLQogICAgIGF1dG8gb3JpZ2luQXNVUkwg
PSBvcmlnaW4tPnRvVVJMKCk7CiAgICAgZG9jdW1lbnQtPnNldFNpdGVGb3JDb29raWVzKG9yaWdp
bkFzVVJMKTsKICAgICBkb2N1bWVudC0+c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob3JpZ2luQXNV
UkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA0YmE1MTkxZTZi
M2U0MDk4NzljMjE5YzE2NmE4M2ZlNzEyYTM1ODdhLi43ODBhOGVlZDdlOTg4MWQ2MjNmYmM5Mjlm
NDQ2MWU1OTk0ZDE2YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApA
QCAtMjA4LDcgKzIwOCw2IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbiogb3RoZXIpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyB7IG90aGVyLT5t
X3VuaXZlcnNhbEFjY2VzcyB9CiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NIHsgb3RoZXItPm1f
ZG9tYWluV2FzU2V0SW5ET00gfQogICAgICwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgeyBvdGhl
ci0+bV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgfQotICAgICwgbV9zdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgeyBvdGhlci0+bV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgfQogICAgICwgbV9lbmZvcmNlc0Zp
bGVQYXRoU2VwYXJhdGlvbiB7IG90aGVyLT5tX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIH0K
ICAgICAsIG1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBvdGhlci0+bV9u
ZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayB9CiAgICAgLCBtX2lzUG90ZW50aWFs
bHlUcnVzdHdvcnRoeSB7IG90aGVyLT5tX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB9CkBAIC00
MTgsMzYgKzQxNyw2IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46
OmNhbkFjY2Vzc1N0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgU2hvdWxk
QWxsb3dGcm9tVGhpcmRQYXJ0eSBzaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5KSBjb25zdAotewot
ICAgIGlmIChpc1VuaXF1ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXNM
b2NhbCgpICYmICFuZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpICYmICFtX3Vu
aXZlcnNhbEFjY2VzcyAmJiBzaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ICE9IEFsd2F5c0FsbG93
RnJvbVRoaXJkUGFydHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAobV9z
dG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hvdWxk
IGJlIHJlcGxhY2VkIHdpdGggYW4gQVNTRVJUIG9uY2Ugd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRv
cE9yaWdpbiBpcyBub3QgbnVsbC4KLSAgICBpZiAoIXRvcE9yaWdpbikKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBpZiAodG9wT3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBT
dG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrQWxsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoc2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSA9PSBBbHdheXNBbGxvd0Zyb21UaGly
ZFBhcnR5KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChtX3VuaXZlcnNhbEFjY2Vz
cykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoKG1fc3RvcmFnZUJsb2NraW5nUG9s
aWN5ID09IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5IHx8IHRvcE9yaWdp
bi0+bV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9j
a1RoaXJkUGFydHkpICYmICF0b3BPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKCp0aGlzKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFNlY3VyaXR5T3JpZ2lu
OjpQb2xpY3kgU2VjdXJpdHlPcmlnaW46OmNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3QKIHsK
ICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCkBAIC01MTcsOSArNDg2LDYgQEAgdm9pZCBTZWN1
cml0eU9yaWdpbjo6Z3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKQogCiBTdHJp
bmcgU2VjdXJpdHlPcmlnaW46OmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3QKIHsKLSAg
ICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpC
bG9ja1RoaXJkUGFydHkpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCiAgICAgaWYg
KGlzSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gaG9zdCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggZDJiZjczZGE2MmQzZjVhMWE5NzRhMDdhZjdhYzI1OWRk
YTY5YWEzZi4uZmYxZDIyYzE1ZmUwYmY0MzRlMWZlZjk0NDZmYzJlODJjYzRmYzk5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtMjksNyArMjksNiBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJTdG9yYWdl
QmxvY2tpbmdQb2xpY3kuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAg
LTEzOSwyMSArMTM4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50VW5pdmVyc2FsQWNjZXNz
KCk7CiAgICAgYm9vbCBoYXNVbml2ZXJzYWxBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VuaXZl
cnNhbEFjY2VzczsgfQogCi0gICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFn
ZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHBvbGlj
eTsgfQotCiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpOwog
ICAgIGJvb2wgbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSBjb25zdCB7IHJl
dHVybiBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOyB9CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdDsKLQotICAg
IGJvb2wgY2FuQWNjZXNzRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikg
Y29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9OwotICAgIGJvb2wg
Y2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikg
Y29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luLCBBbHdheXNBbGxvd0Zy
b21UaGlyZFBhcnR5KTsgfQotICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2Uo
dG9wT3JpZ2luKTsgfTsKLSAgICBib29sIGNhbkFjY2Vzc1N0b3JhZ2VNYW5hZ2VyKCkgY29uc3Qg
eyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZShudWxscHRyKTsgfQotICAgIGJvb2wgY2FuQWNjZXNz
UGx1Z2luU3RvcmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJl
dHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9Ci0gICAgYm9vbCBjYW5BY2Nlc3NB
cHBsaWNhdGlvbkNhY2hlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsg
cmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0KLSAgICBib29sIGNhbkFjY2Vz
c0Nvb2tpZXMoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQotICAgIGJvb2wgY2FuUmVx
dWVzdEdlb2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KICAgICBQb2xp
Y3kgY2FuU2hvd05vdGlmaWNhdGlvbnMoKSBjb25zdDsKIAogICAgIC8vIFRoZSBsb2NhbCBTZWN1
cml0eU9yaWdpbiBpcyB0aGUgbW9zdCBwcml2aWxlZ2VkIFNlY3VyaXR5T3JpZ2luLgpAQCAtMjQ0
LDcgKzIzMiw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2VzcyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKICAgICBib29sIG1f
Y2FuTG9hZExvY2FsUmVzb3VyY2VzIHsgZmFsc2UgfTsKLSAgICBTdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93
QWxsIH07CiAgICAgYm9vbCBtX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBmYWxzZSB9
OwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2lzUG90ZW50aWFsbHlUcnVzdHdv
cnRoeTsKQEAgLTI2Niw3ICsyNTMsNiBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUg
dm9pZCBTZWN1cml0eU9yaWdpbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIGVu
Y29kZXIgPDwgbV91bml2ZXJzYWxBY2Nlc3M7CiAgICAgZW5jb2RlciA8PCBtX2RvbWFpbldhc1Nl
dEluRE9NOwogICAgIGVuY29kZXIgPDwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXM7Ci0gICAgZW5j
b2RlciA8PCBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsKICAgICBlbmNvZGVyIDw8IG1fZW5mb3Jj
ZXNGaWxlUGF0aFNlcGFyYXRpb247CiAgICAgZW5jb2RlciA8PCBtX25lZWRzU3RvcmFnZUFjY2Vz
c0Zyb21GaWxlVVJMc1F1aXJrOwogICAgIGVuY29kZXIgPDwgbV9pc1BvdGVudGlhbGx5VHJ1c3R3
b3J0aHk7CkBAIC0yOTUsOCArMjgxLDYgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5l
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmRlY29kZShEZWMKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fY2Fu
TG9hZExvY2FsUmVzb3VyY2VzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5KSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fZW5mb3Jj
ZXNGaWxlUGF0aFNlcGFyYXRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG9yaWdpbi0+bV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNR
dWlyaykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5jcHAKaW5kZXggMjZiYWY0ZjA0ZDczZGJhNzk1ZTRlZjQxMzkyZjk5NTNkN2ZlYjBh
ZS4uMjEyYjQ5NTgyYjE1ZGVmMDY1NTZjMTA4ODMzNDJiNDg1MjQ0OWMwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAt
NTEsNyArNTEsNyBAQCBSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLy8gc28gdGhlIERvY3Vt
ZW50IGhhZCBiZXR0ZXIgc3RpbGwgYWN0dWFsbHkgaGF2ZSBhIFBhZ2UuCiAgICAgQVNTRVJUKGRv
Y3VtZW50LnBhZ2UoKSk7CiAKLSAgICBib29sIHRyYW5zaWVudCA9ICFkb2N1bWVudC5zZWN1cml0
eU9yaWdpbigpLmNhbkFjY2Vzc0xvY2FsU3RvcmFnZSgmZG9jdW1lbnQudG9wT3JpZ2luKCkpOwor
ICAgIGJvb2wgdHJhbnNpZW50ID0gIWRvY3VtZW50LmNhbk9yaWdpbkFjY2Vzc1Jlc291cmNlQXNU
aGlyZFBhcnR5KCk7CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gc3RvcmFnZU5hbWVz
cGFjZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAppbmRleCAwMzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlLi5hOTk5
NDU0MWJhZGM0NjFhZTAwODAxNjg2YjU5YjFhMDdhMThlOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNjEzLDggKzYxMyw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKICAgICBpZiAo
IW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIGJv
b2wgc3RvcmFnZUJsb2NraW5nUG9saWN5ID0gIWZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCkuY2FuQWNjZXNzUGx1Z2luU3RvcmFnZShmcmFtZSgpLT5kb2N1bWVudCgpLT50b3BP
cmlnaW4oKSk7Ci0KKyAgICBib29sIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9ICFmcmFtZSgpLT5k
b2N1bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNv
dXJjZVR5cGU6OlBsdWdpbik7CiAgICAgbV9wbHVnaW4tPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hh
bmdlZChzdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456318</attachid>
            <date>2022-03-31 21:12:25 -0700</date>
            <delta_ts>2022-04-01 11:52:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238524-20220331211224.patch</filename>
            <type>text/plain</type>
            <size>41608</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFhMzZlNDBmYjZhNWQ2
YzNhY2JlMjkzYjM1ZmEyMzZiM2JjNjc1OC4uZDM0NzMxYzI2NGNkZWM3M2I0NGE1MjlhZTQ0Mzdm
NzE4ZjAwZTEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIyLTAzLTMxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNh
bkFjY2Vzc1Jlc291cmNlKCkgdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBiZWNhdXNlIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW4sIAorICAgICAgICBz
aG91bGQgYmUgdGhlIHBsYWNlIHRoYXQgaG9sZHMgU3RvcmFnZUJsb2NraW5nUG9saWN5IChpdCdz
IHdlaXJkIHRoYXQgdGhlIG9yaWdpbiBhbmQgdG9wIG9yaWdpbiBkaXNhZ3JlZXMgd2l0aAorICAg
ICAgICBlYWNoIG90aGVyIG9uIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSkuIEFsc28sIGJlY2F1c2Ug
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBoYXMgYWNjZXNzIHRvIG9yaWdpbiBhbmQgdG9wT3JpZ2lu
LAorICAgICAgICB3ZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgZ2V0IHRoZW0gYmVmb3JlIHRo
ZSBhY2Nlc3MgY2hlY2suCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgYSBmdW5jdGlv
biBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpIGZvciB0aGlyZC1wYXJ0eSBh
Y2Nlc3MgY2hlY2suIFNvbWUKKyAgICAgICAgdHlwZXMgbmVlZCB0aGUgY2hlY2sgc2VwYXJhdGVs
eSBmcm9tIGNhbkFjY2Vzc1Jlc291cmNlKCksIGJlY2F1c2UgdGhleSBkb24ndCB3YW50IHRvIGRl
bnkgdGhpcmQtcGFydHkgYWNjZXNzOworICAgICAgICB0aGV5IGp1c3QgbmVlZCB0byBzd2l0Y2gg
dG8gbm9uLXBlcnNpc3RlbnQgc3RvcmFnZS4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Z2V0U3VwcG9ydGVkQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2hvdWxkQmxvY2tHZW9sb2NhdGlvblJl
cXVlc3RzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFRocm93U2VjdXJpdHlFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3N0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ubmVjdGlvbkluZm8pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fd2hpdGVzcGFjZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFw
cGx5UXVpY2tMb29rU2FuZGJveCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2VBc1RoaXJkUGFy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuQWNjZXNz
UmVzb3VyY2UpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tlZEZv
clJlcXVlc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKiBwYWdl
L1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0dXBGb3JSZW1vdGVXb3JrZXIp
OgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OmRvbWFpbkZvckNhY2hlUGFydGl0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTdG9yYWdlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnNldFN0
b3JhZ2VCbG9ja2luZ1BvbGljeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y2FuQWNjZXNzRGF0YWJhc2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc1Nlc3Npb25TdG9yYWdlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NMb2NhbFN0
b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNhbkFjY2Vzc1N0b3JhZ2VNYW5hZ2VyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NQbHVnaW5TdG9yYWdlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NBcHBsaWNhdGlv
bkNhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjYW5BY2Nlc3NDb29raWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0R2VvbG9jYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpt
X2NyZWRlbnRpYWxzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjph
ZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5l
cjo6dXBkYXRlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRh
dGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2JEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gpOgorICAgICAg
ICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisKIDIwMjItMDMtMzEgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNz
XSBbaU9TXSBWZXJ0aWNhbCB0ZXh0IGlzIGluY29ycmVjdGx5IGRpc3BsYWNlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA4ZjA3MDk0NTdkMTI3MmY0YTcxZDcyZDdmZTZhNGQ2NjJhM2QzNDdhLi5mNGE0NGIzODk2NDJh
NzlhNjE5M2JhNzhmNTBkNmEzMGY5MGQ3ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIyLTAzLTMxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1v
dmUgY2FuQWNjZXNzU3RvcmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0
RXhlY3V0aW9uQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4NTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisKIDIwMjIt
MDMtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVwYXJl
IFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFy
KikgY29uc3RydWN0b3IgZXhwbGljaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNLmNwcAppbmRleCA2NTQzZjM5MTk4M2M3YzQ2MzNkMjc4YTllYTk1ZjUwYzM5
OWEyNGZlLi44MDRmYzA0NzU4NTVhY2FjM2JjZmFkMjU4ZDJiMzU2OTE2OGIwYzJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC05NiwxMSAr
OTYsMTAgQEAgdm9pZCBDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MgPSBDRE1Qcml2YXRl
OjpMb2NhbFN0b3JhZ2VBY2Nlc3M6OkFsbG93ZWQ7CiAgICAgYm9vbCBpc0VwaGVtZXJhbCA9ICFk
b2N1bWVudC0+cGFnZSgpIHx8IGRvY3VtZW50LT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCk7Ci0KLSAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCk7Ci0gICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiA9IGRvY3VtZW50LT50b3BP
cmlnaW4oKTsKLSAgICBDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzID0gIWlz
RXBoZW1lcmFsICYmIG9yaWdpbi5jYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoJnRvcE9yaWdpbikgPyBD
RE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3M6OkFsbG93ZWQgOiBDRE1Qcml2YXRlOjpMb2Nh
bFN0b3JhZ2VBY2Nlc3M6Ok5vdEFsbG93ZWQ7CisgICAgaWYgKGlzRXBoZW1lcmFsIHx8ICFkb2N1
bWVudC0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VU
eXBlOjpMb2NhbFN0b3JhZ2UpIHx8ICFkb2N1bWVudC0+Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2VB
c1RoaXJkUGFydHkoKSkKKyAgICAgICAgYWNjZXNzID0gQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdl
QWNjZXNzOjpOb3RBbGxvd2VkOwogICAgIG1fcHJpdmF0ZS0+Z2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbihXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBhY2Nlc3MsIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcAppbmRleCBjZDM3MmY0MzY5MWFkZDRkN2RmMGM5ZTUyNTcwZWFmZmQy
OTM0MDM3Li43OTkwZDlkYWY2ZjhlMWE1NzA3ODk1OWFiMjNjNGRlNjg2YzRlZmE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApA
QCAtMzcxLDcgKzM3MSw3IEBAIGJvb2wgR2VvbG9jYXRpb246OnNob3VsZEJsb2NrR2VvbG9jYXRp
b25SZXF1ZXN0cygpCiAgICAgYm9vbCBpc1NlY3VyZSA9IFNlY3VyaXR5T3JpZ2luOjppc1NlY3Vy
ZShkb2N1bWVudCgpLT51cmwoKSkgfHwgZG9jdW1lbnQoKS0+aXNTZWN1cmVDb250ZXh0KCk7CiAg
ICAgYm9vbCBoYXNNaXhlZENvbnRlbnQgPSAhZG9jdW1lbnQoKS0+Zm91bmRNaXhlZENvbnRlbnQo
KS5pc0VtcHR5KCk7CiAgICAgYm9vbCBpc0xvY2FsT3JpZ2luID0gc2VjdXJpdHlPcmlnaW4oKS0+
aXNMb2NhbCgpOwotICAgIGlmIChzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0R2VvbG9jYXRp
b24oKSkgeworICAgIGlmIChkb2N1bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6Okdlb2xvY2F0aW9uKSkgewogICAgICAgICBpZiAo
aXNMb2NhbE9yaWdpbiB8fCAoaXNTZWN1cmUgJiYgIWhhc01peGVkQ29udGVudCkgfHwgaXNSZXF1
ZXN0RnJvbUlCb29rcygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggNTZj
MTcyN2RkYjgyMTBkMTM2OTc3NWJiYzM5NWVmN2Y4ZmI2Mzk5Ni4uYjNkOTZkMTlkYTgwNmQ1NzMz
Yzg0OTc0ZTUyZjRkYjVhNTE3NzlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTU0LDEwICs1NCw3IEBAIHN0YXRpYyBib29sIHNo
b3VsZFRocm93U2VjdXJpdHlFeGNlcHRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghY29udGV4dC5z
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZShudWxscHRyKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICFjb250ZXh0LmNhbkFj
Y2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6SW5kZXhl
ZERCKTsKIH0KIAogUmVmPElEQkZhY3Rvcnk+IElEQkZhY3Rvcnk6OmNyZWF0ZShJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByb3h5KQpAQCAtOTEsNyArODgsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciwgIklEQkZhY3Rvcnkub3BlbigpIGNhbGxlZCBpbiBhbiBpbnZhbGlkIHNlY3VyaXR5
IGNvbnRleHQiX3MgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwot
ICAgIGJvb2wgaXNUcmFuc2llbnQgPSAhY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nl
c3NEYXRhYmFzZSgmY29udGV4dC50b3BPcmlnaW4oKSk7CisgICAgYm9vbCBpc1RyYW5zaWVudCA9
ICFjb250ZXh0LmNhbk9yaWdpbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCk7CiAgICAgSURC
RGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdp
bkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdp
bkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBpc1RyYW5zaWVudCk7CiAgICAg
aWYgKCFkYXRhYmFzZUlkZW50aWZpZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgVHlwZUVycm9yLCAiSURCRmFjdG9yeS5vcGVuKCkgY2FsbGVkIHdpdGggYW4gaW52YWxp
ZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKQEAgLTExMiw3ICsxMDksNyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIklE
QkZhY3RvcnkuZGVsZXRlRGF0YWJhc2UoKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0eSBj
b250ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAg
ICBib29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
RGF0YWJhc2UoJmNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIGJvb2wgaXNUcmFuc2llbnQgPSAh
Y29udGV4dC5jYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpOwogICAgIElEQkRh
dGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmlnaW5E
YXRhIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfSwgU2VjdXJpdHlPcmlnaW5E
YXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgaXNUcmFuc2llbnQpOwogICAgIGlm
ICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgIklEQkZhY3RvcnkuZGVsZXRlRGF0YWJhc2UoKSBjYWxsZWQgd2l0aCBh
biBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNjM2YjQ4YzlmMDQ3OWJjNWFl
MzE5NGVhMWU4OTA1Njk2NTcxN2E0NS4uNDY3NDI5M2FjMWRjZTU0NGQ2MDI0MDhkM2Q3Mjc2ODBh
NTQyMWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwCkBAIC02NywxMyArNjcsMTMgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPENvbm5l
Y3Rpb25JbmZvPiBjb25uZWN0aW9uSW5mbyhOYXZpZ2F0b3JCYXNlKiBuYXZpZ2F0b3IpCiAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJDb250ZXh0IGlzIGludmFsaWQiX3MgfTsKIAorICAgIGlmICghY29udGV4dC0+Y2FuQWNj
ZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpMb2NhbFN0
b3JhZ2UpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiQ29udGV4dCBu
b3QgYWNjZXNzIHN0b3JhZ2UiX3MgfTsKKwogICAgIGF1dG8qIG9yaWdpbiA9IGNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCk7CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk9yaWdpbiBpcyBpbnZhbGlkIl9zIH07CiAKLSAgICBp
ZiAoIW9yaWdpbi0+Y2FuQWNjZXNzU3RvcmFnZU1hbmFnZXIoKSkKLSAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgIk9yaWdpbiBzaG91bGQgbm90IGFjY2VzcyBzdG9yYWdlIl9z
IH07Ci0KICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLT5zdG9yYWdlQ29ubmVj
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIENvbm5lY3Rpb25JbmZvIHsgKmNvbm5lY3Rpb24s
IHsgY29udGV4dC0+dG9wT3JpZ2luKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGEoKSB9IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93
V2ViRGF0YWJhc2UuY3BwCmluZGV4IDU2YWMwZTQyMmRkNGRmOTM2ZTNjY2IwMGNlNWY0NWMzZDY1
NTQxNWIuLjgwMjQ2NGI5ODk4MzQwNjlmZDc5YmE2ZGU5NjI4OGZkYmFiYTU1ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93
V2ViRGF0YWJhc2UuY3BwCkBAIC00Nyw5ICs0Nyw5IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxEYXRh
YmFzZT4+IERPTVdpbmRvd1dlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2UoRE9NV2luZG93JiB3aW5k
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAgICAgZG9jdW1l
bnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgIldlYiBTUUwgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBJbmRleGVkREIg
aW5zdGVhZC4iX3MpOwogCi0gICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKTsKLSAgICBpZiAoIXNlY3VyaXR5T3JpZ2luLmNhbkFjY2Vzc0RhdGFiYXNl
KCZkb2N1bWVudC0+dG9wT3JpZ2luKCkpKQorICAgIGlmICghZG9jdW1lbnQtPmNhbkFjY2Vzc1Jl
c291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6V2ViU1FMKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKKwogICAgIGF1dG8gcmVz
dWx0ID0gbWFuYWdlci5vcGVuRGF0YWJhc2UoKndpbmRvdy5kb2N1bWVudCgpLCBuYW1lLCB2ZXJz
aW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgV1RGTW92ZShjcmVhdGlvbkNhbGxiYWNr
KSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGSVhNRTog
VG8gcHJlc2VydmUgb3VyIHBhc3QgYmVoYXZpb3IsIHRoaXMgZGlzY2FyZHMgdGhlIGVycm9yIHN0
cmluZyBpbiB0aGUgZXhjZXB0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNjk0NmIx
NjQ5OGIwNmNjZGZhYjU4NjVhMzE2MTJkMWUyYjNlODM1ZS4uMjYwNmIzYjgzNDQzNDc5OTU4OGEx
Yjk2YWI5MzlhNmM1YWY4NjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02MzIsNiAr
NjMyLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3Mm
IHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCwgRG9jdW0KICAgICAgICAgbm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ291bnQgPSAwOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRFdmVu
dExpc3RlbmVyc1RvTm9kZSgqdGhpcyk7CisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KG1f
c2V0dGluZ3MtPnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6
Y3JlYXRlTmV3SWRlbnRpZmllcigpCkBAIC01MzM5LDcgKzUzNDAsNyBAQCBFeGNlcHRpb25PcjxT
dHJpbmc+IERvY3VtZW50Ojpjb29raWUoKQogICAgIGlmIChpc0Nvb2tpZUF2ZXJzZSgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKCkuY2FuQWNj
ZXNzQ29va2llcygpKQorICAgIGlmICghY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6UmVzb3VyY2VUeXBlOjpDb29raWVzKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIFVSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVV
UkwoKTsKQEAgLTUzNjAsNyArNTM2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojpz
ZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBpZiAoaXNDb29raWVBdmVyc2UoKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmICghc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nl
c3NDb29raWVzKCkpCisgICAgaWYgKCFjYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpSZXNvdXJjZVR5cGU6OkNvb2tpZXMpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU2VjdXJpdHlFcnJvciB9OwogCiAgICAgVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVS
TCgpOwpAQCAtNTc5MCw3ICs1NzkxLDcgQEAgYm9vbCBEb2N1bWVudDo6bWVkaWFEYXRhTG9hZHNB
dXRvbWF0aWNhbGx5KCkgY29uc3QKIAogdm9pZCBEb2N1bWVudDo6c3RvcmFnZUJsb2NraW5nU3Rh
dGVEaWRDaGFuZ2UoKQogewotICAgIHNlY3VyaXR5T3JpZ2luKCkuc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KHNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOworICAgIHNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKIH0K
IAogLy8gVXNlZCBvbmx5IGJ5IFdlYktpdExlZ2FjeS4KQEAgLTYzNDYsNyArNjM0Nyw2IEBAIHZv
aWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICAgICAgc2VjdXJpdHlP
cmlnaW4oKS5zZXRFbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbigpOwogICAgICAgICB9CiAgICAg
fQotICAgIHNlY3VyaXR5T3JpZ2luKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdz
KCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwogCiAgICAgUmVmUHRyIHBhcmVudERvY3VtZW50
ID0gb3duZXJFbGVtZW50KCkgPyAmb3duZXJFbGVtZW50KCktPmRvY3VtZW50KCkgOiBudWxscHRy
OwogICAgIGlmIChwYXJlbnREb2N1bWVudCAmJiBtX2ZyYW1lLT5sb2FkZXIoKS5zaG91bGRUcmVh
dFVSTEFzU3JjZG9jRG9jdW1lbnQodXJsKCkpKSB7CkBAIC03ODg3LDggKzc4ODcsOCBAQCB2b2lk
IERvY3VtZW50OjphcHBseVF1aWNrTG9va1NhbmRib3goKQogICAgIEFTU0VSVCghZG9jdW1lbnRV
UkwucHJvdG9jb2xJcyhRTFByZXZpZXdQcm90b2NvbCkpOwogICAgIEFTU0VSVChyZXNwb25zZVVS
TC5wcm90b2NvbElzKFFMUHJldmlld1Byb3RvY29sKSk7CiAKKyAgICBzZXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCk7CiAgICAgYXV0byBzZWN1
cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVOb25Mb2NhbFdpdGhBbGxvd2VkRmls
ZVBhdGgocmVzcG9uc2VVUkwsIGRvY3VtZW50VVJMLmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgIHNl
Y3VyaXR5T3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9s
aWN5OjpCbG9ja0FsbCk7CiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmln
aW5Qb2xpY3k6OmNyZWF0ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkpOwogCiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcXVpY2tMb29rQ1NQID0gbWFrZVN0cmluZygiZGVmYXVs
dC1zcmMgIiwgUUxQcmV2aWV3UHJvdG9jb2wsICI6ICd1bnNhZmUtaW5saW5lJzsgYmFzZS11cmkg
J25vbmUnOyBzYW5kYm94IGFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCAzOGYwNzEx
MDdkNzc2ZWY2YmViNDQ3OWNiMDU3OTdlYmUwYzViMTA0Li40ZjQyYWI4MjJmYWZjODAwN2UyYTlm
NzViYTM4YzFjZDUyYzZlY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCkBAIC01NzgsNyArNTc4LDEzIEBAIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Omdsb2JhbE9iamVjdCgpCiAKIFN0cmluZyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24uaXNOdWxsKCkgPyB0b3BPcmlnaW4oKS5k
b21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogbV9kb21haW5Gb3JDYWNoZVBhcnRpdGlvbjsKKyAg
ICBpZiAoIW1fZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biBtX2RvbWFpbkZvckNhY2hlUGFydGl0aW9uOworCisgICAgaWYgKG1fc3RvcmFnZUJsb2NraW5n
UG9saWN5ICE9IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5KQorICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiB0b3BPcmlnaW4oKS5kb21haW5G
b3JDYWNoZVBhcnRpdGlvbigpOwogfQogCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFs
bG93c01lZGlhRGV2aWNlcygpIGNvbnN0CkBAIC03MDksNCArNzE1LDU2IEBAIHZvaWQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUb1Jlc3BvbnNpYmxlRG9jdW1lbnQoRnVuY3Rpb248
dm9pZChEb2N1bWVuCiAgICAgICAgIGNhbGxiYWNrKCpkb2N1bWVudCk7CiB9CiAKK2Jvb2wgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2UoKQoreworICAgIGF1
dG8qIG9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFvcmlnaW4pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChvcmlnaW4tPmlzVW5pcXVlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChvcmlnaW4tPmlzTG9jYWwoKSAmJiAhb3JpZ2luLT5uZWVk
c1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpICYmICFvcmlnaW4tPmhhc1VuaXZlcnNh
bEFjY2VzcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9zdG9yYWdlQmxv
Y2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2VBc1RoaXJkUGFydHkoKQoreworICAg
IGF1dG8qIG9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFvcmlnaW4pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kp
IHsKKyAgICBjYXNlIFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QWxsb3dBbGw6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGNhc2UgU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9j
a1RoaXJkUGFydHk6CisgICAgICAgIHJldHVybiB0b3BPcmlnaW4oKS5pc1NhbWVPcmlnaW5Bcygq
b3JpZ2luKTsKKyAgICB9Cit9CisKK2Jvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuQWNj
ZXNzUmVzb3VyY2UoUmVzb3VyY2VUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBSZXNvdXJjZVR5cGU6OkNvb2tpZXM6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6Okdl
b2xvY2F0aW9uOgorICAgICAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW4oKSA/ICFzZWN1cml0eU9y
aWdpbigpLT5pc1VuaXF1ZSgpIDogZmFsc2U7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkFwcGxp
Y2F0aW9uQ2FjaGU6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlBsdWdpbjoKKyAgICBjYXNlIFJl
c291cmNlVHlwZTo6V2ViU1FMOgorICAgICAgICByZXR1cm4gY2FuT3JpZ2luQWNjZXNzUmVzb3Vy
Y2UoKSAmJiBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpOworICAgIGNhc2Ug
UmVzb3VyY2VUeXBlOjpJbmRleGVkREI6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkxvY2FsU3Rv
cmFnZToKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6U2Vzc2lvblN0b3JhZ2U6CisgICAgY2FzZSBS
ZXNvdXJjZVR5cGU6OlN0b3JhZ2VNYW5hZ2VyOgorICAgICAgICByZXR1cm4gY2FuT3JpZ2luQWNj
ZXNzUmVzb3VyY2UoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDAzZmUyNDQ3YjQz
ZTA4YmE1MWRhNzJhZmYyM2M2OTk5ZjEyNTE1ZTEuLjI5OTM1YjZkNWFiMDRiNTc1OGI4ZmIwODVj
OWVmYTdlZGE2Yjk3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlICJTdG9yYWdlQmxvY2tpbmdQb2xpY3kuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYW5kbGVU
eXBlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTI5Nyw2ICsyOTgsMjEgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRpb25XYXJuaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldhcm5p
bmc7IH0KICAgICB2b2lkIHNldEhhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRFbmNyeXB0aW9uV2Fybmlu
Zyhib29sIHZhbHVlKSB7IG1faGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRpb25XYXJuaW5n
ID0gdmFsdWU7IH0KIAorICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VC
bG9ja2luZ1BvbGljeSBwb2xpY3kpIHsgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSBwb2xpY3k7
IH0KKyAgICBlbnVtIGNsYXNzIFJlc291cmNlVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlLAorICAgICAgICBDb29raWVzLAorICAgICAgICBHZW9sb2NhdGlvbiwKKyAg
ICAgICAgSW5kZXhlZERCLAorICAgICAgICBMb2NhbFN0b3JhZ2UsCisgICAgICAgIFBsdWdpbiwK
KyAgICAgICAgU2Vzc2lvblN0b3JhZ2UsCisgICAgICAgIFN0b3JhZ2VNYW5hZ2VyLAorICAgICAg
ICBXZWJTUUwKKyAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuQWNjZXNzUmVzb3Vy
Y2UoUmVzb3VyY2VUeXBlKTsKKyAgICBib29sIGNhbk9yaWdpbkFjY2Vzc1Jlc291cmNlQXNUaGly
ZFBhcnR5KCk7CisKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRhc2sg
OiBwdWJsaWMgVGFzayB7CiAgICAgcHVibGljOgpAQCAtMzM5LDYgKzM1NSw3IEBAIHByaXZhdGU6
CiAgICAgUmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tl
clNsb3coKTsKIAogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OworICAgIGJvb2wg
Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2UoKTsKIAogICAgIEhhc2hTZXQ8TWVzc2FnZVBvcnQqPiBt
X21lc3NhZ2VQb3J0czsKICAgICBIYXNoU2V0PENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKj4g
bV9kZXN0cnVjdGlvbk9ic2VydmVyczsKQEAgLTM3OCw2ICszOTUsNyBAQCBwcml2YXRlOgogICAg
IG11dGFibGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CiAgICAgYm9vbCBtX2hhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRFbmNyeXB0aW9uV2FybmluZyB7IGZh
bHNlIH07CisgICAgU3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5
IHsgU3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbCB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
ODc4NmM1MjU5Yjg5ODAxMjgzNTc0NDUyMGZlZjU5YmFjMDY0Zjk1Ny4uN2ZmNzA5NmRhMTkwYWUy
ZTA5OTk3YjlhMWI1ODY3MTEzNzUwZGNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0yMTQ4LDkgKzIxNDgsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICAvLyBJ
ZiB3ZSBhcmUgbG9hZGluZyB0aGUgbWFpbiByZXNvdXJjZSBvZiBhIHN1YmZyYW1lLCB1c2UgdGhl
IGNhY2hlIHBhcnRpdGlvbiBvZiB0aGUgbWFpbiBkb2N1bWVudC4KICAgICAgICAgbWFpblJlc291
cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbigqbV9mcmFtZS0+ZG9jdW1lbnQo
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKG1haW5SZXNvdXJjZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwotICAg
ICAgICBvcmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShmcmFtZUxvYWRlcigpLT5mcmFt
ZSgpLnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwotICAgICAgICBtYWluUmVz
b3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgIGlmIChmcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNl
dHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5
OjpCbG9ja1RoaXJkUGFydHkpCisgICAgICAgICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0LnNldERv
bWFpbkZvckNhY2hlUGFydGl0aW9uKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluUmVzb3Vy
Y2VSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgIG1haW5SZXNv
dXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIG1fbWFpblJlc291cmNl
ID0gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdE1haW5SZXNvdXJjZShXVEZNb3ZlKG1h
aW5SZXNvdXJjZVJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5k
ZXggODVjN2QwMTgzYWMxNmRlMTNhNzE0NmE4YWRjOTBmZDcyMTk0Mjc5ZC4uM2VkNGUzZDBkZTdm
ZWU0ZmU0MjRiMGYwMGRlZDkzY2UxMGQwNzVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEzOCw3
ICsxMzgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUm
IGZyYW1lLCBjb25zdCBVUkwmIHBhc3NlZE1hbmlmZXN0VQogICAgIH0KIAogICAgIC8vIERvbid0
IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4K
LSAgICBpZiAoZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJh
bWUudHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYg
KGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQo
KS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBl
OjpBcHBsaWNhdGlvbkNhY2hlKSkgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFt
ZXMoKS5jaGVja2luZ0V2ZW50LCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5l
clRhc2soZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpz
ZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSYgZnJhbWUpCiAgICAgQVNTRVJUKCFk
b2N1bWVudExvYWRlci5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLmFwcGxpY2F0aW9uQ2FjaGUoKSk7
CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dz
aW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBs
aWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpKSkgeworICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwg
IWZyYW1lLmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSkpIHsKICAgICAgICAgcG9zdExpc3Rl
bmVyVGFzayhldmVudE5hbWVzKCkuY2hlY2tpbmdFdmVudCwgZG9jdW1lbnRMb2FkZXIpOwogICAg
ICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBkb2N1bWVudExv
YWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6dXBkYXRlKEZyYW1lJiBmcmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0
ZU9wdGlvbiB1cAogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNr
IGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUucGFnZSgpLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUudHJlZSgpLnRvcCgpLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVt
ZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlKSkgewog
ICAgICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSk7
CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7CiAgICAgICAgIEFT
U0VSVCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCBlZDc1NjY1MjZi
MmQ3ZWZiZjFjNTE3MDIwOTVhODc5YmFmNTY5NDQ3Li4yOTg1YzdiMDM1ZWNjMjdhYzYzNmJhMmNh
MGY3YWIwOTJiM2Y4MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTU2MSwxNCArNTYxLDE0IEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKQogICAg
IHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCkgJiYgbV9kb2N1bWVudExvYWRlci5mcmFt
ZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpICYmICFt
X2RvY3VtZW50TG9hZGVyLmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsK
IH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tl
ZEZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tlZEZvclJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikKIHsKICAgICBhdXRvKiBmcmFtZSA9IG1fZG9jdW1lbnRMb2FkZXIu
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
ICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3QudXJsKCkpLT5jYW5BY2Nlc3NBcHBsaWNh
dGlvbkNhY2hlKGZyYW1lLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKSk7CisgICAgcmV0dXJuICFm
cmFtZS0+ZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6UmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBkZDNjY2RiYmQxMzQ1ZmFi
OTIyZjlmZjM2MGUyYThlYWI5NmZiZmE0Li42MTIzYTgwNGU2YzI2MjczNTBmYzhhNjQ0MTExMTJh
YzlhMjA5MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04MzYsNyArODM2LDcg
QEAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UoKQogICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKCFkb2N1
bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NTZXNzaW9uU3RvcmFnZShkb2N1bWVudC0+
dG9wT3JpZ2luKCkpKQorICAgIGlmICghZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6U2Vzc2lvblN0b3JhZ2UpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OwogCiAgICAgaWYgKG1fc2Vzc2lv
blN0b3JhZ2UpCkBAIC04NjIsNyArODYyLDcgQEAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdp
bmRvdzo6bG9jYWxTdG9yYWdlKCkKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNz
TG9jYWxTdG9yYWdlKG51bGxwdHIpKQorICAgIGlmICghZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291
cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIGF1dG8q
IHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNTA3NjI0ZGY4
NmQ3ZWZhZGRkODA0NDk1OTRhODhhYzc3YWQxMTM2ZC4uZDUzN2Q0YmE3Yzk1YjY1N2I5MTcyOTc4
Yjg0YTkyMWNkZmUyODgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zOTYwLDE2ICszOTYwLDE3
IEBAIHZvaWQgUGFnZTo6c2V0dXBGb3JSZW1vdGVXb3JrZXIoY29uc3QgVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYKICAgICBtYWluRnJhbWUoKS5sb2FkZXIoKS5pbml0
Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOwogICAgIGF1dG8gZG9jdW1lbnQgPSBEb2N1bWVu
dDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWluRnJhbWUoKSwgc2NyaXB0VVJMKTsK
ICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7Ci0KICAgICBkb2N1bWVudC0+c3RvcmFn
ZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIGF1dG8gb3JpZ2luID0gdG9wT3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
c2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7Ci0KICAgICBhdXRvIG9yaWdpbkFz
VVJMID0gb3JpZ2luLT50b1VSTCgpOwogICAgIGRvY3VtZW50LT5zZXRTaXRlRm9yQ29va2llcyhv
cmlnaW5Bc1VSTCk7CiAgICAgZG9jdW1lbnQtPnNldEZpcnN0UGFydHlGb3JDb29raWVzKG9yaWdp
bkFzVVJMKTsKLSAgICBkb2N1bWVudC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2lu
LT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKworICAgIGlmIChkb2N1bWVudC0+c2V0dGlu
Z3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSAhPSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJs
b2NrVGhpcmRQYXJ0eSkKKyAgICAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0
aW9uKFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVu
dC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRp
dGlvbigpKTsKIAogICAgIGlmIChhdXRvIHBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3kocmVm
ZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkKICAgICAgICAg
ZG9jdW1lbnQtPnNldFJlZmVycmVyUG9saWN5KCpwb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAppbmRleCA0YmE1MTkxZTZiM2U0MDk4NzljMjE5YzE2NmE4M2ZlNzEy
YTM1ODdhLi43ODBhOGVlZDdlOTg4MWQ2MjNmYmM5MjlmNDQ2MWU1OTk0ZDE2YzY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjA4LDcgKzIwOCw2IEBAIFNlY3Vy
aXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpCiAg
ICAgLCBtX3VuaXZlcnNhbEFjY2VzcyB7IG90aGVyLT5tX3VuaXZlcnNhbEFjY2VzcyB9CiAgICAg
LCBtX2RvbWFpbldhc1NldEluRE9NIHsgb3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00gfQogICAg
ICwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgeyBvdGhlci0+bV9jYW5Mb2FkTG9jYWxSZXNvdXJj
ZXMgfQotICAgICwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBvdGhlci0+bV9zdG9yYWdlQmxv
Y2tpbmdQb2xpY3kgfQogICAgICwgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbiB7IG90aGVy
LT5tX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIH0KICAgICAsIG1fbmVlZHNTdG9yYWdlQWNj
ZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBvdGhlci0+bV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmls
ZVVSTHNRdWlyayB9CiAgICAgLCBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB7IG90aGVyLT5t
X2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB9CkBAIC00MTgsMzYgKzQxNyw2IEBAIGJvb2wgU2Vj
dXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc1N0b3JhZ2UoY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgU2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSBzaG91
bGRBbGxvd0Zyb21UaGlyZFBhcnR5KSBjb25zdAotewotICAgIGlmIChpc1VuaXF1ZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXNMb2NhbCgpICYmICFuZWVkc1N0b3JhZ2VB
Y2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpICYmICFtX3VuaXZlcnNhbEFjY2VzcyAmJiBzaG91bGRB
bGxvd0Zyb21UaGlyZFBhcnR5ICE9IEFsd2F5c0FsbG93RnJvbVRoaXJkUGFydHkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0g
U3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYW4gQVNT
RVJUIG9uY2Ugd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRvcE9yaWdpbiBpcyBub3QgbnVsbC4KLSAg
ICBpZiAoIXRvcE9yaWdpbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAodG9wT3Jp
Z2luLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJs
b2NrQWxsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoc2hvdWxkQWxsb3dGcm9t
VGhpcmRQYXJ0eSA9PSBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBpZiAoKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeTo6QmxvY2tUaGlyZFBhcnR5IHx8IHRvcE9yaWdpbi0+bV9zdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpICYmICF0b3BPcmln
aW4tPmlzU2FtZU9yaWdpbkFzKCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIFNlY3VyaXR5T3JpZ2luOjpQb2xpY3kgU2VjdXJpdHlPcmlnaW46
OmNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV91bml2ZXJzYWxBY2Nl
c3MpCkBAIC01MTcsOSArNDg2LDYgQEAgdm9pZCBTZWN1cml0eU9yaWdpbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKQogCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OmRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCi0gICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotCiAgICAgaWYgKGlzSFRUUEZhbWlseSgpKQogICAgICAg
ICByZXR1cm4gaG9zdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXgg
ZDJiZjczZGE2MmQzZjVhMWE5NzRhMDdhZjdhYzI1OWRkYTY5YWEzZi4uZmYxZDIyYzE1ZmUwYmY0
MzRlMWZlZjk0NDZmYzJlODJjYzRmYzk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uaApAQCAtMjksNyArMjksNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJTdG9yYWdlQmxvY2tpbmdQb2xpY3kuaCIKICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTEzOSwyMSArMTM4LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdyYW50VW5pdmVyc2FsQWNjZXNzKCk7CiAgICAgYm9vbCBoYXNVbml2ZXJz
YWxBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VuaXZlcnNhbEFjY2VzczsgfQogCi0gICAgdm9p
ZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkg
eyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHBvbGljeTsgfQotCiAgICAgdm9pZCBncmFudFN0
b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpOwogICAgIGJvb2wgbmVlZHNTdG9yYWdlQWNj
ZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU3RvcmFnZUFjY2Vz
c0Zyb21GaWxlVVJMc1F1aXJrOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdDsKLQotICAgIGJvb2wgY2FuQWNjZXNzRGF0YWJhc2Uo
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNz
U3RvcmFnZSh0b3BPcmlnaW4pOyB9OwotICAgIGJvb2wgY2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2Uo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNz
U3RvcmFnZSgmdG9wT3JpZ2luLCBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KTsgfQotICAgIGJv
b2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4p
IGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsKLSAgICBib29s
IGNhbkFjY2Vzc1N0b3JhZ2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFn
ZShudWxscHRyKTsgfQotICAgIGJvb2wgY2FuQWNjZXNzUGx1Z2luU3RvcmFnZShjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0
b3BPcmlnaW4pOyB9Ci0gICAgYm9vbCBjYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2Uo
JnRvcE9yaWdpbik7IH0KLSAgICBib29sIGNhbkFjY2Vzc0Nvb2tpZXMoKSBjb25zdCB7IHJldHVy
biAhaXNVbmlxdWUoKTsgfQotICAgIGJvb2wgY2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KICAgICBQb2xpY3kgY2FuU2hvd05vdGlmaWNhdGlvbnMo
KSBjb25zdDsKIAogICAgIC8vIFRoZSBsb2NhbCBTZWN1cml0eU9yaWdpbiBpcyB0aGUgbW9zdCBw
cml2aWxlZ2VkIFNlY3VyaXR5T3JpZ2luLgpAQCAtMjQ0LDcgKzIzMiw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3VuaXZlcnNhbEFjY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvbWFpbldh
c1NldEluRE9NIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzIHsg
ZmFsc2UgfTsKLSAgICBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgeyBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsIH07CiAgICAgYm9vbCBtX2VuZm9y
Y2VzRmlsZVBhdGhTZXBhcmF0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNTdG9yYWdl
QWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBmYWxzZSB9OwogICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxib29sPiBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTsKQEAgLTI2Niw3ICsyNTMsNiBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBTZWN1cml0eU9yaWdpbjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXIgPDwgbV91bml2ZXJzYWxBY2Nl
c3M7CiAgICAgZW5jb2RlciA8PCBtX2RvbWFpbldhc1NldEluRE9NOwogICAgIGVuY29kZXIgPDwg
bV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXM7Ci0gICAgZW5jb2RlciA8PCBtX3N0b3JhZ2VCbG9ja2lu
Z1BvbGljeTsKICAgICBlbmNvZGVyIDw8IG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb247CiAg
ICAgZW5jb2RlciA8PCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOwogICAg
IGVuY29kZXIgPDwgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk7CkBAIC0yOTUsOCArMjgxLDYg
QEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
U2VjdXJpdHlPcmlnaW46OmRlY29kZShEZWMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fY2FuTG9hZExvY2FsUmVzb3VyY2VzKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1f
c3RvcmFnZUJsb2NraW5nUG9saWN5KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24pKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9yaWdpbi0+
bV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggMjZiYWY0
ZjA0ZDczZGJhNzk1ZTRlZjQxMzkyZjk5NTNkN2ZlYjBhZS4uMjEyYjQ5NTgyYjE1ZGVmMDY1NTZj
MTA4ODMzNDJiNDg1MjQ0OWMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBSZWY8U3RvcmFn
ZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3RpbGwgYWN0
dWFsbHkgaGF2ZSBhIFBhZ2UuCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKLSAgICBi
b29sIHRyYW5zaWVudCA9ICFkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0xvY2Fs
U3RvcmFnZSgmZG9jdW1lbnQudG9wT3JpZ2luKCkpOworICAgIGJvb2wgdHJhbnNpZW50ID0gIWRv
Y3VtZW50LmNhbk9yaWdpbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCk7CiAKICAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gc3RvcmFnZU5hbWVzcGFjZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBmMmYyOThlNzg3MjBmNzAzMDk5
MDJjMmIzYjliZmJhMmJhZGUwYWM0Li41OTMzZTA3NGU4YjYzMjdkMDU2NjFiMzQxZTE2MjcyMDk5
ZmQyOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cApAQCAtMTE2LDYgKzExNiw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29w
ZShXb3JrZXJUaHJlYWRUeXBlIHR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlCiAgICAgaWYgKG1f
dG9wT3JpZ2luLT5uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpKQogICAgICAg
ICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCk7CiAKKyAgICBz
ZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kobV9zZXR0aW5nc1ZhbHVlcy5zdG9yYWdlQmxvY2tpbmdQ
b2xpY3kpOwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5
OjpjcmVhdGUoV1RGTW92ZShvcmlnaW4pKSk7CiAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5
KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykp
OwogICAgIHNldENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kocGFyYW1zLmNyb3NzT3JpZ2luRW1i
ZWRkZXJQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDQ3NTQyZGRmNDE2ZThlMzYzY2M3
NDI2MjIyNjQxNDE0YTRmYjFmMGUuLmE4MjNjZWVlOWUxNzUwOGU1YjAzMWYxYmY2ZWExMzM2OWFh
MjQ2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTIwNCw2ICsyMDQsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIHJlbGF0aXZl
U2NyaXB0VVJMLCBjbwogICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC0+dG9wT3JpZ2lu
KCkuZGF0YSgpOwogICAgIGpvYkRhdGEud29ya2VyVHlwZSA9IG9wdGlvbnMudHlwZTsKICAgICBq
b2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI7CisgICAgam9iRGF0
YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA9IGNvbnRleHQtPmRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKCk7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gb3B0aW9uczsKIAogICAg
IHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKQEAgLTI1Miw2ICsyNTMsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3Bl
VVJMLCBjb25zdCBVUkwmCiAgICAgam9iRGF0YS50b3BPcmlnaW4gPSBjb250ZXh0LnRvcE9yaWdp
bigpLmRhdGEoKTsKICAgICBqb2JEYXRhLndvcmtlclR5cGUgPSB3b3JrZXJUeXBlOwogICAgIGpv
YkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGU7CisgICAgam9iRGF0YS5k
b21haW5Gb3JDYWNoZVBhcnRpdGlvbiA9IGNvbnRleHQuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
KTsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAgICAgam9iRGF0YS5zY3JpcHRV
UkwgPSBzY3JpcHRVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCmluZGV4IGYwYWE4NmM1ZGE2ZjI3OWZkN2Uw
NzJjZTMyNWEzNWNhMGNjOTNkNDAuLmViZTFhZWNkNzA0N2Q2NGVjY2IzN2NiNjU5NmVkYzAxNjI3
Y2FiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2JEYXRhLmNwcApAQCAtNzgsNiArNzgsNyBAQCBTZXJ2aWNlV29ya2VySm9i
RGF0YSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXN1
bHQuY2xpZW50Q3JlYXRpb25VUkwgPSBjbGllbnRDcmVhdGlvblVSTC5pc29sYXRlZENvcHkoKTsK
ICAgICByZXN1bHQudG9wT3JpZ2luID0gdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpOwogICAgIHJl
c3VsdC5zY29wZVVSTCA9IHNjb3BlVVJMLmlzb2xhdGVkQ29weSgpOworICAgIHJlc3VsdC5kb21h
aW5Gb3JDYWNoZVBhcnRpdGlvbiA9IGRvbWFpbkZvckNhY2hlUGFydGl0aW9uLmlzb2xhdGVkQ29w
eSgpOwogICAgIHJlc3VsdC5yZWdpc3RyYXRpb25PcHRpb25zID0gcmVnaXN0cmF0aW9uT3B0aW9u
cy5pc29sYXRlZENvcHkoKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCmluZGV4IGRm
YmFkYTM1ZTNkNDkwNzUzYTMxMjAxNjY1ZjlhYWQ1NWUzZjBmMjQuLjA4ZjlmZTllMjVkMzdmNTQ3
ODJiNGE4MDRkYzNkMDE1OTFiMDMzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCkBAIC01NSw2ICs1NSw3IEBAIHN0
cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YSB7CiAgICAgU2VydmljZVdvcmtlck9yQ2xpZW50SWRl
bnRpZmllciBzb3VyY2VDb250ZXh0OwogICAgIFdvcmtlclR5cGUgd29ya2VyVHlwZTsKICAgICBT
ZXJ2aWNlV29ya2VySm9iVHlwZSB0eXBlOworICAgIFN0cmluZyBkb21haW5Gb3JDYWNoZVBhcnRp
dGlvbjsKICAgICBib29sIGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2UgfTsKIAogICAg
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zIHJlZ2lzdHJhdGlvbk9wdGlvbnM7CkBA
IC03NSw3ICs3Niw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBT
ZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8IGNsaWVudENyZWF0aW9u
VVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250ZXh0IDw8IHdvcmtlclR5
cGUgPDwgaXNGcm9tU2VydmljZVdvcmtlclBhZ2U7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVy
KCkgPDwgc2NyaXB0VVJMIDw8IGNsaWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29w
ZVVSTCA8PCBzb3VyY2VDb250ZXh0IDw8IHdvcmtlclR5cGUgPDwgZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24gPDwgaXNGcm9tU2VydmljZVdvcmtlclBhZ2U7CiAgICAgZW5jb2RlciA8PCB0eXBlOwog
ICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lz
dGVyOgpAQCAtMTE1LDYgKzExNiw4IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLndv
cmtlclR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoam9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbikpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLmlzRnJvbVNl
cnZpY2VXb3JrZXJQYWdlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGpvYkRhdGEudHlwZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGEzMWY0N2JkNTc3ZjZlNjJm
NjNkNTk0MDFjODM4YzVkNTFjNjVjYzEuLjQ1YjU5YzZkYjE2NmFkYmVhZjkyNjVkZWU2NDI0YmI0
OTVjNjZhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBTV1NlcnZlcjo6c3RhcnRT
Y3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgU1dTZXJ2ZXJS
ZWcKICAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBqb2JEYXRhLnRvcE9yaWdpbi5zZWN1cml0eU9y
aWdpbigpOwogICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9i
RGF0YS5zY3JpcHRVUkwpOwogCi0gICAgICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24odG9wT3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihqb2JEYXRhLmRvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKTsKICAgICAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob3JpZ2luVVJMKHRvcE9yaWdpbikpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRl
eCA3NGRmMjc1MTc4Y2E4ODBmODlmOTI5OTY1ODg3Mjk2ZDBkZjM1YTg4Li5hZjc3YzM1OWVkNWUw
ZjVjZGU0MTIzMGY5NTEwNGNjN2ZlYjg0ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgV29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0VGhyZWFkJiB0aHJlYWQs
IFJlZjxKU0M6OlYKIHsKICAgICArK2dOdW1iZXJPZldvcmtsZXRHbG9iYWxTY29wZXM7CiAKKyAg
ICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kocGFyYW1ldGVycy5zZXR0aW5nc1ZhbHVlcy5zdG9y
YWdlQmxvY2tpbmdQb2xpY3kpOwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5
T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0aGlzLT51cmwoKSkp
KTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJp
dHlQb2xpY3k+KFVSTCB7IHRoaXMtPnVybCgpIH0sICp0aGlzKSk7CiB9CkBAIC03NSw2ICs3Niw3
IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPEpTQzo6Vk0+JiYgdm0sIFNjCiAKICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgp
KTsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShtX2RvY3VtZW50LT5zZXR0aW5ncygp
LnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShT
ZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodGhpcy0+
dXJsKCkpKSk7CiAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVu
dFNlY3VyaXR5UG9saWN5PihVUkwgeyB0aGlzLT51cmwoKSB9LCAqdGhpcykpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0NWEw
MTFiZTU1NjYyMDdjOWNhYzQ1ZjllZjYwOTJjZTgwMTUwMDFmLi5kNTg3Y2IzM2M1ZWVlNDczODYy
NTY1NjRiNDMzZDQxOTljZjdjODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNjEzLDggKzYxMyw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKICAgICBpZiAoIW1faXNJbml0aWFsaXpl
ZCB8fCAhbV9wbHVnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc3RvcmFnZUJsb2Nr
aW5nUG9saWN5ID0gIWZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNj
ZXNzUGx1Z2luU3RvcmFnZShmcmFtZSgpLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKSk7Ci0KKyAg
ICBib29sIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9ICFmcmFtZSgpLT5kb2N1bWVudCgpLT5jYW5B
Y2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OlBsdWdp
bik7CiAgICAgbV9wbHVnaW4tPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChzdG9yYWdlQmxv
Y2tpbmdQb2xpY3kpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZjJlNGViYTk0MjNkNTFjNzdiYTE0MmU1ODRhMThhZjg3MzkxODhjMi4u
NTMwN2FmOTlkMGY4Mzg1MzFlNmFmYTM2MjBiMjE2MjFmNDE2ZGQwNCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIy
LTAzLTMxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Y2FuQWNjZXNzU3RvcmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4NTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3Rl
bmNlLm1tOgorCiAyMDIyLTAzLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0TGVnYWN5LyBmb3IgbWFraW5nIHRoZSBT
dHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0
ZW5jZS5tbQppbmRleCAwN2YwY2UyODE1NjAxOGZkNWU0NGY0ZWI0N2RhYjY1NjcyNDdiN2U2Li45
NWE0MTgwNzBkNjA2NWRkOWI5Yzc4YzdlZGRlYmFjZDJhMTkxMTM4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVy
c2lzdGVuY2UubW0KQEAgLTI4Myw4ICsyODMsNiBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERC
VGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKIAotICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107Ci0KICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tJbmRleGVkREJNZXNzYWdlSGFuZGxlciBhbGxvY10g
aW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456383</attachid>
            <date>2022-04-01 11:52:29 -0700</date>
            <delta_ts>2022-04-05 23:04:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238524-20220401115228.patch</filename>
            <type>text/plain</type>
            <size>41473</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE3MGEwZTNjN2VhNGQ1
YjNiYzExN2FlODA3Y2YwNmFjN2ZiZDE0Yi4uNWJkZTZiZTlmYTY0YTk3MGVhZjc1ZWFhOGZjMDli
MzE1M2EzYzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIyLTA0LTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNh
bkFjY2Vzc1Jlc291cmNlKCkgdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBiZWNhdXNlIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW4sIAorICAgICAgICBz
aG91bGQgYmUgdGhlIHBsYWNlIHRoYXQgaG9sZHMgU3RvcmFnZUJsb2NraW5nUG9saWN5IChpdCdz
IHdlaXJkIHRoYXQgdGhlIG9yaWdpbiBhbmQgdG9wIG9yaWdpbiBkaXNhZ3JlZXMgd2l0aAorICAg
ICAgICBlYWNoIG90aGVyIG9uIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSkuIEFsc28sIGJlY2F1c2Ug
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBoYXMgYWNjZXNzIHRvIG9yaWdpbiBhbmQgdG9wT3JpZ2lu
LAorICAgICAgICB3ZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgZ2V0IHRoZW0gYmVmb3JlIHRo
ZSBhY2Nlc3MgY2hlY2suCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgYSBmdW5jdGlv
biBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpIGZvciB0aGlyZC1wYXJ0eSBh
Y2Nlc3MgY2hlY2suIFNvbWUKKyAgICAgICAgdHlwZXMgbmVlZCB0aGUgY2hlY2sgc2VwYXJhdGVs
eSBmcm9tIGNhbkFjY2Vzc1Jlc291cmNlKCksIGJlY2F1c2UgdGhleSBkb24ndCB3YW50IHRvIGRl
bnkgdGhpcmQtcGFydHkgYWNjZXNzOworICAgICAgICB0aGV5IGp1c3QgbmVlZCB0byBzd2l0Y2gg
dG8gbm9uLXBlcnNpc3RlbnQgc3RvcmFnZS4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Z2V0U3VwcG9ydGVkQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2hvdWxkQmxvY2tHZW9sb2NhdGlvblJl
cXVlc3RzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFRocm93U2VjdXJpdHlFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3N0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ubmVjdGlvbkluZm8pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fd2hpdGVzcGFjZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFw
cGx5UXVpY2tMb29rU2FuZGJveCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuT3JpZ2luQWNj
ZXNzUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2VB
c0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhbkFj
Y2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmNhbkFjY2Vzc1Jlc291cmNlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hl
V2l0aG91dE1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6dXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBw
bGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNldHVwRm9yUmVtb3RlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpkb21haW5Gb3JDYWNoZVBhcnRp
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNz
U3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc0RhdGFiYXNlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTZXNz
aW9uU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y2FuQWNjZXNzTG9jYWxTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTdG9yYWdlTWFuYWdlciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzUGx1Z2lu
U3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQ29va2llcyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdEdlb2xvY2F0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6Omxv
Y2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bV9jcmVkZW50aWFscyk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFy
dFNjcmlwdEZldGNoKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorCiAyMDIyLTA0LTAxICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2Nzcy1sb2dpY2FsXSBBZGQgc3VwcG9ydCBmb3IgYmxvY2svaW5saW5lIENTUyB2YWx1ZXMg
Zm9yIHJlc2l6ZSBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0Y2MwZDgyMjJhZWMzNmQwNzg3ZTlmNGE4
NGY4MWFiZThmZDBiYTEwLi44ZWI0ZGI2OTE4NjY5ZGRiMjk1NzcwMjU1MzU4Mzk2MTI5MDNiZjRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTAxICBTaWh1aSBMaXUgIDxzaWh1
aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3RvcmFnZSgpIGNoZWNr
IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnN0b3JhZ2VC
bG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisKIDIwMjItMDQtMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uZ2V0Tm90
aWZpY2F0aW9ucyBzaG91bGQgbGlzdCBhbGwgcGVyc2lzdGVudCBub3RpZmljYXRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNjU0M2Yz
OTE5ODNjN2M0NjMzZDI3OGE5ZWE5NWY1MGMzOTlhMjRmZS4uMDQ2M2Y0NWRkNjQyOWNlMWI5NDI4
ZTA3MzkzNjdkZGQyOGNkNzJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNLmNwcApAQCAtOTYsMTEgKzk2LDEwIEBAIHZvaWQgQ0RNOjpnZXRTdXBwb3J0
ZWRDb25maWd1cmF0aW9uKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNv
bmZpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBDRE1Qcml2YXRlOjpMb2NhbFN0b3Jh
Z2VBY2Nlc3MgYWNjZXNzID0gQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2Vk
OwogICAgIGJvb2wgaXNFcGhlbWVyYWwgPSAhZG9jdW1lbnQtPnBhZ2UoKSB8fCBkb2N1bWVudC0+
cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwotCi0gICAgU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgIFNlY3VyaXR5T3JpZ2lu
JiB0b3BPcmlnaW4gPSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7Ci0gICAgQ0RNUHJpdmF0ZTo6TG9j
YWxTdG9yYWdlQWNjZXNzIGFjY2VzcyA9ICFpc0VwaGVtZXJhbCAmJiBvcmlnaW4uY2FuQWNjZXNz
TG9jYWxTdG9yYWdlKCZ0b3BPcmlnaW4pID8gQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNz
OjpBbGxvd2VkIDogQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOwor
ICAgIGlmIChpc0VwaGVtZXJhbCB8fCAhZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSB8fCAhZG9jdW1l
bnQtPmNhbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCkpCisgICAgICAgIGFjY2VzcyA9IENE
TVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZDsKICAgICBtX3ByaXZhdGUt
PmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShjYW5kaWRhdGVDb25maWd1cmF0aW9u
KSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggY2QzNzJmNDM2OTFh
ZGQ0ZDdkZjBjOWU1MjU3MGVhZmZkMjkzNDAzNy4uNzk5MGQ5ZGFmNmY4ZTFhNTcwNzg5NTlhYjIz
YzRkZTY4NmM0ZWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTM3MSw3ICszNzEsNyBAQCBib29sIEdlb2xvY2F0aW9u
OjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVzdHMoKQogICAgIGJvb2wgaXNTZWN1cmUgPSBT
ZWN1cml0eU9yaWdpbjo6aXNTZWN1cmUoZG9jdW1lbnQoKS0+dXJsKCkpIHx8IGRvY3VtZW50KCkt
PmlzU2VjdXJlQ29udGV4dCgpOwogICAgIGJvb2wgaGFzTWl4ZWRDb250ZW50ID0gIWRvY3VtZW50
KCktPmZvdW5kTWl4ZWRDb250ZW50KCkuaXNFbXB0eSgpOwogICAgIGJvb2wgaXNMb2NhbE9yaWdp
biA9IHNlY3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKTsKLSAgICBpZiAoc2VjdXJpdHlPcmlnaW4o
KS0+Y2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQoKS0+Y2FuQWNj
ZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpHZW9sb2Nh
dGlvbikpIHsKICAgICAgICAgaWYgKGlzTG9jYWxPcmlnaW4gfHwgKGlzU2VjdXJlICYmICFoYXNN
aXhlZENvbnRlbnQpIHx8IGlzUmVxdWVzdEZyb21JQm9va3MoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuY3BwCmluZGV4IDU2YzE3MjdkZGI4MjEwZDEzNjk3NzViYmMzOTVlZjdmOGZiNjM5
OTYuLmMwMDc2ZDI0NTE1MGQyZGVkOTUxODQ0Yjg0NzljNGE5ZjIzMTE4MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC01NCwxMCAr
NTQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUaHJvd1NlY3VyaXR5RXhjZXB0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAoIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2Uo
bnVsbHB0cikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiAhY29udGV4dC5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpSZXNvdXJjZVR5cGU6OkluZGV4ZWREQik7CiB9CiAKIFJlZjxJREJGYWN0b3J5PiBJREJGYWN0
b3J5OjpjcmVhdGUoSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94
eSkKQEAgLTkxLDcgKzg4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJ
REJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQg
aW4gYW4gaW52YWxpZCBzZWN1cml0eSBjb250ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4
dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBib29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuc2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoJmNvbnRleHQudG9wT3JpZ2luKCkpOwor
ICAgIGJvb2wgaXNUcmFuc2llbnQgPSAhY29udGV4dC5jYW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQ
YXJ0eSgpOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkg
fSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgaXNU
cmFuc2llbnQpOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIklEQkZhY3Rvcnkub3BlbigpIGNhbGxl
ZCB3aXRoIGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIl9zIH07CkBAIC0xMTIsNyArMTA5LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpkZWxldGVE
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db24KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNl
Y3VyaXR5RXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIGluIGFuIGlu
dmFsaWQgc2VjdXJpdHkgY29udGV4dCJfcyB9OwogCiAgICAgQVNTRVJUKGNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKSk7Ci0gICAgYm9vbCBpc1RyYW5zaWVudCA9ICFjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKCZjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBib29s
IGlzVHJhbnNpZW50ID0gIWNvbnRleHQuY2FuQWNjZXNzUmVzb3VyY2VBc1RoaXJkUGFydHkoKTsK
ICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3Vy
aXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3Vy
aXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGlzVHJhbnNpZW50
KTsKICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2Fs
bGVkIHdpdGggYW4gaW52YWxpZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDYzNmI0OGM5
ZjA0NzliYzVhZTMxOTRlYTFlODkwNTY5NjU3MTdhNDUuLjQ2NzQyOTNhYzFkY2U1NDRkNjAyNDA4
ZDNkNzI3NjgwYTU0MjFkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjcsMTMgKzY3LDEzIEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxDb25uZWN0aW9uSW5mbz4gY29ubmVjdGlvbkluZm8oTmF2aWdhdG9yQmFzZSogbmF2aWdh
dG9yKQogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9zIH07CiAKKyAgICBpZiAoIWNvbnRl
eHQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlw
ZTo6TG9jYWxTdG9yYWdlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
IkNvbnRleHQgbm90IGFjY2VzcyBzdG9yYWdlIl9zIH07CisKICAgICBhdXRvKiBvcmlnaW4gPSBj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJPcmlnaW4gaXMgaW52YWxpZCJfcyB9
OwogCi0gICAgaWYgKCFvcmlnaW4tPmNhbkFjY2Vzc1N0b3JhZ2VNYW5hZ2VyKCkpCi0gICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJPcmlnaW4gc2hvdWxkIG5vdCBhY2Nlc3Mg
c3RvcmFnZSJfcyB9OwotCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewogICAgICAg
ICBpZiAoYXV0byogY29ubmVjdGlvbiA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS0+c3Rv
cmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBDb25uZWN0aW9uSW5mbyB7ICpj
b25uZWN0aW9uLCB7IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKSwgb3JpZ2luLT5kYXRhKCkg
fSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01X
aW5kb3dXZWJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcAppbmRleCA1NmFjMGU0MjJkZDRkZjkzNmUzY2NiMDBj
ZTVmNDVjM2Q2NTU0MTViLi44MDI0NjRiOTg5ODM0MDY5ZmQ3OWJhNmRlOTYyODhmZGJhYmE1NWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcApAQCAtNDcsOSArNDcsOSBAQCBFeGNlcHRpb25PcjxS
ZWZQdHI8RGF0YWJhc2U+PiBET01XaW5kb3dXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKERPTVdp
bmRvdyYgd2luZAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9Owog
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTdG9yYWdlLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXZWIgU1FMIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ug
SW5kZXhlZERCIGluc3RlYWQuIl9zKTsKIAotICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKCFzZWN1cml0eU9yaWdpbi5jYW5BY2Nl
c3NEYXRhYmFzZSgmZG9jdW1lbnQtPnRvcE9yaWdpbigpKSkKKyAgICBpZiAoIWRvY3VtZW50LT5j
YW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6Oldl
YlNRTCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CisKICAg
ICBhdXRvIHJlc3VsdCA9IG1hbmFnZXIub3BlbkRhdGFiYXNlKCp3aW5kb3cuZG9jdW1lbnQoKSwg
bmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIFdURk1vdmUoY3JlYXRp
b25DYWxsYmFjaykpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
Ly8gRklYTUU6IFRvIHByZXNlcnZlIG91ciBwYXN0IGJlaGF2aW9yLCB0aGlzIGRpc2NhcmRzIHRo
ZSBlcnJvciBzdHJpbmcgaW4gdGhlIGV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDY5NDZiMTY0OThiMDZjY2RmYWI1ODY1YTMxNjEyZDFlMmIzZTgzNWUuLjI2MDZiM2I4MzQ0
MzQ3OTk1ODhhMWI5NmFiOTM5YTZjNWFmODYzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtNjMyLDYgKzYzMiw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwsIERvY3VtCiAgICAgICAgIG5vZGVM
aXN0QW5kQ29sbGVjdGlvbkNvdW50ID0gMDsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkRXZlbnRMaXN0ZW5lcnNUb05vZGUoKnRoaXMpOworICAgIHNldFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeShtX3NldHRpbmdzLT5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OmNyZWF0ZU5ld0lkZW50aWZpZXIoKQpAQCAtNTMzOSw3ICs1MzQwLDcgQEAgRXhj
ZXB0aW9uT3I8U3RyaW5nPiBEb2N1bWVudDo6Y29va2llKCkKICAgICBpZiAoaXNDb29raWVBdmVy
c2UoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKCFzZWN1cml0eU9yaWdp
bigpLmNhbkFjY2Vzc0Nvb2tpZXMoKSkKKyAgICBpZiAoIWNhbkFjY2Vzc1Jlc291cmNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6Q29va2llcykpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKICAgICBVUkwgY29va2llVVJMID0gdGhp
cy0+Y29va2llVVJMKCk7CkBAIC01MzYwLDcgKzUzNjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBE
b2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgaWYgKGlzQ29va2ll
QXZlcnNlKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoIXNlY3VyaXR5T3JpZ2lu
KCkuY2FuQWNjZXNzQ29va2llcygpKQorICAgIGlmICghY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpDb29raWVzKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIFVSTCBjb29raWVVUkwgPSB0aGlz
LT5jb29raWVVUkwoKTsKQEAgLTU3OTAsNyArNTc5MSw3IEBAIGJvb2wgRG9jdW1lbnQ6Om1lZGlh
RGF0YUxvYWRzQXV0b21hdGljYWxseSgpIGNvbnN0CiAKIHZvaWQgRG9jdW1lbnQ6OnN0b3JhZ2VC
bG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCkKIHsKLSAgICBzZWN1cml0eU9yaWdpbigpLnNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKKyAg
ICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xp
Y3koKSk7CiB9CiAKIC8vIFVzZWQgb25seSBieSBXZWJLaXRMZWdhY3kuCkBAIC02MzQ2LDcgKzYz
NDcsNiBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgICAg
IHNlY3VyaXR5T3JpZ2luKCkuc2V0RW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24oKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICBzZWN1cml0eU9yaWdpbigpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eShzZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKIAogICAgIFJlZlB0ciBwYXJl
bnREb2N1bWVudCA9IG93bmVyRWxlbWVudCgpID8gJm93bmVyRWxlbWVudCgpLT5kb2N1bWVudCgp
IDogbnVsbHB0cjsKICAgICBpZiAocGFyZW50RG9jdW1lbnQgJiYgbV9mcmFtZS0+bG9hZGVyKCku
c2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KHVybCgpKSkgewpAQCAtNzg4Nyw4ICs3ODg3
LDggQEAgdm9pZCBEb2N1bWVudDo6YXBwbHlRdWlja0xvb2tTYW5kYm94KCkKICAgICBBU1NFUlQo
IWRvY3VtZW50VVJMLnByb3RvY29sSXMoUUxQcmV2aWV3UHJvdG9jb2wpKTsKICAgICBBU1NFUlQo
cmVzcG9uc2VVUkwucHJvdG9jb2xJcyhRTFByZXZpZXdQcm90b2NvbCkpOwogCisgICAgc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tBbGwpOwogICAg
IGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlTm9uTG9jYWxXaXRo
QWxsb3dlZEZpbGVQYXRoKHJlc3BvbnNlVVJMLCBkb2N1bWVudFVSTC5maWxlU3lzdGVtUGF0aCgp
KTsKLSAgICBzZWN1cml0eU9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VC
bG9ja2luZ1BvbGljeTo6QmxvY2tBbGwpOwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNl
Y3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbikpKTsKIAog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHF1aWNrTG9va0NTUCA9IG1ha2VTdHJp
bmcoImRlZmF1bHQtc3JjICIsIFFMUHJldmlld1Byb3RvY29sLCAiOiAndW5zYWZlLWlubGluZSc7
IGJhc2UtdXJpICdub25lJzsgc2FuZGJveCBhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1zY3JpcHRz
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5k
ZXggMzhmMDcxMTA3ZDc3NmVmNmJlYjQ0NzljYjA1Nzk3ZWJlMGM1YjEwNC4uZjM5MDViOTA0NGNi
ODQ5MmJlM2UzYzZmZmM0ZDIzMzc4NWMxNDlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNTc4LDcgKzU3OCwxMyBAQCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpnbG9iYWxPYmplY3QoKQogCiBTdHJp
bmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25z
dAogewotICAgIHJldHVybiBtX2RvbWFpbkZvckNhY2hlUGFydGl0aW9uLmlzTnVsbCgpID8gdG9w
T3JpZ2luKCkuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IG1fZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb247CisgICAgaWYgKCFtX2RvbWFpbkZvckNhY2hlUGFydGl0aW9uLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gbV9kb21haW5Gb3JDYWNoZVBhcnRpdGlvbjsKKworICAgIGlmIChtX3N0b3Jh
Z2VCbG9ja2luZ1BvbGljeSAhPSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQYXJ0
eSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gdG9wT3JpZ2lu
KCkuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKIH0KIAogYm9vbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjphbGxvd3NNZWRpYURldmljZXMoKSBjb25zdApAQCAtNzA5LDQgKzcxNSw1MyBAQCB2
b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG9SZXNwb25zaWJsZURvY3VtZW50
KEZ1bmN0aW9uPHZvaWQoRG9jdW1lbgogICAgICAgICBjYWxsYmFjaygqZG9jdW1lbnQpOwogfQog
CitzdGF0aWMgYm9vbCBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZShjb25zdCBTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgcG9saWN5KQoreworICAgIHJldHVybiAh
b3JpZ2luLmlzVW5pcXVlKCkgJiYgcG9saWN5ICE9IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6Qmxv
Y2tBbGw7Cit9CisKK3N0YXRpYyBib29sIGNhbk9yaWdpbkFjY2Vzc1Jlc291cmNlQXNMb2NhbChj
b25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiAhb3JpZ2luLmlzTG9j
YWwoKSB8fCBvcmlnaW4ubmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSB8fCBv
cmlnaW4uaGFzVW5pdmVyc2FsQWNjZXNzKCk7Cit9CisKK2Jvb2wgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6Y2FuQWNjZXNzUmVzb3VyY2VBc1RoaXJkUGFydHkoKQoreworICAgIGF1dG8qIG9yaWdp
biA9IHNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFvcmlnaW4pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHN3aXRjaCAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kpIHsKKyAgICBjYXNl
IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QWxsb3dBbGw6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGNhc2UgU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGNhc2UgU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHk6
CisgICAgICAgIHJldHVybiB0b3BPcmlnaW4oKS5pc1NhbWVPcmlnaW5Bcygqb3JpZ2luKTsKKyAg
ICB9Cit9CisKK2Jvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuQWNjZXNzUmVzb3VyY2Uo
UmVzb3VyY2VUeXBlIHR5cGUpCit7CisgICAgYXV0byogb3JpZ2luID0gc2VjdXJpdHlPcmlnaW4o
KTsKKyAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkNvb2tpZXM6CisgICAgY2FzZSBSZXNv
dXJjZVR5cGU6Okdlb2xvY2F0aW9uOgorICAgICAgICByZXR1cm4gIW9yaWdpbi0+aXNVbmlxdWUo
KTsKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZToKKyAgICBjYXNlIFJl
c291cmNlVHlwZTo6UGx1Z2luOgorICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpXZWJTUUw6CisgICAg
ICAgIHJldHVybiBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZSgqb3JpZ2luLCBtX3N0b3JhZ2VCbG9j
a2luZ1BvbGljeSkgJiYgY2FuT3JpZ2luQWNjZXNzUmVzb3VyY2VBc0xvY2FsKCpvcmlnaW4pICYm
IGNhbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCk7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6
OkluZGV4ZWREQjoKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlOgorICAgIGNh
c2UgUmVzb3VyY2VUeXBlOjpTdG9yYWdlTWFuYWdlcjoKKyAgICAgICAgcmV0dXJuIGNhbk9yaWdp
bkFjY2Vzc1Jlc291cmNlKCpvcmlnaW4sIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5KSAmJiBjYW5P
cmlnaW5BY2Nlc3NSZXNvdXJjZUFzTG9jYWwoKm9yaWdpbik7CisgICAgY2FzZSBSZXNvdXJjZVR5
cGU6OlNlc3Npb25TdG9yYWdlOgorICAgICAgICByZXR1cm4gY2FuT3JpZ2luQWNjZXNzUmVzb3Vy
Y2UoKm9yaWdpbiwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kpOworICAgIH0KK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKaW5kZXggMDNmZTI0NDdiNDNlMDhiYTUxZGE3MmFmZjIzYzY5OTlmMTI1MTVlMS4uZTRi
OTY1MjJlMGEyOTYwNTY1Y2FhNTIwZDVlMmEwNDNhM2I1YjdjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiU2VjdXJpdHlDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VCbG9ja2luZ1BvbGlj
eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hhbmRsZVR5cGVzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgpAQCAtMjk3LDYgKzI5OCwyMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNMb2dnZWRBdXRoZW50
aWNhdGVkRW5jcnlwdGlvbldhcm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2hhc0xvZ2dlZEF1dGhl
bnRpY2F0ZWRFbmNyeXB0aW9uV2FybmluZzsgfQogICAgIHZvaWQgc2V0SGFzTG9nZ2VkQXV0aGVu
dGljYXRlZEVuY3J5cHRpb25XYXJuaW5nKGJvb2wgdmFsdWUpIHsgbV9oYXNMb2dnZWRBdXRoZW50
aWNhdGVkRW5jcnlwdGlvbldhcm5pbmcgPSB2YWx1ZTsgfQogCisgICAgdm9pZCBzZXRTdG9yYWdl
QmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VC
bG9ja2luZ1BvbGljeSA9IHBvbGljeTsgfQorICAgIGVudW0gY2xhc3MgUmVzb3VyY2VUeXBlIDog
dWludDhfdCB7CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUsCisgICAgICAgIENvb2tpZXMsCisg
ICAgICAgIEdlb2xvY2F0aW9uLAorICAgICAgICBJbmRleGVkREIsCisgICAgICAgIExvY2FsU3Rv
cmFnZSwKKyAgICAgICAgUGx1Z2luLAorICAgICAgICBTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAg
U3RvcmFnZU1hbmFnZXIsCisgICAgICAgIFdlYlNRTAorICAgIH07CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjYW5BY2Nlc3NSZXNvdXJjZShSZXNvdXJjZVR5cGUpOworICAgIGJvb2wgY2FuQWNj
ZXNzUmVzb3VyY2VBc1RoaXJkUGFydHkoKTsKKwogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENv
bnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6CkBAIC0zNzgsNiAr
Mzk0LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKIAogICAgIGJvb2wgbV9oYXNMb2dnZWRBdXRoZW50aWNhdGVk
RW5jcnlwdGlvbldhcm5pbmcgeyBmYWxzZSB9OworICAgIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBt
X3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB7IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QWxsb3dBbGwg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IDg3ODZjNTI1OWI4OTgwMTI4MzU3NDQ1MjBmZWY1OWJhYzA2
NGY5NTcuLjdmZjcwOTZkYTE5MGFlMmUwOTk5N2I5YTFiNTg2NzExMzc1MGRjY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjE0OCw5ICsyMTQ4LDEyIEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKICAgICAgICAgLy8gSWYgd2UgYXJlIGxvYWRpbmcgdGhlIG1haW4gcmVzb3VyY2Ug
b2YgYSBzdWJmcmFtZSwgdXNlIHRoZSBjYWNoZSBwYXJ0aXRpb24gb2YgdGhlIG1haW4gZG9jdW1l
bnQuCiAgICAgICAgIG1haW5SZXNvdXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24oKm1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gb3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluUmVzb3VyY2VSZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLnVybCgpKTsKLSAgICAgICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3koZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGlj
eSgpKTsKLSAgICAgICAgbWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRp
dGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOworICAgICAgICBpZiAoZnJh
bWVMb2FkZXIoKS0+ZnJhbWUoKS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpICE9
IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5KQorICAgICAgICAgICAgbWFp
blJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihlbXB0eVN0cmluZygp
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUobWFpblJlc291cmNlUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7
CisgICAgICAgICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0
aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RN
YWluUmVzb3VyY2UoV1RGTW92ZShtYWluUmVzb3VyY2VSZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg1YzdkMDE4M2FjMTZkZTEzYTcxNDZhOGFkYzkwZmQ3
MjE5NDI3OWQuLjNlZDRlM2QwZGU3ZmVlNGZlNDI0YjBmMDBkZWQ5M2NlMTBkMDc1Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OnNlbGVjdENhY2hlKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBwYXNzZWRNYW5pZmVzdFUK
ICAgICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRl
IGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJh
bFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nl
c3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9u
KCkgfHwgIWZyYW1lLmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSkpIHsKICAgICAgICAgcG9z
dExpc3RlbmVyVGFzayhldmVudE5hbWVzKCkuY2hlY2tpbmdFdmVudCwgZG9jdW1lbnRMb2FkZXIp
OwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBkb2N1
bWVudExvYWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwoRnJhbWUm
IGZyYW1lKQogICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXIuYXBwbGljYXRpb25DYWNoZUhvc3Qo
KS5hcHBsaWNhdGlvbkNhY2hlKCkpOwogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9u
IGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS5wYWdl
KCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCkuY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS50cmVlKCkudG9wKCkuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAoZnJhbWUucGFnZSgpLT51c2Vz
RXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJj
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkFwcGxpY2F0aW9uQ2FjaGUp
KSB7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnROYW1lcygpLmNoZWNraW5nRXZlbnQs
IGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICByZXR1cm47CkBAIC00MDcsNyAr
NDA3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnVwZGF0ZShGcmFtZSYgZnJhbWUs
IEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVPcHRpb24gdXAKICAgICB9CiAKICAgICAvLyBEb24ndCBh
Y2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0g
ICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1l
LnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChm
cmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkt
PmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6
QXBwbGljYXRpb25DYWNoZSkpIHsKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ01hc3RlclJlc291
cmNlTG9hZGVycy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQobV9wZW5kaW5nRW50cmllcy5p
c0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIW1fY2FjaGVCZWluZ1VwZGF0ZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKaW5kZXggZWQ3NTY2NTI2YjJkN2VmYmYxYzUxNzAyMDk1YTg3OWJhZjU2OTQ0Ny4uMjk4
NWM3YjAzNWVjYzI3YWM2MzZiYTJjYTBmN2FiMDkyYjNmODIyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBA
IC01NjEsMTQgKzU2MSwxNCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkKCkKICAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci5mcmFtZSgpICYm
IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1bWVudExvYWRlci5mcmFtZSgpLT5wYWdlKCktPnVz
ZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Omlz
QXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJs
b2NrZWRGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCiB7CiAgICAgYXV0byogZnJh
bWUgPSBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0LnVy
bCgpKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+ZG9jdW1lbnQoKS0+dG9wT3Jp
Z2luKCkpOworICAgIHJldHVybiAhZnJhbWUtPmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSk7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
aW5kZXggZGQzY2NkYmJkMTM0NWZhYjkyMmY5ZmYzNjBlMmE4ZWFiOTZmYmZhNC4uNjEyM2E4MDRl
NmMyNjI3MzUwZmM4YTY0NDExMTEyYWM5YTIwOTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6
OnNlc3Npb25TdG9yYWdlKCkKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzU2Vz
c2lvblN0b3JhZ2UoZG9jdW1lbnQtPnRvcE9yaWdpbigpKSkKKyAgICBpZiAoIWRvY3VtZW50LT5j
YW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OlNl
c3Npb25TdG9yYWdlKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3Ig
fTsKIAogICAgIGlmIChtX3Nlc3Npb25TdG9yYWdlKQpAQCAtODYyLDcgKzg2Miw3IEBAIEV4Y2Vw
dGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZSgpCiAgICAgaWYgKCFkb2N1
bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoIWRvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLmNhbkFjY2Vzc0xvY2FsU3RvcmFnZShudWxscHRyKSkKKyAgICBpZiAoIWRv
Y3VtZW50LT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJj
ZVR5cGU6OkxvY2FsU3RvcmFnZSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0
eUVycm9yIH07CiAKICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IDUwNzYyNGRmODZkN2VmYWRkZDgwNDQ5NTk0YTg4YWM3N2FkMTEzNmQuLmQ1
MzdkNGJhN2M5NWI2NTdiOTE3Mjk3OGI4NGE5MjFjZGZlMjg4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cApAQCAtMzk2MCwxNiArMzk2MCwxNyBAQCB2b2lkIFBhZ2U6OnNldHVwRm9yUmVtb3RlV29ya2Vy
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmCiAgICAgbWFp
bkZyYW1lKCkubG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoeyB9KTsKICAgICBh
dXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIobWFp
bkZyYW1lKCksIHNjcmlwdFVSTCk7CiAgICAgZG9jdW1lbnQtPmNyZWF0ZURPTVdpbmRvdygpOwot
CiAgICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CiAKICAgICBh
dXRvIG9yaWdpbiA9IHRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwotICAgIG9yaWdpbi0+c2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkp
OwotCiAgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKICAgICBkb2N1bWVu
dC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOwogICAgIGRvY3VtZW50LT5zZXRGaXJz
dFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7Ci0gICAgZG9jdW1lbnQtPnNldERvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisKKyAg
ICBpZiAoZG9jdW1lbnQtPnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkgIT0gU3Rv
cmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCisgICAgICAgIGRvY3VtZW50LT5z
ZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0pOworICAg
IGVsc2UKKyAgICAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdp
bi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAgICBpZiAoYXV0byBwb2xpY3kgPSBw
YXJzZVJlZmVycmVyUG9saWN5KHJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6
SFRUUEhlYWRlcikpCiAgICAgICAgIGRvY3VtZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNGJhNTE5MWU2YjNl
NDA5ODc5YzIxOWMxNjZhODNmZTcxMmEzNTg3YS4uNzgwYThlZWQ3ZTk4ODFkNjIzZmJjOTI5ZjQ0
NjFlNTk5NGQxNmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAg
LTIwOCw3ICsyMDgsNiBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIG90aGVyKQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3MgeyBvdGhlci0+bV91
bml2ZXJzYWxBY2Nlc3MgfQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTSB7IG90aGVyLT5tX2Rv
bWFpbldhc1NldEluRE9NIH0KICAgICAsIG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzIHsgb3RoZXIt
Pm1fY2FuTG9hZExvY2FsUmVzb3VyY2VzIH0KLSAgICAsIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5
IHsgb3RoZXItPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5IH0KICAgICAsIG1fZW5mb3JjZXNGaWxl
UGF0aFNlcGFyYXRpb24geyBvdGhlci0+bV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbiB9CiAg
ICAgLCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrIHsgb3RoZXItPm1fbmVl
ZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgfQogICAgICwgbV9pc1BvdGVudGlhbGx5
VHJ1c3R3b3J0aHkgeyBvdGhlci0+bV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgfQpAQCAtNDE4
LDM2ICs0MTcsNiBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjpj
YW5BY2Nlc3NTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4sIFNob3VsZEFs
bG93RnJvbVRoaXJkUGFydHkgc2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSkgY29uc3QKLXsKLSAg
ICBpZiAoaXNVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGlzTG9j
YWwoKSAmJiAhbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSAmJiAhbV91bml2
ZXJzYWxBY2Nlc3MgJiYgc2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSAhPSBBbHdheXNBbGxvd0Zy
b21UaGlyZFBhcnR5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKG1fc3Rv
cmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tBbGwpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIHNob3VsZCBi
ZSByZXBsYWNlZCB3aXRoIGFuIEFTU0VSVCBvbmNlIHdlIGNhbiBndWFyYW50ZWUgdGhhdCB0b3BP
cmlnaW4gaXMgbm90IG51bGwuCi0gICAgaWYgKCF0b3BPcmlnaW4pCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgaWYgKHRvcE9yaWdpbi0+bV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3Rv
cmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKHNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgPT0gQWx3YXlzQWxsb3dGcm9tVGhpcmRQ
YXJ0eSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3Mp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKChtX3N0b3JhZ2VCbG9ja2luZ1BvbGlj
eSA9PSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQYXJ0eSB8fCB0b3BPcmlnaW4t
Pm1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tU
aGlyZFBhcnR5KSAmJiAhdG9wT3JpZ2luLT5pc1NhbWVPcmlnaW5BcygqdGhpcykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiBTZWN1cml0eU9yaWdpbjo6
UG9saWN5IFNlY3VyaXR5T3JpZ2luOjpjYW5TaG93Tm90aWZpY2F0aW9ucygpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQpAQCAtNTE3LDkgKzQ4Niw2IEBAIHZvaWQgU2VjdXJp
dHlPcmlnaW46OmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCkKIAogU3RyaW5n
IFNlY3VyaXR5T3JpZ2luOjpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6Qmxv
Y2tUaGlyZFBhcnR5KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQogICAgIGlmIChp
c0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJuIGhvc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCmluZGV4IGQyYmY3M2RhNjJkM2Y1YTFhOTc0YTA3YWY3YWMyNTlkZGE2
OWFhM2YuLmZmMWQyMmMxNWZlMGJmNDM0ZTFmZWY5NDQ2ZmMyZTgyY2M0ZmM5OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCi0jaW5jbHVkZSAiU3RvcmFnZUJs
b2NraW5nUG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0x
MzksMjEgKzEzOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBncmFudFVuaXZlcnNhbEFjY2Vzcygp
OwogICAgIGJvb2wgaGFzVW5pdmVyc2FsQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV91bml2ZXJz
YWxBY2Nlc3M7IH0KIAotICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VC
bG9ja2luZ1BvbGljeSBwb2xpY3kpIHsgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSBwb2xpY3k7
IH0KLQogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKICAg
ICBib29sIG5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCkgY29uc3QgeyByZXR1
cm4gbV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3Q7Ci0KLSAgICBi
b29sIGNhbkFjY2Vzc0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pIGNv
bnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsKLSAgICBib29sIGNh
bkFjY2Vzc1Nlc3Npb25TdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNv
bnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbiwgQWx3YXlzQWxsb3dGcm9t
VGhpcmRQYXJ0eSk7IH0KLSAgICBib29sIGNhbkFjY2Vzc0xvY2FsU3RvcmFnZShjb25zdCBTZWN1
cml0eU9yaWdpbiogdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKHRv
cE9yaWdpbik7IH07Ci0gICAgYm9vbCBjYW5BY2Nlc3NTdG9yYWdlTWFuYWdlcigpIGNvbnN0IHsg
cmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UobnVsbHB0cik7IH0KLSAgICBib29sIGNhbkFjY2Vzc1Bs
dWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1
cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQotICAgIGJvb2wgY2FuQWNjZXNzQXBw
bGljYXRpb25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJl
dHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9Ci0gICAgYm9vbCBjYW5BY2Nlc3ND
b29raWVzKCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KLSAgICBib29sIGNhblJlcXVl
c3RHZW9sb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgpOyB9CiAgICAgUG9saWN5
IGNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgbG9jYWwgU2VjdXJp
dHlPcmlnaW4gaXMgdGhlIG1vc3QgcHJpdmlsZWdlZCBTZWN1cml0eU9yaWdpbi4KQEAgLTI0NCw3
ICsyMzIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91bml2ZXJzYWxBY2Nlc3MgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Nh
bkxvYWRMb2NhbFJlc291cmNlcyB7IGZhbHNlIH07Ci0gICAgU3RvcmFnZUJsb2NraW5nUG9saWN5
IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5IHsgU3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0Fs
bCB9OwogICAgIGJvb2wgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbiB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrIHsgZmFsc2UgfTsK
ICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHk7CkBAIC0yNjYsNyArMjUzLDYgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZv
aWQgU2VjdXJpdHlPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICBlbmNv
ZGVyIDw8IG1fdW5pdmVyc2FsQWNjZXNzOwogICAgIGVuY29kZXIgPDwgbV9kb21haW5XYXNTZXRJ
bkRPTTsKICAgICBlbmNvZGVyIDw8IG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzOwotICAgIGVuY29k
ZXIgPDwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAgICAgZW5jb2RlciA8PCBtX2VuZm9yY2Vz
RmlsZVBhdGhTZXBhcmF0aW9uOwogICAgIGVuY29kZXIgPDwgbV9uZWVkc1N0b3JhZ2VBY2Nlc3NG
cm9tRmlsZVVSTHNRdWlyazsKICAgICBlbmNvZGVyIDw8IG1faXNQb3RlbnRpYWxseVRydXN0d29y
dGh5OwpAQCAtMjk1LDggKzI4MSw2IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoRGVjCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX2Nhbkxv
YWRMb2NhbFJlc291cmNlcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUob3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX2VuZm9yY2Vz
RmlsZVBhdGhTZXBhcmF0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVp
cmspKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuY3BwCmluZGV4IDI2YmFmNGYwNGQ3M2RiYTc5NWU0ZWY0MTM5MmY5OTUzZDdmZWIwYWUu
LmViMWJmZDZlZmU1NDQ0OWRlNjMyMzFjZmQyNmM4YmQ2YTMwNjM4NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6Omxv
Y2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIC8vIHNvIHRoZSBEb2N1bWVu
dCBoYWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgogICAgIEFTU0VSVChkb2N1
bWVudC5wYWdlKCkpOwogCi0gICAgYm9vbCB0cmFuc2llbnQgPSAhZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKS5jYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoJmRvY3VtZW50LnRvcE9yaWdpbigpKTsKKyAg
ICBib29sIHRyYW5zaWVudCA9ICFkb2N1bWVudC5jYW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0
eSgpOwogCiAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IHN0b3JhZ2VOYW1lc3BhY2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZjJm
Mjk4ZTc4NzIwZjcwMzA5OTAyYzJiM2I5YmZiYTJiYWRlMGFjNC4uNTkzM2UwNzRlOGI2MzI3ZDA1
NjYxYjM0MWUxNjI3MjA5OWZkMjlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTExNiw2ICsxMTYsNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6
V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBjb25zdCBXb3JrZXJQYXJh
bWV0ZQogICAgIGlmIChtX3RvcE9yaWdpbi0+bmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxz
UXVpcmsoKSkKICAgICAgICAgb3JpZ2luLT5ncmFudFN0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNR
dWlyaygpOwogCisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KG1fc2V0dGluZ3NWYWx1ZXMu
c3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1
cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSkpOwogICAgIHNldENvbnRl
bnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsg
bV91cmwgfSwgKnRoaXMpKTsKICAgICBzZXRDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHBhcmFt
cy5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCA0NWE0
MjIwMzc5MzMzY2FkNDZiNDg2ZWIyNzJjYjhkMmE4ZGIwM2Y1Li5hYjRmNWEyY2YzNTMwMGQyOTNi
NzdlMzk0ZjM4NGY4Yzc4ZWRhYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0yMDQsNiArMjA0
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oY29uc3Qg
U3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IGNv
bnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRhLndvcmtlclR5cGUgPSBvcHRp
b25zLnR5cGU7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lz
dGVyOworICAgIGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24gPSBjb250ZXh0LT5kb21h
aW5Gb3JDYWNoZVBhcnRpdGlvbigpOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9
IG9wdGlvbnM7CiAKICAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+
KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CkBAIC0yNTIsNiAr
MjUzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24o
Y29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJgogICAgIGpvYkRhdGEudG9wT3JpZ2luID0g
Y29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCk7CiAgICAgam9iRGF0YS53b3JrZXJUeXBlID0gd29y
a2VyVHlwZTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRl
OworICAgIGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24gPSBjb250ZXh0LmRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKCk7CiAgICAgam9iRGF0YS5zY29wZVVSTCA9IHNjb3BlVVJMOwogICAg
IGpvYkRhdGEuc2NyaXB0VVJMID0gc2NyaXB0VVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAppbmRleCBmMGFh
ODZjNWRhNmYyNzlmZDdlMDcyY2UzMjVhMzVjYTBjYzkzZDQwLi5lYmUxYWVjZDcwNDdkNjRlY2Ni
MzdjYjY1OTZlZGMwMTYyN2NhYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKQEAgLTc4LDYgKzc4LDcgQEAg
U2VydmljZVdvcmtlckpvYkRhdGEgU2VydmljZVdvcmtlckpvYkRhdGE6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiAgICAgcmVzdWx0LmNsaWVudENyZWF0aW9uVVJMID0gY2xpZW50Q3JlYXRpb25VUkwu
aXNvbGF0ZWRDb3B5KCk7CiAgICAgcmVzdWx0LnRvcE9yaWdpbiA9IHRvcE9yaWdpbi5pc29sYXRl
ZENvcHkoKTsKICAgICByZXN1bHQuc2NvcGVVUkwgPSBzY29wZVVSTC5pc29sYXRlZENvcHkoKTsK
KyAgICByZXN1bHQuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24gPSBkb21haW5Gb3JDYWNoZVBhcnRp
dGlvbi5pc29sYXRlZENvcHkoKTsKICAgICByZXN1bHQucmVnaXN0cmF0aW9uT3B0aW9ucyA9IHJl
Z2lzdHJhdGlvbk9wdGlvbnMuaXNvbGF0ZWRDb3B5KCk7CiAKICAgICByZXR1cm4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
YkRhdGEuaAppbmRleCBkZmJhZGEzNWUzZDQ5MDc1M2EzMTIwMTY2NWY5YWFkNTVlM2YwZjI0Li4w
OGY5ZmU5ZTI1ZDM3ZjU0NzgyYjRhODA0ZGMzZDAxNTkxYjAzM2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaApAQCAt
NTUsNiArNTUsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGEgewogICAgIFNlcnZpY2VX
b3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlQ29udGV4dDsKICAgICBXb3JrZXJUeXBlIHdv
cmtlclR5cGU7CiAgICAgU2VydmljZVdvcmtlckpvYlR5cGUgdHlwZTsKKyAgICBTdHJpbmcgZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb247CiAgICAgYm9vbCBpc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSB7
IGZhbHNlIH07CiAKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucyByZWdpc3Ry
YXRpb25PcHRpb25zOwpAQCAtNzUsNyArNzYsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcigpIDw8IHNjcmlwdFVSTCA8
PCBjbGllbnRDcmVhdGlvblVSTCA8PCB0b3BPcmlnaW4gPDwgc2NvcGVVUkwgPDwgc291cmNlQ29u
dGV4dCA8PCB3b3JrZXJUeXBlIDw8IGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlOworICAgIGVuY29k
ZXIgPDwgaWRlbnRpZmllcigpIDw8IHNjcmlwdFVSTCA8PCBjbGllbnRDcmVhdGlvblVSTCA8PCB0
b3BPcmlnaW4gPDwgc2NvcGVVUkwgPDwgc291cmNlQ29udGV4dCA8PCB3b3JrZXJUeXBlIDw8IGRv
bWFpbkZvckNhY2hlUGFydGl0aW9uIDw8IGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlOwogICAgIGVu
Y29kZXIgPDwgdHlwZTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNlcnZpY2VXb3Jr
ZXJKb2JUeXBlOjpSZWdpc3RlcjoKQEAgLTExNSw2ICsxMTYsOCBAQCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoam9iRGF0YS53b3JrZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24p
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
am9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLnR5cGUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBh
MzFmNDdiZDU3N2Y2ZTYyZjYzZDU5NDAxYzgzOGM1ZDUxYzY1Y2MxLi40NWI1OWM2ZGIxNjZhZGJl
YWY5MjY1ZGVlNjQyNGJiNDk1YzY2YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNDk2LDcgKzQ5Niw3IEBAIHZvaWQg
U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpv
YkRhdGEsIFNXU2VydmVyUmVnCiAgICAgICAgIGF1dG8gdG9wT3JpZ2luID0gam9iRGF0YS50b3BP
cmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKTsKIAotICAgICAgICByZXF1ZXN0LnNldERv
bWFpbkZvckNhY2hlUGFydGl0aW9uKHRvcE9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
KSk7CisgICAgICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oam9iRGF0YS5k
b21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAgICAgICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVz
KHRydWUpOwogICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKG9yaWdpblVS
TCh0b3BPcmlnaW4pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5jcHAKaW5kZXggNzRkZjI3NTE3OGNhODgwZjg5ZjkyOTk2NTg4NzI5NmQwZGYzNWE4
OC4uYWY3N2MzNTllZDVlMGY1Y2RlNDEyMzBmOTUxMDRjYzdmZWI4NGUxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC01OCw2ICs1OCw3
IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xl
dFRocmVhZCYgdGhyZWFkLCBSZWY8SlNDOjpWCiB7CiAgICAgKytnTnVtYmVyT2ZXb3JrbGV0R2xv
YmFsU2NvcGVzOwogCisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHBhcmFtZXRlcnMuc2V0
dGluZ3NWYWx1ZXMuc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBzZXRTZWN1cml0eU9yaWdp
blBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUodGhpcy0+dXJsKCkpKSk7CiAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlx
dWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB0aGlzLT51cmwoKSB9LCAqdGhpcykpOwog
fQpAQCAtNzUsNiArNzYsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29w
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTYwogCiAgICAgQVNTRVJU
KGRvY3VtZW50LnBhZ2UoKSk7CiAKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kobV9kb2N1
bWVudC0+c2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiAgICAgc2V0U2VjdXJp
dHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHRoaXMtPnVybCgpKSkpOwogICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeSht
YWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgdGhpcy0+dXJsKCkgfSwgKnRo
aXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKaW5kZXggNDVhMDExYmU1NTY2MjA3YzljYWM0NWY5ZWY2MDkyY2U4MDE1MDAxZi4uZDU4
N2NiMzNjNWVlZTQ3Mzg2MjU2NTY0YjQzM2Q0MTk5Y2Y3Yzg1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYxMyw4ICs2MTMsNyBA
QCB2b2lkIFBsdWdpblZpZXc6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpCiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQogICAgICAgICByZXR1cm47CiAKLSAgICBi
b29sIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9ICFmcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dG9w
T3JpZ2luKCkpOwotCisgICAgYm9vbCBzdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSAhZnJhbWUoKS0+
ZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVz
b3VyY2VUeXBlOjpQbHVnaW4pOwogICAgIG1fcGx1Z2luLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNo
YW5nZWQoc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk3MWIxYzUzNDUxOWEyZjAwZmNmNjJhZWU1
YWIxNGFmYzc0ZDUwMDEuLjJkZDMxYjM3YmZjMTMxN2MwYjhiNmMwNzNlZTk3ZTRiZmZiNDliY2Mg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMi0wNC0wMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIGNhbkFjY2Vzc1N0b3JhZ2UoKSBjaGVjayBmcm9tIFNlY3VyaXR5T3Jp
Z2luIHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKwogMjAyMi0wNC0wMSAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBkZWJ1ZyBvdmVybGF5IGZvciBp
bnRlcmFjdGlvbiByZWdpb25zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCAwN2YwY2Uy
ODE1NjAxOGZkNWU0NGY0ZWI0N2RhYjY1NjcyNDdiN2U2Li45NWE0MTgwNzBkNjA2NWRkOWI5Yzc4
YzdlZGRlYmFjZDJhMTkxMTM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTI4Myw4
ICsyODMsNiBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFs
KQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVl
KTsKIAotICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9y
QWxsT3JpZ2luc107Ci0KICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0
TlMoW1tJbmRleGVkREJNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456785</attachid>
            <date>2022-04-05 23:04:35 -0700</date>
            <delta_ts>2022-04-06 11:17:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238524-20220405230434.patch</filename>
            <type>text/plain</type>
            <size>41611</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0OWUxYmI4NjA5NTVm
NDEzYWE3MjU4MjQ1NGYwYzE1ZjQyMWMyYS4uZjI2MDg4OWFmNjFiMGRkZTFlMTA3YzExOTNhNmFj
MDg1YjA3ODM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIyLTA0LTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNh
bkFjY2Vzc1Jlc291cmNlKCkgdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBiZWNhdXNlIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW4sIAorICAgICAgICBz
aG91bGQgYmUgdGhlIHBsYWNlIHRoYXQgaG9sZHMgU3RvcmFnZUJsb2NraW5nUG9saWN5IChpdCdz
IHdlaXJkIHRoYXQgdGhlIG9yaWdpbiBhbmQgdG9wIG9yaWdpbiBkaXNhZ3JlZXMgd2l0aAorICAg
ICAgICBlYWNoIG90aGVyIG9uIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSkuIEFsc28sIGJlY2F1c2Ug
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBoYXMgYWNjZXNzIHRvIG9yaWdpbiBhbmQgdG9wT3JpZ2lu
LAorICAgICAgICB3ZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgZ2V0IHRoZW0gYmVmb3JlIHRo
ZSBhY2Nlc3MgY2hlY2suCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgYSBmdW5jdGlv
biBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpIGZvciB0aGlyZC1wYXJ0eSBh
Y2Nlc3MgY2hlY2suIFNvbWUKKyAgICAgICAgdHlwZXMgbmVlZCB0aGUgY2hlY2sgc2VwYXJhdGVs
eSBmcm9tIGNhbkFjY2Vzc1Jlc291cmNlKCksIGJlY2F1c2UgdGhleSBkb24ndCB3YW50IHRvIGRl
bnkgdGhpcmQtcGFydHkgYWNjZXNzOworICAgICAgICB0aGV5IGp1c3QgbmVlZCB0byBzd2l0Y2gg
dG8gbm9uLXBlcnNpc3RlbnQgc3RvcmFnZS4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Z2V0U3VwcG9ydGVkQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2hvdWxkQmxvY2tHZW9sb2NhdGlvblJl
cXVlc3RzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFRocm93U2VjdXJpdHlFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3N0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ubmVjdGlvbkluZm8pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fd2hpdGVzcGFjZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFw
cGx5UXVpY2tMb29rU2FuZGJveCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuT3JpZ2luQWNj
ZXNzUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2VB
c0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhbkFj
Y2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmNhbkFjY2Vzc1Jlc291cmNlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hl
V2l0aG91dE1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6dXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBw
bGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNldHVwRm9yUmVtb3RlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpkb21haW5Gb3JDYWNoZVBhcnRp
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNz
U3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc0RhdGFiYXNlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTZXNz
aW9uU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y2FuQWNjZXNzTG9jYWxTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTdG9yYWdlTWFuYWdlciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzUGx1Z2lu
U3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQ29va2llcyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdEdlb2xvY2F0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6Omxv
Y2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bV9jcmVkZW50aWFscyk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFy
dFNjcmlwdEZldGNoKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorCiAyMDIyLTA0LTA1ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFttYWNPU11bc2VsZWN0b3JzXSA6Zm9jdXMtdmlzaWJsZSBtYXRjaGlu
ZyBvbiBidXR0b24gZm9jdXNlZCB2aWEgc2NyaXB0IChhZnRlciBjbGlja2luZyBvbiBhIGRpZmZl
cmVudCBidXR0b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjOWNlYzQ5MmYwYWI1YzY5NmVjNDg5ZWQ3NzNlYmFh
YWU1ZWJiZjIuLmFiY2JkMTRkZDA3MGQzZThmZTA0NzFhM2YxNTBkMmI0NTU5MzQzY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDQtMDUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjYW5BY2Nlc3NTdG9yYWdlKCkgY2hlY2sgZnJvbSBT
ZWN1cml0eU9yaWdpbiB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5n
U3RhdGVDaGFuZ2VkKToKKwogMjAyMi0wNC0wNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1B
R0VfQlVGRkVSIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKaW5kZXggNjU0M2YzOTE5ODNjN2M0NjMzZDI3OGE5ZWE5NWY1MGMzOTlhMjRmZS4u
MDQ2M2Y0NWRkNjQyOWNlMWI5NDI4ZTA3MzkzNjdkZGQyOGNkNzJjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtOTYsMTEgKzk2LDEwIEBA
IHZvaWQgQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBD
RE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzID0gQ0RNUHJpdmF0ZTo6TG9jYWxT
dG9yYWdlQWNjZXNzOjpBbGxvd2VkOwogICAgIGJvb2wgaXNFcGhlbWVyYWwgPSAhZG9jdW1lbnQt
PnBhZ2UoKSB8fCBkb2N1bWVudC0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwot
Ci0gICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
OwotICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4gPSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7
Ci0gICAgQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcyA9ICFpc0VwaGVtZXJh
bCAmJiBvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0b3BPcmlnaW4pID8gQ0RNUHJpdmF0
ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2VkIDogQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdl
QWNjZXNzOjpOb3RBbGxvd2VkOworICAgIGlmIChpc0VwaGVtZXJhbCB8fCAhZG9jdW1lbnQtPmNh
bkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9j
YWxTdG9yYWdlKSB8fCAhZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCkp
CisgICAgICAgIGFjY2VzcyA9IENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxs
b3dlZDsKICAgICBtX3ByaXZhdGUtPmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShj
YW5kaWRhdGVDb25maWd1cmF0aW9uKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5j
cHAKaW5kZXggY2QzNzJmNDM2OTFhZGQ0ZDdkZjBjOWU1MjU3MGVhZmZkMjkzNDAzNy4uNzk5MGQ5
ZGFmNmY4ZTFhNTcwNzg5NTlhYjIzYzRkZTY4NmM0ZWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTM3MSw3ICszNzEs
NyBAQCBib29sIEdlb2xvY2F0aW9uOjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVzdHMoKQog
ICAgIGJvb2wgaXNTZWN1cmUgPSBTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmUoZG9jdW1lbnQoKS0+
dXJsKCkpIHx8IGRvY3VtZW50KCktPmlzU2VjdXJlQ29udGV4dCgpOwogICAgIGJvb2wgaGFzTWl4
ZWRDb250ZW50ID0gIWRvY3VtZW50KCktPmZvdW5kTWl4ZWRDb250ZW50KCkuaXNFbXB0eSgpOwog
ICAgIGJvb2wgaXNMb2NhbE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKTsKLSAg
ICBpZiAoc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkpIHsKKyAgICBp
ZiAoZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
UmVzb3VyY2VUeXBlOjpHZW9sb2NhdGlvbikpIHsKICAgICAgICAgaWYgKGlzTG9jYWxPcmlnaW4g
fHwgKGlzU2VjdXJlICYmICFoYXNNaXhlZENvbnRlbnQpIHx8IGlzUmVxdWVzdEZyb21JQm9va3Mo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDU2YzE3MjdkZGI4MjEwZDEz
Njk3NzViYmMzOTVlZjdmOGZiNjM5OTYuLmMwMDc2ZDI0NTE1MGQyZGVkOTUxODQ0Yjg0NzljNGE5
ZjIzMTE4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwCkBAIC01NCwxMCArNTQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUaHJvd1NlY3Vy
aXR5RXhjZXB0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4o
KS0+Y2FuQWNjZXNzRGF0YWJhc2UobnVsbHB0cikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhY29udGV4dC5jYW5BY2Nlc3NSZXNvdXJjZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkluZGV4ZWREQik7CiB9CiAKIFJl
ZjxJREJGYWN0b3J5PiBJREJGYWN0b3J5OjpjcmVhdGUoSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkmIGNvbm5lY3Rpb25Qcm94eSkKQEAgLTkxLDcgKzg4LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJREJG
YWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0eSBjb250ZXh0Il9zIH07
CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBib29sIGlzVHJh
bnNpZW50ID0gIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoJmNv
bnRleHQudG9wT3JpZ2luKCkpOworICAgIGJvb2wgaXNUcmFuc2llbnQgPSAhY29udGV4dC5jYW5B
Y2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBk
YXRhYmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC5zZWN1
cml0eU9yaWdpbigpLT5kYXRhKCkgfSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BP
cmlnaW4oKS5kYXRhKCkgfSwgaXNUcmFuc2llbnQpOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlm
aWVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIklE
QkZhY3Rvcnkub3BlbigpIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIl9z
IH07CkBAIC0xMTIsNyArMTA5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+
PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db24KICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFi
YXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCJfcyB9OwogCiAgICAg
QVNTRVJUKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgYm9vbCBpc1RyYW5zaWVudCA9
ICFjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKCZjb250ZXh0LnRv
cE9yaWdpbigpKTsKKyAgICBib29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuY2FuQWNjZXNzUmVz
b3VyY2VBc1RoaXJkUGFydHkoKTsKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJ
ZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmln
aW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCku
ZGF0YSgpIH0sIGlzVHJhbnNpZW50KTsKICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5
LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBzZWN1cml0eSBvcmlnaW4i
X3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXIuY3BwCmluZGV4IDYzNmI0OGM5ZjA0NzliYzVhZTMxOTRlYTFlODkwNTY5NjU3MTdhNDUuLjQ2
NzQyOTNhYzFkY2U1NDRkNjAyNDA4ZDNkNzI3NjgwYTU0MjFkMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjcsMTMgKzY3
LDEzIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxDb25uZWN0aW9uSW5mbz4gY29ubmVjdGlvbkluZm8o
TmF2aWdhdG9yQmFzZSogbmF2aWdhdG9yKQogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9z
IH07CiAKKyAgICBpZiAoIWNvbnRleHQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNvbnRleHQgbm90IGFjY2VzcyBzdG9yYWdlIl9zIH07CisK
ICAgICBhdXRvKiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogICAgIGlmICgh
b3JpZ2luKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJP
cmlnaW4gaXMgaW52YWxpZCJfcyB9OwogCi0gICAgaWYgKCFvcmlnaW4tPmNhbkFjY2Vzc1N0b3Jh
Z2VNYW5hZ2VyKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJPcmln
aW4gc2hvdWxkIG5vdCBhY2Nlc3Mgc3RvcmFnZSJfcyB9OwotCiAgICAgaWYgKGlzPERvY3VtZW50
Pihjb250ZXh0KSkgewogICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KS0+c3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVy
biBDb25uZWN0aW9uSW5mbyB7ICpjb25uZWN0aW9uLCB7IGNvbnRleHQtPnRvcE9yaWdpbigpLmRh
dGEoKSwgb3JpZ2luLT5kYXRhKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcAppbmRleCA1NmFj
MGU0MjJkZDRkZjkzNmUzY2NiMDBjZTVmNDVjM2Q2NTU0MTViLi44MDI0NjRiOTg5ODM0MDY5ZmQ3
OWJhNmRlOTYyODhmZGJhYmE1NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcApAQCAtNDcsOSAr
NDcsOSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8RGF0YWJhc2U+PiBET01XaW5kb3dXZWJEYXRhYmFz
ZTo6b3BlbkRhdGFiYXNlKERPTVdpbmRvdyYgd2luZAogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU2VjdXJpdHlFcnJvciB9OwogICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpTdG9yYWdlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXZWIgU1FMIGlzIGRl
cHJlY2F0ZWQuIFBsZWFzZSB1c2UgSW5kZXhlZERCIGluc3RlYWQuIl9zKTsKIAotICAgIGF1dG8m
IHNlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKCFz
ZWN1cml0eU9yaWdpbi5jYW5BY2Nlc3NEYXRhYmFzZSgmZG9jdW1lbnQtPnRvcE9yaWdpbigpKSkK
KyAgICBpZiAoIWRvY3VtZW50LT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpSZXNvdXJjZVR5cGU6OldlYlNRTCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
ZWN1cml0eUVycm9yIH07CisKICAgICBhdXRvIHJlc3VsdCA9IG1hbmFnZXIub3BlbkRhdGFiYXNl
KCp3aW5kb3cuZG9jdW1lbnQoKSwgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRl
ZFNpemUsIFdURk1vdmUoY3JlYXRpb25DYWxsYmFjaykpOwogICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRvIHByZXNlcnZlIG91ciBwYXN0IGJlaGF2
aW9yLCB0aGlzIGRpc2NhcmRzIHRoZSBlcnJvciBzdHJpbmcgaW4gdGhlIGV4Y2VwdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQxNjIxOGQ2NjI1NjFlNjdkMmRjNjZiNWJjNjYyMmFi
ODllMTZhMGYuLjM0MDIyNGNmODdjZGZiMmQ3ZjZiM2JlYTBiNTA4YzE1ZWFjZmY5MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjMyLDYgKzYzMiw3IEBAIERvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmws
IERvY3VtCiAgICAgICAgIG5vZGVMaXN0QW5kQ29sbGVjdGlvbkNvdW50ID0gMDsKIAogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkRXZlbnRMaXN0ZW5lcnNUb05vZGUoKnRoaXMpOwor
ICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShtX3NldHRpbmdzLT5zdG9yYWdlQmxvY2tpbmdQ
b2xpY3koKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZU5ld0lkZW50aWZpZXIoKQpAQCAt
NTM0MCw3ICs1MzQxLDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBEb2N1bWVudDo6Y29va2llKCkK
ICAgICBpZiAoaXNDb29raWVBdmVyc2UoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0g
ICAgaWYgKCFzZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0Nvb2tpZXMoKSkKKyAgICBpZiAoIWNh
bkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6Q29v
a2llcykpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKICAg
ICBVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CkBAIC01MzYxLDcgKzUzNjIsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFs
dWUpCiAgICAgaWYgKGlzQ29va2llQXZlcnNlKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBpZiAoIXNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQ29va2llcygpKQorICAgIGlmICghY2Fu
QWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpDb29r
aWVzKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAg
IFVSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKQEAgLTU3OTEsNyArNTc5Miw3IEBA
IGJvb2wgRG9jdW1lbnQ6Om1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSgpIGNvbnN0CiAKIHZv
aWQgRG9jdW1lbnQ6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCkKIHsKLSAgICBzZWN1
cml0eU9yaWdpbigpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncygpLnN0b3JhZ2VC
bG9ja2luZ1BvbGljeSgpKTsKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3Mo
KS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiB9CiAKIC8vIFVzZWQgb25seSBieSBXZWJLaXRM
ZWdhY3kuCkBAIC02MzQ3LDcgKzYzNDgsNiBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KCkKICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2luKCkuc2V0RW5mb3JjZXNGaWxlUGF0
aFNlcGFyYXRpb24oKTsKICAgICAgICAgfQogICAgIH0KLSAgICBzZWN1cml0eU9yaWdpbigpLnNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgp
KTsKIAogICAgIFJlZlB0ciBwYXJlbnREb2N1bWVudCA9IG93bmVyRWxlbWVudCgpID8gJm93bmVy
RWxlbWVudCgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKICAgICBpZiAocGFyZW50RG9jdW1lbnQg
JiYgbV9mcmFtZS0+bG9hZGVyKCkuc2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KHVybCgp
KSkgewpAQCAtNzg4OCw4ICs3ODg4LDggQEAgdm9pZCBEb2N1bWVudDo6YXBwbHlRdWlja0xvb2tT
YW5kYm94KCkKICAgICBBU1NFUlQoIWRvY3VtZW50VVJMLnByb3RvY29sSXMoUUxQcmV2aWV3UHJv
dG9jb2wpKTsKICAgICBBU1NFUlQocmVzcG9uc2VVUkwucHJvdG9jb2xJcyhRTFByZXZpZXdQcm90
b2NvbCkpOwogCisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeTo6QmxvY2tBbGwpOwogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlTm9uTG9jYWxXaXRoQWxsb3dlZEZpbGVQYXRoKHJlc3BvbnNlVVJMLCBkb2N1bWVu
dFVSTC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICBzZWN1cml0eU9yaWdpbi0+c2V0U3RvcmFnZUJs
b2NraW5nUG9saWN5KFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tBbGwpOwogICAgIHNldFNl
Y3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShz
ZWN1cml0eU9yaWdpbikpKTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHF1
aWNrTG9va0NTUCA9IG1ha2VTdHJpbmcoImRlZmF1bHQtc3JjICIsIFFMUHJldmlld1Byb3RvY29s
LCAiOiAndW5zYWZlLWlubGluZSc7IGJhc2UtdXJpICdub25lJzsgc2FuZGJveCBhbGxvdy1zYW1l
LW9yaWdpbiBhbGxvdy1zY3JpcHRzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMzhmMDcxMTA3ZDc3NmVmNmJlYjQ0NzljYjA1Nzk3ZWJl
MGM1YjEwNC4uZjM5MDViOTA0NGNiODQ5MmJlM2UzYzZmZmM0ZDIzMzc4NWMxNDlmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNTc4LDcg
KzU3OCwxMyBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpn
bG9iYWxPYmplY3QoKQogCiBTdHJpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX2RvbWFpbkZvckNhY2hlUGFy
dGl0aW9uLmlzTnVsbCgpID8gdG9wT3JpZ2luKCkuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6
IG1fZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb247CisgICAgaWYgKCFtX2RvbWFpbkZvckNhY2hlUGFy
dGl0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbV9kb21haW5Gb3JDYWNoZVBhcnRpdGlv
bjsKKworICAgIGlmIChtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSAhPSBTdG9yYWdlQmxvY2tpbmdQ
b2xpY3k6OkJsb2NrVGhpcmRQYXJ0eSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisK
KyAgICByZXR1cm4gdG9wT3JpZ2luKCkuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKIH0KIAog
Ym9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphbGxvd3NNZWRpYURldmljZXMoKSBjb25zdApA
QCAtNzA5LDQgKzcxNSw1MyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNr
VG9SZXNwb25zaWJsZURvY3VtZW50KEZ1bmN0aW9uPHZvaWQoRG9jdW1lbgogICAgICAgICBjYWxs
YmFjaygqZG9jdW1lbnQpOwogfQogCitzdGF0aWMgYm9vbCBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJj
ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgcG9s
aWN5KQoreworICAgIHJldHVybiAhb3JpZ2luLmlzVW5pcXVlKCkgJiYgcG9saWN5ICE9IFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeTo6QmxvY2tBbGw7Cit9CisKK3N0YXRpYyBib29sIGNhbk9yaWdpbkFj
Y2Vzc1Jlc291cmNlQXNMb2NhbChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQoreworICAg
IHJldHVybiAhb3JpZ2luLmlzTG9jYWwoKSB8fCBvcmlnaW4ubmVlZHNTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcmsoKSB8fCBvcmlnaW4uaGFzVW5pdmVyc2FsQWNjZXNzKCk7Cit9CisKK2Jv
b2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuQWNjZXNzUmVzb3VyY2VBc1RoaXJkUGFydHko
KQoreworICAgIGF1dG8qIG9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFvcmln
aW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAobV9zdG9yYWdlQmxvY2tp
bmdQb2xpY3kpIHsKKyAgICBjYXNlIFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QWxsb3dBbGw6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9j
a0FsbDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgU3RvcmFnZUJsb2NraW5nUG9s
aWN5OjpCbG9ja1RoaXJkUGFydHk6CisgICAgICAgIHJldHVybiB0b3BPcmlnaW4oKS5pc1NhbWVP
cmlnaW5Bcygqb3JpZ2luKTsKKyAgICB9Cit9CisKK2Jvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Y2FuQWNjZXNzUmVzb3VyY2UoUmVzb3VyY2VUeXBlIHR5cGUpCit7CisgICAgYXV0byogb3Jp
Z2luID0gc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkNv
b2tpZXM6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6Okdlb2xvY2F0aW9uOgorICAgICAgICByZXR1
cm4gIW9yaWdpbi0+aXNVbmlxdWUoKTsKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6QXBwbGljYXRp
b25DYWNoZToKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6UGx1Z2luOgorICAgIGNhc2UgUmVzb3Vy
Y2VUeXBlOjpXZWJTUUw6CisgICAgICAgIHJldHVybiBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZSgq
b3JpZ2luLCBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSkgJiYgY2FuT3JpZ2luQWNjZXNzUmVzb3Vy
Y2VBc0xvY2FsKCpvcmlnaW4pICYmIGNhbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCk7Cisg
ICAgY2FzZSBSZXNvdXJjZVR5cGU6OkluZGV4ZWREQjoKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6
TG9jYWxTdG9yYWdlOgorICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpTdG9yYWdlTWFuYWdlcjoKKyAg
ICAgICAgcmV0dXJuIGNhbk9yaWdpbkFjY2Vzc1Jlc291cmNlKCpvcmlnaW4sIG1fc3RvcmFnZUJs
b2NraW5nUG9saWN5KSAmJiBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzTG9jYWwoKm9yaWdpbik7
CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlNlc3Npb25TdG9yYWdlOgorICAgICAgICByZXR1cm4g
Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2UoKm9yaWdpbiwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kp
OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMDNmZTI0NDdiNDNlMDhiYTUxZGE3MmFm
ZjIzYzY5OTlmMTI1MTVlMS4uZTRiOTY1MjJlMGEyOTYwNTY1Y2FhNTIwZDVlMmEwNDNhM2I1Yjdj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUg
IlN0b3JhZ2VCbG9ja2luZ1BvbGljeS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNv
bGVUeXBlcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hhbmRsZVR5cGVzLmg+CiAjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMjk3LDYgKzI5OCwyMSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldhcm5pbmcoKSBjb25zdCB7IHJl
dHVybiBtX2hhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRFbmNyeXB0aW9uV2FybmluZzsgfQogICAgIHZv
aWQgc2V0SGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRpb25XYXJuaW5nKGJvb2wgdmFsdWUp
IHsgbV9oYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldhcm5pbmcgPSB2YWx1ZTsgfQog
CisgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5
IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHBvbGljeTsgfQorICAgIGVudW0g
Y2xhc3MgUmVzb3VyY2VUeXBlIDogdWludDhfdCB7CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUs
CisgICAgICAgIENvb2tpZXMsCisgICAgICAgIEdlb2xvY2F0aW9uLAorICAgICAgICBJbmRleGVk
REIsCisgICAgICAgIExvY2FsU3RvcmFnZSwKKyAgICAgICAgUGx1Z2luLAorICAgICAgICBTZXNz
aW9uU3RvcmFnZSwKKyAgICAgICAgU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIFdlYlNRTAorICAg
IH07CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5BY2Nlc3NSZXNvdXJjZShSZXNvdXJjZVR5
cGUpOworICAgIGJvb2wgY2FuQWNjZXNzUmVzb3VyY2VBc1RoaXJkUGFydHkoKTsKKwogcHJvdGVj
dGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAg
ICBwdWJsaWM6CkBAIC0zNzgsNiArMzk0LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIAogICAgIGJvb2wgbV9o
YXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldhcm5pbmcgeyBmYWxzZSB9OworICAgIFN0
b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB7IFN0b3JhZ2VCbG9j
a2luZ1BvbGljeTo6QWxsb3dBbGwgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGZkOWUzNmM0NzU0NTJm
NmY5NjNhYTI1ZDk2ZmZmYzZkZWZjMWRjZTIuLjRkMGU3MjgyZDc5YjMzOTAwN2E4YzgzY2U2NDg4
ZWJiMjkzMzA0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApA
QCAtMjE0OCw5ICsyMTQ4LDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3Vy
Y2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICAgICAgLy8gSWYgd2UgYXJlIGxvYWRp
bmcgdGhlIG1haW4gcmVzb3VyY2Ugb2YgYSBzdWJmcmFtZSwgdXNlIHRoZSBjYWNoZSBwYXJ0aXRp
b24gb2YgdGhlIG1haW4gZG9jdW1lbnQuCiAgICAgICAgIG1haW5SZXNvdXJjZVJlcXVlc3Quc2V0
RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKm1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluUmVz
b3VyY2VSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKLSAgICAgICAgb3JpZ2luLT5z
ZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5zZXR0aW5ncygp
LnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKLSAgICAgICAgbWFpblJlc291cmNlUmVxdWVzdC5z
ZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9u
KCkpOworICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5zZXR0aW5ncygpLnN0b3Jh
Z2VCbG9ja2luZ1BvbGljeSgpICE9IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBh
cnR5KQorICAgICAgICAgICAgbWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBh
cnRpdGlvbihlbXB0eVN0cmluZygpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRv
IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWFpblJlc291cmNlUmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0LnNl
dERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
KSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVzb3VyY2UoV1RGTW92ZShtYWluUmVzb3VyY2VSZXF1
ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg1YzdkMDE4M2Fj
MTZkZTEzYTcxNDZhOGFkYzkwZmQ3MjE5NDI3OWQuLjNlZDRlM2QwZGU3ZmVlNGZlNDI0YjBmMDBk
ZWQ5M2NlMTBkMDc1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lJiBmcmFtZSwgY29uc3Qg
VVJMJiBwYXNzZWRNYW5pZmVzdFUKICAgICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhp
bmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1l
LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50b3Ao
KS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS5wYWdlKCkt
PnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jl
c291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25D
YWNoZSkpIHsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudE5hbWVzKCkuY2hlY2tpbmdF
dmVudCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFt
ZXMoKS5lcnJvckV2ZW50LCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIx
Miw3ICsyMTIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRo
b3V0TWFuaWZlc3RVUkwoRnJhbWUmIGZyYW1lKQogICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXIu
YXBwbGljYXRpb25DYWNoZUhvc3QoKS5hcHBsaWNhdGlvbkNhY2hlKCkpOwogCiAgICAgLy8gRG9u
J3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVk
LgotICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1l
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShm
cmFtZS50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBp
ZiAoZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS5kb2N1bWVu
dCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5
cGU6OkFwcGxpY2F0aW9uQ2FjaGUpKSB7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnRO
YW1lcygpLmNoZWNraW5nRXZlbnQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3Rl
bmVyVGFzayhldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAg
ICByZXR1cm47CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnVwZGF0ZShGcmFtZSYgZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVPcHRpb24gdXAKICAg
ICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJy
b3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNl
c3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NB
cHBsaWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpKSkgeworICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkg
fHwgIWZyYW1lLmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSkpIHsKICAgICAgICAgQVNTRVJU
KG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NF
UlQobV9wZW5kaW5nRW50cmllcy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIW1fY2FjaGVC
ZWluZ1VwZGF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggZWQ3NTY2NTI2YjJkN2VmYmYxYzUxNzAy
MDk1YTg3OWJhZjU2OTQ0Ny4uMjk4NWM3YjAzNWVjYzI3YWM2MzZiYTJjYTBmN2FiMDkyYjNmODIy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCkBAIC01NjEsMTQgKzU2MSwxNCBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKICAgICByZXR1cm4gbV9kb2N1
bWVudExvYWRlci5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3Mo
KS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1bWVudExvYWRl
ci5mcmFtZSgpLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiB9CiAKLWJvb2wgQXBw
bGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpCiB7CiAgICAgYXV0byogZnJhbWUgPSBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShyZXF1ZXN0LnVybCgpKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFt
ZS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpOworICAgIHJldHVybiAhZnJhbWUtPmRvY3VtZW50
KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlw
ZTo6QXBwbGljYXRpb25DYWNoZSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggODJlZGRjZTNjZDI2YjcxMDY0NWZjOTNmMjFlZjg0
OWNmZWY4YTQwMi4uNzQ5NzliNzAzZTVkZTA0OTg1NTg2MTNlYWZhZDYyNTdiNzVjYWQ0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODM3LDcgKzgzNyw3IEBAIEV4Y2VwdGlvbk9y
PFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKCkKICAgICBpZiAoIWRvY3VtZW50
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCkuY2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoZG9jdW1lbnQtPnRvcE9yaWdpbigpKSkK
KyAgICBpZiAoIWRvY3VtZW50LT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpSZXNvdXJjZVR5cGU6OlNlc3Npb25TdG9yYWdlKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIGlmIChtX3Nlc3Npb25TdG9yYWdlKQpAQCAt
ODYzLDcgKzg2Myw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OmxvY2FsU3Rv
cmFnZSgpCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0xvY2FsU3RvcmFnZShu
dWxscHRyKSkKKyAgICBpZiAoIWRvY3VtZW50LT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkxvY2FsU3RvcmFnZSkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKICAgICBhdXRvKiBwYWdlID0gZG9jdW1l
bnQtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGUwZWU3Mzc5MGYwYjY0YzdiMDU4MmNm
YzhhNGI5MzRmZmU4MDA1ZDAuLjM1ZWFhMGJmNDg2YmNiOGM5NDczMTUwOTFhN2I2NTkxNGFiYzQ5
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzk3MiwxNiArMzk3MiwxNyBAQCB2b2lkIFBhZ2U6
OnNldHVwRm9yUmVtb3RlV29ya2VyKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmCiAgICAgbWFpbkZyYW1lKCkubG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVk
RG9jdW1lbnQoeyB9KTsKICAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJl
bmRlcmVkUGxhY2Vob2xkZXIobWFpbkZyYW1lKCksIHNjcmlwdFVSTCk7CiAgICAgZG9jdW1lbnQt
PmNyZWF0ZURPTVdpbmRvdygpOwotCiAgICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRl
RGlkQ2hhbmdlKCk7CiAKICAgICBhdXRvIG9yaWdpbiA9IHRvcE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOwotICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3Rv
cmFnZUJsb2NraW5nUG9saWN5KCkpOwotCiAgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+
dG9VUkwoKTsKICAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOwog
ICAgIGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7Ci0gICAg
ZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24oKSk7CisKKyAgICBpZiAoZG9jdW1lbnQtPnNldHRpbmdzKCkuc3RvcmFnZUJs
b2NraW5nUG9saWN5KCkgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkp
CisgICAgICAgIGRvY3VtZW50LT5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihTdHJpbmcgeyBl
bXB0eVN0cmluZygpIH0pOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAg
ICBpZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KHJlZmVycmVyUG9saWN5LCBS
ZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCiAgICAgICAgIGRvY3VtZW50LT5zZXRS
ZWZlcnJlclBvbGljeSgqcG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKaW5kZXggNGJhNTE5MWU2YjNlNDA5ODc5YzIxOWMxNjZhODNmZTcxMmEzNTg3YS4uNzgwYThl
ZWQ3ZTk4ODFkNjIzZmJjOTI5ZjQ0NjFlNTk5NGQxNmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKQEAgLTIwOCw3ICsyMDgsNiBAQCBTZWN1cml0eU9yaWdpbjo6U2Vj
dXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQogICAgICwgbV91bml2ZXJz
YWxBY2Nlc3MgeyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwgbV9kb21haW5XYXNT
ZXRJbkRPTSB7IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KICAgICAsIG1fY2FuTG9hZExv
Y2FsUmVzb3VyY2VzIHsgb3RoZXItPm1fY2FuTG9hZExvY2FsUmVzb3VyY2VzIH0KLSAgICAsIG1f
c3RvcmFnZUJsb2NraW5nUG9saWN5IHsgb3RoZXItPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5IH0K
ICAgICAsIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24geyBvdGhlci0+bV9lbmZvcmNlc0Zp
bGVQYXRoU2VwYXJhdGlvbiB9CiAgICAgLCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJM
c1F1aXJrIHsgb3RoZXItPm1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgfQog
ICAgICwgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgeyBvdGhlci0+bV9pc1BvdGVudGlhbGx5
VHJ1c3R3b3J0aHkgfQpAQCAtNDE4LDM2ICs0MTcsNiBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpj
YW5EaXNwbGF5KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0b3BPcmlnaW4sIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgc2hvdWxkQWxsb3dGcm9tVGhp
cmRQYXJ0eSkgY29uc3QKLXsKLSAgICBpZiAoaXNVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKGlzTG9jYWwoKSAmJiAhbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVV
UkxzUXVpcmsoKSAmJiAhbV91bml2ZXJzYWxBY2Nlc3MgJiYgc2hvdWxkQWxsb3dGcm9tVGhpcmRQ
YXJ0eSAhPSBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCi0gICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeTo6QmxvY2tBbGwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1F
OiBUaGlzIGNoZWNrIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGFuIEFTU0VSVCBvbmNlIHdlIGNh
biBndWFyYW50ZWUgdGhhdCB0b3BPcmlnaW4gaXMgbm90IG51bGwuCi0gICAgaWYgKCF0b3BPcmln
aW4pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHRvcE9yaWdpbi0+bV9zdG9yYWdl
QmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgPT0g
QWx3YXlzQWxsb3dGcm9tVGhpcmRQYXJ0eSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAobV91bml2ZXJzYWxBY2Nlc3MpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCht
X3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhp
cmRQYXJ0eSB8fCB0b3BPcmlnaW4tPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VC
bG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5KSAmJiAhdG9wT3JpZ2luLT5pc1NhbWVPcmln
aW5BcygqdGhpcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCiBTZWN1cml0eU9yaWdpbjo6UG9saWN5IFNlY3VyaXR5T3JpZ2luOjpjYW5TaG93Tm90aWZp
Y2F0aW9ucygpIGNvbnN0CiB7CiAgICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQpAQCAtNTE3LDkg
KzQ4Niw2IEBAIHZvaWQgU2VjdXJpdHlPcmlnaW46OmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxl
VVJMc1F1aXJrKCkKIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkb21haW5Gb3JDYWNoZVBhcnRp
dGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5KQotICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKLQogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJuIGhvc3Qo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IGQyYmY3M2RhNjJkM2Y1
YTFhOTc0YTA3YWY3YWMyNTlkZGE2OWFhM2YuLmZmMWQyMmMxNWZlMGJmNDM0ZTFmZWY5NDQ2ZmMy
ZTgyY2M0ZmM5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTI5LDcg
KzI5LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgi
Ci0jaW5jbHVkZSAiU3RvcmFnZUJsb2NraW5nUG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CkBAIC0xMzksMjEgKzEzOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBn
cmFudFVuaXZlcnNhbEFjY2VzcygpOwogICAgIGJvb2wgaGFzVW5pdmVyc2FsQWNjZXNzKCkgY29u
c3QgeyByZXR1cm4gbV91bml2ZXJzYWxBY2Nlc3M7IH0KIAotICAgIHZvaWQgc2V0U3RvcmFnZUJs
b2NraW5nUG9saWN5KFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBwb2xpY3kpIHsgbV9zdG9yYWdlQmxv
Y2tpbmdQb2xpY3kgPSBwb2xpY3k7IH0KLQogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcmsoKTsKICAgICBib29sIG5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJM
c1F1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNR
dWlyazsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKCkgY29uc3Q7Ci0KLSAgICBib29sIGNhbkFjY2Vzc0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3Jp
Z2luKTsgfTsKLSAgICBib29sIGNhbkFjY2Vzc1Nlc3Npb25TdG9yYWdlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9y
aWdpbiwgQWx3YXlzQWxsb3dGcm9tVGhpcmRQYXJ0eSk7IH0KLSAgICBib29sIGNhbkFjY2Vzc0xv
Y2FsU3RvcmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKSBjb25zdCB7IHJldHVy
biBjYW5BY2Nlc3NTdG9yYWdlKHRvcE9yaWdpbik7IH07Ci0gICAgYm9vbCBjYW5BY2Nlc3NTdG9y
YWdlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UobnVsbHB0cik7IH0K
LSAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQot
ICAgIGJvb2wgY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9
Ci0gICAgYm9vbCBjYW5BY2Nlc3NDb29raWVzKCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7
IH0KLSAgICBib29sIGNhblJlcXVlc3RHZW9sb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuICFpc1Vu
aXF1ZSgpOyB9CiAgICAgUG9saWN5IGNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3Q7CiAKICAg
ICAvLyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gaXMgdGhlIG1vc3QgcHJpdmlsZWdlZCBTZWN1
cml0eU9yaWdpbi4KQEAgLTI0NCw3ICsyMzIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91bml2
ZXJzYWxBY2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTSB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyB7IGZhbHNlIH07Ci0gICAg
U3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5IHsgU3RvcmFnZUJs
b2NraW5nUG9saWN5OjpBbGxvd0FsbCB9OwogICAgIGJvb2wgbV9lbmZvcmNlc0ZpbGVQYXRoU2Vw
YXJhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxl
VVJMc1F1aXJrIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9p
c1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk7CkBAIC0yNjYsNyArMjUzLDYgQEAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgU2VjdXJpdHlPcmlnaW46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb24KICAgICBlbmNvZGVyIDw8IG1fdW5pdmVyc2FsQWNjZXNzOwogICAgIGVuY29k
ZXIgPDwgbV9kb21haW5XYXNTZXRJbkRPTTsKICAgICBlbmNvZGVyIDw8IG1fY2FuTG9hZExvY2Fs
UmVzb3VyY2VzOwotICAgIGVuY29kZXIgPDwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAgICAg
ZW5jb2RlciA8PCBtX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uOwogICAgIGVuY29kZXIgPDwg
bV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsKICAgICBlbmNvZGVyIDw8IG1f
aXNQb3RlbnRpYWxseVRydXN0d29ydGh5OwpAQCAtMjk1LDggKzI4MSw2IEBAIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IGlubGluZSBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2lu
OjpkZWNvZGUoRGVjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUob3JpZ2luLT5tX2NhbkxvYWRMb2NhbFJlc291cmNlcykpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2lu
Z1BvbGljeSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUob3JpZ2luLT5tX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fbmVlZHNTdG9yYWdl
QWNjZXNzRnJvbUZpbGVVUkxzUXVpcmspKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDI2YmFmNGYwNGQ3M2RiYTc5NWU0
ZWY0MTM5MmY5OTUzZDdmZWIwYWUuLmViMWJmZDZlZmU1NDQ0OWRlNjMyMzFjZmQyNmM4YmQ2YTMw
NjM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQog
ICAgIC8vIHNvIHRoZSBEb2N1bWVudCBoYWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQ
YWdlLgogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCi0gICAgYm9vbCB0cmFuc2llbnQg
PSAhZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoJmRvY3Vt
ZW50LnRvcE9yaWdpbigpKTsKKyAgICBib29sIHRyYW5zaWVudCA9ICFkb2N1bWVudC5jYW5BY2Nl
c3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpOwogCiAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IHN0b3JhZ2VOYW1lc3BhY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKaW5kZXggZjJmMjk4ZTc4NzIwZjcwMzA5OTAyYzJiM2I5YmZiYTJiYWRlMGFj
NC4uNTkzM2UwNzRlOGI2MzI3ZDA1NjYxYjM0MWUxNjI3MjA5OWZkMjlmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTExNiw2ICsxMTYsNyBA
QCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0
eXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZQogICAgIGlmIChtX3RvcE9yaWdpbi0+bmVlZHNTdG9y
YWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSkKICAgICAgICAgb3JpZ2luLT5ncmFudFN0b3Jh
Z2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpOwogCisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9s
aWN5KG1fc2V0dGluZ3NWYWx1ZXMuc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBzZXRTZWN1
cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUob3Jp
Z2luKSkpOwogICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKICAgICBzZXRDcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5KHBhcmFtcy5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcAppbmRleCA0NWE0MjIwMzc5MzMzY2FkNDZiNDg2ZWIyNzJjYjhkMmE4ZGIwM2Y1
Li5hYjRmNWEyY2YzNTMwMGQyOTNiNzdlMzk0ZjM4NGY4Yzc4ZWRhYmE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwCkBAIC0yMDQsNiArMjA0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjph
ZGRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBq
b2JEYXRhLnRvcE9yaWdpbiA9IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JE
YXRhLndvcmtlclR5cGUgPSBvcHRpb25zLnR5cGU7CiAgICAgam9iRGF0YS50eXBlID0gU2Vydmlj
ZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOworICAgIGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24gPSBjb250ZXh0LT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpOwogICAgIGpvYkRhdGEu
cmVnaXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKICAgICBzY2hlZHVsZUpvYihtYWtlVW5p
cXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpv
YkRhdGEpKSk7CkBAIC0yNTIsNiArMjUzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJgogICAg
IGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCk7CiAgICAgam9i
RGF0YS53b3JrZXJUeXBlID0gd29ya2VyVHlwZTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNl
V29ya2VySm9iVHlwZTo6VXBkYXRlOworICAgIGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24gPSBjb250ZXh0LmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCk7CiAgICAgam9iRGF0YS5zY29w
ZVVSTCA9IHNjb3BlVVJMOwogICAgIGpvYkRhdGEuc2NyaXB0VVJMID0gc2NyaXB0VVJMOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
YkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2JEYXRhLmNwcAppbmRleCBmMGFhODZjNWRhNmYyNzlmZDdlMDcyY2UzMjVhMzVjYTBjYzkzZDQw
Li5lYmUxYWVjZDcwNDdkNjRlY2NiMzdjYjY1OTZlZGMwMTYyN2NhYjkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5j
cHAKQEAgLTc4LDYgKzc4LDcgQEAgU2VydmljZVdvcmtlckpvYkRhdGEgU2VydmljZVdvcmtlckpv
YkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmVzdWx0LmNsaWVudENyZWF0aW9uVVJM
ID0gY2xpZW50Q3JlYXRpb25VUkwuaXNvbGF0ZWRDb3B5KCk7CiAgICAgcmVzdWx0LnRvcE9yaWdp
biA9IHRvcE9yaWdpbi5pc29sYXRlZENvcHkoKTsKICAgICByZXN1bHQuc2NvcGVVUkwgPSBzY29w
ZVVSTC5pc29sYXRlZENvcHkoKTsKKyAgICByZXN1bHQuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24g
PSBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbi5pc29sYXRlZENvcHkoKTsKICAgICByZXN1bHQucmVn
aXN0cmF0aW9uT3B0aW9ucyA9IHJlZ2lzdHJhdGlvbk9wdGlvbnMuaXNvbGF0ZWRDb3B5KCk7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAppbmRleCBkZmJhZGEzNWUzZDQ5MDc1M2EzMTIw
MTY2NWY5YWFkNTVlM2YwZjI0Li4wOGY5ZmU5ZTI1ZDM3ZjU0NzgyYjRhODA0ZGMzZDAxNTkxYjAz
M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGEuaApAQCAtNTUsNiArNTUsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpv
YkRhdGEgewogICAgIFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlQ29udGV4
dDsKICAgICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7CiAgICAgU2VydmljZVdvcmtlckpvYlR5cGUg
dHlwZTsKKyAgICBTdHJpbmcgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb247CiAgICAgYm9vbCBpc0Zy
b21TZXJ2aWNlV29ya2VyUGFnZSB7IGZhbHNlIH07CiAKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uT3B0aW9ucyByZWdpc3RyYXRpb25PcHRpb25zOwpAQCAtNzUsNyArNzYsNyBAQCBwcml2
YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckpvYkRhdGE6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRp
ZmllcigpIDw8IHNjcmlwdFVSTCA8PCBjbGllbnRDcmVhdGlvblVSTCA8PCB0b3BPcmlnaW4gPDwg
c2NvcGVVUkwgPDwgc291cmNlQ29udGV4dCA8PCB3b3JrZXJUeXBlIDw8IGlzRnJvbVNlcnZpY2VX
b3JrZXJQYWdlOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcigpIDw8IHNjcmlwdFVSTCA8PCBj
bGllbnRDcmVhdGlvblVSTCA8PCB0b3BPcmlnaW4gPDwgc2NvcGVVUkwgPDwgc291cmNlQ29udGV4
dCA8PCB3b3JrZXJUeXBlIDw8IGRvbWFpbkZvckNhY2hlUGFydGl0aW9uIDw8IGlzRnJvbVNlcnZp
Y2VXb3JrZXJQYWdlOwogICAgIGVuY29kZXIgPDwgdHlwZTsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKQEAgLTExNSw2ICsxMTYs
OCBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2VySm9i
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS53b3JrZXJUeXBlKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JE
YXRhLnR5cGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcAppbmRleCBjODA3MmI5MWQ0ODRmOWJmNDBjMmIwYjU5ODljNzJiZWFjMDE4
ZTFkLi42ZTZlNDY5OGQ0YzAyNDE0N2JkOGIwZThhZDY2N2I0MGNlYjIyNDg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAt
NDk2LDcgKzQ5Niw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIFNXU2VydmVyUmVnCiAgICAgICAgIGF1dG8gdG9w
T3JpZ2luID0gam9iRGF0YS50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgYXV0
byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKTsKIAot
ICAgICAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKHRvcE9yaWdpbi0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24oam9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAgICAgICAgIHJl
cXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwogICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFy
dHlGb3JDb29raWVzKG9yaWdpblVSTCh0b3BPcmlnaW4pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggNzRkZjI3NTE3OGNhODgwZjg5
ZjkyOTk2NTg4NzI5NmQwZGYzNWE4OC4uYWY3N2MzNTllZDVlMGY1Y2RlNDEyMzBmOTUxMDRjYzdm
ZWI4NGUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC01OCw2ICs1OCw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2Jh
bFNjb3BlKFdvcmtlck9yV29ya2xldFRocmVhZCYgdGhyZWFkLCBSZWY8SlNDOjpWCiB7CiAgICAg
KytnTnVtYmVyT2ZXb3JrbGV0R2xvYmFsU2NvcGVzOwogCisgICAgc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KHBhcmFtZXRlcnMuc2V0dGluZ3NWYWx1ZXMuc3RvcmFnZUJsb2NraW5nUG9saWN5KTsK
ICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRl
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodGhpcy0+dXJsKCkpKSk7CiAgICAgc2V0Q29udGVudFNl
Y3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB0aGlz
LT51cmwoKSB9LCAqdGhpcykpOwogfQpAQCAtNzUsNiArNzYsNyBAQCBXb3JrbGV0R2xvYmFsU2Nv
cGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYm
IHZtLCBTYwogCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKKyAgICBzZXRTdG9yYWdl
QmxvY2tpbmdQb2xpY3kobV9kb2N1bWVudC0+c2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xp
Y3koKSk7CiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6
OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRoaXMtPnVybCgpKSkpOwogICAgIHNldENv
bnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJM
IHsgdGhpcy0+dXJsKCkgfSwgKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNDVhMDExYmU1NTY2MjA3YzljYWM0NWY5
ZWY2MDkyY2U4MDE1MDAxZi4uZDU4N2NiMzNjNWVlZTQ3Mzg2MjU2NTY0YjQzM2Q0MTk5Y2Y3Yzg1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTYxMyw4ICs2MTMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnN0b3JhZ2VCbG9ja2luZ1N0
YXRlQ2hhbmdlZCgpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBib29sIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9ICFmcmFtZSgp
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpOwotCisgICAgYm9vbCBzdG9yYWdlQmxvY2tp
bmdQb2xpY3kgPSAhZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpQbHVnaW4pOwogICAgIG1fcGx1Z2luLT5z
dG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFjNDEz
MzJlMGFiOGNkMjE1NTk5NDU1MDNiMTU3NGNmYmQwNGE2Y2YuLmZiYjhiMTUyMjcwODljYzcyMzdj
ODA5NThiNjZlNjdiNzJlOTdlZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wNC0wNSAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNhbkFjY2Vzc1N0b3JhZ2UoKSBj
aGVjayBmcm9tIFNlY3VyaXR5T3JpZ2luIHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKwogMjAyMi0wNC0w
NSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW01lcmdl
LVF1ZXVlXSBFeHRyYWN0IGJ1Z19pZCB3aGVuIHVwZGF0aW5nIHB1bGwtcmVxdWVzdApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJz
aXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMDdmMGNlMjgxNTYwMThmZDVlNDRmNGViNDdkYWI2NTY3
MjQ3YjdlNi4uYTQ4ZTQ1OThiYzFlOGVmYWFkOTU2MGM2MTVlMjU1YWU1YjFmOWE4MiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJz
aXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0yODYsNiArMjg2LDcgQEAgVEVTVChJbmRleGVkREIs
IEluZGV4ZWREQlRoaXJkUGFydHlEYXRhUmVtb3ZhbCkKICAgICBbV0tXZWJzaXRlRGF0YVN0b3Jl
IF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3k6X1dLU3RvcmFnZUJsb2NraW5nUG9saWN5QWxsb3dBbGxdOwogICAgIGF1dG8gaGFuZGxl
ciA9IGFkb3B0TlMoW1tJbmRleGVkREJNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CiAgICAgYXV0byBzY2hl
bWVIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456840</attachid>
            <date>2022-04-06 11:17:49 -0700</date>
            <delta_ts>2022-04-06 15:06:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238524-20220406111749.patch</filename>
            <type>text/plain</type>
            <size>41586</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0OWUxYmI4NjA5NTVm
NDEzYWE3MjU4MjQ1NGYwYzE1ZjQyMWMyYS4uZjI2MDg4OWFmNjFiMGRkZTFlMTA3YzExOTNhNmFj
MDg1YjA3ODM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIyLTA0LTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNh
bkFjY2Vzc1Jlc291cmNlKCkgdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBiZWNhdXNlIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW4sIAorICAgICAgICBz
aG91bGQgYmUgdGhlIHBsYWNlIHRoYXQgaG9sZHMgU3RvcmFnZUJsb2NraW5nUG9saWN5IChpdCdz
IHdlaXJkIHRoYXQgdGhlIG9yaWdpbiBhbmQgdG9wIG9yaWdpbiBkaXNhZ3JlZXMgd2l0aAorICAg
ICAgICBlYWNoIG90aGVyIG9uIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSkuIEFsc28sIGJlY2F1c2Ug
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBoYXMgYWNjZXNzIHRvIG9yaWdpbiBhbmQgdG9wT3JpZ2lu
LAorICAgICAgICB3ZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgZ2V0IHRoZW0gYmVmb3JlIHRo
ZSBhY2Nlc3MgY2hlY2suCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgYSBmdW5jdGlv
biBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpIGZvciB0aGlyZC1wYXJ0eSBh
Y2Nlc3MgY2hlY2suIFNvbWUKKyAgICAgICAgdHlwZXMgbmVlZCB0aGUgY2hlY2sgc2VwYXJhdGVs
eSBmcm9tIGNhbkFjY2Vzc1Jlc291cmNlKCksIGJlY2F1c2UgdGhleSBkb24ndCB3YW50IHRvIGRl
bnkgdGhpcmQtcGFydHkgYWNjZXNzOworICAgICAgICB0aGV5IGp1c3QgbmVlZCB0byBzd2l0Y2gg
dG8gbm9uLXBlcnNpc3RlbnQgc3RvcmFnZS4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Z2V0U3VwcG9ydGVkQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2hvdWxkQmxvY2tHZW9sb2NhdGlvblJl
cXVlc3RzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFRocm93U2VjdXJpdHlFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3N0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ubmVjdGlvbkluZm8pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fd2hpdGVzcGFjZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFw
cGx5UXVpY2tMb29rU2FuZGJveCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuT3JpZ2luQWNj
ZXNzUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuT3JpZ2luQWNjZXNzUmVzb3VyY2VB
c0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhbkFj
Y2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmNhbkFjY2Vzc1Jlc291cmNlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hl
V2l0aG91dE1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6dXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBw
bGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNldHVwRm9yUmVtb3RlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpkb21haW5Gb3JDYWNoZVBhcnRp
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNz
U3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc0RhdGFiYXNlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTZXNz
aW9uU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y2FuQWNjZXNzTG9jYWxTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTdG9yYWdlTWFuYWdlciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzUGx1Z2lu
U3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQ29va2llcyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdEdlb2xvY2F0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6Omxv
Y2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bV9jcmVkZW50aWFscyk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFy
dFNjcmlwdEZldGNoKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorCiAyMDIyLTA0LTA1ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFttYWNPU11bc2VsZWN0b3JzXSA6Zm9jdXMtdmlzaWJsZSBtYXRjaGlu
ZyBvbiBidXR0b24gZm9jdXNlZCB2aWEgc2NyaXB0IChhZnRlciBjbGlja2luZyBvbiBhIGRpZmZl
cmVudCBidXR0b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjOWNlYzQ5MmYwYWI1YzY5NmVjNDg5ZWQ3NzNlYmFh
YWU1ZWJiZjIuLmFiY2JkMTRkZDA3MGQzZThmZTA0NzFhM2YxNTBkMmI0NTU5MzQzY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDQtMDUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjYW5BY2Nlc3NTdG9yYWdlKCkgY2hlY2sgZnJvbSBT
ZWN1cml0eU9yaWdpbiB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5n
U3RhdGVDaGFuZ2VkKToKKwogMjAyMi0wNC0wNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1B
R0VfQlVGRkVSIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKaW5kZXggNjU0M2YzOTE5ODNjN2M0NjMzZDI3OGE5ZWE5NWY1MGMzOTlhMjRmZS4u
Y2QxNjE5NzgxYWQxMjAyMjRhY2Q4YWQyN2I5NTg1NDk0ZTA2MWUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtOTYsMTEgKzk2LDEwIEBA
IHZvaWQgQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBh
dXRvIGFjY2VzcyA9IENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vzczo6QWxsb3dlZDsKICAg
ICBib29sIGlzRXBoZW1lcmFsID0gIWRvY3VtZW50LT5wYWdlKCkgfHwgZG9jdW1lbnQtPnBhZ2Uo
KS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKLQotICAgIFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBTZWN1cml0eU9yaWdpbiYgdG9w
T3JpZ2luID0gZG9jdW1lbnQtPnRvcE9yaWdpbigpOwotICAgIENETVByaXZhdGU6OkxvY2FsU3Rv
cmFnZUFjY2VzcyBhY2Nlc3MgPSAhaXNFcGhlbWVyYWwgJiYgb3JpZ2luLmNhbkFjY2Vzc0xvY2Fs
U3RvcmFnZSgmdG9wT3JpZ2luKSA/IENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vzczo6QWxs
b3dlZCA6IENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZDsKKyAgICBp
ZiAoaXNFcGhlbWVyYWwgfHwgIWRvY3VtZW50LT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkxvY2FsU3RvcmFnZSkgfHwgIWRvY3VtZW50LT5j
YW5BY2Nlc3NSZXNvdXJjZUFzVGhpcmRQYXJ0eSgpKQorICAgICAgICBhY2Nlc3MgPSBDRE1Qcml2
YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3M6Ok5vdEFsbG93ZWQ7CiAgICAgbV9wcml2YXRlLT5nZXRT
dXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIGFj
Y2VzcywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCmluZGV4IGNkMzcyZjQzNjkxYWRkNGQ3
ZGYwYzllNTI1NzBlYWZmZDI5MzQwMzcuLjc5OTBkOWRhZjZmOGUxYTU3MDc4OTU5YWIyM2M0ZGU2
ODZjNGVmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb24uY3BwCkBAIC0zNzEsNyArMzcxLDcgQEAgYm9vbCBHZW9sb2NhdGlvbjo6c2hv
dWxkQmxvY2tHZW9sb2NhdGlvblJlcXVlc3RzKCkKICAgICBib29sIGlzU2VjdXJlID0gU2VjdXJp
dHlPcmlnaW46OmlzU2VjdXJlKGRvY3VtZW50KCktPnVybCgpKSB8fCBkb2N1bWVudCgpLT5pc1Nl
Y3VyZUNvbnRleHQoKTsKICAgICBib29sIGhhc01peGVkQ29udGVudCA9ICFkb2N1bWVudCgpLT5m
b3VuZE1peGVkQ29udGVudCgpLmlzRW1wdHkoKTsKICAgICBib29sIGlzTG9jYWxPcmlnaW4gPSBz
ZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCk7Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luKCktPmNh
blJlcXVlc3RHZW9sb2NhdGlvbigpKSB7CisgICAgaWYgKGRvY3VtZW50KCktPmNhbkFjY2Vzc1Jl
c291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6R2VvbG9jYXRpb24p
KSB7CiAgICAgICAgIGlmIChpc0xvY2FsT3JpZ2luIHx8IChpc1NlY3VyZSAmJiAhaGFzTWl4ZWRD
b250ZW50KSB8fCBpc1JlcXVlc3RGcm9tSUJvb2tzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmNwcAppbmRleCA1NmMxNzI3ZGRiODIxMGQxMzY5Nzc1YmJjMzk1ZWY3ZjhmYjYzOTk2Li5j
MDA3NmQyNDUxNTBkMmRlZDk1MTg0NGI4NDc5YzRhOWYyMzExODE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNTQsMTAgKzU0LDcg
QEAgc3RhdGljIGJvb2wgc2hvdWxkVGhyb3dTZWN1cml0eUV4Y2VwdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgaWYgKCFjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKG51bGxw
dHIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gIWNvbnRleHQuY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVz
b3VyY2VUeXBlOjpJbmRleGVkREIpOwogfQogCiBSZWY8SURCRmFjdG9yeT4gSURCRmFjdG9yeTo6
Y3JlYXRlKElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHJveHkpCkBA
IC05MSw3ICs4OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFj
dG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiSURCRmFjdG9yeS5vcGVuKCkgY2FsbGVkIGluIGFu
IGludmFsaWQgc2VjdXJpdHkgY29udGV4dCJfcyB9OwogCiAgICAgQVNTRVJUKGNvbnRleHQuc2Vj
dXJpdHlPcmlnaW4oKSk7Ci0gICAgYm9vbCBpc1RyYW5zaWVudCA9ICFjb250ZXh0LnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKCZjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBi
b29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuY2FuQWNjZXNzUmVzb3VyY2VBc1RoaXJkUGFydHko
KTsKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNl
Y3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNl
Y3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGlzVHJhbnNp
ZW50KTsKICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgd2l0
aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiJfcyB9OwpAQCAtMTEyLDcgKzEwOSw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJh
c2UoU2NyaXB0RXhlY3V0aW9uQ29uCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0
eUVycm9yLCAiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCBpbiBhbiBpbnZhbGlk
IHNlY3VyaXR5IGNvbnRleHQiX3MgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCkpOwotICAgIGJvb2wgaXNUcmFuc2llbnQgPSAhY29udGV4dC5zZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3NEYXRhYmFzZSgmY29udGV4dC50b3BPcmlnaW4oKSk7CisgICAgYm9vbCBpc1Ry
YW5zaWVudCA9ICFjb250ZXh0LmNhbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCk7CiAgICAg
SURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9y
aWdpbkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9y
aWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBpc1RyYW5zaWVudCk7CiAg
ICAgaWYgKCFkYXRhYmFzZUlkZW50aWZpZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCAiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3
aXRoIGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA2MzZiNDhjOWYwNDc5
YmM1YWUzMTk0ZWExZTg5MDU2OTY1NzE3YTQ1Li5iNTFhNmYyMGE2NDUwYjA5N2FjZTYzNTFkMTEx
Y2MxMTBhN2IxMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHAKQEAgLTY3LDEyICs2NywxMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
Q29ubmVjdGlvbkluZm8+IGNvbm5lY3Rpb25JbmZvKE5hdmlnYXRvckJhc2UqIG5hdmlnYXRvcikK
ICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkNvbnRleHQgaXMgaW52YWxpZCJfcyB9OwogCi0gICAgYXV0byogb3JpZ2luID0g
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiT3JpZ2luIGlzIGludmFsaWQiX3Mg
fTsKKyAgICBpZiAoIWNvbnRleHQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgIkNvbnRleHQgbm90IGFjY2VzcyBzdG9yYWdlIl9zIH07CiAKLSAg
ICBpZiAoIW9yaWdpbi0+Y2FuQWNjZXNzU3RvcmFnZU1hbmFnZXIoKSkKLSAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIk9yaWdpbiBzaG91bGQgbm90IGFjY2VzcyBzdG9yYWdl
Il9zIH07CisgICAgYXV0byogb3JpZ2luID0gY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAg
ICBBU1NFUlQob3JpZ2luKTsKIAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkt
PnN0b3JhZ2VDb25uZWN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCmluZGV4IDU2YWMwZTQy
MmRkNGRmOTM2ZTNjY2IwMGNlNWY0NWMzZDY1NTQxNWIuLjgwMjQ2NGI5ODk4MzQwNjlmZDc5YmE2
ZGU5NjI4OGZkYmFiYTU1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCkBAIC00Nyw5ICs0Nyw5
IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxEYXRhYmFzZT4+IERPTVdpbmRvd1dlYkRhdGFiYXNlOjpv
cGVuRGF0YWJhc2UoRE9NV2luZG93JiB3aW5kCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
ZWN1cml0eUVycm9yIH07CiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIldlYiBTUUwgaXMgZGVwcmVj
YXRlZC4gUGxlYXNlIHVzZSBJbmRleGVkREIgaW5zdGVhZC4iX3MpOwogCi0gICAgYXV0byYgc2Vj
dXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAoIXNlY3Vy
aXR5T3JpZ2luLmNhbkFjY2Vzc0RhdGFiYXNlKCZkb2N1bWVudC0+dG9wT3JpZ2luKCkpKQorICAg
IGlmICghZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlJlc291cmNlVHlwZTo6V2ViU1FMKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3Vy
aXR5RXJyb3IgfTsKKwogICAgIGF1dG8gcmVzdWx0ID0gbWFuYWdlci5vcGVuRGF0YWJhc2UoKndp
bmRvdy5kb2N1bWVudCgpLCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgV1RGTW92ZShjcmVhdGlvbkNhbGxiYWNrKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkgewogICAgICAgICAvLyBGSVhNRTogVG8gcHJlc2VydmUgb3VyIHBhc3QgYmVoYXZpb3Is
IHRoaXMgZGlzY2FyZHMgdGhlIGVycm9yIHN0cmluZyBpbiB0aGUgZXhjZXB0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggZDE2MjE4ZDY2MjU2MWU2N2QyZGM2NmI1YmM2NjIyYWI4OWUx
NmEwZi4uMzQwMjI0Y2Y4N2NkZmIyZDdmNmIzYmVhMGI1MDhjMTVlYWNmZjkwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC02MzIsNiArNjMyLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZy
YW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCwgRG9j
dW0KICAgICAgICAgbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnQgPSAwOwogCiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphZGRFdmVudExpc3RlbmVyc1RvTm9kZSgqdGhpcyk7CisgICAg
c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KG1fc2V0dGluZ3MtPnN0b3JhZ2VCbG9ja2luZ1BvbGlj
eSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6Y3JlYXRlTmV3SWRlbnRpZmllcigpCkBAIC01MzQw
LDcgKzUzNDEsNyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IERvY3VtZW50Ojpjb29raWUoKQogICAg
IGlmIChpc0Nvb2tpZUF2ZXJzZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBp
ZiAoIXNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQ29va2llcygpKQorICAgIGlmICghY2FuQWNj
ZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpDb29raWVz
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIFVS
TCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKQEAgLTUzNjEsNyArNTM2Miw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50OjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICBpZiAoaXNDb29raWVBdmVyc2UoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlm
ICghc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NDb29raWVzKCkpCisgICAgaWYgKCFjYW5BY2Nl
c3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkNvb2tpZXMp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OwogCiAgICAgVVJM
IGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOwpAQCAtNTc5MSw3ICs1NzkyLDcgQEAgYm9v
bCBEb2N1bWVudDo6bWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5KCkgY29uc3QKIAogdm9pZCBE
b2N1bWVudDo6c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKQogewotICAgIHNlY3VyaXR5
T3JpZ2luKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3RvcmFnZUJsb2Nr
aW5nUG9saWN5KCkpOworICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncygpLnN0
b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKIH0KIAogLy8gVXNlZCBvbmx5IGJ5IFdlYktpdExlZ2Fj
eS4KQEAgLTYzNDcsNyArNjM0OCw2IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRl
eHQoKQogICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS5zZXRFbmZvcmNlc0ZpbGVQYXRoU2Vw
YXJhdGlvbigpOwogICAgICAgICB9CiAgICAgfQotICAgIHNlY3VyaXR5T3JpZ2luKCkuc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwog
CiAgICAgUmVmUHRyIHBhcmVudERvY3VtZW50ID0gb3duZXJFbGVtZW50KCkgPyAmb3duZXJFbGVt
ZW50KCktPmRvY3VtZW50KCkgOiBudWxscHRyOwogICAgIGlmIChwYXJlbnREb2N1bWVudCAmJiBt
X2ZyYW1lLT5sb2FkZXIoKS5zaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQodXJsKCkpKSB7
CkBAIC03ODg4LDggKzc4ODgsOCBAQCB2b2lkIERvY3VtZW50OjphcHBseVF1aWNrTG9va1NhbmRi
b3goKQogICAgIEFTU0VSVCghZG9jdW1lbnRVUkwucHJvdG9jb2xJcyhRTFByZXZpZXdQcm90b2Nv
bCkpOwogICAgIEFTU0VSVChyZXNwb25zZVVSTC5wcm90b2NvbElzKFFMUHJldmlld1Byb3RvY29s
KSk7CiAKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5
OjpCbG9ja0FsbCk7CiAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVOb25Mb2NhbFdpdGhBbGxvd2VkRmlsZVBhdGgocmVzcG9uc2VVUkwsIGRvY3VtZW50VVJM
LmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgIHNlY3VyaXR5T3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCk7CiAgICAgc2V0U2VjdXJp
dHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luKSkpOwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcXVpY2tM
b29rQ1NQID0gbWFrZVN0cmluZygiZGVmYXVsdC1zcmMgIiwgUUxQcmV2aWV3UHJvdG9jb2wsICI6
ICd1bnNhZmUtaW5saW5lJzsgYmFzZS11cmkgJ25vbmUnOyBzYW5kYm94IGFsbG93LXNhbWUtb3Jp
Z2luIGFsbG93LXNjcmlwdHMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcAppbmRleCAzOGYwNzExMDdkNzc2ZWY2YmViNDQ3OWNiMDU3OTdlYmUwYzVi
MTA0Li41ODY1NjhmNzRlODc3YmQ2YWU0MTA1ZjkyMjViZTkwZmQ1ZDI5NDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01NzgsNyArNTc4
LDEzIEBAIEpTQzo6SlNHbG9iYWxPYmplY3QqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Omdsb2Jh
bE9iamVjdCgpCiAKIFN0cmluZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24uaXNOdWxsKCkgPyB0b3BPcmlnaW4oKS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogbV9k
b21haW5Gb3JDYWNoZVBhcnRpdGlvbjsKKyAgICBpZiAoIW1fZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX2RvbWFpbkZvckNhY2hlUGFydGl0aW9uOwor
CisgICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eTo6QmxvY2tUaGlyZFBhcnR5KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAg
IHJldHVybiB0b3BPcmlnaW4oKS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpOwogfQogCiBib29s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFsbG93c01lZGlhRGV2aWNlcygpIGNvbnN0CkBAIC03
MDksNCArNzE1LDUzIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUb1Jl
c3BvbnNpYmxlRG9jdW1lbnQoRnVuY3Rpb248dm9pZChEb2N1bWVuCiAgICAgICAgIGNhbGxiYWNr
KCpkb2N1bWVudCk7CiB9CiAKK3N0YXRpYyBib29sIGNhbk9yaWdpbkFjY2Vzc1Jlc291cmNlKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBwb2xpY3kp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFvcmlnaW4uaXNVbmlxdWUoKSAmJiBwb2xpY3kgIT0gU3Rv
cmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbDsKK30KKworc3RhdGljIGJvb2wgY2FuT3JpZ2lu
QWNjZXNzUmVzb3VyY2VBc0xvY2FsKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0
Cit7CisgICAgcmV0dXJuICFvcmlnaW4uaXNMb2NhbCgpIHx8IG9yaWdpbi5uZWVkc1N0b3JhZ2VB
Y2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpIHx8IG9yaWdpbi5oYXNVbml2ZXJzYWxBY2Nlc3MoKTsK
K30KKworYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5BY2Nlc3NSZXNvdXJjZUFzVGhp
cmRQYXJ0eSgpIGNvbnN0Cit7CisgICAgYXV0byogb3JpZ2luID0gc2VjdXJpdHlPcmlnaW4oKTsK
KyAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoICht
X3N0b3JhZ2VCbG9ja2luZ1BvbGljeSkgeworICAgIGNhc2UgU3RvcmFnZUJsb2NraW5nUG9saWN5
OjpBbGxvd0FsbDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBTdG9yYWdlQmxvY2tp
bmdQb2xpY3k6OkJsb2NrQWxsOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBTdG9y
YWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQYXJ0eToKKyAgICAgICAgcmV0dXJuIHRvcE9y
aWdpbigpLmlzU2FtZU9yaWdpbkFzKCpvcmlnaW4pOworICAgIH0KK30KKworYm9vbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpjYW5BY2Nlc3NSZXNvdXJjZShSZXNvdXJjZVR5cGUgdHlwZSkgY29u
c3QKK3sKKyAgICBhdXRvKiBvcmlnaW4gPSBzZWN1cml0eU9yaWdpbigpOworICAgIGlmICghb3Jp
Z2luKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj
YXNlIFJlc291cmNlVHlwZTo6Q29va2llczoKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6R2VvbG9j
YXRpb246CisgICAgICAgIHJldHVybiAhb3JpZ2luLT5pc1VuaXF1ZSgpOworICAgIGNhc2UgUmVz
b3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlOgorICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpQbHVn
aW46CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OldlYlNRTDoKKyAgICAgICAgcmV0dXJuIGNhbk9y
aWdpbkFjY2Vzc1Jlc291cmNlKCpvcmlnaW4sIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5KSAmJiBj
YW5PcmlnaW5BY2Nlc3NSZXNvdXJjZUFzTG9jYWwoKm9yaWdpbikgJiYgY2FuQWNjZXNzUmVzb3Vy
Y2VBc1RoaXJkUGFydHkoKTsKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6SW5kZXhlZERCOgorICAg
IGNhc2UgUmVzb3VyY2VUeXBlOjpMb2NhbFN0b3JhZ2U6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6
OlN0b3JhZ2VNYW5hZ2VyOgorICAgICAgICByZXR1cm4gY2FuT3JpZ2luQWNjZXNzUmVzb3VyY2Uo
Km9yaWdpbiwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kpICYmIGNhbk9yaWdpbkFjY2Vzc1Jlc291
cmNlQXNMb2NhbCgqb3JpZ2luKTsKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6U2Vzc2lvblN0b3Jh
Z2U6CisgICAgICAgIHJldHVybiBjYW5PcmlnaW5BY2Nlc3NSZXNvdXJjZSgqb3JpZ2luLCBtX3N0
b3JhZ2VCbG9ja2luZ1BvbGljeSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAwM2Zl
MjQ0N2I0M2UwOGJhNTFkYTcyYWZmMjNjNjk5OWYxMjUxNWUxLi5jZTRiYWY1YTBjOWUzYzAwZWE3
Mjc0NWNjZTE4NWE4NjdjZDYwZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eUNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiU3RvcmFnZUJsb2NraW5nUG9saWN5LmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGFuZGxlVHlwZXMuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC0yOTcsNiArMjk4
LDIxIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRFbmNyeXB0aW9u
V2FybmluZygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRp
b25XYXJuaW5nOyB9CiAgICAgdm9pZCBzZXRIYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlv
bldhcm5pbmcoYm9vbCB2YWx1ZSkgeyBtX2hhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRFbmNyeXB0aW9u
V2FybmluZyA9IHZhbHVlOyB9CiAKKyAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShT
dG9yYWdlQmxvY2tpbmdQb2xpY3kgcG9saWN5KSB7IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID0g
cG9saWN5OyB9CisgICAgZW51bSBjbGFzcyBSZXNvdXJjZVR5cGUgOiB1aW50OF90IHsKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZSwKKyAgICAgICAgQ29va2llcywKKyAgICAgICAgR2VvbG9jYXRp
b24sCisgICAgICAgIEluZGV4ZWREQiwKKyAgICAgICAgTG9jYWxTdG9yYWdlLAorICAgICAgICBQ
bHVnaW4sCisgICAgICAgIFNlc3Npb25TdG9yYWdlLAorICAgICAgICBTdG9yYWdlTWFuYWdlciwK
KyAgICAgICAgV2ViU1FMCisgICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkFjY2Vz
c1Jlc291cmNlKFJlc291cmNlVHlwZSkgY29uc3Q7CisgICAgYm9vbCBjYW5BY2Nlc3NSZXNvdXJj
ZUFzVGhpcmRQYXJ0eSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29s
ZU1lc3NhZ2VUYXNrIDogcHVibGljIFRhc2sgewogICAgIHB1YmxpYzoKQEAgLTM3OCw2ICszOTQs
NyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogCiAgICAgYm9vbCBtX2hhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRFbmNy
eXB0aW9uV2FybmluZyB7IGZhbHNlIH07CisgICAgU3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3Rv
cmFnZUJsb2NraW5nUG9saWN5IHsgU3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbCB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKaW5kZXggZmQ5ZTM2YzQ3NTQ1MmY2Zjk2M2FhMjVkOTZmZmZjNmRlZmMxZGNl
Mi4uNGQwZTcyODJkNzliMzM5MDA3YThjODNjZTY0ODhlYmIyOTMzMDQ4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yMTQ4LDkgKzIxNDgsMTIgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQogICAgICAgICAvLyBJZiB3ZSBhcmUgbG9hZGluZyB0aGUgbWFpbiByZXNvdXJjZSBvZiBh
IHN1YmZyYW1lLCB1c2UgdGhlIGNhY2hlIHBhcnRpdGlvbiBvZiB0aGUgbWFpbiBkb2N1bWVudC4K
ICAgICAgICAgbWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbigq
bV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1haW5SZXNvdXJjZVJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkpOwotICAgICAgICBvcmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShm
cmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkp
OwotICAgICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9u
KG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgIGlmIChmcmFtZUxv
YWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkgIT0gU3Rv
cmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCisgICAgICAgICAgICBtYWluUmVz
b3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGVtcHR5U3RyaW5nKCkpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtYWluUmVzb3VyY2VSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKKyAg
ICAgICAgICAgIG1haW5SZXNvdXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
b3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIG1fbWFpblJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdE1haW5S
ZXNvdXJjZShXVEZNb3ZlKG1haW5SZXNvdXJjZVJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKaW5kZXggODVjN2QwMTgzYWMxNmRlMTNhNzE0NmE4YWRjOTBmZDcyMTk0
Mjc5ZC4uM2VkNGUzZDBkZTdmZWU0ZmU0MjRiMGYwMGRlZDkzY2UxMGQwNzVjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
c2VsZWN0Q2FjaGUoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHBhc3NlZE1hbmlmZXN0VQogICAg
IH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJv
d3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vz
c2lvbigpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0Fw
cGxpY2F0aW9uQ2FjaGUoZnJhbWUudHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCkpKSB7CisgICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8
fCAhZnJhbWUuZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6UmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlKSkgewogICAgICAgICBwb3N0TGlz
dGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5jaGVja2luZ0V2ZW50LCBkb2N1bWVudExvYWRlcik7CiAg
ICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGRvY3VtZW50
TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSYgZnJh
bWUpCiAgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlci5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLmFw
cGxpY2F0aW9uQ2FjaGUoKSk7CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlz
ayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLnBhZ2UoKS0+
dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhl
bWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSkpIHsK
ICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudE5hbWVzKCkuY2hlY2tpbmdFdmVudCwgZG9j
dW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5lcnJv
ckV2ZW50LCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTQwNyw3ICs0MDcs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKEZyYW1lJiBmcmFtZSwgQXBw
bGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbiB1cAogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2Vz
cyBhbnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBp
ZiAoZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUudHJl
ZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1l
LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+Y2Fu
QWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpBcHBs
aWNhdGlvbkNhY2hlKSkgewogICAgICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VM
b2FkZXJzLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1w
dHkoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAppbmRleCBlZDc1NjY1MjZiMmQ3ZWZiZjFjNTE3MDIwOTVhODc5YmFmNTY5NDQ3Li4yOTg1Yzdi
MDM1ZWNjMjdhYzYzNmJhMmNhMGY3YWIwOTJiM2Y4MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTU2
MSwxNCArNTYxLDE0IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQoKQogICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCkgJiYgbV9k
b2N1bWVudExvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZCgpICYmICFtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCktPnBhZ2UoKS0+dXNlc0Vw
aGVtZXJhbFNlc3Npb24oKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBs
aWNhdGlvbkNhY2hlQmxvY2tlZEZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tl
ZEZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKIHsKICAgICBhdXRvKiBmcmFtZSA9
IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3QudXJsKCkp
LT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT5kb2N1bWVudCgpLT50b3BPcmlnaW4o
KSk7CisgICAgcmV0dXJuICFmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlKTsKIH0K
IAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCA4MmVkZGNlM2NkMjZiNzEwNjQ1ZmM5M2YyMWVmODQ5Y2ZlZjhhNDAyLi43NDk3OWI3MDNlNWRl
MDQ5ODU1ODYxM2VhZmFkNjI1N2I3NWNhZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC04MzcsNyArODM3LDcgQEAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6c2Vz
c2lvblN0b3JhZ2UoKQogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgaWYgKCFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NTZXNzaW9u
U3RvcmFnZShkb2N1bWVudC0+dG9wT3JpZ2luKCkpKQorICAgIGlmICghZG9jdW1lbnQtPmNhbkFj
Y2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6U2Vzc2lv
blN0b3JhZ2UpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9Owog
CiAgICAgaWYgKG1fc2Vzc2lvblN0b3JhZ2UpCkBAIC04NjMsNyArODYzLDcgQEAgRXhjZXB0aW9u
T3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkKICAgICBpZiAoIWRvY3VtZW50
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCkuY2FuQWNjZXNzTG9jYWxTdG9yYWdlKG51bGxwdHIpKQorICAgIGlmICghZG9jdW1l
bnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlw
ZTo6TG9jYWxTdG9yYWdlKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IgfTsKIAogICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggZTBlZTczNzkwZjBiNjRjN2IwNTgyY2ZjOGE0YjkzNGZmZTgwMDVkMC4uMzVlYWEw
YmY0ODZiY2I4Yzk0NzMxNTA5MWE3YjY1OTE0YWJjNDkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0zOTcyLDE2ICszOTcyLDE3IEBAIHZvaWQgUGFnZTo6c2V0dXBGb3JSZW1vdGVXb3JrZXIoY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYKICAgICBtYWluRnJh
bWUoKS5sb2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOwogICAgIGF1dG8g
ZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWluRnJh
bWUoKSwgc2NyaXB0VVJMKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7Ci0KICAg
ICBkb2N1bWVudC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIGF1dG8g
b3JpZ2luID0gdG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgb3JpZ2luLT5zZXRTdG9y
YWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7Ci0K
ICAgICBhdXRvIG9yaWdpbkFzVVJMID0gb3JpZ2luLT50b1VSTCgpOwogICAgIGRvY3VtZW50LT5z
ZXRTaXRlRm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CiAgICAgZG9jdW1lbnQtPnNldEZpcnN0UGFy
dHlGb3JDb29raWVzKG9yaWdpbkFzVVJMKTsKLSAgICBkb2N1bWVudC0+c2V0RG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKworICAgIGlm
IChkb2N1bWVudC0+c2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSAhPSBTdG9yYWdl
QmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQYXJ0eSkKKyAgICAgICAgZG9jdW1lbnQtPnNldERv
bWFpbkZvckNhY2hlUGFydGl0aW9uKFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgZWxz
ZQorICAgICAgICBkb2N1bWVudC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5k
b21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKIAogICAgIGlmIChhdXRvIHBvbGljeSA9IHBhcnNl
UmVmZXJyZXJQb2xpY3kocmVmZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQ
SGVhZGVyKSkKICAgICAgICAgZG9jdW1lbnQtPnNldFJlZmVycmVyUG9saWN5KCpwb2xpY3kpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA0YmE1MTkxZTZiM2U0MDk4
NzljMjE5YzE2NmE4M2ZlNzEyYTM1ODdhLi43ODBhOGVlZDdlOTg4MWQ2MjNmYmM5MjlmNDQ2MWU1
OTk0ZDE2YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjA4
LDcgKzIwOCw2IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiogb3RoZXIpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyB7IG90aGVyLT5tX3VuaXZl
cnNhbEFjY2VzcyB9CiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NIHsgb3RoZXItPm1fZG9tYWlu
V2FzU2V0SW5ET00gfQogICAgICwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgeyBvdGhlci0+bV9j
YW5Mb2FkTG9jYWxSZXNvdXJjZXMgfQotICAgICwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBv
dGhlci0+bV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgfQogICAgICwgbV9lbmZvcmNlc0ZpbGVQYXRo
U2VwYXJhdGlvbiB7IG90aGVyLT5tX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIH0KICAgICAs
IG1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBvdGhlci0+bV9uZWVkc1N0
b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayB9CiAgICAgLCBtX2lzUG90ZW50aWFsbHlUcnVz
dHdvcnRoeSB7IG90aGVyLT5tX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB9CkBAIC00MTgsMzYg
KzQxNyw2IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFj
Y2Vzc1N0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgU2hvdWxkQWxsb3dG
cm9tVGhpcmRQYXJ0eSBzaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5KSBjb25zdAotewotICAgIGlm
IChpc1VuaXF1ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXNMb2NhbCgp
ICYmICFuZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpICYmICFtX3VuaXZlcnNh
bEFjY2VzcyAmJiBzaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ICE9IEFsd2F5c0FsbG93RnJvbVRo
aXJkUGFydHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAobV9zdG9yYWdl
QmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hvdWxkIGJlIHJl
cGxhY2VkIHdpdGggYW4gQVNTRVJUIG9uY2Ugd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRvcE9yaWdp
biBpcyBub3QgbnVsbC4KLSAgICBpZiAoIXRvcE9yaWdpbikKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBpZiAodG9wT3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBTdG9yYWdl
QmxvY2tpbmdQb2xpY3k6OkJsb2NrQWxsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoc2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSA9PSBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09
IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5IHx8IHRvcE9yaWdpbi0+bV9z
dG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJk
UGFydHkpICYmICF0b3BPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKCp0aGlzKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFNlY3VyaXR5T3JpZ2luOjpQb2xp
Y3kgU2VjdXJpdHlPcmlnaW46OmNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3QKIHsKICAgICBp
ZiAobV91bml2ZXJzYWxBY2Nlc3MpCkBAIC01MTcsOSArNDg2LDYgQEAgdm9pZCBTZWN1cml0eU9y
aWdpbjo6Z3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKQogCiBTdHJpbmcgU2Vj
dXJpdHlPcmlnaW46OmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1Ro
aXJkUGFydHkpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCiAgICAgaWYgKGlzSFRU
UEZhbWlseSgpKQogICAgICAgICByZXR1cm4gaG9zdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmgKaW5kZXggZDJiZjczZGE2MmQzZjVhMWE5NzRhMDdhZjdhYzI1OWRkYTY5YWEz
Zi4uZmYxZDIyYzE1ZmUwYmY0MzRlMWZlZjk0NDZmYzJlODJjYzRmYzk5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtMjksNyArMjksNiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJTdG9yYWdlQmxvY2tp
bmdQb2xpY3kuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTEzOSwy
MSArMTM4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50VW5pdmVyc2FsQWNjZXNzKCk7CiAg
ICAgYm9vbCBoYXNVbml2ZXJzYWxBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VuaXZlcnNhbEFj
Y2VzczsgfQogCi0gICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2Nr
aW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHBvbGljeTsgfQot
CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpOwogICAgIGJv
b2wgbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSBjb25zdCB7IHJldHVybiBt
X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdDsKLQotICAgIGJvb2wg
Y2FuQWNjZXNzRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikgY29uc3Qg
eyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9OwotICAgIGJvb2wgY2FuQWNj
ZXNzU2Vzc2lvblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3Qg
eyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luLCBBbHdheXNBbGxvd0Zyb21UaGly
ZFBhcnR5KTsgfQotICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3Jp
Z2luKTsgfTsKLSAgICBib29sIGNhbkFjY2Vzc1N0b3JhZ2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1
cm4gY2FuQWNjZXNzU3RvcmFnZShudWxscHRyKTsgfQotICAgIGJvb2wgY2FuQWNjZXNzUGx1Z2lu
U3RvcmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBj
YW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9Ci0gICAgYm9vbCBjYW5BY2Nlc3NBcHBsaWNh
dGlvbkNhY2hlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJu
IGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0KLSAgICBib29sIGNhbkFjY2Vzc0Nvb2tp
ZXMoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQotICAgIGJvb2wgY2FuUmVxdWVzdEdl
b2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KICAgICBQb2xpY3kgY2Fu
U2hvd05vdGlmaWNhdGlvbnMoKSBjb25zdDsKIAogICAgIC8vIFRoZSBsb2NhbCBTZWN1cml0eU9y
aWdpbiBpcyB0aGUgbW9zdCBwcml2aWxlZ2VkIFNlY3VyaXR5T3JpZ2luLgpAQCAtMjQ0LDcgKzIz
Miw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2VzcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2FuTG9h
ZExvY2FsUmVzb3VyY2VzIHsgZmFsc2UgfTsKLSAgICBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9z
dG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsIH07
CiAgICAgYm9vbCBtX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBmYWxzZSB9OwogICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTsK
QEAgLTI2Niw3ICsyNTMsNiBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBT
ZWN1cml0eU9yaWdpbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXIg
PDwgbV91bml2ZXJzYWxBY2Nlc3M7CiAgICAgZW5jb2RlciA8PCBtX2RvbWFpbldhc1NldEluRE9N
OwogICAgIGVuY29kZXIgPDwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXM7Ci0gICAgZW5jb2RlciA8
PCBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsKICAgICBlbmNvZGVyIDw8IG1fZW5mb3JjZXNGaWxl
UGF0aFNlcGFyYXRpb247CiAgICAgZW5jb2RlciA8PCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21G
aWxlVVJMc1F1aXJrOwogICAgIGVuY29kZXIgPDwgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk7
CkBAIC0yOTUsOCArMjgxLDYgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmRlY29kZShEZWMKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fY2FuTG9hZExv
Y2FsUmVzb3VyY2VzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShvcmlnaW4tPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5KSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fZW5mb3JjZXNGaWxl
UGF0aFNlcGFyYXRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG9yaWdpbi0+bV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5jcHAKaW5kZXggMjZiYWY0ZjA0ZDczZGJhNzk1ZTRlZjQxMzkyZjk5NTNkN2ZlYjBhZS4uZWIx
YmZkNmVmZTU0NDQ5ZGU2MzIzMWNmZDI2YzhiZDZhMzA2Mzg0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhh
ZCBiZXR0ZXIgc3RpbGwgYWN0dWFsbHkgaGF2ZSBhIFBhZ2UuCiAgICAgQVNTRVJUKGRvY3VtZW50
LnBhZ2UoKSk7CiAKLSAgICBib29sIHRyYW5zaWVudCA9ICFkb2N1bWVudC5zZWN1cml0eU9yaWdp
bigpLmNhbkFjY2Vzc0xvY2FsU3RvcmFnZSgmZG9jdW1lbnQudG9wT3JpZ2luKCkpOworICAgIGJv
b2wgdHJhbnNpZW50ID0gIWRvY3VtZW50LmNhbkFjY2Vzc1Jlc291cmNlQXNUaGlyZFBhcnR5KCk7
CiAKICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gc3RvcmFnZU5hbWVzcGFjZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBmMmYyOThl
Nzg3MjBmNzAzMDk5MDJjMmIzYjliZmJhMmJhZGUwYWM0Li41OTMzZTA3NGU4YjYzMjdkMDU2NjFi
MzQxZTE2MjcyMDk5ZmQyOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtMTE2LDYgKzExNiw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3Jr
ZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlIHR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRl
CiAgICAgaWYgKG1fdG9wT3JpZ2luLT5uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWly
aygpKQogICAgICAgICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJr
KCk7CiAKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kobV9zZXR0aW5nc1ZhbHVlcy5zdG9y
YWdlQmxvY2tpbmdQb2xpY3kpOwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5
T3JpZ2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShvcmlnaW4pKSk7CiAgICAgc2V0Q29udGVudFNl
Y3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3Vy
bCB9LCAqdGhpcykpOwogICAgIHNldENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kocGFyYW1zLmNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDQ1YTQyMjAz
NzkzMzNjYWQ0NmI0ODZlYjI3MmNiOGQyYThkYjAzZjUuLmFiNGY1YTJjZjM1MzAwZDI5M2I3N2Uz
OTRmMzg0ZjhjNzhlZGFiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTIwNCw2ICsyMDQsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJp
bmcmIHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4
dC0+dG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpvYkRhdGEud29ya2VyVHlwZSA9IG9wdGlvbnMu
dHlwZTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI7
CisgICAgam9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA9IGNvbnRleHQtPmRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKCk7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gb3B0
aW9uczsKIAogICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRo
aXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKQEAgLTI1Miw2ICsyNTMs
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25z
dCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAgICAgam9iRGF0YS50b3BPcmlnaW4gPSBjb250
ZXh0LnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRhLndvcmtlclR5cGUgPSB3b3JrZXJU
eXBlOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGU7Cisg
ICAgam9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA9IGNvbnRleHQuZG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24oKTsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAgICAgam9i
RGF0YS5zY3JpcHRVUkwgPSBzY3JpcHRVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCmluZGV4IGYwYWE4NmM1
ZGE2ZjI3OWZkN2UwNzJjZTMyNWEzNWNhMGNjOTNkNDAuLmViZTFhZWNkNzA0N2Q2NGVjY2IzN2Ni
NjU5NmVkYzAxNjI3Y2FiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcApAQCAtNzgsNiArNzgsNyBAQCBTZXJ2
aWNlV29ya2VySm9iRGF0YSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QKICAgICByZXN1bHQuY2xpZW50Q3JlYXRpb25VUkwgPSBjbGllbnRDcmVhdGlvblVSTC5pc29s
YXRlZENvcHkoKTsKICAgICByZXN1bHQudG9wT3JpZ2luID0gdG9wT3JpZ2luLmlzb2xhdGVkQ29w
eSgpOwogICAgIHJlc3VsdC5zY29wZVVSTCA9IHNjb3BlVVJMLmlzb2xhdGVkQ29weSgpOworICAg
IHJlc3VsdC5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA9IGRvbWFpbkZvckNhY2hlUGFydGl0aW9u
Lmlzb2xhdGVkQ29weSgpOwogICAgIHJlc3VsdC5yZWdpc3RyYXRpb25PcHRpb25zID0gcmVnaXN0
cmF0aW9uT3B0aW9ucy5pc29sYXRlZENvcHkoKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0
YS5oCmluZGV4IGRmYmFkYTM1ZTNkNDkwNzUzYTMxMjAxNjY1ZjlhYWQ1NWUzZjBmMjQuLjA4Zjlm
ZTllMjVkMzdmNTQ3ODJiNGE4MDRkYzNkMDE1OTFiMDMzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCkBAIC01NSw2
ICs1NSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YSB7CiAgICAgU2VydmljZVdvcmtl
ck9yQ2xpZW50SWRlbnRpZmllciBzb3VyY2VDb250ZXh0OwogICAgIFdvcmtlclR5cGUgd29ya2Vy
VHlwZTsKICAgICBTZXJ2aWNlV29ya2VySm9iVHlwZSB0eXBlOworICAgIFN0cmluZyBkb21haW5G
b3JDYWNoZVBhcnRpdGlvbjsKICAgICBib29sIGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlIHsgZmFs
c2UgfTsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zIHJlZ2lzdHJhdGlv
bk9wdGlvbnM7CkBAIC03NSw3ICs3Niw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8IGNs
aWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250ZXh0
IDw8IHdvcmtlclR5cGUgPDwgaXNGcm9tU2VydmljZVdvcmtlclBhZ2U7CisgICAgZW5jb2RlciA8
PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8IGNsaWVudENyZWF0aW9uVVJMIDw8IHRvcE9y
aWdpbiA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250ZXh0IDw8IHdvcmtlclR5cGUgPDwgZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24gPDwgaXNGcm9tU2VydmljZVdvcmtlclBhZ2U7CiAgICAgZW5jb2Rl
ciA8PCB0eXBlOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU2VydmljZVdvcmtlckpv
YlR5cGU6OlJlZ2lzdGVyOgpAQCAtMTE1LDYgKzExNiw4IEBAIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShqb2JEYXRhLndvcmtlclR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbikpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JE
YXRhLmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEudHlwZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGM4MDcy
YjkxZDQ4NGY5YmY0MGMyYjBiNTk4OWM3MmJlYWMwMThlMWQuLjZlNmU0Njk4ZDRjMDI0MTQ3YmQ4
YjBlOGFkNjY3YjQwY2ViMjI0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBTV1Nl
cnZlcjo6c3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0
YSwgU1dTZXJ2ZXJSZWcKICAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBqb2JEYXRhLnRvcE9yaWdp
bi5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpOwogCi0gICAgICAgIHJlcXVlc3Quc2V0RG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24odG9wT3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsK
KyAgICAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihqb2JEYXRhLmRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKTsKICAgICAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1
ZSk7CiAgICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob3JpZ2luVVJMKHRv
cE9yaWdpbikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcAppbmRleCA3NGRmMjc1MTc4Y2E4ODBmODlmOTI5OTY1ODg3Mjk2ZDBkZjM1YTg4Li5h
Zjc3YzM1OWVkNWUwZjVjZGU0MTIzMGY5NTEwNGNjN2ZlYjg0ZTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAg
V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0VGhy
ZWFkJiB0aHJlYWQsIFJlZjxKU0M6OlYKIHsKICAgICArK2dOdW1iZXJPZldvcmtsZXRHbG9iYWxT
Y29wZXM7CiAKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kocGFyYW1ldGVycy5zZXR0aW5n
c1ZhbHVlcy5zdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9s
aWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0
aGlzLT51cmwoKSkpKTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHRoaXMtPnVybCgpIH0sICp0aGlzKSk7CiB9CkBA
IC03NSw2ICs3Niw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPEpTQzo6Vk0+JiYgdm0sIFNjCiAKICAgICBBU1NFUlQoZG9j
dW1lbnQucGFnZSgpKTsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShtX2RvY3VtZW50
LT5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKICAgICBzZXRTZWN1cml0eU9y
aWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodGhpcy0+dXJsKCkpKSk7CiAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VV
bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB0aGlzLT51cmwoKSB9LCAqdGhpcykp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCA0NWEwMTFiZTU1NjYyMDdjOWNhYzQ1ZjllZjYwOTJjZTgwMTUwMDFmLi5kNTg3Y2Iz
M2M1ZWVlNDczODYyNTY1NjRiNDMzZDQxOTljZjdjODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNjEzLDggKzYxMyw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKICAgICBpZiAoIW1f
aXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wg
c3RvcmFnZUJsb2NraW5nUG9saWN5ID0gIWZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCkuY2FuQWNjZXNzUGx1Z2luU3RvcmFnZShmcmFtZSgpLT5kb2N1bWVudCgpLT50b3BPcmln
aW4oKSk7Ci0KKyAgICBib29sIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9ICFmcmFtZSgpLT5kb2N1
bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJj
ZVR5cGU6OlBsdWdpbik7CiAgICAgbV9wbHVnaW4tPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdl
ZChzdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWM0MTMzMmUwYWI4Y2QyMTU1OTk0NTUwM2IxNTc0
Y2ZiZDA0YTZjZi4uZmJiOGIxNTIyNzA4OWNjNzIzN2M4MDk1OGI2NmU2N2I3MmU5N2VlZiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDIyLTA0LTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgY2FuQWNjZXNzU3RvcmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4g
dG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4
ZWREQlBlcnNpc3RlbmNlLm1tOgorCiAyMDIyLTA0LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVyZ2UtUXVldWVdIEV4dHJhY3QgYnVnX2lkIHdo
ZW4gdXBkYXRpbmcgcHVsbC1yZXF1ZXN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCAw
N2YwY2UyODE1NjAxOGZkNWU0NGY0ZWI0N2RhYjY1NjcyNDdiN2U2Li5hNDhlNDU5OGJjMWU4ZWZh
YWQ5NTYwYzYxNWUyNTVhZTViMWY5YTgyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAg
LTI4Niw2ICsyODYsNyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFS
ZW1vdmFsKQogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRz
Rm9yQWxsT3JpZ2luc107CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldFN0b3JhZ2VCbG9ja2luZ1BvbGljeTpfV0tTdG9yYWdlQmxvY2tpbmdQ
b2xpY3lBbGxvd0FsbF07CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0luZGV4ZWREQk1l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1l
OkAidGVzdEhhbmRsZXIiXTsKICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVz
dFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
</data>
<flag name="commit-queue"
          id="485299"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456863</attachid>
            <date>2022-04-06 14:47:34 -0700</date>
            <delta_ts>2022-04-07 09:01:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238524-20220406144733.patch</filename>
            <type>text/plain</type>
            <size>42096</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0OWUxYmI4NjA5NTVm
NDEzYWE3MjU4MjQ1NGYwYzE1ZjQyMWMyYS4uZjQ5NmNmMzE0OTI1NTZkMDQ5NWFjMmU1MDYxNTlm
ZjYwZmRlZWE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIyLTA0LTA2ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MTMxODI1OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2FuQWNjZXNzUmVzb3VyY2UoKSB0byBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IGJlY2F1c2UgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW5z
dGVhZCBvZiBTZWN1cml0eU9yaWdpbiwgCisgICAgICAgIHNob3VsZCBiZSB0aGUgcGxhY2UgdGhh
dCBob2xkcyBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgKGl0J3Mgd2VpcmQgdGhhdCB0aGUgb3JpZ2lu
IGFuZCB0b3Agb3JpZ2luIGRpc2FncmVlcyB3aXRoCisgICAgICAgIGVhY2ggb3RoZXIgb24gU3Rv
cmFnZUJsb2NraW5nUG9saWN5KS4gQWxzbywgYmVjYXVzZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IGhhcyBhY2Nlc3MgdG8gb3JpZ2luIGFuZCB0b3BPcmlnaW4sCisgICAgICAgIGNhbGxlcnMgZG9u
J3QgbmVlZCB0byBleHBsaWNpdGx5IGdldCB0aGVtIGJlZm9yZSB0aGUgYWNjZXNzIGNoZWNrLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uOjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVzdHMpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVGhyb3dT
ZWN1cml0eUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25uZWN0aW9uSW5mbyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
T01XaW5kb3dXZWJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dXZWJE
YXRhYmFzZTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bV93aGl0ZXNwYWNlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlRdWlja0xvb2tTYW5kYm94KToKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjppc09yaWdpbkVxdWl2YWxlbnRUb0xvY2FsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhbkFjY2Vzc1Jlc291cmNlIGNvbnN0KToK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldHVwRm9yUmVtb3RlV29ya2VyKToKKyAgICAgICAg
KiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpzZXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNh
bkFjY2Vzc0RhdGFiYXNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjYW5BY2Nlc3NTZXNzaW9uU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzTG9jYWxTdG9yYWdlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NT
dG9yYWdlTWFuYWdlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y2FuQWNjZXNzUGx1Z2luU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNz
Q29va2llcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y2FuUmVxdWVzdEdlb2xvY2F0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9jcmVkZW50aWFs
cyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJl
Z2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUpOgorCiAyMDIyLTA0LTA1ICBNYW51ZWwgUmVnbyBD
YXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFttYWNPU11bc2VsZWN0b3Jz
XSA6Zm9jdXMtdmlzaWJsZSBtYXRjaGluZyBvbiBidXR0b24gZm9jdXNlZCB2aWEgc2NyaXB0IChh
ZnRlciBjbGlja2luZyBvbiBhIGRpZmZlcmVudCBidXR0b24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjOWNlYzQ5
MmYwYWI1YzY5NmVjNDg5ZWQ3NzNlYmFhYWU1ZWJiZjIuLjMyNmJlYzVmMmI0OGUwYWMzYjIxZjFk
ODY0MThmNDVmZWU3NDM1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMDYg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjYW5BY2Nl
c3NTdG9yYWdlKCkgY2hlY2sgZnJvbSBTZWN1cml0eU9yaWdpbiB0byBTY3JpcHRFeGVjdXRpb25D
b250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg1MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkxMzE4MjU5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzdG9yYWdlQmxvY2tp
bmdTdGF0ZUNoYW5nZWQpOgorCiAyMDIyLTA0LTA1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9J
TUFHRV9CVUZGRVIgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmNwcAppbmRleCA2NTQzZjM5MTk4M2M3YzQ2MzNkMjc4YTllYTk1ZjUwYzM5OWEyNGZl
Li44MmViYzZlMWRjMzQyNWUwZGJhMGRhYWVlNmY5YmM2NmZlNTNkOGVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC05NiwxMSArOTYsMTAg
QEAgdm9pZCBDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IGF1dG8gYWNjZXNzID0gQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2VkOwog
ICAgIGJvb2wgaXNFcGhlbWVyYWwgPSAhZG9jdW1lbnQtPnBhZ2UoKSB8fCBkb2N1bWVudC0+cGFn
ZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwotCi0gICAgU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgIFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4gPSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7Ci0gICAgQ0RNUHJpdmF0ZTo6TG9jYWxT
dG9yYWdlQWNjZXNzIGFjY2VzcyA9ICFpc0VwaGVtZXJhbCAmJiBvcmlnaW4uY2FuQWNjZXNzTG9j
YWxTdG9yYWdlKCZ0b3BPcmlnaW4pID8gQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpB
bGxvd2VkIDogQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOworICAg
IGlmIChpc0VwaGVtZXJhbCB8fCBkb2N1bWVudC0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpMb2NhbFN0b3JhZ2UpID09IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpOb0FjY2VzcykKKyAgICAgICAgYWNjZXNzID0gQ0RN
UHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOwogICAgIG1fcHJpdmF0ZS0+
Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24p
LCBhY2Nlc3MsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBjZDM3MmY0MzY5MWFk
ZDRkN2RmMGM5ZTUyNTcwZWFmZmQyOTM0MDM3Li5mNDdmY2RiNmRmYmYyNTU2MzMzMmRhMDQ3MmFm
MWUxNTg2YTYyOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtMzcxLDcgKzM3MSw3IEBAIGJvb2wgR2VvbG9jYXRpb246
OnNob3VsZEJsb2NrR2VvbG9jYXRpb25SZXF1ZXN0cygpCiAgICAgYm9vbCBpc1NlY3VyZSA9IFNl
Y3VyaXR5T3JpZ2luOjppc1NlY3VyZShkb2N1bWVudCgpLT51cmwoKSkgfHwgZG9jdW1lbnQoKS0+
aXNTZWN1cmVDb250ZXh0KCk7CiAgICAgYm9vbCBoYXNNaXhlZENvbnRlbnQgPSAhZG9jdW1lbnQo
KS0+Zm91bmRNaXhlZENvbnRlbnQoKS5pc0VtcHR5KCk7CiAgICAgYm9vbCBpc0xvY2FsT3JpZ2lu
ID0gc2VjdXJpdHlPcmlnaW4oKS0+aXNMb2NhbCgpOwotICAgIGlmIChzZWN1cml0eU9yaWdpbigp
LT5jYW5SZXF1ZXN0R2VvbG9jYXRpb24oKSkgeworICAgIGlmIChkb2N1bWVudCgpLT5jYW5BY2Nl
c3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6Okdlb2xvY2F0
aW9uKSAhPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Tm9BY2Nlc3MpIHsK
ICAgICAgICAgaWYgKGlzTG9jYWxPcmlnaW4gfHwgKGlzU2VjdXJlICYmICFoYXNNaXhlZENvbnRl
bnQpIHx8IGlzUmVxdWVzdEZyb21JQm9va3MoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
Y3BwCmluZGV4IDU2YzE3MjdkZGI4MjEwZDEzNjk3NzViYmMzOTVlZjdmOGZiNjM5OTYuLjYxODFl
NmE2NzdkMDlhMDViMGM0MjJlZWI2YTZjZTdjYzM2NjUxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC01NCwxMCArNTQsNyBAQCBz
dGF0aWMgYm9vbCBzaG91bGRUaHJvd1NlY3VyaXR5RXhjZXB0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBp
ZiAoIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UobnVsbHB0cikp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBj
b250ZXh0LmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNl
VHlwZTo6SW5kZXhlZERCKSA9PSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6
Tm9BY2Nlc3M7CiB9CiAKIFJlZjxJREJGYWN0b3J5PiBJREJGYWN0b3J5OjpjcmVhdGUoSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94eSkKQEAgLTkxLDcgKzg4LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNl
Y3VyaXR5RXJyb3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1
cml0eSBjb250ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigp
KTsKLSAgICBib29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzRGF0YWJhc2UoJmNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIGJvb2wgaXNUcmFuc2ll
bnQgPSAoY29udGV4dC5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpS
ZXNvdXJjZVR5cGU6OkluZGV4ZWREQikgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNz
TGV2ZWw6OlRoaXJkUGFydHlBY2Nlc3MpOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRh
YmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC5zZWN1cml0
eU9yaWdpbigpLT5kYXRhKCkgfSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmln
aW4oKS5kYXRhKCkgfSwgaXNUcmFuc2llbnQpOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVy
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIklEQkZh
Y3Rvcnkub3BlbigpIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIl9zIH07
CkBAIC0xMTIsNyArMTA5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJ
REJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db24KICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNl
KCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCJfcyB9OwogCiAgICAgQVNT
RVJUKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgYm9vbCBpc1RyYW5zaWVudCA9ICFj
b250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKCZjb250ZXh0LnRvcE9y
aWdpbigpKTsKKyAgICBib29sIGlzVHJhbnNpZW50ID0gKGNvbnRleHQuY2FuQWNjZXNzUmVzb3Vy
Y2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpJbmRleGVkREIpID09IFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpUaGlyZFBhcnR5QWNjZXNzKTsKICAg
ICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5
T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5
T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGlzVHJhbnNpZW50KTsK
ICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVk
IHdpdGggYW4gaW52YWxpZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDYzNmI0OGM5ZjA0
NzliYzVhZTMxOTRlYTFlODkwNTY5NjU3MTdhNDUuLmU2MDI0MDdiNTUwMWE1MjY0MzZkNmE1MWQx
YTg2YmRhMjZhZWFkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjcsMTIgKzY3LDExIEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxDb25uZWN0aW9uSW5mbz4gY29ubmVjdGlvbkluZm8oTmF2aWdhdG9yQmFzZSogbmF2aWdhdG9y
KQogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9zIH07CiAKLSAgICBhdXRvKiBvcmlnaW4g
PSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwotICAgIGlmICghb3JpZ2luKQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJPcmlnaW4gaXMgaW52YWxpZCJf
cyB9OworICAgIGlmIChjb250ZXh0LT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpSZXNvdXJjZVR5cGU6OkxvY2FsU3RvcmFnZSkgPT0gU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6QWNjZXNzTGV2ZWw6Ok5vQWNjZXNzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yLCAiQ29udGV4dCBub3QgYWNjZXNzIHN0b3JhZ2UiX3MgfTsKIAotICAgIGlmICgh
b3JpZ2luLT5jYW5BY2Nlc3NTdG9yYWdlTWFuYWdlcigpKQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgVHlwZUVycm9yLCAiT3JpZ2luIHNob3VsZCBub3QgYWNjZXNzIHN0b3JhZ2UiX3MgfTsK
KyAgICBhdXRvKiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworICAgIEFTU0VS
VChvcmlnaW4pOwogCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewogICAgICAgICBp
ZiAoYXV0byogY29ubmVjdGlvbiA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS0+c3RvcmFn
ZUNvbm5lY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKaW5kZXggNTZhYzBlNDIyZGQ0ZGY5
MzZlM2NjYjAwY2U1ZjQ1YzNkNjU1NDE1Yi4uMTk0YmM5MjVmMGU2NDE1ZmMzM2Y1ZmIyMjlhOWI5
NGUwN2Y3ZjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAgRXhj
ZXB0aW9uT3I8UmVmUHRyPERhdGFiYXNlPj4gRE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRh
YmFzZShET01XaW5kb3cmIHdpbmQKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5
RXJyb3IgfTsKICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U3RvcmFnZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV2ViIFNRTCBpcyBkZXByZWNhdGVkLiBQ
bGVhc2UgdXNlIEluZGV4ZWREQiBpbnN0ZWFkLiJfcyk7CiAKLSAgICBhdXRvJiBzZWN1cml0eU9y
aWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgIGlmICghc2VjdXJpdHlPcmln
aW4uY2FuQWNjZXNzRGF0YWJhc2UoJmRvY3VtZW50LT50b3BPcmlnaW4oKSkpCisgICAgaWYgKGRv
Y3VtZW50LT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJj
ZVR5cGU6OldlYlNRTCkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNzTGV2ZWw6OkZp
cnN0UGFydHlBY2Nlc3MpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9y
IH07CisKICAgICBhdXRvIHJlc3VsdCA9IG1hbmFnZXIub3BlbkRhdGFiYXNlKCp3aW5kb3cuZG9j
dW1lbnQoKSwgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIFdURk1v
dmUoY3JlYXRpb25DYWxsYmFjaykpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IFRvIHByZXNlcnZlIG91ciBwYXN0IGJlaGF2aW9yLCB0aGlzIGRp
c2NhcmRzIHRoZSBlcnJvciBzdHJpbmcgaW4gdGhlIGV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGQxNjIxOGQ2NjI1NjFlNjdkMmRjNjZiNWJjNjYyMmFiODllMTZhMGYuLjBi
OGM5NWRiYTY3ZjFiNjMzMjE2OWEyNjQ2ODVmN2UyMmVkYTg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNjMyLDYgKzYzMiw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwsIERvY3VtCiAgICAg
ICAgIG5vZGVMaXN0QW5kQ29sbGVjdGlvbkNvdW50ID0gMDsKIAogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6YWRkRXZlbnRMaXN0ZW5lcnNUb05vZGUoKnRoaXMpOworICAgIHNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeShtX3NldHRpbmdzLT5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZU5ld0lkZW50aWZpZXIoKQpAQCAtNTM0MCw3ICs1MzQx
LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBEb2N1bWVudDo6Y29va2llKCkKICAgICBpZiAoaXND
b29raWVBdmVyc2UoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKCFzZWN1
cml0eU9yaWdpbigpLmNhbkFjY2Vzc0Nvb2tpZXMoKSkKKyAgICBpZiAoY2FuQWNjZXNzUmVzb3Vy
Y2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpDb29raWVzKSA9PSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Tm9BY2Nlc3MpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKICAgICBVUkwgY29va2llVVJMID0gdGhp
cy0+Y29va2llVVJMKCk7CkBAIC01MzYxLDcgKzUzNjIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBE
b2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgaWYgKGlzQ29va2ll
QXZlcnNlKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoIXNlY3VyaXR5T3JpZ2lu
KCkuY2FuQWNjZXNzQ29va2llcygpKQorICAgIGlmIChjYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkNvb2tpZXMpID09IFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpOb0FjY2VzcykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIFVSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVV
UkwoKTsKQEAgLTU3OTEsNyArNTc5Miw3IEBAIGJvb2wgRG9jdW1lbnQ6Om1lZGlhRGF0YUxvYWRz
QXV0b21hdGljYWxseSgpIGNvbnN0CiAKIHZvaWQgRG9jdW1lbnQ6OnN0b3JhZ2VCbG9ja2luZ1N0
YXRlRGlkQ2hhbmdlKCkKIHsKLSAgICBzZWN1cml0eU9yaWdpbigpLnNldFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeShzZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKKyAgICBzZXRTdG9y
YWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiB9
CiAKIC8vIFVzZWQgb25seSBieSBXZWJLaXRMZWdhY3kuCkBAIC02MzQ3LDcgKzYzNDgsNiBAQCB2
b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgICAgIHNlY3VyaXR5
T3JpZ2luKCkuc2V0RW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24oKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBzZWN1cml0eU9yaWdpbigpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5n
cygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKIAogICAgIFJlZlB0ciBwYXJlbnREb2N1bWVu
dCA9IG93bmVyRWxlbWVudCgpID8gJm93bmVyRWxlbWVudCgpLT5kb2N1bWVudCgpIDogbnVsbHB0
cjsKICAgICBpZiAocGFyZW50RG9jdW1lbnQgJiYgbV9mcmFtZS0+bG9hZGVyKCkuc2hvdWxkVHJl
YXRVUkxBc1NyY2RvY0RvY3VtZW50KHVybCgpKSkgewpAQCAtNzg4OCw4ICs3ODg4LDggQEAgdm9p
ZCBEb2N1bWVudDo6YXBwbHlRdWlja0xvb2tTYW5kYm94KCkKICAgICBBU1NFUlQoIWRvY3VtZW50
VVJMLnByb3RvY29sSXMoUUxQcmV2aWV3UHJvdG9jb2wpKTsKICAgICBBU1NFUlQocmVzcG9uc2VV
UkwucHJvdG9jb2xJcyhRTFByZXZpZXdQcm90b2NvbCkpOwogCisgICAgc2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tBbGwpOwogICAgIGF1dG8gc2Vj
dXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlTm9uTG9jYWxXaXRoQWxsb3dlZEZp
bGVQYXRoKHJlc3BvbnNlVVJMLCBkb2N1bWVudFVSTC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICBz
ZWN1cml0eU9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeTo6QmxvY2tBbGwpOwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3Jp
Z2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbikpKTsKIAogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHF1aWNrTG9va0NTUCA9IG1ha2VTdHJpbmcoImRlZmF1
bHQtc3JjICIsIFFMUHJldmlld1Byb3RvY29sLCAiOiAndW5zYWZlLWlubGluZSc7IGJhc2UtdXJp
ICdub25lJzsgc2FuZGJveCBhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1zY3JpcHRzIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMzhmMDcx
MTA3ZDc3NmVmNmJlYjQ0NzljYjA1Nzk3ZWJlMGM1YjEwNC4uNjk0YjQ5MmE5Nzk0ODczYmRlOTY0
OTQ2MDIzZDA4ODc2ZGFiMGIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcApAQCAtNTc4LDcgKzU3OCwxMyBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpnbG9iYWxPYmplY3QoKQogCiBTdHJpbmcgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdAogewotICAg
IHJldHVybiBtX2RvbWFpbkZvckNhY2hlUGFydGl0aW9uLmlzTnVsbCgpID8gdG9wT3JpZ2luKCku
ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IG1fZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb247Cisg
ICAgaWYgKCFtX2RvbWFpbkZvckNhY2hlUGFydGl0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gbV9kb21haW5Gb3JDYWNoZVBhcnRpdGlvbjsKKworICAgIGlmIChtX3N0b3JhZ2VCbG9ja2lu
Z1BvbGljeSAhPSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQYXJ0eSkKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gdG9wT3JpZ2luKCkuZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24oKTsKIH0KIAogYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojph
bGxvd3NNZWRpYURldmljZXMoKSBjb25zdApAQCAtNzA5LDQgKzcxNSwzOSBAQCB2b2lkIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG9SZXNwb25zaWJsZURvY3VtZW50KEZ1bmN0aW9u
PHZvaWQoRG9jdW1lbgogICAgICAgICBjYWxsYmFjaygqZG9jdW1lbnQpOwogfQogCitzdGF0aWMg
Ym9vbCBpc09yaWdpbkVxdWl2YWxlbnRUb0xvY2FsKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4pCit7CisgICAgcmV0dXJuIG9yaWdpbi5pc0xvY2FsKCkgJiYgIW9yaWdpbi5uZWVkc1N0b3Jh
Z2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpICYmICFvcmlnaW4uaGFzVW5pdmVyc2FsQWNjZXNz
KCk7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmNhbkFjY2Vzc1Jlc291cmNlKFJlc291cmNlVHlwZSB0eXBlKSBjb25zdAor
eworICAgIGF1dG8qIG9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFvcmlnaW4g
fHwgb3JpZ2luLT5pc1VuaXF1ZSgpKQorICAgICAgICByZXR1cm4gQWNjZXNzTGV2ZWw6Ok5vQWNj
ZXNzOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkNvb2tp
ZXM6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6Okdlb2xvY2F0aW9uOgorICAgICAgICByZXR1cm4g
QWNjZXNzTGV2ZWw6OkZpcnN0UGFydHlBY2Nlc3M7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkFw
cGxpY2F0aW9uQ2FjaGU6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlBsdWdpbjoKKyAgICBjYXNl
IFJlc291cmNlVHlwZTo6V2ViU1FMOgorICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpJbmRleGVkREI6
CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkxvY2FsU3RvcmFnZToKKyAgICBjYXNlIFJlc291cmNl
VHlwZTo6U3RvcmFnZU1hbmFnZXI6CisgICAgICAgIGlmIChpc09yaWdpbkVxdWl2YWxlbnRUb0xv
Y2FsKCpvcmlnaW4pKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc0xldmVsOjpOb0FjY2VzczsK
KyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlNlc3Npb25TdG9y
YWdlOgorICAgICAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2Nr
aW5nUG9saWN5OjpCbG9ja0FsbCkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NMZXZlbDo6Tm9B
Y2Nlc3M7CisgICAgICAgIGlmIChtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBTdG9yYWdlQmxv
Y2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQYXJ0eSkgeworICAgICAgICAgICAgaWYgKCF0b3BPcmln
aW4oKS5pc1NhbWVPcmlnaW5Bcygqb3JpZ2luKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQWNj
ZXNzTGV2ZWw6OlRoaXJkUGFydHlBY2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc0xldmVsOjpGaXJzdFBhcnR5QWNjZXNzOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5k
ZXggMDNmZTI0NDdiNDNlMDhiYTUxZGE3MmFmZjIzYzY5OTlmMTI1MTVlMS4uZWYzNDM3NWY5MzZi
MjVkYmUwNTIyNmEzNTc2MjljMjBjYWYyYzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VCbG9ja2luZ1BvbGljeS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hhbmRsZVR5cGVzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMjk3
LDYgKzI5OCwyNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5j
cnlwdGlvbldhcm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2hhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRF
bmNyeXB0aW9uV2FybmluZzsgfQogICAgIHZvaWQgc2V0SGFzTG9nZ2VkQXV0aGVudGljYXRlZEVu
Y3J5cHRpb25XYXJuaW5nKGJvb2wgdmFsdWUpIHsgbV9oYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5j
cnlwdGlvbldhcm5pbmcgPSB2YWx1ZTsgfQogCisgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1Bv
bGljeSA9IHBvbGljeTsgfQorICAgIGVudW0gY2xhc3MgUmVzb3VyY2VUeXBlIDogdWludDhfdCB7
CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUsCisgICAgICAgIENvb2tpZXMsCisgICAgICAgIEdl
b2xvY2F0aW9uLAorICAgICAgICBJbmRleGVkREIsCisgICAgICAgIExvY2FsU3RvcmFnZSwKKyAg
ICAgICAgUGx1Z2luLAorICAgICAgICBTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAgU3RvcmFnZU1h
bmFnZXIsCisgICAgICAgIFdlYlNRTAorICAgIH07CisgICAgZW51bSBjbGFzcyBBY2Nlc3NMZXZl
bCA6IHVpbnQ4X3QgeworICAgICAgICBOb0FjY2VzcywKKyAgICAgICAgRmlyc3RQYXJ0eUFjY2Vz
cywKKyAgICAgICAgVGhpcmRQYXJ0eUFjY2VzcworICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQg
QWNjZXNzTGV2ZWwgY2FuQWNjZXNzUmVzb3VyY2UoUmVzb3VyY2VUeXBlKSBjb25zdDsKKwogcHJv
dGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsK
ICAgICBwdWJsaWM6CkBAIC0zNzgsNiArMzk4LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIAogICAgIGJvb2wg
bV9oYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldhcm5pbmcgeyBmYWxzZSB9OworICAg
IFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB7IFN0b3JhZ2VC
bG9ja2luZ1BvbGljeTo6QWxsb3dBbGwgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGZkOWUzNmM0NzU0
NTJmNmY5NjNhYTI1ZDk2ZmZmYzZkZWZjMWRjZTIuLjRkMGU3MjgyZDc5YjMzOTAwN2E4YzgzY2U2
NDg4ZWJiMjkzMzA0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cApAQCAtMjE0OCw5ICsyMTQ4LDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVz
b3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICAgICAgLy8gSWYgd2UgYXJlIGxv
YWRpbmcgdGhlIG1haW4gcmVzb3VyY2Ugb2YgYSBzdWJmcmFtZSwgdXNlIHRoZSBjYWNoZSBwYXJ0
aXRpb24gb2YgdGhlIG1haW4gZG9jdW1lbnQuCiAgICAgICAgIG1haW5SZXNvdXJjZVJlcXVlc3Qu
c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKm1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWlu
UmVzb3VyY2VSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKLSAgICAgICAgb3JpZ2lu
LT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5zZXR0aW5n
cygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKLSAgICAgICAgbWFpblJlc291cmNlUmVxdWVz
dC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKCkpOworICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5zZXR0aW5ncygpLnN0
b3JhZ2VCbG9ja2luZ1BvbGljeSgpICE9IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGly
ZFBhcnR5KQorICAgICAgICAgICAgbWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbihlbXB0eVN0cmluZygpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBh
dXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWFpblJlc291cmNlUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0
LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24oKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVk
UmVzb3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVzb3VyY2UoV1RGTW92ZShtYWluUmVzb3VyY2VS
ZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg1YzdkMDE4
M2FjMTZkZTEzYTcxNDZhOGFkYzkwZmQ3MjE5NDI3OWQuLjMzNGQxOWMxNTA0MGJmYTQwY2U5ZTY4
YzZkYjg4YWE2ZjY5MGNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lJiBmcmFtZSwgY29u
c3QgVVJMJiBwYXNzZWRNYW5pZmVzdFUKICAgICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55
dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZy
YW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50
b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS5wYWdl
KCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgZnJhbWUuZG9jdW1lbnQoKS0+Y2FuQWNjZXNz
UmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlv
bkNhY2hlKSAhPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Rmlyc3RQYXJ0
eUFjY2VzcykgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5jaGVja2lu
Z0V2ZW50LCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjEyLDcgKzIxMiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdp
dGhvdXRNYW5pZmVzdFVSTChGcmFtZSYgZnJhbWUpCiAgICAgQVNTRVJUKCFkb2N1bWVudExvYWRl
ci5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLmFwcGxpY2F0aW9uQ2FjaGUoKSk7CiAKICAgICAvLyBE
b24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJs
ZWQuCi0gICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJh
bWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hl
KGZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAg
IGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgZnJhbWUuZG9jdW1l
bnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VU
eXBlOjpBcHBsaWNhdGlvbkNhY2hlKSAhPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NM
ZXZlbDo6Rmlyc3RQYXJ0eUFjY2VzcykgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50
TmFtZXMoKS5jaGVja2luZ0V2ZW50LCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0
ZW5lclRhc2soZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
Ojp1cGRhdGUoRnJhbWUmIGZyYW1lLCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAg
ICAgfQogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBi
cm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxT
ZXNzaW9uKCkgfHwgIWZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNz
QXBwbGljYXRpb25DYWNoZShmcmFtZS50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSkpIHsKKyAgICBpZiAoZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigp
IHx8IGZyYW1lLmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSkgIT0gU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6QWNjZXNzTGV2ZWw6OkZpcnN0UGFydHlBY2Nlc3MpIHsKICAgICAgICAgQVNTRVJU
KG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NF
UlQobV9wZW5kaW5nRW50cmllcy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIW1fY2FjaGVC
ZWluZ1VwZGF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggZWQ3NTY2NTI2YjJkN2VmYmYxYzUxNzAy
MDk1YTg3OWJhZjU2OTQ0Ny4uNWM0Y2NiMmM5NWFmNmEzNjJhZmE0MTlmMzEzOTgwODk5ZGYwOWFl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCkBAIC01NjEsMTQgKzU2MSwxNCBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKICAgICByZXR1cm4gbV9kb2N1
bWVudExvYWRlci5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3Mo
KS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1bWVudExvYWRl
ci5mcmFtZSgpLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiB9CiAKLWJvb2wgQXBw
bGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpCiB7CiAgICAgYXV0byogZnJhbWUgPSBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShyZXF1ZXN0LnVybCgpKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFt
ZS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpOworICAgIHJldHVybiBmcmFtZS0+ZG9jdW1lbnQo
KS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBl
OjpBcHBsaWNhdGlvbkNhY2hlKSAhPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZl
bDo6Tm9BY2Nlc3M7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKaW5kZXggODJlZGRjZTNjZDI2YjcxMDY0NWZjOTNmMjFlZjg0OWNmZWY4YTQw
Mi4uOTMyMjY4MmE0ZmE4MmJjZGY5Zjk4NTUyNDBiNzg2MTYwOTg5ZDU1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcApAQCAtODM3LDcgKzgzNyw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2Uq
PiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKCkKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCku
Y2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoZG9jdW1lbnQtPnRvcE9yaWdpbigpKSkKKyAgICBpZiAo
ZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291
cmNlVHlwZTo6U2Vzc2lvblN0b3JhZ2UpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFjY2Vz
c0xldmVsOjpOb0FjY2VzcykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IgfTsKIAogICAgIGlmIChtX3Nlc3Npb25TdG9yYWdlKQpAQCAtODYzLDcgKzg2Myw3IEBAIEV4
Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZSgpCiAgICAgaWYgKCFk
b2N1bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoIWRvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0xvY2FsU3RvcmFnZShudWxscHRyKSkKKyAgICBpZiAo
ZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291
cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSA9PSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NM
ZXZlbDo6Tm9BY2Nlc3MpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9y
IH07CiAKICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IGUwZWU3Mzc5MGYwYjY0YzdiMDU4MmNmYzhhNGI5MzRmZmU4MDA1ZDAuLjM1ZWFhMGJm
NDg2YmNiOGM5NDczMTUwOTFhN2I2NTkxNGFiYzQ5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
Mzk3MiwxNiArMzk3MiwxNyBAQCB2b2lkIFBhZ2U6OnNldHVwRm9yUmVtb3RlV29ya2VyKGNvbnN0
IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmCiAgICAgbWFpbkZyYW1l
KCkubG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoeyB9KTsKICAgICBhdXRvIGRv
Y3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIobWFpbkZyYW1l
KCksIHNjcmlwdFVSTCk7CiAgICAgZG9jdW1lbnQtPmNyZWF0ZURPTVdpbmRvdygpOwotCiAgICAg
ZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CiAKICAgICBhdXRvIG9y
aWdpbiA9IHRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwotICAgIG9yaWdpbi0+c2V0U3RvcmFn
ZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwotCiAg
ICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKICAgICBkb2N1bWVudC0+c2V0
U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOwogICAgIGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5
Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7Ci0gICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hl
UGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisKKyAgICBpZiAo
ZG9jdW1lbnQtPnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkgIT0gU3RvcmFnZUJs
b2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCisgICAgICAgIGRvY3VtZW50LT5zZXREb21h
aW5Gb3JDYWNoZVBhcnRpdGlvbihTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0pOworICAgIGVsc2UK
KyAgICAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAgICBpZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJl
ZmVycmVyUG9saWN5KHJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhl
YWRlcikpCiAgICAgICAgIGRvY3VtZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNGJhNTE5MWU2YjNlNDA5ODc5
YzIxOWMxNjZhODNmZTcxMmEzNTg3YS4uNzgwYThlZWQ3ZTk4ODFkNjIzZmJjOTI5ZjQ0NjFlNTk5
NGQxNmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTIwOCw3
ICsyMDgsNiBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4qIG90aGVyKQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3MgeyBvdGhlci0+bV91bml2ZXJz
YWxBY2Nlc3MgfQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTSB7IG90aGVyLT5tX2RvbWFpbldh
c1NldEluRE9NIH0KICAgICAsIG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzIHsgb3RoZXItPm1fY2Fu
TG9hZExvY2FsUmVzb3VyY2VzIH0KLSAgICAsIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5IHsgb3Ro
ZXItPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5IH0KICAgICAsIG1fZW5mb3JjZXNGaWxlUGF0aFNl
cGFyYXRpb24geyBvdGhlci0+bV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbiB9CiAgICAgLCBt
X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrIHsgb3RoZXItPm1fbmVlZHNTdG9y
YWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgfQogICAgICwgbV9pc1BvdGVudGlhbGx5VHJ1c3R3
b3J0aHkgeyBvdGhlci0+bV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgfQpAQCAtNDE4LDM2ICs0
MTcsNiBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSTCYgdXJsKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nl
c3NTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4sIFNob3VsZEFsbG93RnJv
bVRoaXJkUGFydHkgc2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSkgY29uc3QKLXsKLSAgICBpZiAo
aXNVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGlzTG9jYWwoKSAm
JiAhbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSAmJiAhbV91bml2ZXJzYWxB
Y2Nlc3MgJiYgc2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSAhPSBBbHdheXNBbGxvd0Zyb21UaGly
ZFBhcnR5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKG1fc3RvcmFnZUJs
b2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tBbGwpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIHNob3VsZCBiZSByZXBs
YWNlZCB3aXRoIGFuIEFTU0VSVCBvbmNlIHdlIGNhbiBndWFyYW50ZWUgdGhhdCB0b3BPcmlnaW4g
aXMgbm90IG51bGwuCi0gICAgaWYgKCF0b3BPcmlnaW4pCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgaWYgKHRvcE9yaWdpbi0+bV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJs
b2NraW5nUG9saWN5OjpCbG9ja0FsbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KHNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgPT0gQWx3YXlzQWxsb3dGcm9tVGhpcmRQYXJ0eSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKChtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBT
dG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQYXJ0eSB8fCB0b3BPcmlnaW4tPm1fc3Rv
cmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBh
cnR5KSAmJiAhdG9wT3JpZ2luLT5pc1NhbWVPcmlnaW5BcygqdGhpcykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiBTZWN1cml0eU9yaWdpbjo6UG9saWN5
IFNlY3VyaXR5T3JpZ2luOjpjYW5TaG93Tm90aWZpY2F0aW9ucygpIGNvbnN0CiB7CiAgICAgaWYg
KG1fdW5pdmVyc2FsQWNjZXNzKQpAQCAtNTE3LDkgKzQ4Niw2IEBAIHZvaWQgU2VjdXJpdHlPcmln
aW46OmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCkKIAogU3RyaW5nIFNlY3Vy
aXR5T3JpZ2luOjpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1f
c3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGly
ZFBhcnR5KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQogICAgIGlmIChpc0hUVFBG
YW1pbHkoKSkKICAgICAgICAgcmV0dXJuIGhvc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5oCmluZGV4IGQyYmY3M2RhNjJkM2Y1YTFhOTc0YTA3YWY3YWMyNTlkZGE2OWFhM2Yu
LmZmMWQyMmMxNWZlMGJmNDM0ZTFmZWY5NDQ2ZmMyZTgyY2M0ZmM5OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCi0jaW5jbHVkZSAiU3RvcmFnZUJsb2NraW5n
UG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0xMzksMjEg
KzEzOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBncmFudFVuaXZlcnNhbEFjY2VzcygpOwogICAg
IGJvb2wgaGFzVW5pdmVyc2FsQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV91bml2ZXJzYWxBY2Nl
c3M7IH0KIAotICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSBwb2xpY3kpIHsgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSBwb2xpY3k7IH0KLQog
ICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKICAgICBib29s
IG5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9u
ZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3Q7Ci0KLSAgICBib29sIGNh
bkFjY2Vzc0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pIGNvbnN0IHsg
cmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsKLSAgICBib29sIGNhbkFjY2Vz
c1Nlc3Npb25TdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsg
cmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbiwgQWx3YXlzQWxsb3dGcm9tVGhpcmRQ
YXJ0eSk7IH0KLSAgICBib29sIGNhbkFjY2Vzc0xvY2FsU3RvcmFnZShjb25zdCBTZWN1cml0eU9y
aWdpbiogdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKHRvcE9yaWdp
bik7IH07Ci0gICAgYm9vbCBjYW5BY2Nlc3NTdG9yYWdlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJu
IGNhbkFjY2Vzc1N0b3JhZ2UobnVsbHB0cik7IH0KLSAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0
b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2Fu
QWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQotICAgIGJvb2wgY2FuQWNjZXNzQXBwbGljYXRp
b25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBj
YW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9Ci0gICAgYm9vbCBjYW5BY2Nlc3NDb29raWVz
KCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KLSAgICBib29sIGNhblJlcXVlc3RHZW9s
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgpOyB9CiAgICAgUG9saWN5IGNhblNo
b3dOb3RpZmljYXRpb25zKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgbG9jYWwgU2VjdXJpdHlPcmln
aW4gaXMgdGhlIG1vc3QgcHJpdmlsZWdlZCBTZWN1cml0eU9yaWdpbi4KQEAgLTI0NCw3ICsyMzIs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91bml2ZXJzYWxBY2Nlc3MgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2NhbkxvYWRM
b2NhbFJlc291cmNlcyB7IGZhbHNlIH07Ci0gICAgU3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3Rv
cmFnZUJsb2NraW5nUG9saWN5IHsgU3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbCB9Owog
ICAgIGJvb2wgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrIHsgZmFsc2UgfTsKICAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk7CkBA
IC0yNjYsNyArMjUzLDYgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgU2Vj
dXJpdHlPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICBlbmNvZGVyIDw8
IG1fdW5pdmVyc2FsQWNjZXNzOwogICAgIGVuY29kZXIgPDwgbV9kb21haW5XYXNTZXRJbkRPTTsK
ICAgICBlbmNvZGVyIDw8IG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzOwotICAgIGVuY29kZXIgPDwg
bV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAgICAgZW5jb2RlciA8PCBtX2VuZm9yY2VzRmlsZVBh
dGhTZXBhcmF0aW9uOwogICAgIGVuY29kZXIgPDwgbV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmls
ZVVSTHNRdWlyazsKICAgICBlbmNvZGVyIDw8IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5OwpA
QCAtMjk1LDggKzI4MSw2IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoRGVjCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX2NhbkxvYWRMb2Nh
bFJlc291cmNlcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUob3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX2VuZm9yY2VzRmlsZVBh
dGhTZXBhcmF0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShvcmlnaW4tPm1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmspKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwCmluZGV4IDI2YmFmNGYwNGQ3M2RiYTc5NWU0ZWY0MTM5MmY5OTUzZDdmZWIwYWUuLjMxMzRl
NmY3ZGFlNTZkYmIxZDBmMmUwMmZhZTQ0Y2RlZWQzNDcyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTUxLDExICs1
MSw4IEBAIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0
b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAvLyBzbyB0aGUgRG9jdW1lbnQgaGFk
IGJldHRlciBzdGlsbCBhY3R1YWxseSBoYXZlIGEgUGFnZS4KICAgICBBU1NFUlQoZG9jdW1lbnQu
cGFnZSgpKTsKIAotICAgIGJvb2wgdHJhbnNpZW50ID0gIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2lu
KCkuY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZkb2N1bWVudC50b3BPcmlnaW4oKSk7Ci0KICAgICBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gc3RvcmFnZU5hbWVzcGFjZTsKLQotICAgIGlmICh0cmFu
c2llbnQpCisgICAgaWYgKGRvY3VtZW50LmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSA9PSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpBY2Nlc3NMZXZlbDo6VGhpcmRQYXJ0eUFjY2VzcykKICAgICAgICAgc3RvcmFnZU5h
bWVzcGFjZSA9ICZ0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoZG9jdW1lbnQudG9wT3Jp
Z2luKCksIGRvY3VtZW50LnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwogICAgIGVsc2UKICAgICAgICAg
c3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoZG9jdW1lbnQucGFnZSgp
LT5zZXNzaW9uSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCmluZGV4IGYyZjI5OGU3ODcyMGY3MDMwOTkwMmMyYjNiOWJmYmEyYmFkZTBhYzQuLjU5
MzNlMDc0ZThiNjMyN2QwNTY2MWIzNDFlMTYyNzIwOTlmZDI5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xMTYsNiArMTE2LDcgQEAgV29y
a2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUgdHlwZSwg
Y29uc3QgV29ya2VyUGFyYW1ldGUKICAgICBpZiAobV90b3BPcmlnaW4tPm5lZWRzU3RvcmFnZUFj
Y2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCkpCiAgICAgICAgIG9yaWdpbi0+Z3JhbnRTdG9yYWdlQWNj
ZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSht
X3NldHRpbmdzVmFsdWVzLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAgICAgc2V0U2VjdXJpdHlP
cmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbikp
KTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJp
dHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiAgICAgc2V0Q3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeShwYXJhbXMuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHAKaW5kZXggNDVhNDIyMDM3OTMzM2NhZDQ2YjQ4NmViMjcyY2I4ZDJhOGRiMDNmNS4uYWI0
ZjVhMmNmMzUzMDBkMjkzYjc3ZTM5NGYzODRmOGM3OGVkYWJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cApAQCAtMjA0LDYgKzIwNCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVn
aXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0
YS50b3BPcmlnaW4gPSBjb250ZXh0LT50b3BPcmlnaW4oKS5kYXRhKCk7CiAgICAgam9iRGF0YS53
b3JrZXJUeXBlID0gb3B0aW9ucy50eXBlOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3Jr
ZXJKb2JUeXBlOjpSZWdpc3RlcjsKKyAgICBqb2JEYXRhLmRvbWFpbkZvckNhY2hlUGFydGl0aW9u
ID0gY29udGV4dC0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKICAgICBqb2JEYXRhLnJlZ2lz
dHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCiAgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxT
ZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRh
KSkpOwpAQCAtMjUyLDYgKzI1Myw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBk
YXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYKICAgICBqb2JE
YXRhLnRvcE9yaWdpbiA9IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpvYkRhdGEu
d29ya2VyVHlwZSA9IHdvcmtlclR5cGU7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtl
ckpvYlR5cGU6OlVwZGF0ZTsKKyAgICBqb2JEYXRhLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uID0g
Y29udGV4dC5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpOwogICAgIGpvYkRhdGEuc2NvcGVVUkwg
PSBzY29wZVVSTDsKICAgICBqb2JEYXRhLnNjcmlwdFVSTCA9IHNjcmlwdFVSTDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0
YS5jcHAKaW5kZXggZjBhYTg2YzVkYTZmMjc5ZmQ3ZTA3MmNlMzI1YTM1Y2EwY2M5M2Q0MC4uZWJl
MWFlY2Q3MDQ3ZDY0ZWNjYjM3Y2I2NTk2ZWRjMDE2MjdjYWI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCkBA
IC03OCw2ICs3OCw3IEBAIFNlcnZpY2VXb3JrZXJKb2JEYXRhIFNlcnZpY2VXb3JrZXJKb2JEYXRh
Ojppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJlc3VsdC5jbGllbnRDcmVhdGlvblVSTCA9IGNs
aWVudENyZWF0aW9uVVJMLmlzb2xhdGVkQ29weSgpOwogICAgIHJlc3VsdC50b3BPcmlnaW4gPSB0
b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCk7CiAgICAgcmVzdWx0LnNjb3BlVVJMID0gc2NvcGVVUkwu
aXNvbGF0ZWRDb3B5KCk7CisgICAgcmVzdWx0LmRvbWFpbkZvckNhY2hlUGFydGl0aW9uID0gZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24uaXNvbGF0ZWRDb3B5KCk7CiAgICAgcmVzdWx0LnJlZ2lzdHJh
dGlvbk9wdGlvbnMgPSByZWdpc3RyYXRpb25PcHRpb25zLmlzb2xhdGVkQ29weSgpOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggZGZiYWRhMzVlM2Q0OTA3NTNhMzEyMDE2NjVm
OWFhZDU1ZTNmMGYyNC4uMDhmOWZlOWUyNWQzN2Y1NDc4MmI0YTgwNGRjM2QwMTU5MWIwMzNlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JEYXRhLmgKQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
IHsKICAgICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZUNvbnRleHQ7CiAg
ICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAgIFNlcnZpY2VXb3JrZXJKb2JUeXBlIHR5cGU7
CisgICAgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uOwogICAgIGJvb2wgaXNGcm9tU2Vy
dmljZVdvcmtlclBhZ2UgeyBmYWxzZSB9OwogCiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bk9wdGlvbnMgcmVnaXN0cmF0aW9uT3B0aW9uczsKQEAgLTc1LDcgKzc2LDcgQEAgcHJpdmF0ZToK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJKb2JEYXRhOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIo
KSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25VUkwgPDwgdG9wT3JpZ2luIDw8IHNjb3Bl
VVJMIDw8IHNvdXJjZUNvbnRleHQgPDwgd29ya2VyVHlwZSA8PCBpc0Zyb21TZXJ2aWNlV29ya2Vy
UGFnZTsKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIoKSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50
Q3JlYXRpb25VUkwgPDwgdG9wT3JpZ2luIDw8IHNjb3BlVVJMIDw8IHNvdXJjZUNvbnRleHQgPDwg
d29ya2VyVHlwZSA8PCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA8PCBpc0Zyb21TZXJ2aWNlV29y
a2VyUGFnZTsKICAgICBlbmNvZGVyIDw8IHR5cGU7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI6CkBAIC0xMTUsNiArMTE2LDggQEAg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gU2VydmljZVdvcmtlckpvYkRhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEud29ya2VyVHlwZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLmRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS50
eXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKaW5kZXggYzgwNzJiOTFkNDg0ZjliZjQwYzJiMGI1OTg5YzcyYmVhYzAxOGUxZC4u
NmU2ZTQ2OThkNGMwMjQxNDdiZDhiMGU4YWQ2NjdiNDBjZWIyMjQ4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQ5Niw3
ICs0OTYsNyBAQCB2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBTV1NlcnZlclJlZwogICAgICAgICBhdXRvIHRvcE9yaWdp
biA9IGpvYkRhdGEudG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgICAgIGF1dG8gb3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCk7CiAKLSAgICAg
ICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbih0b3BPcmlnaW4tPmRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKCkpOworICAgICAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogICAgICAgICByZXF1ZXN0
LnNldEFsbG93Q29va2llcyh0cnVlKTsKICAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9y
Q29va2llcyhvcmlnaW5VUkwodG9wT3JpZ2luKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDc0ZGYyNzUxNzhjYTg4MGY4OWY5Mjk5
NjU4ODcyOTZkMGRmMzVhODguLmFmNzdjMzU5ZWQ1ZTBmNWNkZTQxMjMwZjk1MTA0Y2M3ZmViODRl
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNw
cApAQCAtNTgsNiArNTgsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29w
ZShXb3JrZXJPcldvcmtsZXRUaHJlYWQmIHRocmVhZCwgUmVmPEpTQzo6VgogewogICAgICsrZ051
bWJlck9mV29ya2xldEdsb2JhbFNjb3BlczsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eShwYXJhbWV0ZXJzLnNldHRpbmdzVmFsdWVzLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAgICAg
c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKHRoaXMtPnVybCgpKSkpOwogICAgIHNldENvbnRlbnRTZWN1cml0
eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgdGhpcy0+dXJs
KCkgfSwgKnRoaXMpKTsKIH0KQEAgLTc1LDYgKzc2LDcgQEAgV29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SlNDOjpWTT4mJiB2bSwg
U2MKIAogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCisgICAgc2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KG1fZG9jdW1lbnQtPnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkp
OwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVh
dGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0aGlzLT51cmwoKSkpKTsKICAgICBzZXRDb250ZW50
U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHRo
aXMtPnVybCgpIH0sICp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ1YTAxMWJlNTU2NjIwN2M5Y2FjNDVmOWVmNjA5
MmNlODAxNTAwMWYuLjRiOGJiMDk3YTA3NTU5ZWI0YWM4MThiYTQ1MWFiYTM2N2NmZmUzMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC02MTMsOCArNjEzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNo
YW5nZWQoKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYm9vbCBzdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSAhZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NQbHVnaW5TdG9yYWdlKGZyYW1lKCkt
PmRvY3VtZW50KCktPnRvcE9yaWdpbigpKTsKLQorICAgIGJvb2wgc3RvcmFnZUJsb2NraW5nUG9s
aWN5ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpQbHVnaW4pICE9IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OkFjY2Vzc0xldmVsOjpGaXJzdFBhcnR5QWNjZXNzOwogICAgIG1fcGx1Z2luLT5zdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQoc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFjNDEzMzJlMGFi
OGNkMjE1NTk5NDU1MDNiMTU3NGNmYmQwNGE2Y2YuLjVjYjBjODg3NmVkM2M1N2NmNWM3YTJkOTA1
NzU5YWU5NzA4ZTUzM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0wNiAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNhbkFjY2Vzc1N0b3JhZ2UoKSBjaGVjayBm
cm9tIFNlY3VyaXR5T3JpZ2luIHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vOTEzMTgyNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QlBlcnNpc3RlbmNlLm1tOgorCiAyMDIyLTA0LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVyZ2UtUXVldWVdIEV4dHJhY3QgYnVnX2lkIHdoZW4g
dXBkYXRpbmcgcHVsbC1yZXF1ZXN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCAwN2Yw
Y2UyODE1NjAxOGZkNWU0NGY0ZWI0N2RhYjY1NjcyNDdiN2U2Li5hNDhlNDU5OGJjMWU4ZWZhYWQ5
NTYwYzYxNWUyNTVhZTViMWY5YTgyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTI4
Niw2ICsyODYsNyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1v
dmFsKQogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9y
QWxsT3JpZ2luc107CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldFN0b3JhZ2VCbG9ja2luZ1BvbGljeTpfV0tTdG9yYWdlQmxvY2tpbmdQb2xp
Y3lBbGxvd0FsbF07CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0luZGV4ZWREQk1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAi
dGVzdEhhbmRsZXIiXTsKICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVS
TFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456932</attachid>
            <date>2022-04-07 09:01:13 -0700</date>
            <delta_ts>2022-04-08 11:15:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238524-20220407090112.patch</filename>
            <type>text/plain</type>
            <size>42124</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWMyMDRjMzgwODlmYzhi
YTI5YjFmZTY1YjhkNDI3MTkzM2YwMDY3OC4uYzI4MTZhYWYyNzQ5MGU4YzkxMjk4YTFkZmMyOGNl
MzJiOTBjZThmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIyLTA0LTA2ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MTMxODI1OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2FuQWNjZXNzUmVzb3VyY2UoKSB0byBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IGJlY2F1c2UgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW5z
dGVhZCBvZiBTZWN1cml0eU9yaWdpbiwgCisgICAgICAgIHNob3VsZCBiZSB0aGUgcGxhY2UgdGhh
dCBob2xkcyBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgKGl0J3Mgd2VpcmQgdGhhdCB0aGUgb3JpZ2lu
IGFuZCB0b3Agb3JpZ2luIGRpc2FncmVlcyB3aXRoCisgICAgICAgIGVhY2ggb3RoZXIgb24gU3Rv
cmFnZUJsb2NraW5nUG9saWN5KS4gQWxzbywgYmVjYXVzZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IGhhcyBhY2Nlc3MgdG8gb3JpZ2luIGFuZCB0b3BPcmlnaW4sCisgICAgICAgIGNhbGxlcnMgZG9u
J3QgbmVlZCB0byBleHBsaWNpdGx5IGdldCB0aGVtIGJlZm9yZSB0aGUgYWNjZXNzIGNoZWNrLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uOjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVzdHMpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVGhyb3dT
ZWN1cml0eUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25uZWN0aW9uSW5mbyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
T01XaW5kb3dXZWJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dXZWJE
YXRhYmFzZTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bV93aGl0ZXNwYWNlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlRdWlja0xvb2tTYW5kYm94KToKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjppc09yaWdpbkVxdWl2YWxlbnRUb0xvY2FsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhbkFjY2Vzc1Jlc291cmNlIGNvbnN0KToK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldHVwRm9yUmVtb3RlV29ya2VyKToKKyAgICAgICAg
KiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpzZXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNh
bkFjY2Vzc0RhdGFiYXNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjYW5BY2Nlc3NTZXNzaW9uU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzTG9jYWxTdG9yYWdlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NT
dG9yYWdlTWFuYWdlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y2FuQWNjZXNzUGx1Z2luU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNz
Q29va2llcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y2FuUmVxdWVzdEdlb2xvY2F0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9jcmVkZW50aWFs
cyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJl
Z2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUpOgorCiAyMDIyLTA0LTA2ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBTVkdG
RUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KCkgY3JlYXRlIGFuIEltYWdlQnVmZmVyIGNvbXBh
dGlibGUgd2l0aCB0aGUgZGVzdGluYXRpb24gR3JhcGhpY3NDb250ZXh0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE5
MjZiMTU1MzNkYTMwYmNmNDc3OTMwMzQ3NWFhY2E4ODQ4MzQ4NjcuLjJlYWM1ZjZjZjY5ODYwMWJj
NDM2NTNkYTI0ZWNmOTcxM2JlNDkyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjIt
MDQtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBj
YW5BY2Nlc3NTdG9yYWdlKCkgY2hlY2sgZnJvbSBTZWN1cml0eU9yaWdpbiB0byBTY3JpcHRFeGVj
dXRpb25Db250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzg1MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkxMzE4MjU5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorCiAyMDIyLTA0LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUgdG8gbm90IGFsbG9jYXRlIGEgbmV3IEpTQ29udGV4dCBldmVyeSBzZWNv
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRl
eCA2NTQzZjM5MTk4M2M3YzQ2MzNkMjc4YTllYTk1ZjUwYzM5OWEyNGZlLi44MmViYzZlMWRjMzQy
NWUwZGJhMGRhYWVlNmY5YmM2NmZlNTNkOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC05NiwxMSArOTYsMTAgQEAgdm9pZCBDRE06Omdl
dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2Fu
ZGlkYXRlQ29uZmkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1dG8gYWNjZXNzID0g
Q0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2VkOwogICAgIGJvb2wgaXNFcGhl
bWVyYWwgPSAhZG9jdW1lbnQtPnBhZ2UoKSB8fCBkb2N1bWVudC0+cGFnZSgpLT5zZXNzaW9uSUQo
KS5pc0VwaGVtZXJhbCgpOwotCi0gICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpOwotICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4gPSBkb2N1
bWVudC0+dG9wT3JpZ2luKCk7Ci0gICAgQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFj
Y2VzcyA9ICFpc0VwaGVtZXJhbCAmJiBvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0b3BP
cmlnaW4pID8gQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2VkIDogQ0RNUHJp
dmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOworICAgIGlmIChpc0VwaGVtZXJh
bCB8fCBkb2N1bWVudC0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
UmVzb3VyY2VUeXBlOjpMb2NhbFN0b3JhZ2UpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFj
Y2Vzc0xldmVsOjpOb0FjY2VzcykKKyAgICAgICAgYWNjZXNzID0gQ0RNUHJpdmF0ZTo6TG9jYWxT
dG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOwogICAgIG1fcHJpdmF0ZS0+Z2V0U3VwcG9ydGVkQ29u
ZmlndXJhdGlvbihXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBhY2Nlc3MsIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBjZDM3MmY0MzY5MWFkZDRkN2RmMGM5ZTUyNTcw
ZWFmZmQyOTM0MDM3Li5mNDdmY2RiNmRmYmYyNTU2MzMzMmRhMDQ3MmFmMWUxNTg2YTYyOWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcApAQCAtMzcxLDcgKzM3MSw3IEBAIGJvb2wgR2VvbG9jYXRpb246OnNob3VsZEJsb2NrR2Vv
bG9jYXRpb25SZXF1ZXN0cygpCiAgICAgYm9vbCBpc1NlY3VyZSA9IFNlY3VyaXR5T3JpZ2luOjpp
c1NlY3VyZShkb2N1bWVudCgpLT51cmwoKSkgfHwgZG9jdW1lbnQoKS0+aXNTZWN1cmVDb250ZXh0
KCk7CiAgICAgYm9vbCBoYXNNaXhlZENvbnRlbnQgPSAhZG9jdW1lbnQoKS0+Zm91bmRNaXhlZENv
bnRlbnQoKS5pc0VtcHR5KCk7CiAgICAgYm9vbCBpc0xvY2FsT3JpZ2luID0gc2VjdXJpdHlPcmln
aW4oKS0+aXNMb2NhbCgpOwotICAgIGlmIChzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0R2Vv
bG9jYXRpb24oKSkgeworICAgIGlmIChkb2N1bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6Okdlb2xvY2F0aW9uKSAhPSBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Tm9BY2Nlc3MpIHsKICAgICAgICAgaWYgKGlz
TG9jYWxPcmlnaW4gfHwgKGlzU2VjdXJlICYmICFoYXNNaXhlZENvbnRlbnQpIHx8IGlzUmVxdWVz
dEZyb21JQm9va3MoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDU2YzE3
MjdkZGI4MjEwZDEzNjk3NzViYmMzOTVlZjdmOGZiNjM5OTYuLjYxODFlNmE2NzdkMDlhMDViMGM0
MjJlZWI2YTZjZTdjYzM2NjUxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC01NCwxMCArNTQsNyBAQCBzdGF0aWMgYm9vbCBzaG91
bGRUaHJvd1NlY3VyaXR5RXhjZXB0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIWNvbnRleHQuc2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UobnVsbHB0cikpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb250ZXh0LmNhbkFjY2Vz
c1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6SW5kZXhlZERC
KSA9PSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Tm9BY2Nlc3M7CiB9CiAK
IFJlZjxJREJGYWN0b3J5PiBJREJGYWN0b3J5OjpjcmVhdGUoSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94eSkKQEAgLTkxLDcgKzg4LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJ
REJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0eSBjb250ZXh0Il9z
IH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBib29sIGlz
VHJhbnNpZW50ID0gIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2Uo
JmNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIGJvb2wgaXNUcmFuc2llbnQgPSAoY29udGV4dC5j
YW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6Oklu
ZGV4ZWREQikgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNzTGV2ZWw6OlRoaXJkUGFy
dHlBY2Nlc3MpOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIo
bmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRh
KCkgfSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwg
aXNUcmFuc2llbnQpOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIklEQkZhY3Rvcnkub3BlbigpIGNh
bGxlZCB3aXRoIGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIl9zIH07CkBAIC0xMTIsNyArMTA5
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpkZWxl
dGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db24KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFNlY3VyaXR5RXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIGluIGFu
IGludmFsaWQgc2VjdXJpdHkgY29udGV4dCJfcyB9OwogCiAgICAgQVNTRVJUKGNvbnRleHQuc2Vj
dXJpdHlPcmlnaW4oKSk7Ci0gICAgYm9vbCBpc1RyYW5zaWVudCA9ICFjb250ZXh0LnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKCZjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBi
b29sIGlzVHJhbnNpZW50ID0gKGNvbnRleHQuY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpJbmRleGVkREIpID09IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OkFjY2Vzc0xldmVsOjpUaGlyZFBhcnR5QWNjZXNzKTsKICAgICBJREJEYXRhYmFzZUlk
ZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNv
bnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGlzVHJhbnNpZW50KTsKICAgICBpZiAoIWRhdGFi
YXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIHdpdGggYW4gaW52YWxp
ZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDYzNmI0OGM5ZjA0NzliYzVhZTMxOTRlYTFl
ODkwNTY5NjU3MTdhNDUuLmU2MDI0MDdiNTUwMWE1MjY0MzZkNmE1MWQxYTg2YmRhMjZhZWFkZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmNwcApAQCAtNjcsMTIgKzY3LDExIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxDb25uZWN0aW9uSW5m
bz4gY29ubmVjdGlvbkluZm8oTmF2aWdhdG9yQmFzZSogbmF2aWdhdG9yKQogICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29u
dGV4dCBpcyBpbnZhbGlkIl9zIH07CiAKLSAgICBhdXRvKiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpOwotICAgIGlmICghb3JpZ2luKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJPcmlnaW4gaXMgaW52YWxpZCJfcyB9OworICAgIGlmIChj
b250ZXh0LT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJj
ZVR5cGU6OkxvY2FsU3RvcmFnZSkgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNzTGV2
ZWw6Ok5vQWNjZXNzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiQ29u
dGV4dCBub3QgYWNjZXNzIHN0b3JhZ2UiX3MgfTsKIAotICAgIGlmICghb3JpZ2luLT5jYW5BY2Nl
c3NTdG9yYWdlTWFuYWdlcigpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9y
LCAiT3JpZ2luIHNob3VsZCBub3QgYWNjZXNzIHN0b3JhZ2UiX3MgfTsKKyAgICBhdXRvKiBvcmln
aW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworICAgIEFTU0VSVChvcmlnaW4pOwogCiAg
ICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewogICAgICAgICBpZiAoYXV0byogY29ubmVj
dGlvbiA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS0+c3RvcmFnZUNvbm5lY3Rpb24oKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93
V2ViRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01X
aW5kb3dXZWJEYXRhYmFzZS5jcHAKaW5kZXggNTZhYzBlNDIyZGQ0ZGY5MzZlM2NjYjAwY2U1ZjQ1
YzNkNjU1NDE1Yi4uMTk0YmM5MjVmMGU2NDE1ZmMzM2Y1ZmIyMjlhOWI5NGUwN2Y3ZjFjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01X
aW5kb3dXZWJEYXRhYmFzZS5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAgRXhjZXB0aW9uT3I8UmVmUHRy
PERhdGFiYXNlPj4gRE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShET01XaW5kb3cm
IHdpbmQKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKICAgICBk
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U3RvcmFnZSwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCAiV2ViIFNRTCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIEluZGV4
ZWREQiBpbnN0ZWFkLiJfcyk7CiAKLSAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpOwotICAgIGlmICghc2VjdXJpdHlPcmlnaW4uY2FuQWNjZXNzRGF0
YWJhc2UoJmRvY3VtZW50LT50b3BPcmlnaW4oKSkpCisgICAgaWYgKGRvY3VtZW50LT5jYW5BY2Nl
c3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OldlYlNRTCkg
IT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNzTGV2ZWw6OkZpcnN0UGFydHlBY2Nlc3Mp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CisKICAgICBhdXRv
IHJlc3VsdCA9IG1hbmFnZXIub3BlbkRhdGFiYXNlKCp3aW5kb3cuZG9jdW1lbnQoKSwgbmFtZSwg
dmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIFdURk1vdmUoY3JlYXRpb25DYWxs
YmFjaykpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgLy8gRklY
TUU6IFRvIHByZXNlcnZlIG91ciBwYXN0IGJlaGF2aW9yLCB0aGlzIGRpc2NhcmRzIHRoZSBlcnJv
ciBzdHJpbmcgaW4gdGhlIGV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQw
NTVjNGEyMjUwNmFhYjg1NjZjMDI0Y2RlZWEwOGRjNjFjYjZhZjUuLmI0YWM5NGFhMzA2MDcwOTIx
ZjA1NWVjMTMxMTE2YzNjOTQ2M2UyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjMy
LDYgKzYzMiw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRp
bmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwsIERvY3VtCiAgICAgICAgIG5vZGVMaXN0QW5k
Q29sbGVjdGlvbkNvdW50ID0gMDsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRk
RXZlbnRMaXN0ZW5lcnNUb05vZGUoKnRoaXMpOworICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eShtX3NldHRpbmdzLT5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiB9CiAKIHZvaWQgRG9jdW1l
bnQ6OmNyZWF0ZU5ld0lkZW50aWZpZXIoKQpAQCAtNTM0MCw3ICs1MzQxLDcgQEAgRXhjZXB0aW9u
T3I8U3RyaW5nPiBEb2N1bWVudDo6Y29va2llKCkKICAgICBpZiAoaXNDb29raWVBdmVyc2UoKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKCFzZWN1cml0eU9yaWdpbigpLmNh
bkFjY2Vzc0Nvb2tpZXMoKSkKKyAgICBpZiAoY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpDb29raWVzKSA9PSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpBY2Nlc3NMZXZlbDo6Tm9BY2Nlc3MpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
ZWN1cml0eUVycm9yIH07CiAKICAgICBVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7
CkBAIC01MzYxLDcgKzUzNjIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6c2V0Q29v
a2llKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgaWYgKGlzQ29va2llQXZlcnNlKCkpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQ29v
a2llcygpKQorICAgIGlmIChjYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpSZXNvdXJjZVR5cGU6OkNvb2tpZXMpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFjY2Vz
c0xldmVsOjpOb0FjY2VzcykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IgfTsKIAogICAgIFVSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKQEAgLTU3OTEs
NyArNTc5Miw3IEBAIGJvb2wgRG9jdW1lbnQ6Om1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSgp
IGNvbnN0CiAKIHZvaWQgRG9jdW1lbnQ6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCkK
IHsKLSAgICBzZWN1cml0eU9yaWdpbigpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5n
cygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3koc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiB9CiAKIC8vIFVzZWQgb25s
eSBieSBXZWJLaXRMZWdhY3kuCkBAIC02MzQ3LDcgKzYzNDgsNiBAQCB2b2lkIERvY3VtZW50Ojpp
bml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2luKCkuc2V0RW5m
b3JjZXNGaWxlUGF0aFNlcGFyYXRpb24oKTsKICAgICAgICAgfQogICAgIH0KLSAgICBzZWN1cml0
eU9yaWdpbigpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncygpLnN0b3JhZ2VCbG9j
a2luZ1BvbGljeSgpKTsKIAogICAgIFJlZlB0ciBwYXJlbnREb2N1bWVudCA9IG93bmVyRWxlbWVu
dCgpID8gJm93bmVyRWxlbWVudCgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKICAgICBpZiAocGFy
ZW50RG9jdW1lbnQgJiYgbV9mcmFtZS0+bG9hZGVyKCkuc2hvdWxkVHJlYXRVUkxBc1NyY2RvY0Rv
Y3VtZW50KHVybCgpKSkgewpAQCAtNzg4OCw4ICs3ODg4LDggQEAgdm9pZCBEb2N1bWVudDo6YXBw
bHlRdWlja0xvb2tTYW5kYm94KCkKICAgICBBU1NFUlQoIWRvY3VtZW50VVJMLnByb3RvY29sSXMo
UUxQcmV2aWV3UHJvdG9jb2wpKTsKICAgICBBU1NFUlQocmVzcG9uc2VVUkwucHJvdG9jb2xJcyhR
TFByZXZpZXdQcm90b2NvbCkpOwogCisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeTo6QmxvY2tBbGwpOwogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlTm9uTG9jYWxXaXRoQWxsb3dlZEZpbGVQYXRoKHJlc3BvbnNl
VVJMLCBkb2N1bWVudFVSTC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICBzZWN1cml0eU9yaWdpbi0+
c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tBbGwp
OwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVh
dGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbikpKTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHF1aWNrTG9va0NTUCA9IG1ha2VTdHJpbmcoImRlZmF1bHQtc3JjICIsIFFMUHJl
dmlld1Byb3RvY29sLCAiOiAndW5zYWZlLWlubGluZSc7IGJhc2UtdXJpICdub25lJzsgc2FuZGJv
eCBhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1zY3JpcHRzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMzhmMDcxMTA3ZDc3NmVmNmJlYjQ0
NzljYjA1Nzk3ZWJlMGM1YjEwNC4uNjk0YjQ5MmE5Nzk0ODczYmRlOTY0OTQ2MDIzZDA4ODc2ZGFi
MGIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cApAQCAtNTc4LDcgKzU3OCwxMyBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpnbG9iYWxPYmplY3QoKQogCiBTdHJpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX2RvbWFp
bkZvckNhY2hlUGFydGl0aW9uLmlzTnVsbCgpID8gdG9wT3JpZ2luKCkuZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKSA6IG1fZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb247CisgICAgaWYgKCFtX2RvbWFp
bkZvckNhY2hlUGFydGl0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbV9kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbjsKKworICAgIGlmIChtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSAhPSBTdG9y
YWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQYXJ0eSkKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisKKyAgICByZXR1cm4gdG9wT3JpZ2luKCkuZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24oKTsKIH0KIAogYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphbGxvd3NNZWRpYURldmlj
ZXMoKSBjb25zdApAQCAtNzA5LDQgKzcxNSwzOSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnBvc3RUYXNrVG9SZXNwb25zaWJsZURvY3VtZW50KEZ1bmN0aW9uPHZvaWQoRG9jdW1lbgog
ICAgICAgICBjYWxsYmFjaygqZG9jdW1lbnQpOwogfQogCitzdGF0aWMgYm9vbCBpc09yaWdpbkVx
dWl2YWxlbnRUb0xvY2FsKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit7CisgICAgcmV0
dXJuIG9yaWdpbi5pc0xvY2FsKCkgJiYgIW9yaWdpbi5uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmls
ZVVSTHNRdWlyaygpICYmICFvcmlnaW4uaGFzVW5pdmVyc2FsQWNjZXNzKCk7Cit9CisKK1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNh
bkFjY2Vzc1Jlc291cmNlKFJlc291cmNlVHlwZSB0eXBlKSBjb25zdAoreworICAgIGF1dG8qIG9y
aWdpbiA9IHNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFvcmlnaW4gfHwgb3JpZ2luLT5pc1Vu
aXF1ZSgpKQorICAgICAgICByZXR1cm4gQWNjZXNzTGV2ZWw6Ok5vQWNjZXNzOworCisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkNvb2tpZXM6CisgICAgY2FzZSBS
ZXNvdXJjZVR5cGU6Okdlb2xvY2F0aW9uOgorICAgICAgICByZXR1cm4gQWNjZXNzTGV2ZWw6OkZp
cnN0UGFydHlBY2Nlc3M7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkFwcGxpY2F0aW9uQ2FjaGU6
CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlBsdWdpbjoKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6
V2ViU1FMOgorICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpJbmRleGVkREI6CisgICAgY2FzZSBSZXNv
dXJjZVR5cGU6OkxvY2FsU3RvcmFnZToKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6U3RvcmFnZU1h
bmFnZXI6CisgICAgICAgIGlmIChpc09yaWdpbkVxdWl2YWxlbnRUb0xvY2FsKCpvcmlnaW4pKQor
ICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc0xldmVsOjpOb0FjY2VzczsKKyAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlNlc3Npb25TdG9yYWdlOgorICAgICAgICBp
ZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9j
a0FsbCkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NMZXZlbDo6Tm9BY2Nlc3M7CisgICAgICAg
IGlmIChtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJs
b2NrVGhpcmRQYXJ0eSkgeworICAgICAgICAgICAgaWYgKCF0b3BPcmlnaW4oKS5pc1NhbWVPcmln
aW5Bcygqb3JpZ2luKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQWNjZXNzTGV2ZWw6OlRoaXJk
UGFydHlBY2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEFjY2Vzc0xldmVsOjpGaXJz
dFBhcnR5QWNjZXNzOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMDNmZTI0NDdiNDNl
MDhiYTUxZGE3MmFmZjIzYzY5OTlmMTI1MTVlMS4uZWYzNDM3NWY5MzZiMjVkYmUwNTIyNmEzNTc2
MjljMjBjYWYyYzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgorI2luY2x1ZGUgIlN0b3JhZ2VCbG9ja2luZ1BvbGljeS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hhbmRsZVR5
cGVzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMjk3LDYgKzI5OCwyNSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldhcm5pbmco
KSBjb25zdCB7IHJldHVybiBtX2hhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRFbmNyeXB0aW9uV2Fybmlu
ZzsgfQogICAgIHZvaWQgc2V0SGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRpb25XYXJuaW5n
KGJvb2wgdmFsdWUpIHsgbV9oYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldhcm5pbmcg
PSB2YWx1ZTsgfQogCisgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJs
b2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHBvbGljeTsg
fQorICAgIGVudW0gY2xhc3MgUmVzb3VyY2VUeXBlIDogdWludDhfdCB7CisgICAgICAgIEFwcGxp
Y2F0aW9uQ2FjaGUsCisgICAgICAgIENvb2tpZXMsCisgICAgICAgIEdlb2xvY2F0aW9uLAorICAg
ICAgICBJbmRleGVkREIsCisgICAgICAgIExvY2FsU3RvcmFnZSwKKyAgICAgICAgUGx1Z2luLAor
ICAgICAgICBTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAgU3RvcmFnZU1hbmFnZXIsCisgICAgICAg
IFdlYlNRTAorICAgIH07CisgICAgZW51bSBjbGFzcyBBY2Nlc3NMZXZlbCA6IHVpbnQ4X3Qgewor
ICAgICAgICBOb0FjY2VzcywKKyAgICAgICAgRmlyc3RQYXJ0eUFjY2VzcywKKyAgICAgICAgVGhp
cmRQYXJ0eUFjY2VzcworICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgQWNjZXNzTGV2ZWwgY2Fu
QWNjZXNzUmVzb3VyY2UoUmVzb3VyY2VUeXBlKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIGNs
YXNzIEFkZENvbnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6CkBA
IC0zNzgsNiArMzk4LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIAogICAgIGJvb2wgbV9oYXNMb2dnZWRBdXRo
ZW50aWNhdGVkRW5jcnlwdGlvbldhcm5pbmcgeyBmYWxzZSB9OworICAgIFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB7IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6
QWxsb3dBbGwgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDEyMmQ4NzAyMmEzZGY2OGJkOWE5ZmM4ZTBk
ZDQ2NGQ4OTA2Mzg1ZjQuLjU1NjgyZDBlNDdjZjhhYWU3N2Y0OTc4MzQxNzkzYTM1ZDU1NDBhYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjE0OCw5ICsy
MTQ4LDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkKICAgICAgICAgLy8gSWYgd2UgYXJlIGxvYWRpbmcgdGhlIG1haW4g
cmVzb3VyY2Ugb2YgYSBzdWJmcmFtZSwgdXNlIHRoZSBjYWNoZSBwYXJ0aXRpb24gb2YgdGhlIG1h
aW4gZG9jdW1lbnQuCiAgICAgICAgIG1haW5SZXNvdXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24oKm1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluUmVzb3VyY2VSZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKLSAgICAgICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxv
Y2tpbmdQb2xpY3koZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9j
a2luZ1BvbGljeSgpKTsKLSAgICAgICAgbWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JD
YWNoZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOworICAgICAg
ICBpZiAoZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1Bv
bGljeSgpICE9IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5KQorICAgICAg
ICAgICAgbWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihlbXB0
eVN0cmluZygpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIG9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobWFpblJlc291cmNlUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS51cmwoKSk7CisgICAgICAgICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PnJlcXVlc3RNYWluUmVzb3VyY2UoV1RGTW92ZShtYWluUmVzb3VyY2VSZXF1ZXN0KSkudmFsdWVf
b3IobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg1YzdkMDE4M2FjMTZkZTEzYTcxNDZh
OGFkYzkwZmQ3MjE5NDI3OWQuLjMzNGQxOWMxNTA0MGJmYTQwY2U5ZTY4YzZkYjg4YWE2ZjY5MGNm
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBwYXNzZWRN
YW5pZmVzdFUKICAgICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBp
ZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNl
c0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVy
YWxTZXNzaW9uKCkgfHwgZnJhbWUuZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlKSAhPSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Rmlyc3RQYXJ0eUFjY2VzcykgewogICAg
ICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5jaGVja2luZ0V2ZW50LCBkb2N1bWVu
dExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnROYW1lcygpLmVycm9yRXZl
bnQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjEyLDcgKzIxMiw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVS
TChGcmFtZSYgZnJhbWUpCiAgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlci5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLmFwcGxpY2F0aW9uQ2FjaGUoKSk7CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55
dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZy
YW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50
b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS5wYWdl
KCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgZnJhbWUuZG9jdW1lbnQoKS0+Y2FuQWNjZXNz
UmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlv
bkNhY2hlKSAhPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Rmlyc3RQYXJ0
eUFjY2VzcykgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5jaGVja2lu
Z0V2ZW50LCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NDA3LDcgKzQwNyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJhbWUm
IGZyYW1lLCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAgLy8g
RG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFi
bGVkLgotICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQXBwbGljYXRpb25DYWNo
ZShmcmFtZS50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAg
ICBpZiAoZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8IGZyYW1lLmRvY3Vt
ZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNl
VHlwZTo6QXBwbGljYXRpb25DYWNoZSkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNz
TGV2ZWw6OkZpcnN0UGFydHlBY2Nlc3MpIHsKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ01hc3Rl
clJlc291cmNlTG9hZGVycy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQobV9wZW5kaW5nRW50
cmllcy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIW1fY2FjaGVCZWluZ1VwZGF0ZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKaW5kZXggZWQ3NTY2NTI2YjJkN2VmYmYxYzUxNzAyMDk1YTg3OWJhZjU2OTQ0
Ny4uMWFhOTIwM2FiNDY5NDAzMjhhMjkyYWIwMTY4YWJlMWRjOWQwZDk2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCkBAIC01NjEsMTQgKzU2MSwxNCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0Fw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKICAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci5mcmFt
ZSgpICYmIG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1bWVudExvYWRlci5mcmFtZSgpLT5wYWdl
KCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25D
YWNoZUJsb2NrZWRGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCiB7CiAgICAgYXV0
byogZnJhbWUgPSBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1
ZXN0LnVybCgpKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+ZG9jdW1lbnQoKS0+
dG9wT3JpZ2luKCkpOworICAgIHJldHVybiBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVz
b3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNh
Y2hlKSAhPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Rmlyc3RQYXJ0eUFj
Y2VzczsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAppbmRleCA4MmVkZGNlM2NkMjZiNzEwNjQ1ZmM5M2YyMWVmODQ5Y2ZlZjhhNDAyLi45MzIy
NjgyYTRmYTgyYmNkZjlmOTg1NTI0MGI3ODYxNjA5ODlkNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCkBAIC04MzcsNyArODM3LDcgQEAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdp
bmRvdzo6c2Vzc2lvblN0b3JhZ2UoKQogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgaWYgKCFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nl
c3NTZXNzaW9uU3RvcmFnZShkb2N1bWVudC0+dG9wT3JpZ2luKCkpKQorICAgIGlmIChkb2N1bWVu
dC0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBl
OjpTZXNzaW9uU3RvcmFnZSkgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNzTGV2ZWw6
Ok5vQWNjZXNzKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9Owog
CiAgICAgaWYgKG1fc2Vzc2lvblN0b3JhZ2UpCkBAIC04NjMsNyArODYzLDcgQEAgRXhjZXB0aW9u
T3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkKICAgICBpZiAoIWRvY3VtZW50
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCkuY2FuQWNjZXNzTG9jYWxTdG9yYWdlKG51bGxwdHIpKQorICAgIGlmIChkb2N1bWVu
dC0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBl
OjpMb2NhbFN0b3JhZ2UpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpO
b0FjY2VzcykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAog
ICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
ZWYzNDgyZGY2NDE5YTc0MDUwZmQ0NmFmM2JmZDBhYzhiN2U5M2Q1Zi4uNWQzZjY4MDQyZTcyZjI3
Zjk1ZDU2YTViZTU5MDdkNDA1ZjA1YTA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zOTcyLDE2
ICszOTcyLDE3IEBAIHZvaWQgUGFnZTo6c2V0dXBGb3JSZW1vdGVXb3JrZXIoY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYKICAgICBtYWluRnJhbWUoKS5sb2Fk
ZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOwogICAgIGF1dG8gZG9jdW1lbnQg
PSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWluRnJhbWUoKSwgc2Ny
aXB0VVJMKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7Ci0KICAgICBkb2N1bWVu
dC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIGF1dG8gb3JpZ2luID0g
dG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3koc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7Ci0KICAgICBhdXRv
IG9yaWdpbkFzVVJMID0gb3JpZ2luLT50b1VSTCgpOwogICAgIGRvY3VtZW50LT5zZXRTaXRlRm9y
Q29va2llcyhvcmlnaW5Bc1VSTCk7CiAgICAgZG9jdW1lbnQtPnNldEZpcnN0UGFydHlGb3JDb29r
aWVzKG9yaWdpbkFzVVJMKTsKLSAgICBkb2N1bWVudC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24ob3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKworICAgIGlmIChkb2N1bWVu
dC0+c2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSAhPSBTdG9yYWdlQmxvY2tpbmdQ
b2xpY3k6OkJsb2NrVGhpcmRQYXJ0eSkKKyAgICAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgZWxzZQorICAgICAg
ICBkb2N1bWVudC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigpKTsKIAogICAgIGlmIChhdXRvIHBvbGljeSA9IHBhcnNlUmVmZXJyZXJQ
b2xpY3kocmVmZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkK
ICAgICAgICAgZG9jdW1lbnQtPnNldFJlZmVycmVyUG9saWN5KCpwb2xpY3kpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA2YjEzMGJiMmNmNGE1NDk4ODNlZjFjYzkw
N2E3YTcyYzc1Y2QyOWI5Li42NDk0MjI3YWQ1NGIyNjQ0YjIwZjI1ZmNjMzMxYTE5OWMxNGQ0Yjgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjA4LDcgKzIwOCw2
IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiog
b3RoZXIpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyB7IG90aGVyLT5tX3VuaXZlcnNhbEFjY2Vz
cyB9CiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NIHsgb3RoZXItPm1fZG9tYWluV2FzU2V0SW5E
T00gfQogICAgICwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgeyBvdGhlci0+bV9jYW5Mb2FkTG9j
YWxSZXNvdXJjZXMgfQotICAgICwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBvdGhlci0+bV9z
dG9yYWdlQmxvY2tpbmdQb2xpY3kgfQogICAgICwgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlv
biB7IG90aGVyLT5tX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIH0KICAgICAsIG1fbmVlZHNT
dG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBvdGhlci0+bV9uZWVkc1N0b3JhZ2VBY2Nl
c3NGcm9tRmlsZVVSTHNRdWlyayB9CiAgICAgLCBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB7
IG90aGVyLT5tX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB9CkBAIC00MTgsMzYgKzQxNyw2IEBA
IGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc1N0b3Jh
Z2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgU2hvdWxkQWxsb3dGcm9tVGhpcmRQ
YXJ0eSBzaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5KSBjb25zdAotewotICAgIGlmIChpc1VuaXF1
ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXNMb2NhbCgpICYmICFuZWVk
c1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpICYmICFtX3VuaXZlcnNhbEFjY2VzcyAm
JiBzaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ICE9IEFsd2F5c0FsbG93RnJvbVRoaXJkUGFydHkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hvdWxkIGJlIHJlcGxhY2VkIHdp
dGggYW4gQVNTRVJUIG9uY2Ugd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRvcE9yaWdpbiBpcyBub3Qg
bnVsbC4KLSAgICBpZiAoIXRvcE9yaWdpbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAodG9wT3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBTdG9yYWdlQmxvY2tpbmdQ
b2xpY3k6OkJsb2NrQWxsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoc2hvdWxk
QWxsb3dGcm9tVGhpcmRQYXJ0eSA9PSBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICBpZiAoKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VC
bG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5IHx8IHRvcE9yaWdpbi0+bV9zdG9yYWdlQmxv
Y2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpICYm
ICF0b3BPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFNlY3VyaXR5T3JpZ2luOjpQb2xpY3kgU2VjdXJp
dHlPcmlnaW46OmNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV91bml2
ZXJzYWxBY2Nlc3MpCkBAIC01MTcsOSArNDg2LDYgQEAgdm9pZCBTZWN1cml0eU9yaWdpbjo6Z3Jh
bnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKQogCiBTdHJpbmcgU2VjdXJpdHlPcmln
aW46OmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9zdG9yYWdl
QmxvY2tpbmdQb2xpY3kgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkp
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCiAgICAgaWYgKGlzSFRUUEZhbWlseSgp
KQogICAgICAgICByZXR1cm4gaG9zdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmgKaW5kZXggZDJiZjczZGE2MmQzZjVhMWE5NzRhMDdhZjdhYzI1OWRkYTY5YWEzZi4uZmYxZDIy
YzE1ZmUwYmY0MzRlMWZlZjk0NDZmYzJlODJjYzRmYzk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uaApAQCAtMjksNyArMjksNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJTdG9yYWdlQmxvY2tpbmdQb2xpY3ku
aCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTEzOSwyMSArMTM4LDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50VW5pdmVyc2FsQWNjZXNzKCk7CiAgICAgYm9vbCBo
YXNVbml2ZXJzYWxBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VuaXZlcnNhbEFjY2VzczsgfQog
Ci0gICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5
IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHBvbGljeTsgfQotCiAgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpOwogICAgIGJvb2wgbmVlZHNT
dG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU3Rv
cmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdDsKLQotICAgIGJvb2wgY2FuQWNjZXNz
RGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4g
Y2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9OwotICAgIGJvb2wgY2FuQWNjZXNzU2Vzc2lv
blN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4g
Y2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luLCBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KTsg
fQotICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsK
LSAgICBib29sIGNhbkFjY2Vzc1N0b3JhZ2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gY2FuQWNj
ZXNzU3RvcmFnZShudWxscHRyKTsgfQotICAgIGJvb2wgY2FuQWNjZXNzUGx1Z2luU3RvcmFnZShj
b25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NT
dG9yYWdlKCZ0b3BPcmlnaW4pOyB9Ci0gICAgYm9vbCBjYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vz
c1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0KLSAgICBib29sIGNhbkFjY2Vzc0Nvb2tpZXMoKSBjb25z
dCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQotICAgIGJvb2wgY2FuUmVxdWVzdEdlb2xvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KICAgICBQb2xpY3kgY2FuU2hvd05vdGlm
aWNhdGlvbnMoKSBjb25zdDsKIAogICAgIC8vIFRoZSBsb2NhbCBTZWN1cml0eU9yaWdpbiBpcyB0
aGUgbW9zdCBwcml2aWxlZ2VkIFNlY3VyaXR5T3JpZ2luLgpAQCAtMjQ0LDcgKzIzMiw2IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2FuTG9hZExvY2FsUmVz
b3VyY2VzIHsgZmFsc2UgfTsKLSAgICBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxv
Y2tpbmdQb2xpY3kgeyBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsIH07CiAgICAgYm9v
bCBtX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVl
ZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBmYWxzZSB9OwogICAgIG11dGFibGUg
c3RkOjpvcHRpb25hbDxib29sPiBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTsKQEAgLTI2Niw3
ICsyNTMsNiBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBTZWN1cml0eU9y
aWdpbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXIgPDwgbV91bml2
ZXJzYWxBY2Nlc3M7CiAgICAgZW5jb2RlciA8PCBtX2RvbWFpbldhc1NldEluRE9NOwogICAgIGVu
Y29kZXIgPDwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXM7Ci0gICAgZW5jb2RlciA8PCBtX3N0b3Jh
Z2VCbG9ja2luZ1BvbGljeTsKICAgICBlbmNvZGVyIDw8IG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFy
YXRpb247CiAgICAgZW5jb2RlciA8PCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1
aXJrOwogICAgIGVuY29kZXIgPDwgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk7CkBAIC0yOTUs
OCArMjgxLDYgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmRlY29kZShEZWMKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fY2FuTG9hZExvY2FsUmVzb3Vy
Y2VzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShv
cmlnaW4tPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fZW5mb3JjZXNGaWxlUGF0aFNlcGFy
YXRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG9yaWdpbi0+bV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaykpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5k
ZXggMjZiYWY0ZjA0ZDczZGJhNzk1ZTRlZjQxMzkyZjk5NTNkN2ZlYjBhZS4uMzEzNGU2ZjdkYWU1
NmRiYjFkMGYyZTAyZmFlNDRjZGVlZDM0NzJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNTEsMTEgKzUxLDggQEAg
UmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFy
ZWEoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIC8vIHNvIHRoZSBEb2N1bWVudCBoYWQgYmV0dGVy
IHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkp
OwogCi0gICAgYm9vbCB0cmFuc2llbnQgPSAhZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5B
Y2Nlc3NMb2NhbFN0b3JhZ2UoJmRvY3VtZW50LnRvcE9yaWdpbigpKTsKLQogICAgIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBzdG9yYWdlTmFtZXNwYWNlOwotCi0gICAgaWYgKHRyYW5zaWVudCkK
KyAgICBpZiAoZG9jdW1lbnQuY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6UmVzb3VyY2VUeXBlOjpMb2NhbFN0b3JhZ2UpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OkFjY2Vzc0xldmVsOjpUaGlyZFBhcnR5QWNjZXNzKQogICAgICAgICBzdG9yYWdlTmFtZXNwYWNl
ID0gJnRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShkb2N1bWVudC50b3BPcmlnaW4oKSwg
ZG9jdW1lbnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgZWxzZQogICAgICAgICBzdG9yYWdl
TmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZShkb2N1bWVudC5wYWdlKCktPnNlc3Np
b25JRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAK
aW5kZXggZjJmMjk4ZTc4NzIwZjcwMzA5OTAyYzJiM2I5YmZiYTJiYWRlMGFjNC4uNTkzM2UwNzRl
OGI2MzI3ZDA1NjYxYjM0MWUxNjI3MjA5OWZkMjlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTExNiw2ICsxMTYsNyBAQCBXb3JrZXJHbG9i
YWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBjb25zdCBX
b3JrZXJQYXJhbWV0ZQogICAgIGlmIChtX3RvcE9yaWdpbi0+bmVlZHNTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcmsoKSkKICAgICAgICAgb3JpZ2luLT5ncmFudFN0b3JhZ2VBY2Nlc3NGcm9t
RmlsZVVSTHNRdWlyaygpOwogCisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KG1fc2V0dGlu
Z3NWYWx1ZXMuc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBzZXRTZWN1cml0eU9yaWdpblBv
bGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSkpOwogICAg
IHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGlj
eT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKICAgICBzZXRDcm9zc09yaWdpbkVtYmVkZGVyUG9s
aWN5KHBhcmFtcy5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApp
bmRleCA0NWE0MjIwMzc5MzMzY2FkNDZiNDg2ZWIyNzJjYjhkMmE4ZGIwM2Y1Li5hYjRmNWEyY2Yz
NTMwMGQyOTNiNzdlMzk0ZjM4NGY4Yzc4ZWRhYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0y
MDQsNiArMjA0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRp
b24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBqb2JEYXRhLnRvcE9y
aWdpbiA9IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRhLndvcmtlclR5
cGUgPSBvcHRpb25zLnR5cGU7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlJlZ2lzdGVyOworICAgIGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24gPSBjb250
ZXh0LT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9u
T3B0aW9ucyA9IG9wdGlvbnM7CiAKICAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VX
b3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CkBA
IC0yNTIsNiArMjUzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdp
c3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJgogICAgIGpvYkRhdGEudG9w
T3JpZ2luID0gY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCk7CiAgICAgam9iRGF0YS53b3JrZXJU
eXBlID0gd29ya2VyVHlwZTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlw
ZTo6VXBkYXRlOworICAgIGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24gPSBjb250ZXh0
LmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCk7CiAgICAgam9iRGF0YS5zY29wZVVSTCA9IHNjb3Bl
VVJMOwogICAgIGpvYkRhdGEuc2NyaXB0VVJMID0gc2NyaXB0VVJMOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcApp
bmRleCBmMGFhODZjNWRhNmYyNzlmZDdlMDcyY2UzMjVhMzVjYTBjYzkzZDQwLi5lYmUxYWVjZDcw
NDdkNjRlY2NiMzdjYjY1OTZlZGMwMTYyN2NhYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKQEAgLTc4LDYg
Kzc4LDcgQEAgU2VydmljZVdvcmtlckpvYkRhdGEgU2VydmljZVdvcmtlckpvYkRhdGE6Omlzb2xh
dGVkQ29weSgpIGNvbnN0CiAgICAgcmVzdWx0LmNsaWVudENyZWF0aW9uVVJMID0gY2xpZW50Q3Jl
YXRpb25VUkwuaXNvbGF0ZWRDb3B5KCk7CiAgICAgcmVzdWx0LnRvcE9yaWdpbiA9IHRvcE9yaWdp
bi5pc29sYXRlZENvcHkoKTsKICAgICByZXN1bHQuc2NvcGVVUkwgPSBzY29wZVVSTC5pc29sYXRl
ZENvcHkoKTsKKyAgICByZXN1bHQuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24gPSBkb21haW5Gb3JD
YWNoZVBhcnRpdGlvbi5pc29sYXRlZENvcHkoKTsKICAgICByZXN1bHQucmVnaXN0cmF0aW9uT3B0
aW9ucyA9IHJlZ2lzdHJhdGlvbk9wdGlvbnMuaXNvbGF0ZWRDb3B5KCk7CiAKICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGEuaAppbmRleCBkZmJhZGEzNWUzZDQ5MDc1M2EzMTIwMTY2NWY5YWFkNTVl
M2YwZjI0Li4wOGY5ZmU5ZTI1ZDM3ZjU0NzgyYjRhODA0ZGMzZDAxNTkxYjAzM2U2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRh
dGEuaApAQCAtNTUsNiArNTUsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGEgewogICAg
IFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlQ29udGV4dDsKICAgICBXb3Jr
ZXJUeXBlIHdvcmtlclR5cGU7CiAgICAgU2VydmljZVdvcmtlckpvYlR5cGUgdHlwZTsKKyAgICBT
dHJpbmcgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb247CiAgICAgYm9vbCBpc0Zyb21TZXJ2aWNlV29y
a2VyUGFnZSB7IGZhbHNlIH07CiAKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9u
cyByZWdpc3RyYXRpb25PcHRpb25zOwpAQCAtNzUsNyArNzYsNyBAQCBwcml2YXRlOgogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcigpIDw8IHNj
cmlwdFVSTCA8PCBjbGllbnRDcmVhdGlvblVSTCA8PCB0b3BPcmlnaW4gPDwgc2NvcGVVUkwgPDwg
c291cmNlQ29udGV4dCA8PCB3b3JrZXJUeXBlIDw8IGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlOwor
ICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcigpIDw8IHNjcmlwdFVSTCA8PCBjbGllbnRDcmVhdGlv
blVSTCA8PCB0b3BPcmlnaW4gPDwgc2NvcGVVUkwgPDwgc291cmNlQ29udGV4dCA8PCB3b3JrZXJU
eXBlIDw8IGRvbWFpbkZvckNhY2hlUGFydGl0aW9uIDw8IGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdl
OwogICAgIGVuY29kZXIgPDwgdHlwZTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNl
cnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKQEAgLTExNSw2ICsxMTYsOCBAQCBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoam9iRGF0YS53b3JrZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoam9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLnR5cGUpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cAppbmRleCBlNTUzZDFjZGI4MzUzMWI5NDIwNmE1OGZlMmRkZGQwNGVjZGFlZjM5Li43YzM2NDJm
ZTMzODFjOTZhOTRkMTU1Y2M0N2FhYmU5Y2U4NTZiN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNTEwLDcgKzUxMCw3
IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmIGpvYkRhdGEsIFNXU2VydmVyUmVnCiAgICAgICAgIGF1dG8gdG9wT3JpZ2luID0gam9i
RGF0YS50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgYXV0byBvcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKTsKIAotICAgICAgICByZXF1
ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKHRvcE9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKSk7CisgICAgICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
am9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAgICAgICAgIHJlcXVlc3Quc2V0QWxs
b3dDb29raWVzKHRydWUpOwogICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVz
KG9yaWdpblVSTCh0b3BPcmlnaW4pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggNzRkZjI3NTE3OGNhODgwZjg5ZjkyOTk2NTg4NzI5
NmQwZGYzNWE4OC4uYWY3N2MzNTllZDVlMGY1Y2RlNDEyMzBmOTUxMDRjYzdmZWI4NGUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC01
OCw2ICs1OCw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKFdvcmtl
ck9yV29ya2xldFRocmVhZCYgdGhyZWFkLCBSZWY8SlNDOjpWCiB7CiAgICAgKytnTnVtYmVyT2ZX
b3JrbGV0R2xvYmFsU2NvcGVzOwogCisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHBhcmFt
ZXRlcnMuc2V0dGluZ3NWYWx1ZXMuc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBzZXRTZWN1
cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUodGhpcy0+dXJsKCkpKSk7CiAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5
KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB0aGlzLT51cmwoKSB9LCAq
dGhpcykpOwogfQpAQCAtNzUsNiArNzYsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRH
bG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTYwogCiAg
ICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3kobV9kb2N1bWVudC0+c2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiAgICAg
c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKHRoaXMtPnVybCgpKSkpOwogICAgIHNldENvbnRlbnRTZWN1cml0
eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgdGhpcy0+dXJs
KCkgfSwgKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggNDVhMDExYmU1NTY2MjA3YzljYWM0NWY5ZWY2MDkyY2U4MDE1
MDAxZi4uNGI4YmIwOTdhMDc1NTllYjRhYzgxOGJhNDUxYWJhMzY3Y2ZmZTMxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYxMyw4
ICs2MTMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgp
CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQogICAgICAgICByZXR1cm47
CiAKLSAgICBib29sIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9ICFmcmFtZSgpLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+dG9wT3JpZ2luKCkpOwotCisgICAgYm9vbCBzdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSBm
cmFtZSgpLT5kb2N1bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpSZXNvdXJjZVR5cGU6OlBsdWdpbikgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNj
ZXNzTGV2ZWw6OkZpcnN0UGFydHlBY2Nlc3M7CiAgICAgbV9wbHVnaW4tPnN0b3JhZ2VCbG9ja2lu
Z1N0YXRlQ2hhbmdlZChzdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTQyNjM3OWQxMDVmMjkzODZl
N2U5NTAzYTBhZTAyNzk1ODRlNWQ0Ni4uYWRmM2JiODJlNTVkNzdiOWFiMjdjN2ZkZDRmNzY1MmVj
NTAyMGIyYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTA2ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3RvcmFnZSgpIGNoZWNrIGZyb20gU2Vj
dXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS85MTMxODI1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lz
dGVuY2UubW06CisKIDIwMjItMDQtMDQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZXJnZS1RdWV1ZV0gUnVuIGBnaXQgc3ZuIGZldGNoYApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJz
aXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMDdmMGNlMjgxNTYwMThmZDVlNDRmNGViNDdkYWI2NTY3
MjQ3YjdlNi4uYTQ4ZTQ1OThiYzFlOGVmYWFkOTU2MGM2MTVlMjU1YWU1YjFmOWE4MiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJz
aXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0yODYsNiArMjg2LDcgQEAgVEVTVChJbmRleGVkREIs
IEluZGV4ZWREQlRoaXJkUGFydHlEYXRhUmVtb3ZhbCkKICAgICBbV0tXZWJzaXRlRGF0YVN0b3Jl
IF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3k6X1dLU3RvcmFnZUJsb2NraW5nUG9saWN5QWxsb3dBbGxdOwogICAgIGF1dG8gaGFuZGxl
ciA9IGFkb3B0TlMoW1tJbmRleGVkREJNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CiAgICAgYXV0byBzY2hl
bWVIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457100</attachid>
            <date>2022-04-08 11:15:19 -0700</date>
            <delta_ts>2022-04-08 16:00:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238524-20220408111516.patch</filename>
            <type>text/plain</type>
            <size>42297</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI0NzgzMjkzZTgzM2Vi
Y2RjYzdmNzQzYjlkMDg0YTUxMTY4M2M0NC4uY2MwMmZjOTkyOGViMWFiZDY3M2I1MGE4MmIzYzAz
YmIyM2QzYTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIyLTA0LTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MTMxODI1OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2FuQWNjZXNzUmVzb3VyY2UoKSB0byBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IGJlY2F1c2UgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW5z
dGVhZCBvZiBTZWN1cml0eU9yaWdpbiwgCisgICAgICAgIHNob3VsZCBiZSB0aGUgcGxhY2UgdGhh
dCBob2xkcyBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgKG90aGVyd2lzZSBpdCdzIGNvbmZ1c2luZyB0
aGF0IHRoZSBvcmlnaW4gYW5kIHRvcCBvcmlnaW4gCisgICAgICAgIGRpc2FncmVlcyB3aXRoIGVh
Y2ggb3RoZXIgb24gcG9saWN5KS4gQWxzbywgYmVjYXVzZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IGhhcyBhY2Nlc3MgdG8gb3JpZ2luIGFuZCB0b3BPcmlnaW4sCisgICAgICAgIGNhbGxlcnMgZG9u
J3QgbmVlZCB0byBleHBsaWNpdGx5IGdldCB0aGVtIGJlZm9yZSB0aGUgYWNjZXNzIGNoZWNrLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uOjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVzdHMpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVGhyb3dT
ZWN1cml0eUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25uZWN0aW9uSW5mbyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
T01XaW5kb3dXZWJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dXZWJE
YXRhYmFzZTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bV93aGl0ZXNwYWNlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlRdWlja0xvb2tTYW5kYm94KToKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjppc09yaWdpbkVxdWl2YWxlbnRUb0xvY2FsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhbkFjY2Vzc1Jlc291cmNlIGNvbnN0KToK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldHVwRm9yUmVtb3RlV29ya2VyKToKKyAgICAgICAg
KiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpzZXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNh
bkFjY2Vzc0RhdGFiYXNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjYW5BY2Nlc3NTZXNzaW9uU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzTG9jYWxTdG9yYWdlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NT
dG9yYWdlTWFuYWdlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y2FuQWNjZXNzUGx1Z2luU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNz
Q29va2llcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y2FuUmVxdWVzdEdlb2xvY2F0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9jcmVkZW50aWFs
cyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJl
Z2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUpOgorCiAyMDIyLTA0LTA4ICBBbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjptaW4oKSBhcyB0aGUgaW5pdGlhbCB2YWx1ZSB0byBjb2xsZWN0IG1heCB2YWx1
ZXMgZm9yIGdseXBoIG92ZXJmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU0MzBlMWI2MTY1NGE0YzIwYjEzMDUx
Y2VhNjg0ODI0OGI2ZGY0OWEuLjJiYjI1NzFjZWJlYWU4NWVhZTVmYjQxZWE3ODFkNjc1ZDg1MWJi
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMDggIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjYW5BY2Nlc3NTdG9yYWdlKCkgY2hl
Y2sgZnJvbSBTZWN1cml0eU9yaWdpbiB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzkxMzE4MjU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQp
OgorCiAyMDIyLTA0LTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBSZW1vdGVJbnNwZWN0b3I6IHVwZGF0ZSB0YXJnZXQgbGlzdCBw
YWdlIGNvbnRlbnRzIG9uIGNoYW5nZSBpbnN0ZWFkIG9mIHJlbG9hZGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDY1NDNmMzkxOTgzYzdj
NDYzM2QyNzhhOWVhOTVmNTBjMzk5YTI0ZmUuLjgyZWJjNmUxZGMzNDI1ZTBkYmEwZGFhZWU2Zjli
YzY2ZmU1M2Q4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKQEAgLTk2LDExICs5NiwxMCBAQCB2b2lkIENETTo6Z2V0U3VwcG9ydGVkQ29uZmln
dXJhdGlvbihNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byBhY2Nlc3MgPSBDRE1Qcml2YXRlOjpMb2Nh
bFN0b3JhZ2VBY2Nlc3M6OkFsbG93ZWQ7CiAgICAgYm9vbCBpc0VwaGVtZXJhbCA9ICFkb2N1bWVu
dC0+cGFnZSgpIHx8IGRvY3VtZW50LT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7
Ci0KLSAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCk7Ci0gICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiA9IGRvY3VtZW50LT50b3BPcmlnaW4o
KTsKLSAgICBDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzID0gIWlzRXBoZW1l
cmFsICYmIG9yaWdpbi5jYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoJnRvcE9yaWdpbikgPyBDRE1Qcml2
YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3M6OkFsbG93ZWQgOiBDRE1Qcml2YXRlOjpMb2NhbFN0b3Jh
Z2VBY2Nlc3M6Ok5vdEFsbG93ZWQ7CisgICAgaWYgKGlzRXBoZW1lcmFsIHx8IGRvY3VtZW50LT5j
YW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6Okxv
Y2FsU3RvcmFnZSkgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNzTGV2ZWw6Ok5vQWNj
ZXNzKQorICAgICAgICBhY2Nlc3MgPSBDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3M6Ok5v
dEFsbG93ZWQ7CiAgICAgbV9wcml2YXRlLT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1v
dmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwCmluZGV4IGNkMzcyZjQzNjkxYWRkNGQ3ZGYwYzllNTI1NzBlYWZmZDI5MzQwMzcuLmY0
N2ZjZGI2ZGZiZjI1NTYzMzMyZGEwNDcyYWYxZTE1ODZhNjI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zNzEsNyAr
MzcxLDcgQEAgYm9vbCBHZW9sb2NhdGlvbjo6c2hvdWxkQmxvY2tHZW9sb2NhdGlvblJlcXVlc3Rz
KCkKICAgICBib29sIGlzU2VjdXJlID0gU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlKGRvY3VtZW50
KCktPnVybCgpKSB8fCBkb2N1bWVudCgpLT5pc1NlY3VyZUNvbnRleHQoKTsKICAgICBib29sIGhh
c01peGVkQ29udGVudCA9ICFkb2N1bWVudCgpLT5mb3VuZE1peGVkQ29udGVudCgpLmlzRW1wdHko
KTsKICAgICBib29sIGlzTG9jYWxPcmlnaW4gPSBzZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCk7
Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3RHZW9sb2NhdGlvbigpKSB7Cisg
ICAgaWYgKGRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlJlc291cmNlVHlwZTo6R2VvbG9jYXRpb24pICE9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OkFjY2Vzc0xldmVsOjpOb0FjY2VzcykgewogICAgICAgICBpZiAoaXNMb2NhbE9yaWdpbiB8fCAo
aXNTZWN1cmUgJiYgIWhhc01peGVkQ29udGVudCkgfHwgaXNSZXF1ZXN0RnJvbUlCb29rcygpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggNTZjMTcyN2RkYjgyMTBkMTM2OTc3
NWJiYzM5NWVmN2Y4ZmI2Mzk5Ni4uNjE4MWU2YTY3N2QwOWEwNWIwYzQyMmVlYjZhNmNlN2NjMzY2
NTFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHAKQEAgLTU0LDEwICs1NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRocm93U2VjdXJpdHlF
eGNlcHRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3NEYXRhYmFzZShudWxscHRyKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbnRleHQuY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpJbmRleGVkREIpID09IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpOb0FjY2VzczsKIH0KIAogUmVmPElEQkZhY3Rvcnk+
IElEQkZhY3Rvcnk6OmNyZWF0ZShJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVj
dGlvblByb3h5KQpAQCAtOTEsNyArODgsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVx
dWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIklEQkZhY3Rvcnkub3Blbigp
IGNhbGxlZCBpbiBhbiBpbnZhbGlkIHNlY3VyaXR5IGNvbnRleHQiX3MgfTsKIAogICAgIEFTU0VS
VChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIGJvb2wgaXNUcmFuc2llbnQgPSAhY29u
dGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZSgmY29udGV4dC50b3BPcmln
aW4oKSk7CisgICAgYm9vbCBpc1RyYW5zaWVudCA9IChjb250ZXh0LmNhbkFjY2Vzc1Jlc291cmNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6SW5kZXhlZERCKSA9PSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6VGhpcmRQYXJ0eUFjY2Vzcyk7CiAgICAg
SURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9y
aWdpbkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9y
aWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBpc1RyYW5zaWVudCk7CiAg
ICAgaWYgKCFkYXRhYmFzZUlkZW50aWZpZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCAiSURCRmFjdG9yeS5vcGVuKCkgY2FsbGVkIHdpdGggYW4gaW52
YWxpZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKQEAgLTExMiw3ICsxMDksNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwg
IklEQkZhY3RvcnkuZGVsZXRlRGF0YWJhc2UoKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0
eSBjb250ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsK
LSAgICBib29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNj
ZXNzRGF0YWJhc2UoJmNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIGJvb2wgaXNUcmFuc2llbnQg
PSAoY29udGV4dC5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNv
dXJjZVR5cGU6OkluZGV4ZWREQikgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNzTGV2
ZWw6OlRoaXJkUGFydHlBY2Nlc3MpOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFz
ZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC5zZWN1cml0eU9y
aWdpbigpLT5kYXRhKCkgfSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4o
KS5kYXRhKCkgfSwgaXNUcmFuc2llbnQpOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIklEQkZhY3Rv
cnkuZGVsZXRlRGF0YWJhc2UoKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdp
biJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggNjM2YjQ4YzlmMDQ3OWJjNWFlMzE5NGVhMWU4OTA1Njk2NTcxN2E0NS4u
MjgxNGRjZmFhYmM3ODZhNTg0YTVkMzQwNTdlMWVjZjljNWE1MjFjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC02NywxMiAr
NjcsMTEgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPENvbm5lY3Rpb25JbmZvPiBjb25uZWN0aW9uSW5m
byhOYXZpZ2F0b3JCYXNlKiBuYXZpZ2F0b3IpCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0IGlzIGludmFsaWQi
X3MgfTsKIAotICAgIGF1dG8qIG9yaWdpbiA9IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0g
ICAgaWYgKCFvcmlnaW4pCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgIk9yaWdpbiBpcyBpbnZhbGlkIl9zIH07CisgICAgaWYgKGNvbnRleHQtPmNhbkFjY2Vz
c1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6U3RvcmFnZU1h
bmFnZXIpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpOb0FjY2VzcykK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNvbnRleHQgbm90IGFjY2Vz
cyBzdG9yYWdlIl9zIH07CiAKLSAgICBpZiAoIW9yaWdpbi0+Y2FuQWNjZXNzU3RvcmFnZU1hbmFn
ZXIoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIk9yaWdpbiBzaG91
bGQgbm90IGFjY2VzcyBzdG9yYWdlIl9zIH07CisgICAgYXV0byogb3JpZ2luID0gY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBBU1NFUlQob3JpZ2luKTsKIAogICAgIGlmIChpczxEb2N1
bWVudD4oY29udGV4dCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBkb3duY2Fz
dDxEb2N1bWVudD4oY29udGV4dCktPnN0b3JhZ2VDb25uZWN0aW9uKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJh
c2UuY3BwCmluZGV4IDU2YWMwZTQyMmRkNGRmOTM2ZTNjY2IwMGNlNWY0NWMzZDY1NTQxNWIuLjE5
NGJjOTI1ZjBlNjQxNWZjMzNmNWZiMjI5YTliOTRlMDdmN2YxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJh
c2UuY3BwCkBAIC00Nyw5ICs0Nyw5IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxEYXRhYmFzZT4+IERP
TVdpbmRvd1dlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2UoRE9NV2luZG93JiB3aW5kCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAgICAgZG9jdW1lbnQtPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgIldlYiBTUUwgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBJbmRleGVkREIgaW5zdGVhZC4i
X3MpOwogCi0gICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKTsKLSAgICBpZiAoIXNlY3VyaXR5T3JpZ2luLmNhbkFjY2Vzc0RhdGFiYXNlKCZkb2N1bWVu
dC0+dG9wT3JpZ2luKCkpKQorICAgIGlmIChkb2N1bWVudC0+Y2FuQWNjZXNzUmVzb3VyY2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpXZWJTUUwpICE9IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpGaXJzdFBhcnR5QWNjZXNzKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OworCiAgICAgYXV0byByZXN1bHQgPSBtYW5h
Z2VyLm9wZW5EYXRhYmFzZSgqd2luZG93LmRvY3VtZW50KCksIG5hbWUsIHZlcnNpb24sIGRpc3Bs
YXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBXVEZNb3ZlKGNyZWF0aW9uQ2FsbGJhY2spKTsKICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUbyBwcmVzZXJ2
ZSBvdXIgcGFzdCBiZWhhdmlvciwgdGhpcyBkaXNjYXJkcyB0aGUgZXJyb3Igc3RyaW5nIGluIHRo
ZSBleGNlcHRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA0MDU1YzRhMjI1MDZhYWI4
NTY2YzAyNGNkZWVhMDhkYzYxY2I2YWY1Li5iNGFjOTRhYTMwNjA3MDkyMWYwNTVlYzEzMTExNmMz
Yzk0NjNlMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYzMiw2ICs2MzIsNyBAQCBE
b2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3Ms
IGNvbnN0IFVSTCYgdXJsLCBEb2N1bQogICAgICAgICBub2RlTGlzdEFuZENvbGxlY3Rpb25Db3Vu
dCA9IDA7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZEV2ZW50TGlzdGVuZXJz
VG9Ob2RlKCp0aGlzKTsKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kobV9zZXR0aW5ncy0+
c3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwogfQogCiB2b2lkIERvY3VtZW50OjpjcmVhdGVOZXdJ
ZGVudGlmaWVyKCkKQEAgLTUzNDAsNyArNTM0MSw3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gRG9j
dW1lbnQ6OmNvb2tpZSgpCiAgICAgaWYgKGlzQ29va2llQXZlcnNlKCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAotICAgIGlmICghc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NDb29raWVz
KCkpCisgICAgaWYgKGNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJl
c291cmNlVHlwZTo6Q29va2llcykgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNzTGV2
ZWw6Ok5vQWNjZXNzKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9
OwogCiAgICAgVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOwpAQCAtNTM2MSw3ICs1
MzYyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJp
bmcmIHZhbHVlKQogICAgIGlmIChpc0Nvb2tpZUF2ZXJzZSgpKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgaWYgKCFzZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0Nvb2tpZXMoKSkKKyAgICBp
ZiAoY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBl
OjpDb29raWVzKSA9PSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Tm9BY2Nl
c3MpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKICAgICBV
UkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CkBAIC01NzkxLDcgKzU3OTIsNyBAQCBi
b29sIERvY3VtZW50OjptZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHkoKSBjb25zdAogCiB2b2lk
IERvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpCiB7Ci0gICAgc2VjdXJp
dHlPcmlnaW4oKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MoKS5zdG9yYWdlQmxv
Y2tpbmdQb2xpY3koKSk7CisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCku
c3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwogfQogCiAvLyBVc2VkIG9ubHkgYnkgV2ViS2l0TGVn
YWN5LgpAQCAtNjM0Nyw3ICs2MzQ4LDYgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29u
dGV4dCgpCiAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbigpLnNldEVuZm9yY2VzRmlsZVBhdGhT
ZXBhcmF0aW9uKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgc2VjdXJpdHlPcmlnaW4oKS5zZXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7
CiAKICAgICBSZWZQdHIgcGFyZW50RG9jdW1lbnQgPSBvd25lckVsZW1lbnQoKSA/ICZvd25lckVs
ZW1lbnQoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYgKHBhcmVudERvY3VtZW50ICYm
IG1fZnJhbWUtPmxvYWRlcigpLnNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudCh1cmwoKSkp
IHsKQEAgLTc4ODgsOCArNzg4OCw4IEBAIHZvaWQgRG9jdW1lbnQ6OmFwcGx5UXVpY2tMb29rU2Fu
ZGJveCgpCiAgICAgQVNTRVJUKCFkb2N1bWVudFVSTC5wcm90b2NvbElzKFFMUHJldmlld1Byb3Rv
Y29sKSk7CiAgICAgQVNTRVJUKHJlc3BvbnNlVVJMLnByb3RvY29sSXMoUUxQcmV2aWV3UHJvdG9j
b2wpKTsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTdG9yYWdlQmxvY2tpbmdQb2xp
Y3k6OkJsb2NrQWxsKTsKICAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZU5vbkxvY2FsV2l0aEFsbG93ZWRGaWxlUGF0aChyZXNwb25zZVVSTCwgZG9jdW1lbnRV
UkwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgc2VjdXJpdHlPcmlnaW4tPnNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeShTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrQWxsKTsKICAgICBzZXRTZWN1
cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW4pKSk7CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBxdWlj
a0xvb2tDU1AgPSBtYWtlU3RyaW5nKCJkZWZhdWx0LXNyYyAiLCBRTFByZXZpZXdQcm90b2NvbCwg
IjogJ3Vuc2FmZS1pbmxpbmUnOyBiYXNlLXVyaSAnbm9uZSc7IHNhbmRib3ggYWxsb3ctc2FtZS1v
cmlnaW4gYWxsb3ctc2NyaXB0cyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCmluZGV4IDM4ZjA3MTEwN2Q3NzZlZjZiZWI0NDc5Y2IwNTc5N2ViZTBj
NWIxMDQuLmIyYTI3MWUxOTFmNmQxYjVhNTQzMDZmMTNkYTQ2NzhmYTY1OTViMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTU3OCw3ICs1
NzgsMTMgQEAgSlNDOjpKU0dsb2JhbE9iamVjdCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Z2xv
YmFsT2JqZWN0KCkKIAogU3RyaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kb21haW5Gb3JDYWNoZVBhcnRp
dGlvbi5pc051bGwoKSA/IHRvcE9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgOiBt
X2RvbWFpbkZvckNhY2hlUGFydGl0aW9uOworICAgIGlmICghbV9kb21haW5Gb3JDYWNoZVBhcnRp
dGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb247
CisKKyAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgIT0gU3RvcmFnZUJsb2NraW5nUG9s
aWN5OjpCbG9ja1RoaXJkUGFydHkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisg
ICAgcmV0dXJuIHRvcE9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCk7CiB9CiAKIGJv
b2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWxsb3dzTWVkaWFEZXZpY2VzKCkgY29uc3QKQEAg
LTcwOSw0ICs3MTUsNDAgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1Rv
UmVzcG9uc2libGVEb2N1bWVudChGdW5jdGlvbjx2b2lkKERvY3VtZW4KICAgICAgICAgY2FsbGJh
Y2soKmRvY3VtZW50KTsKIH0KIAorc3RhdGljIGJvb2wgaXNPcmlnaW5FcXVpdmFsZW50VG9Mb2Nh
bChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmlnaW4uaXNM
b2NhbCgpICYmICFvcmlnaW4ubmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSAm
JiAhb3JpZ2luLmhhc1VuaXZlcnNhbEFjY2VzcygpOworfQorCitTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpBY2Nlc3NMZXZlbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5BY2Nlc3NSZXNvdXJj
ZShSZXNvdXJjZVR5cGUgdHlwZSkgY29uc3QKK3sKKyAgICBhdXRvKiBvcmlnaW4gPSBzZWN1cml0
eU9yaWdpbigpOworICAgIGlmICghb3JpZ2luIHx8IG9yaWdpbi0+aXNVbmlxdWUoKSkKKyAgICAg
ICAgcmV0dXJuIEFjY2Vzc0xldmVsOjpOb0FjY2VzczsKKworICAgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpDb29raWVzOgorICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpH
ZW9sb2NhdGlvbjoKKyAgICAgICAgcmV0dXJuIEFjY2Vzc0xldmVsOjpGaXJzdFBhcnR5QWNjZXNz
OworICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlOgorICAgIGNhc2UgUmVz
b3VyY2VUeXBlOjpQbHVnaW46CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OldlYlNRTDoKKyAgICAg
ICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6
QmxvY2tUaGlyZFBhcnR5ICYmICF0b3BPcmlnaW4oKS5pc1NhbWVPcmlnaW5Bcygqb3JpZ2luKSkK
KyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NMZXZlbDo6Tm9BY2Nlc3M7CisgICAgICAgIEZBTExU
SFJPVUdIOworICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpJbmRleGVkREI6CisgICAgY2FzZSBSZXNv
dXJjZVR5cGU6OkxvY2FsU3RvcmFnZToKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6U3RvcmFnZU1h
bmFnZXI6CisgICAgICAgIGlmIChpc09yaWdpbkVxdWl2YWxlbnRUb0xvY2FsKCpvcmlnaW4pKQor
ICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc0xldmVsOjpOb0FjY2VzczsKKyAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlNlc3Npb25TdG9yYWdlOgorICAgICAgICBp
ZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9j
a1RoaXJkUGFydHkgJiYgIXRvcE9yaWdpbigpLmlzU2FtZU9yaWdpbkFzKCpvcmlnaW4pKQorICAg
ICAgICAgICAgcmV0dXJuIEFjY2Vzc0xldmVsOjpUaGlyZFBhcnR5QWNjZXNzOworICAgICAgICBp
ZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9j
a0FsbCkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NMZXZlbDo6Tm9BY2Nlc3M7CisgICAgICAg
IHJldHVybiBBY2Nlc3NMZXZlbDo6Rmlyc3RQYXJ0eUFjY2VzczsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCmluZGV4IDAzZmUyNDQ3YjQzZTA4YmE1MWRhNzJhZmYyM2M2OTk5ZjEyNTE1ZTEuLmVm
MzQzNzVmOTM2YjI1ZGJlMDUyMjZhMzU3NjI5YzIwY2FmMmM5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTdG9yYWdlQmxvY2tpbmdQb2xp
Y3kuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IYW5kbGVUeXBlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KQEAgLTI5Nyw2ICsyOTgsMjUgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTG9nZ2VkQXV0aGVu
dGljYXRlZEVuY3J5cHRpb25XYXJuaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXNMb2dnZWRBdXRo
ZW50aWNhdGVkRW5jcnlwdGlvbldhcm5pbmc7IH0KICAgICB2b2lkIHNldEhhc0xvZ2dlZEF1dGhl
bnRpY2F0ZWRFbmNyeXB0aW9uV2FybmluZyhib29sIHZhbHVlKSB7IG1faGFzTG9nZ2VkQXV0aGVu
dGljYXRlZEVuY3J5cHRpb25XYXJuaW5nID0gdmFsdWU7IH0KIAorICAgIHZvaWQgc2V0U3RvcmFn
ZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBwb2xpY3kpIHsgbV9zdG9yYWdl
QmxvY2tpbmdQb2xpY3kgPSBwb2xpY3k7IH0KKyAgICBlbnVtIGNsYXNzIFJlc291cmNlVHlwZSA6
IHVpbnQ4X3QgeworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlLAorICAgICAgICBDb29raWVzLAor
ICAgICAgICBHZW9sb2NhdGlvbiwKKyAgICAgICAgSW5kZXhlZERCLAorICAgICAgICBMb2NhbFN0
b3JhZ2UsCisgICAgICAgIFBsdWdpbiwKKyAgICAgICAgU2Vzc2lvblN0b3JhZ2UsCisgICAgICAg
IFN0b3JhZ2VNYW5hZ2VyLAorICAgICAgICBXZWJTUUwKKyAgICB9OworICAgIGVudW0gY2xhc3Mg
QWNjZXNzTGV2ZWwgOiB1aW50OF90IHsKKyAgICAgICAgTm9BY2Nlc3MsCisgICAgICAgIEZpcnN0
UGFydHlBY2Nlc3MsCisgICAgICAgIFRoaXJkUGFydHlBY2Nlc3MKKyAgICB9OworICAgIFdFQkNP
UkVfRVhQT1JUIEFjY2Vzc0xldmVsIGNhbkFjY2Vzc1Jlc291cmNlKFJlc291cmNlVHlwZSkgY29u
c3Q7CisKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRhc2sgOiBwdWJs
aWMgVGFzayB7CiAgICAgcHVibGljOgpAQCAtMzc4LDYgKzM5OCw3IEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ICAgICBib29sIG1faGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRpb25XYXJuaW5nIHsgZmFs
c2UgfTsKKyAgICBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kg
eyBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAx
MjJkODcwMjJhM2RmNjhiZDlhOWZjOGUwZGQ0NjRkODkwNjM4NWY0Li41NTY4MmQwZTQ3Y2Y4YWFl
NzdmNDk3ODM0MTc5M2EzNWQ1NTQwYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKQEAgLTIxNDgsOSArMjE0OCwxMiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjps
b2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIC8vIElm
IHdlIGFyZSBsb2FkaW5nIHRoZSBtYWluIHJlc291cmNlIG9mIGEgc3ViZnJhbWUsIHVzZSB0aGUg
Y2FjaGUgcGFydGl0aW9uIG9mIHRoZSBtYWluIGRvY3VtZW50LgogICAgICAgICBtYWluUmVzb3Vy
Y2VSZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKCptX2ZyYW1lLT5kb2N1bWVudCgp
KTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobWFpblJlc291cmNlUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7Ci0gICAg
ICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGZyYW1lTG9hZGVyKCktPmZyYW1l
KCkuc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7Ci0gICAgICAgIG1haW5SZXNv
dXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgaWYgKGZyYW1lTG9hZGVyKCktPmZyYW1lKCkuc2V0
dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSAhPSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6
OkJsb2NrVGhpcmRQYXJ0eSkKKyAgICAgICAgICAgIG1haW5SZXNvdXJjZVJlcXVlc3Quc2V0RG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1haW5SZXNvdXJj
ZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgbWFpblJlc291
cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgbV9tYWluUmVzb3VyY2Ug
PSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0TWFpblJlc291cmNlKFdURk1vdmUobWFp
blJlc291cmNlUmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRl
eCA4NWM3ZDAxODNhYzE2ZGUxM2E3MTQ2YThhZGM5MGZkNzIxOTQyNzlkLi4zMzRkMTljMTUwNDBi
ZmE0MGNlOWU2OGM2ZGI4OGFhNmY2OTBjZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTM4LDcg
KzEzOCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZShGcmFtZSYg
ZnJhbWUsIGNvbnN0IFVSTCYgcGFzc2VkTWFuaWZlc3RVCiAgICAgfQogCiAgICAgLy8gRG9uJ3Qg
YWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgot
ICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFt
ZS50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAo
ZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8IGZyYW1lLmRvY3VtZW50KCkt
PmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6
QXBwbGljYXRpb25DYWNoZSkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWNjZXNzTGV2ZWw6
OkZpcnN0UGFydHlBY2Nlc3MpIHsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudE5hbWVz
KCkuY2hlY2tpbmdFdmVudCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0TGlzdGVuZXJU
YXNrKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2Vs
ZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwoRnJhbWUmIGZyYW1lKQogICAgIEFTU0VSVCghZG9j
dW1lbnRMb2FkZXIuYXBwbGljYXRpb25DYWNoZUhvc3QoKS5hcHBsaWNhdGlvbkNhY2hlKCkpOwog
CiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2lu
ZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9u
KCkgfHwgIWZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQXBwbGlj
YXRpb25DYWNoZShmcmFtZS50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSkpIHsKKyAgICBpZiAoZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8IGZy
YW1lLmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6QWNjZXNzTGV2ZWw6OkZpcnN0UGFydHlBY2Nlc3MpIHsKICAgICAgICAgcG9zdExpc3RlbmVy
VGFzayhldmVudE5hbWVzKCkuY2hlY2tpbmdFdmVudCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAg
ICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBkb2N1bWVudExvYWRl
cik7CiAgICAgICAgIHJldHVybjsKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6dXBkYXRlKEZyYW1lJiBmcmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9w
dGlvbiB1cAogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNrIGlm
IHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUucGFnZSgpLT51c2Vz
RXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUudHJlZSgpLnRvcCgpLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJh
bFNlc3Npb24oKSB8fCBmcmFtZS5kb2N1bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkFwcGxpY2F0aW9uQ2FjaGUpICE9IFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpGaXJzdFBhcnR5QWNjZXNzKSB7CiAgICAg
ICAgIEFTU0VSVChtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpKTsKICAg
ICAgICAgQVNTRVJUKG1fcGVuZGluZ0VudHJpZXMuaXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJU
KCFtX2NhY2hlQmVpbmdVcGRhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IGVkNzU2NjUyNmIyZDdl
ZmJmMWM1MTcwMjA5NWE4NzliYWY1Njk0NDcuLjFhYTkyMDNhYjQ2OTQwMzI4YTI5MmFiMDE2OGFi
ZTFkYzlkMGQ5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtNTYxLDE0ICs1NjEsMTQgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpCiAgICAgcmV0
dXJuIG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKSAmJiBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCkt
PnNldHRpbmdzKCkub2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9j
dW1lbnRMb2FkZXIuZnJhbWUoKS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQog
Ci1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVCbG9ja2VkRm9y
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVCbG9ja2VkRm9yUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKQogewogICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudExvYWRlci5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZnJh
bWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIVNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUocmVxdWVzdC51cmwoKSktPmNhbkFjY2Vzc0FwcGxpY2F0aW9u
Q2FjaGUoZnJhbWUtPmRvY3VtZW50KCktPnRvcE9yaWdpbigpKTsKKyAgICByZXR1cm4gZnJhbWUt
PmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJl
c291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNoZSkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
QWNjZXNzTGV2ZWw6OkZpcnN0UGFydHlBY2Nlc3M7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggODJlZGRjZTNjZDI2YjcxMDY0NWZj
OTNmMjFlZjg0OWNmZWY4YTQwMi4uOTMyMjY4MmE0ZmE4MmJjZGY5Zjk4NTUyNDBiNzg2MTYwOTg5
ZDU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODM3LDcgKzgzNyw3IEBAIEV4
Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKCkKICAgICBpZiAo
IWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICghZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoZG9jdW1lbnQtPnRvcE9y
aWdpbigpKSkKKyAgICBpZiAoZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6U2Vzc2lvblN0b3JhZ2UpID09IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpOb0FjY2VzcykKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIGlmIChtX3Nlc3Npb25TdG9yYWdlKQpAQCAt
ODYzLDcgKzg2Myw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OmxvY2FsU3Rv
cmFnZSgpCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0xvY2FsU3RvcmFnZShu
dWxscHRyKSkKKyAgICBpZiAoZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSA9PSBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6Tm9BY2Nlc3MpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTZWN1cml0eUVycm9yIH07CiAKICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVmMzQ4MmRmNjQxOWE3NDA1MGZkNDZhZjNiZmQwYWM4
YjdlOTNkNWYuLjVkM2Y2ODA0MmU3MmYyN2Y5NWQ1NmE1YmU1OTA3ZDQwNWYwNWEwNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtMzk3MiwxNiArMzk3MiwxNyBAQCB2b2lkIFBhZ2U6OnNldHVwRm9y
UmVtb3RlV29ya2VyKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmCiAgICAgbWFpbkZyYW1lKCkubG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQo
eyB9KTsKICAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxh
Y2Vob2xkZXIobWFpbkZyYW1lKCksIHNjcmlwdFVSTCk7CiAgICAgZG9jdW1lbnQtPmNyZWF0ZURP
TVdpbmRvdygpOwotCiAgICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdl
KCk7CiAKICAgICBhdXRvIG9yaWdpbiA9IHRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwotICAg
IG9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3RvcmFnZUJsb2Nr
aW5nUG9saWN5KCkpOwotCiAgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsK
ICAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOwogICAgIGRvY3Vt
ZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7Ci0gICAgZG9jdW1lbnQt
PnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24oKSk7CisKKyAgICBpZiAoZG9jdW1lbnQtPnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9s
aWN5KCkgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCisgICAgICAg
IGRvY3VtZW50LT5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihTdHJpbmcgeyBlbXB0eVN0cmlu
ZygpIH0pOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAgICBpZiAoYXV0
byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KHJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBv
bGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCiAgICAgICAgIGRvY3VtZW50LT5zZXRSZWZlcnJlclBv
bGljeSgqcG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXgg
NmIxMzBiYjJjZjRhNTQ5ODgzZWYxY2M5MDdhN2E3MmM3NWNkMjliOS4uNjQ5NDIyN2FkNTRiMjY0
NGIyMGYyNWZjYzMzMWExOTljMTRkNGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5jcHAKQEAgLTIwOCw3ICsyMDgsNiBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3Mg
eyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTSB7
IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KICAgICAsIG1fY2FuTG9hZExvY2FsUmVzb3Vy
Y2VzIHsgb3RoZXItPm1fY2FuTG9hZExvY2FsUmVzb3VyY2VzIH0KLSAgICAsIG1fc3RvcmFnZUJs
b2NraW5nUG9saWN5IHsgb3RoZXItPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5IH0KICAgICAsIG1f
ZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24geyBvdGhlci0+bV9lbmZvcmNlc0ZpbGVQYXRoU2Vw
YXJhdGlvbiB9CiAgICAgLCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrIHsg
b3RoZXItPm1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgfQogICAgICwgbV9p
c1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgeyBvdGhlci0+bV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkgfQpAQCAtNDE4LDM2ICs0MTcsNiBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5
KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNlY3Vy
aXR5T3JpZ2luOjpjYW5BY2Nlc3NTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmln
aW4sIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgc2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSkg
Y29uc3QKLXsKLSAgICBpZiAoaXNVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKGlzTG9jYWwoKSAmJiAhbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmso
KSAmJiAhbV91bml2ZXJzYWxBY2Nlc3MgJiYgc2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSAhPSBB
bHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0g
ICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6
QmxvY2tBbGwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGNo
ZWNrIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGFuIEFTU0VSVCBvbmNlIHdlIGNhbiBndWFyYW50
ZWUgdGhhdCB0b3BPcmlnaW4gaXMgbm90IG51bGwuCi0gICAgaWYgKCF0b3BPcmlnaW4pCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHRvcE9yaWdpbi0+bV9zdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKHNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgPT0gQWx3YXlzQWxs
b3dGcm9tVGhpcmRQYXJ0eSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAobV91bml2
ZXJzYWxBY2Nlc3MpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKChtX3N0b3JhZ2VC
bG9ja2luZ1BvbGljeSA9PSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQYXJ0eSB8
fCB0b3BPcmlnaW4tPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeTo6QmxvY2tUaGlyZFBhcnR5KSAmJiAhdG9wT3JpZ2luLT5pc1NhbWVPcmlnaW5BcygqdGhp
cykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiBTZWN1
cml0eU9yaWdpbjo6UG9saWN5IFNlY3VyaXR5T3JpZ2luOjpjYW5TaG93Tm90aWZpY2F0aW9ucygp
IGNvbnN0CiB7CiAgICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQpAQCAtNTE3LDkgKzQ4Niw2IEBA
IHZvaWQgU2VjdXJpdHlPcmlnaW46OmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJr
KCkKIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
LQogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJuIGhvc3QoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IGQyYmY3M2RhNjJkM2Y1YTFhOTc0YTA3
YWY3YWMyNTlkZGE2OWFhM2YuLmZmMWQyMmMxNWZlMGJmNDM0ZTFmZWY5NDQ2ZmMyZTgyY2M0ZmM5
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTI5LDcgKzI5LDYgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCi0jaW5jbHVk
ZSAiU3RvcmFnZUJsb2NraW5nUG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CkBAIC0xMzksMjEgKzEzOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBncmFudFVuaXZl
cnNhbEFjY2VzcygpOwogICAgIGJvb2wgaGFzVW5pdmVyc2FsQWNjZXNzKCkgY29uc3QgeyByZXR1
cm4gbV91bml2ZXJzYWxBY2Nlc3M7IH0KIAotICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9s
aWN5KFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBwb2xpY3kpIHsgbV9zdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgPSBwb2xpY3k7IH0KLQogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxz
UXVpcmsoKTsKICAgICBib29sIG5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29u
c3Q7Ci0KLSAgICBib29sIGNhbkFjY2Vzc0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsK
LSAgICBib29sIGNhbkFjY2Vzc1Nlc3Npb25TdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbiwgQWx3
YXlzQWxsb3dGcm9tVGhpcmRQYXJ0eSk7IH0KLSAgICBib29sIGNhbkFjY2Vzc0xvY2FsU3RvcmFn
ZShjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nl
c3NTdG9yYWdlKHRvcE9yaWdpbik7IH07Ci0gICAgYm9vbCBjYW5BY2Nlc3NTdG9yYWdlTWFuYWdl
cigpIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UobnVsbHB0cik7IH0KLSAgICBib29s
IGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikg
Y29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQotICAgIGJvb2wg
Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2lu
KSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9Ci0gICAgYm9v
bCBjYW5BY2Nlc3NDb29raWVzKCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KLSAgICBi
b29sIGNhblJlcXVlc3RHZW9sb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgpOyB9
CiAgICAgUG9saWN5IGNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3Q7CiAKICAgICAvLyBUaGUg
bG9jYWwgU2VjdXJpdHlPcmlnaW4gaXMgdGhlIG1vc3QgcHJpdmlsZWdlZCBTZWN1cml0eU9yaWdp
bi4KQEAgLTI0NCw3ICsyMzIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91bml2ZXJzYWxBY2Nl
c3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyB7IGZhbHNlIH07Ci0gICAgU3RvcmFnZUJs
b2NraW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5IHsgU3RvcmFnZUJsb2NraW5nUG9s
aWN5OjpBbGxvd0FsbCB9OwogICAgIGJvb2wgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJr
IHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHk7CkBAIC0yNjYsNyArMjUzLDYgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gaW5saW5lIHZvaWQgU2VjdXJpdHlPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b24KICAgICBlbmNvZGVyIDw8IG1fdW5pdmVyc2FsQWNjZXNzOwogICAgIGVuY29kZXIgPDwgbV9k
b21haW5XYXNTZXRJbkRPTTsKICAgICBlbmNvZGVyIDw8IG1fY2FuTG9hZExvY2FsUmVzb3VyY2Vz
OwotICAgIGVuY29kZXIgPDwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAgICAgZW5jb2RlciA8
PCBtX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uOwogICAgIGVuY29kZXIgPDwgbV9uZWVkc1N0
b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsKICAgICBlbmNvZGVyIDw8IG1faXNQb3RlbnRp
YWxseVRydXN0d29ydGh5OwpAQCAtMjk1LDggKzI4MSw2IEBAIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IGlubGluZSBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUo
RGVjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3Jp
Z2luLT5tX2NhbkxvYWRMb2NhbFJlc291cmNlcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2lu
LT5tX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fbmVlZHNTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcmspKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDI2YmFmNGYwNGQ3M2RiYTc5NWU0ZWY0MTM5MmY5
OTUzZDdmZWIwYWUuLjMxMzRlNmY3ZGFlNTZkYmIxZDBmMmUwMmZhZTQ0Y2RlZWQzNDcyYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5jcHAKQEAgLTUxLDExICs1MSw4IEBAIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAvLyBz
byB0aGUgRG9jdW1lbnQgaGFkIGJldHRlciBzdGlsbCBhY3R1YWxseSBoYXZlIGEgUGFnZS4KICAg
ICBBU1NFUlQoZG9jdW1lbnQucGFnZSgpKTsKIAotICAgIGJvb2wgdHJhbnNpZW50ID0gIWRvY3Vt
ZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZkb2N1bWVudC50b3BP
cmlnaW4oKSk7Ci0KICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gc3RvcmFnZU5hbWVzcGFj
ZTsKLQotICAgIGlmICh0cmFuc2llbnQpCisgICAgaWYgKGRvY3VtZW50LmNhbkFjY2Vzc1Jlc291
cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSA9
PSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBY2Nlc3NMZXZlbDo6VGhpcmRQYXJ0eUFjY2VzcykK
ICAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZ0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwog
ICAgIGVsc2UKICAgICAgICAgc3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoZG9jdW1lbnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGYyZjI5OGU3ODcyMGY3MDMwOTkwMmMyYjNi
OWJmYmEyYmFkZTBhYzQuLjU5MzNlMDc0ZThiNjMyN2QwNTY2MWIzNDFlMTYyNzIwOTlmZDI5ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0x
MTYsNiArMTE2LDcgQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtl
clRocmVhZFR5cGUgdHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGUKICAgICBpZiAobV90b3BPcmln
aW4tPm5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCkpCiAgICAgICAgIG9yaWdp
bi0+Z3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKIAorICAgIHNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeShtX3NldHRpbmdzVmFsdWVzLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7
CiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0
ZShXVEZNb3ZlKG9yaWdpbikpKTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiAgICAg
c2V0Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeShwYXJhbXMuY3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggNDVhNDIyMDM3OTMzM2NhZDQ2YjQ4NmViMjcy
Y2I4ZDJhOGRiMDNmNS4uYWI0ZjVhMmNmMzUzMDBkMjkzYjc3ZTM5NGYzODRmOGM3OGVkYWJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcApAQCAtMjA0LDYgKzIwNCw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRV
UkwsIGNvCiAgICAgam9iRGF0YS50b3BPcmlnaW4gPSBjb250ZXh0LT50b3BPcmlnaW4oKS5kYXRh
KCk7CiAgICAgam9iRGF0YS53b3JrZXJUeXBlID0gb3B0aW9ucy50eXBlOwogICAgIGpvYkRhdGEu
dHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjsKKyAgICBqb2JEYXRhLmRvbWFp
bkZvckNhY2hlUGFydGl0aW9uID0gY29udGV4dC0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsK
ICAgICBqb2JEYXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCiAgICAgc2NoZWR1
bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNl
KSwgV1RGTW92ZShqb2JEYXRhKSkpOwpAQCAtMjUyLDYgKzI1Myw3IEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNv
bnN0IFVSTCYKICAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpOwogICAgIGpvYkRhdGEud29ya2VyVHlwZSA9IHdvcmtlclR5cGU7CiAgICAgam9iRGF0YS50
eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZTsKKyAgICBqb2JEYXRhLmRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uID0gY29udGV4dC5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpOwogICAg
IGpvYkRhdGEuc2NvcGVVUkwgPSBzY29wZVVSTDsKICAgICBqb2JEYXRhLnNjcmlwdFVSTCA9IHNj
cmlwdFVSTDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2JEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKaW5kZXggZjBhYTg2YzVkYTZmMjc5ZmQ3ZTA3MmNlMzI1
YTM1Y2EwY2M5M2Q0MC4uZWJlMWFlY2Q3MDQ3ZDY0ZWNjYjM3Y2I2NTk2ZWRjMDE2MjdjYWI5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2JEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYkRhdGEuY3BwCkBAIC03OCw2ICs3OCw3IEBAIFNlcnZpY2VXb3JrZXJKb2JEYXRhIFNl
cnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJlc3VsdC5jbGll
bnRDcmVhdGlvblVSTCA9IGNsaWVudENyZWF0aW9uVVJMLmlzb2xhdGVkQ29weSgpOwogICAgIHJl
c3VsdC50b3BPcmlnaW4gPSB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCk7CiAgICAgcmVzdWx0LnNj
b3BlVVJMID0gc2NvcGVVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVzdWx0LmRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uID0gZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24uaXNvbGF0ZWRDb3B5KCk7CiAg
ICAgcmVzdWx0LnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSByZWdpc3RyYXRpb25PcHRpb25zLmlzb2xh
dGVkQ29weSgpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggZGZiYWRhMzVl
M2Q0OTA3NTNhMzEyMDE2NjVmOWFhZDU1ZTNmMGYyNC4uMDhmOWZlOWUyNWQzN2Y1NDc4MmI0YTgw
NGRjM2QwMTU5MWIwMzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVy
IHNvdXJjZUNvbnRleHQ7CiAgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAgIFNlcnZpY2VX
b3JrZXJKb2JUeXBlIHR5cGU7CisgICAgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uOwog
ICAgIGJvb2wgaXNGcm9tU2VydmljZVdvcmtlclBhZ2UgeyBmYWxzZSB9OwogCiAgICAgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMgcmVnaXN0cmF0aW9uT3B0aW9uczsKQEAgLTc1LDcg
Kzc2LDcgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VX
b3JrZXJKb2JEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNv
ZGVyIDw8IGlkZW50aWZpZXIoKSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25VUkwgPDwg
dG9wT3JpZ2luIDw8IHNjb3BlVVJMIDw8IHNvdXJjZUNvbnRleHQgPDwgd29ya2VyVHlwZSA8PCBp
c0Zyb21TZXJ2aWNlV29ya2VyUGFnZTsKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIoKSA8PCBz
Y3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25VUkwgPDwgdG9wT3JpZ2luIDw8IHNjb3BlVVJMIDw8
IHNvdXJjZUNvbnRleHQgPDwgd29ya2VyVHlwZSA8PCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA8
PCBpc0Zyb21TZXJ2aWNlV29ya2VyUGFnZTsKICAgICBlbmNvZGVyIDw8IHR5cGU7CiAgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI6CkBA
IC0xMTUsNiArMTE2LDggQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gU2Vy
dmljZVdvcmtlckpvYkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEud29ya2VyVHlw
ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShqb2JEYXRhLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuaXNGcm9tU2VydmljZVdv
cmtlclBhZ2UpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoam9iRGF0YS50eXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZTU1M2QxY2RiODM1MzFiOTQyMDZhNThm
ZTJkZGRkMDRlY2RhZWYzOS4uN2MzNjQyZmUzMzgxYzk2YTk0ZDE1NWNjNDdhYWJlOWNlODU2Yjdk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZl
dGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBTV1NlcnZlclJlZwogICAg
ICAgICBhdXRvIHRvcE9yaWdpbiA9IGpvYkRhdGEudG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7
CiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNj
cmlwdFVSTCk7CiAKLSAgICAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbih0
b3BPcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOworICAgICAgICByZXF1ZXN0LnNl
dERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24p
OwogICAgICAgICByZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsKICAgICAgICAgcmVxdWVz
dC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5VUkwodG9wT3JpZ2luKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDc0ZGYy
NzUxNzhjYTg4MGY4OWY5Mjk5NjU4ODcyOTZkMGRmMzVhODguLmFmNzdjMzU5ZWQ1ZTBmNWNkZTQx
MjMwZjk1MTA0Y2M3ZmViODRlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNTgsNiArNTgsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6
OldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRUaHJlYWQmIHRocmVhZCwgUmVmPEpT
Qzo6VgogewogICAgICsrZ051bWJlck9mV29ya2xldEdsb2JhbFNjb3BlczsKIAorICAgIHNldFN0
b3JhZ2VCbG9ja2luZ1BvbGljeShwYXJhbWV0ZXJzLnNldHRpbmdzVmFsdWVzLnN0b3JhZ2VCbG9j
a2luZ1BvbGljeSk7CiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Q
b2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRoaXMtPnVybCgpKSkpOwogICAg
IHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGlj
eT4oVVJMIHsgdGhpcy0+dXJsKCkgfSwgKnRoaXMpKTsKIH0KQEAgLTc1LDYgKzc2LDcgQEAgV29y
a2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZWY8SlNDOjpWTT4mJiB2bSwgU2MKIAogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCisg
ICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KG1fZG9jdW1lbnQtPnNldHRpbmdzKCkuc3RvcmFn
ZUJsb2NraW5nUG9saWN5KCkpOwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5
T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0aGlzLT51cmwoKSkp
KTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJp
dHlQb2xpY3k+KFVSTCB7IHRoaXMtPnVybCgpIH0sICp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ1YTAxMWJlNTU2
NjIwN2M5Y2FjNDVmOWVmNjA5MmNlODAxNTAwMWYuLjRiOGJiMDk3YTA3NTU5ZWI0YWM4MThiYTQ1
MWFiYTM2N2NmZmUzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC02MTMsOCArNjEzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFt
X3BsdWdpbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgPSAhZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NQbHVn
aW5TdG9yYWdlKGZyYW1lKCktPmRvY3VtZW50KCktPnRvcE9yaWdpbigpKTsKLQorICAgIGJvb2wg
c3RvcmFnZUJsb2NraW5nUG9saWN5ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVz
b3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpQbHVnaW4pICE9IFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFjY2Vzc0xldmVsOjpGaXJzdFBhcnR5QWNjZXNzOwogICAg
IG1fcGx1Z2luLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoc3RvcmFnZUJsb2NraW5nUG9s
aWN5KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGEyMjlhODAyZTI4YjVlYjcxMTI4OGY1ZTMwYzI2MjUwOGFiMmQ5YmMuLjBmZTYwYmFi
OTkwYTlmN2VkNDY1ODYwYTNlZWRjYmVhMTc3NzJmOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0wOCAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNhbkFjY2Vz
c1N0b3JhZ2UoKSBjaGVjayBmcm9tIFNlY3VyaXR5T3JpZ2luIHRvIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODUyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTEzMTgyNTk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tOgorCiAyMDIyLTA0LTA4ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVyZ2UtUXVldWVdIEFk
ZCBxdWV1ZSB0cmlnZ2VyZWQgYnkgbGFiZWwgYWRkaXRpb24gKEZvbGxvdy11cCBmaXgpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBl
cnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCAwN2YwY2UyODE1NjAxOGZkNWU0NGY0ZWI0N2RhYjY1
NjcyNDdiN2U2Li5hNDhlNDU5OGJjMWU4ZWZhYWQ5NTYwYzYxNWUyNTVhZTViMWY5YTgyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBl
cnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTI4Niw2ICsyODYsNyBAQCBURVNUKEluZGV4ZWRE
QiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAgIFtXS1dlYnNpdGVEYXRhU3Rv
cmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CiAKICAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeTpfV0tTdG9yYWdlQmxvY2tpbmdQb2xpY3lBbGxvd0FsbF07CiAgICAgYXV0byBoYW5k
bGVyID0gYWRvcHROUyhbW0luZGV4ZWREQk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAg
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKICAgICBhdXRvIHNj
aGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457123</attachid>
            <date>2022-04-08 16:00:32 -0700</date>
            <delta_ts>2022-04-08 22:45:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238524-20220408160031.patch</filename>
            <type>text/plain</type>
            <size>40547</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI0NzgzMjkzZTgzM2Vi
Y2RjYzdmNzQzYjlkMDg0YTUxMTY4M2M0NC4uY2MwMmZjOTkyOGViMWFiZDY3M2I1MGE4MmIzYzAz
YmIyM2QzYTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIyLTA0LTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MTMxODI1OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2FuQWNjZXNzUmVzb3VyY2UoKSB0byBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IGJlY2F1c2UgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW5z
dGVhZCBvZiBTZWN1cml0eU9yaWdpbiwgCisgICAgICAgIHNob3VsZCBiZSB0aGUgcGxhY2UgdGhh
dCBob2xkcyBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgKG90aGVyd2lzZSBpdCdzIGNvbmZ1c2luZyB0
aGF0IHRoZSBvcmlnaW4gYW5kIHRvcCBvcmlnaW4gCisgICAgICAgIGRpc2FncmVlcyB3aXRoIGVh
Y2ggb3RoZXIgb24gcG9saWN5KS4gQWxzbywgYmVjYXVzZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IGhhcyBhY2Nlc3MgdG8gb3JpZ2luIGFuZCB0b3BPcmlnaW4sCisgICAgICAgIGNhbGxlcnMgZG9u
J3QgbmVlZCB0byBleHBsaWNpdGx5IGdldCB0aGVtIGJlZm9yZSB0aGUgYWNjZXNzIGNoZWNrLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uOjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVzdHMpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVGhyb3dT
ZWN1cml0eUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25uZWN0aW9uSW5mbyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
T01XaW5kb3dXZWJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dXZWJE
YXRhYmFzZTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bV93aGl0ZXNwYWNlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlRdWlja0xvb2tTYW5kYm94KToKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjppc09yaWdpbkVxdWl2YWxlbnRUb0xvY2FsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhbkFjY2Vzc1Jlc291cmNlIGNvbnN0KToK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldHVwRm9yUmVtb3RlV29ya2VyKToKKyAgICAgICAg
KiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpzZXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNh
bkFjY2Vzc0RhdGFiYXNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjYW5BY2Nlc3NTZXNzaW9uU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzTG9jYWxTdG9yYWdlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NT
dG9yYWdlTWFuYWdlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y2FuQWNjZXNzUGx1Z2luU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNz
Q29va2llcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y2FuUmVxdWVzdEdlb2xvY2F0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9jcmVkZW50aWFs
cyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJl
Z2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUpOgorCiAyMDIyLTA0LTA4ICBBbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjptaW4oKSBhcyB0aGUgaW5pdGlhbCB2YWx1ZSB0byBjb2xsZWN0IG1heCB2YWx1
ZXMgZm9yIGdseXBoIG92ZXJmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU0MzBlMWI2MTY1NGE0YzIwYjEzMDUx
Y2VhNjg0ODI0OGI2ZGY0OWEuLjJiYjI1NzFjZWJlYWU4NWVhZTVmYjQxZWE3ODFkNjc1ZDg1MWJi
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMDggIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjYW5BY2Nlc3NTdG9yYWdlKCkgY2hl
Y2sgZnJvbSBTZWN1cml0eU9yaWdpbiB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzkxMzE4MjU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQp
OgorCiAyMDIyLTA0LTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBSZW1vdGVJbnNwZWN0b3I6IHVwZGF0ZSB0YXJnZXQgbGlzdCBw
YWdlIGNvbnRlbnRzIG9uIGNoYW5nZSBpbnN0ZWFkIG9mIHJlbG9hZGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDY1NDNmMzkxOTgzYzdj
NDYzM2QyNzhhOWVhOTVmNTBjMzk5YTI0ZmUuLjFlZjRlZDg3Yjk4YjUxOWQzZjFjNTUxYzlhNWJj
NzhkYjE1ZTg3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKQEAgLTk2LDExICs5NiwxMCBAQCB2b2lkIENETTo6Z2V0U3VwcG9ydGVkQ29uZmln
dXJhdGlvbihNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byBhY2Nlc3MgPSBDRE1Qcml2YXRlOjpMb2Nh
bFN0b3JhZ2VBY2Nlc3M6OkFsbG93ZWQ7CiAgICAgYm9vbCBpc0VwaGVtZXJhbCA9ICFkb2N1bWVu
dC0+cGFnZSgpIHx8IGRvY3VtZW50LT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7
Ci0KLSAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCk7Ci0gICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiA9IGRvY3VtZW50LT50b3BPcmlnaW4o
KTsKLSAgICBDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzID0gIWlzRXBoZW1l
cmFsICYmIG9yaWdpbi5jYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoJnRvcE9yaWdpbikgPyBDRE1Qcml2
YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3M6OkFsbG93ZWQgOiBDRE1Qcml2YXRlOjpMb2NhbFN0b3Jh
Z2VBY2Nlc3M6Ok5vdEFsbG93ZWQ7CisgICAgaWYgKGlzRXBoZW1lcmFsIHx8IGRvY3VtZW50LT5j
YW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6Okxv
Y2FsU3RvcmFnZSkgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6SGFzUmVzb3VyY2VBY2Nlc3M6
Ok5vKQorICAgICAgICBhY2Nlc3MgPSBDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3M6Ok5v
dEFsbG93ZWQ7CiAgICAgbV9wcml2YXRlLT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1v
dmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwCmluZGV4IGNkMzcyZjQzNjkxYWRkNGQ3ZGYwYzllNTI1NzBlYWZmZDI5MzQwMzcuLmEw
ZjNhMmY1MDgyNmRiMzFjZjdkNmMxMzNlNGRmYzQ3YmFjMjc1MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zNzEsNyAr
MzcxLDcgQEAgYm9vbCBHZW9sb2NhdGlvbjo6c2hvdWxkQmxvY2tHZW9sb2NhdGlvblJlcXVlc3Rz
KCkKICAgICBib29sIGlzU2VjdXJlID0gU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlKGRvY3VtZW50
KCktPnVybCgpKSB8fCBkb2N1bWVudCgpLT5pc1NlY3VyZUNvbnRleHQoKTsKICAgICBib29sIGhh
c01peGVkQ29udGVudCA9ICFkb2N1bWVudCgpLT5mb3VuZE1peGVkQ29udGVudCgpLmlzRW1wdHko
KTsKICAgICBib29sIGlzTG9jYWxPcmlnaW4gPSBzZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCk7
Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3RHZW9sb2NhdGlvbigpKSB7Cisg
ICAgaWYgKGRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlJlc291cmNlVHlwZTo6R2VvbG9jYXRpb24pICE9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
Okhhc1Jlc291cmNlQWNjZXNzOjpObykgewogICAgICAgICBpZiAoaXNMb2NhbE9yaWdpbiB8fCAo
aXNTZWN1cmUgJiYgIWhhc01peGVkQ29udGVudCkgfHwgaXNSZXF1ZXN0RnJvbUlCb29rcygpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggNTZjMTcyN2RkYjgyMTBkMTM2OTc3
NWJiYzM5NWVmN2Y4ZmI2Mzk5Ni4uYWMyNzdkOWFhZjMzZTkxMTdlNWYyNWEwZmU1Yjg3MjM0YWU3
YzVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHAKQEAgLTU0LDEwICs1NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRocm93U2VjdXJpdHlF
eGNlcHRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3NEYXRhYmFzZShudWxscHRyKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbnRleHQuY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpJbmRleGVkREIpID09IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6Okhhc1Jlc291cmNlQWNjZXNzOjpObzsKIH0KIAogUmVmPElEQkZhY3Rvcnk+
IElEQkZhY3Rvcnk6OmNyZWF0ZShJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVj
dGlvblByb3h5KQpAQCAtOTEsNyArODgsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVx
dWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIklEQkZhY3Rvcnkub3Blbigp
IGNhbGxlZCBpbiBhbiBpbnZhbGlkIHNlY3VyaXR5IGNvbnRleHQiX3MgfTsKIAogICAgIEFTU0VS
VChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIGJvb2wgaXNUcmFuc2llbnQgPSAhY29u
dGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZSgmY29udGV4dC50b3BPcmln
aW4oKSk7CisgICAgYm9vbCBpc1RyYW5zaWVudCA9IChjb250ZXh0LmNhbkFjY2Vzc1Jlc291cmNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6SW5kZXhlZERCKSA9PSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpIYXNSZXNvdXJjZUFjY2Vzczo6RGVmYXVsdEZvclRoaXJkUGFy
dHkpOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwg
U2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfSwg
U2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgaXNUcmFu
c2llbnQpOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIklEQkZhY3Rvcnkub3BlbigpIGNhbGxlZCB3
aXRoIGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIl9zIH07CkBAIC0xMTIsNyArMTA5LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpkZWxldGVEYXRh
YmFzZShTY3JpcHRFeGVjdXRpb25Db24KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3Vy
aXR5RXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFs
aWQgc2VjdXJpdHkgY29udGV4dCJfcyB9OwogCiAgICAgQVNTRVJUKGNvbnRleHQuc2VjdXJpdHlP
cmlnaW4oKSk7Ci0gICAgYm9vbCBpc1RyYW5zaWVudCA9ICFjb250ZXh0LnNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2Vzc0RhdGFiYXNlKCZjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBib29sIGlz
VHJhbnNpZW50ID0gKGNvbnRleHQuY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6UmVzb3VyY2VUeXBlOjpJbmRleGVkREIpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
Okhhc1Jlc291cmNlQWNjZXNzOjpEZWZhdWx0Rm9yVGhpcmRQYXJ0eSk7CiAgICAgSURCRGF0YWJh
c2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEg
eyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRhdGEg
eyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBpc1RyYW5zaWVudCk7CiAgICAgaWYgKCFk
YXRhYmFzZUlkZW50aWZpZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yLCAiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFuIGlu
dmFsaWQgc2VjdXJpdHkgb3JpZ2luIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA2MzZiNDhjOWYwNDc5YmM1YWUzMTk0
ZWExZTg5MDU2OTY1NzE3YTQ1Li5kZDcyYzRhNDM4OWRjZTU1MDQ4YjdhMjQ0NWYyMjJmNDRkZGI0
MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAKQEAgLTY3LDEyICs2NywxMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Q29ubmVjdGlv
bkluZm8+IGNvbm5lY3Rpb25JbmZvKE5hdmlnYXRvckJhc2UqIG5hdmlnYXRvcikKICAgICBpZiAo
IWNvbnRleHQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
IkNvbnRleHQgaXMgaW52YWxpZCJfcyB9OwogCi0gICAgYXV0byogb3JpZ2luID0gY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiT3JpZ2luIGlzIGludmFsaWQiX3MgfTsKKyAgICBp
ZiAoY29udGV4dC0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVz
b3VyY2VUeXBlOjpTdG9yYWdlTWFuYWdlcikgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6SGFz
UmVzb3VyY2VBY2Nlc3M6Ok5vKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9y
LCAiQ29udGV4dCBub3QgYWNjZXNzIHN0b3JhZ2UiX3MgfTsKIAotICAgIGlmICghb3JpZ2luLT5j
YW5BY2Nlc3NTdG9yYWdlTWFuYWdlcigpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiT3JpZ2luIHNob3VsZCBub3QgYWNjZXNzIHN0b3JhZ2UiX3MgfTsKKyAgICBhdXRv
KiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworICAgIEFTU0VSVChvcmlnaW4p
OwogCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewogICAgICAgICBpZiAoYXV0byog
Y29ubmVjdGlvbiA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS0+c3RvcmFnZUNvbm5lY3Rp
b24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9N
V2luZG93V2ViRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKaW5kZXggNTZhYzBlNDIyZGQ0ZGY5MzZlM2NjYjAw
Y2U1ZjQ1YzNkNjU1NDE1Yi4uODE4MTViNDU4MmFjN2JmNjAwMjIyYWMwNDZmOWMzNjAyNzUwNDdj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5k
b3dXZWJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAgRXhjZXB0aW9uT3I8
UmVmUHRyPERhdGFiYXNlPj4gRE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShET01X
aW5kb3cmIHdpbmQKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsK
ICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U3RvcmFnZSwg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV2ViIFNRTCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNl
IEluZGV4ZWREQiBpbnN0ZWFkLiJfcyk7CiAKLSAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IGRv
Y3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgIGlmICghc2VjdXJpdHlPcmlnaW4uY2FuQWNj
ZXNzRGF0YWJhc2UoJmRvY3VtZW50LT50b3BPcmlnaW4oKSkpCisgICAgaWYgKGRvY3VtZW50LT5j
YW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6Oldl
YlNRTCkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6SGFzUmVzb3VyY2VBY2Nlc3M6OlllcykK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKKwogICAgIGF1dG8g
cmVzdWx0ID0gbWFuYWdlci5vcGVuRGF0YWJhc2UoKndpbmRvdy5kb2N1bWVudCgpLCBuYW1lLCB2
ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgV1RGTW92ZShjcmVhdGlvbkNhbGxi
YWNrKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGSVhN
RTogVG8gcHJlc2VydmUgb3VyIHBhc3QgYmVoYXZpb3IsIHRoaXMgZGlzY2FyZHMgdGhlIGVycm9y
IHN0cmluZyBpbiB0aGUgZXhjZXB0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDA1
NWM0YTIyNTA2YWFiODU2NmMwMjRjZGVlYTA4ZGM2MWNiNmFmNS4uMzgwMWJlZDNjZjIyNWJhYjE4
MmFiY2E5M2ZiOTcxZThiZDk2NjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02MzIs
NiArNjMyLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGlu
Z3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCwgRG9jdW0KICAgICAgICAgbm9kZUxpc3RBbmRD
b2xsZWN0aW9uQ291bnQgPSAwOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRF
dmVudExpc3RlbmVyc1RvTm9kZSgqdGhpcyk7CisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5
KG1fc2V0dGluZ3MtPnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKIH0KIAogdm9pZCBEb2N1bWVu
dDo6Y3JlYXRlTmV3SWRlbnRpZmllcigpCkBAIC01MzQwLDcgKzUzNDEsNyBAQCBFeGNlcHRpb25P
cjxTdHJpbmc+IERvY3VtZW50Ojpjb29raWUoKQogICAgIGlmIChpc0Nvb2tpZUF2ZXJzZSgpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKCkuY2Fu
QWNjZXNzQ29va2llcygpKQorICAgIGlmIChjYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkNvb2tpZXMpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6Okhhc1Jlc291cmNlQWNjZXNzOjpObykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNl
Y3VyaXR5RXJyb3IgfTsKIAogICAgIFVSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsK
QEAgLTUzNjEsNyArNTM2Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50OjpzZXRDb29r
aWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBpZiAoaXNDb29raWVBdmVyc2UoKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgIGlmICghc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NDb29r
aWVzKCkpCisgICAgaWYgKGNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlJlc291cmNlVHlwZTo6Q29va2llcykgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6SGFzUmVz
b3VyY2VBY2Nlc3M6Ok5vKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJv
ciB9OwogCiAgICAgVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOwpAQCAtNTc5MSw3
ICs1NzkyLDcgQEAgYm9vbCBEb2N1bWVudDo6bWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5KCkg
Y29uc3QKIAogdm9pZCBEb2N1bWVudDo6c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKQog
ewotICAgIHNlY3VyaXR5T3JpZ2luKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdz
KCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOworICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eShzZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKIH0KIAogLy8gVXNlZCBvbmx5
IGJ5IFdlYktpdExlZ2FjeS4KQEAgLTYzNDcsNyArNjM0OCw2IEBAIHZvaWQgRG9jdW1lbnQ6Omlu
aXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS5zZXRFbmZv
cmNlc0ZpbGVQYXRoU2VwYXJhdGlvbigpOwogICAgICAgICB9CiAgICAgfQotICAgIHNlY3VyaXR5
T3JpZ2luKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3RvcmFnZUJsb2Nr
aW5nUG9saWN5KCkpOwogCiAgICAgUmVmUHRyIHBhcmVudERvY3VtZW50ID0gb3duZXJFbGVtZW50
KCkgPyAmb3duZXJFbGVtZW50KCktPmRvY3VtZW50KCkgOiBudWxscHRyOwogICAgIGlmIChwYXJl
bnREb2N1bWVudCAmJiBtX2ZyYW1lLT5sb2FkZXIoKS5zaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9j
dW1lbnQodXJsKCkpKSB7CkBAIC03ODg4LDggKzc4ODgsOCBAQCB2b2lkIERvY3VtZW50OjphcHBs
eVF1aWNrTG9va1NhbmRib3goKQogICAgIEFTU0VSVCghZG9jdW1lbnRVUkwucHJvdG9jb2xJcyhR
TFByZXZpZXdQcm90b2NvbCkpOwogICAgIEFTU0VSVChyZXNwb25zZVVSTC5wcm90b2NvbElzKFFM
UHJldmlld1Byb3RvY29sKSk7CiAKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFn
ZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCk7CiAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVOb25Mb2NhbFdpdGhBbGxvd2VkRmlsZVBhdGgocmVzcG9uc2VV
UkwsIGRvY3VtZW50VVJMLmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgIHNlY3VyaXR5T3JpZ2luLT5z
ZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCk7
CiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0
ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkpOwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gcXVpY2tMb29rQ1NQID0gbWFrZVN0cmluZygiZGVmYXVsdC1zcmMgIiwgUUxQcmV2
aWV3UHJvdG9jb2wsICI6ICd1bnNhZmUtaW5saW5lJzsgYmFzZS11cmkgJ25vbmUnOyBzYW5kYm94
IGFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCAzOGYwNzExMDdkNzc2ZWY2YmViNDQ3
OWNiMDU3OTdlYmUwYzViMTA0Li4yMjg3YjFiOWUyZGNhNmQyNzY2MzY4ZDZhZjU0NWU5YmIwNDBk
NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CkBAIC01NzgsNyArNTc4LDEzIEBAIEpTQzo6SlNHbG9iYWxPYmplY3QqIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6Omdsb2JhbE9iamVjdCgpCiAKIFN0cmluZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24uaXNOdWxsKCkgPyB0b3BPcmlnaW4oKS5kb21haW5Gb3JDYWNoZVBh
cnRpdGlvbigpIDogbV9kb21haW5Gb3JDYWNoZVBhcnRpdGlvbjsKKyAgICBpZiAoIW1fZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX2RvbWFpbkZvckNh
Y2hlUGFydGl0aW9uOworCisgICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5KQorICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKKworICAgIHJldHVybiB0b3BPcmlnaW4oKS5kb21haW5Gb3JDYWNoZVBhcnRpdGlv
bigpOwogfQogCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFsbG93c01lZGlhRGV2aWNl
cygpIGNvbnN0CkBAIC03MDksNCArNzE1LDM3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cG9zdFRhc2tUb1Jlc3BvbnNpYmxlRG9jdW1lbnQoRnVuY3Rpb248dm9pZChEb2N1bWVuCiAg
ICAgICAgIGNhbGxiYWNrKCpkb2N1bWVudCk7CiB9CiAKK3N0YXRpYyBib29sIGlzT3JpZ2luRXF1
aXZhbGVudFRvTG9jYWwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1
cm4gb3JpZ2luLmlzTG9jYWwoKSAmJiAhb3JpZ2luLm5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxl
VVJMc1F1aXJrKCkgJiYgIW9yaWdpbi5oYXNVbml2ZXJzYWxBY2Nlc3MoKTsKK30KKworU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6SGFzUmVzb3VyY2VBY2Nlc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Y2FuQWNjZXNzUmVzb3VyY2UoUmVzb3VyY2VUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAgYXV0
byogb3JpZ2luID0gc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoIW9yaWdpbiB8fCBvcmlnaW4t
PmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVybiBIYXNSZXNvdXJjZUFjY2Vzczo6Tm87CisKKyAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6Q29va2llczoKKyAgICBj
YXNlIFJlc291cmNlVHlwZTo6R2VvbG9jYXRpb246CisgICAgICAgIHJldHVybiBIYXNSZXNvdXJj
ZUFjY2Vzczo6WWVzOworICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlOgor
ICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpQbHVnaW46CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6Oldl
YlNRTDoKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6SW5kZXhlZERCOgorICAgIGNhc2UgUmVzb3Vy
Y2VUeXBlOjpMb2NhbFN0b3JhZ2U6CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlN0b3JhZ2VNYW5h
Z2VyOgorICAgICAgICBpZiAoaXNPcmlnaW5FcXVpdmFsZW50VG9Mb2NhbCgqb3JpZ2luKSkKKyAg
ICAgICAgICAgIHJldHVybiBIYXNSZXNvdXJjZUFjY2Vzczo6Tm87CisgICAgICAgIEZBTExUSFJP
VUdIOworICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpTZXNzaW9uU3RvcmFnZToKKyAgICAgICAgaWYg
KG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QmxvY2tB
bGwpCisgICAgICAgICAgICByZXR1cm4gSGFzUmVzb3VyY2VBY2Nlc3M6Ok5vOworICAgICAgICBp
ZiAoKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6Qmxv
Y2tUaGlyZFBhcnR5KSAmJiAhdG9wT3JpZ2luKCkuaXNTYW1lT3JpZ2luQXMoKm9yaWdpbikgJiYg
IW9yaWdpbi0+aGFzVW5pdmVyc2FsQWNjZXNzKCkpCisgICAgICAgICAgICByZXR1cm4gSGFzUmVz
b3VyY2VBY2Nlc3M6OkRlZmF1bHRGb3JUaGlyZFBhcnR5OworICAgICAgICByZXR1cm4gSGFzUmVz
b3VyY2VBY2Nlc3M6OlllczsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDAzZmUyNDQ3
YjQzZTA4YmE1MWRhNzJhZmYyM2M2OTk5ZjEyNTE1ZTEuLjExNDQ4NjQ0MDViZmFjZWVlOTZmZDBi
Njk1NDliYzExOWU0MjQwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJTdG9yYWdlQmxvY2tpbmdQb2xpY3kuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYW5k
bGVUeXBlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTI5Nyw2ICsyOTgsMjUg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRpb25XYXJu
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldh
cm5pbmc7IH0KICAgICB2b2lkIHNldEhhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRFbmNyeXB0aW9uV2Fy
bmluZyhib29sIHZhbHVlKSB7IG1faGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRpb25XYXJu
aW5nID0gdmFsdWU7IH0KIAorICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeSBwb2xpY3kpIHsgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSBwb2xp
Y3k7IH0KKyAgICBlbnVtIGNsYXNzIFJlc291cmNlVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBB
cHBsaWNhdGlvbkNhY2hlLAorICAgICAgICBDb29raWVzLAorICAgICAgICBHZW9sb2NhdGlvbiwK
KyAgICAgICAgSW5kZXhlZERCLAorICAgICAgICBMb2NhbFN0b3JhZ2UsCisgICAgICAgIFBsdWdp
biwKKyAgICAgICAgU2Vzc2lvblN0b3JhZ2UsCisgICAgICAgIFN0b3JhZ2VNYW5hZ2VyLAorICAg
ICAgICBXZWJTUUwKKyAgICB9OworICAgIGVudW0gY2xhc3MgSGFzUmVzb3VyY2VBY2Nlc3MgOiB1
aW50OF90IHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywKKyAgICAgICAgRGVmYXVsdEZvclRo
aXJkUGFydHksCisgICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIYXNSZXNvdXJjZUFjY2VzcyBj
YW5BY2Nlc3NSZXNvdXJjZShSZXNvdXJjZVR5cGUpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAg
Y2xhc3MgQWRkQ29uc29sZU1lc3NhZ2VUYXNrIDogcHVibGljIFRhc2sgewogICAgIHB1YmxpYzoK
QEAgLTM3OCw2ICszOTgsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCiAgICAgYm9vbCBtX2hhc0xvZ2dlZEF1
dGhlbnRpY2F0ZWRFbmNyeXB0aW9uV2FybmluZyB7IGZhbHNlIH07CisgICAgU3RvcmFnZUJsb2Nr
aW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5IHsgU3RvcmFnZUJsb2NraW5nUG9saWN5
OjpBbGxvd0FsbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMTIyZDg3MDIyYTNkZjY4YmQ5YTlmYzhl
MGRkNDY0ZDg5MDYzODVmNC4uNTU2ODJkMGU0N2NmOGFhZTc3ZjQ5NzgzNDE3OTNhMzVkNTU0MGFj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yMTQ4LDkg
KzIxNDgsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICAvLyBJZiB3ZSBhcmUgbG9hZGluZyB0aGUgbWFp
biByZXNvdXJjZSBvZiBhIHN1YmZyYW1lLCB1c2UgdGhlIGNhY2hlIHBhcnRpdGlvbiBvZiB0aGUg
bWFpbiBkb2N1bWVudC4KICAgICAgICAgbWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigqbV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1haW5SZXNvdXJjZVJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwotICAgICAgICBvcmlnaW4tPnNldFN0b3JhZ2VC
bG9ja2luZ1BvbGljeShmcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuc3RvcmFnZUJs
b2NraW5nUG9saWN5KCkpOwotICAgICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisgICAg
ICAgIGlmIChmcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5n
UG9saWN5KCkgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCisgICAg
ICAgICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGVt
cHR5U3RyaW5nKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gb3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluUmVzb3VyY2VSZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLnVybCgpKTsKKyAgICAgICAgICAgIG1haW5SZXNvdXJjZVJlcXVlc3Quc2V0RG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIG1fbWFpblJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxvYWRl
ci0+cmVxdWVzdE1haW5SZXNvdXJjZShXVEZNb3ZlKG1haW5SZXNvdXJjZVJlcXVlc3QpKS52YWx1
ZV9vcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODVjN2QwMTgzYWMxNmRlMTNhNzE0
NmE4YWRjOTBmZDcyMTk0Mjc5ZC4uMDA4NzBkMzQwNzM0ZmI5YzgxOGE2OTVlMTZlNmZkNWJmMTRi
ZTg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHBhc3Nl
ZE1hbmlmZXN0VQogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNr
IGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUucGFnZSgpLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUudHJlZSgpLnRvcCgpLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVt
ZXJhbFNlc3Npb24oKSB8fCBmcmFtZS5kb2N1bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkFwcGxpY2F0aW9uQ2FjaGUpICE9IFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6Okhhc1Jlc291cmNlQWNjZXNzOjpZZXMpIHsKICAgICAgICAg
cG9zdExpc3RlbmVyVGFzayhldmVudE5hbWVzKCkuY2hlY2tpbmdFdmVudCwgZG9jdW1lbnRMb2Fk
ZXIpOwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBk
b2N1bWVudExvYWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwoRnJh
bWUmIGZyYW1lKQogICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXIuYXBwbGljYXRpb25DYWNoZUhv
c3QoKS5hcHBsaWNhdGlvbkNhY2hlKCkpOwogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5n
IG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS5w
YWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkuY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS50cmVlKCkudG9wKCku
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAoZnJhbWUucGFnZSgpLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8IGZyYW1lLmRvY3VtZW50KCktPmNhbkFjY2Vzc1Jlc291
cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRpb25DYWNo
ZSkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6SGFzUmVzb3VyY2VBY2Nlc3M6Olllcykgewog
ICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5jaGVja2luZ0V2ZW50LCBkb2N1
bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnROYW1lcygpLmVycm9y
RXZlbnQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDA3LDcgKzQwNyw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJhbWUmIGZyYW1lLCBBcHBs
aWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWNjZXNz
IGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlm
IChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS50cmVl
KCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAoZnJhbWUu
cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8IGZyYW1lLmRvY3VtZW50KCktPmNhbkFj
Y2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGlj
YXRpb25DYWNoZSkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6SGFzUmVzb3VyY2VBY2Nlc3M6
OlllcykgewogICAgICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmlz
RW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7CiAg
ICAgICAgIEFTU0VSVCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCBl
ZDc1NjY1MjZiMmQ3ZWZiZjFjNTE3MDIwOTVhODc5YmFmNTY5NDQ3Li42ZjAzMDAyZmFlZjE0Yzky
ZGVjNTE3ZmQxNmVlNzMzNDQxOGRiMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTU2MSwxNCArNTYx
LDE0IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQoKQogICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCkgJiYgbV9kb2N1bWVudExv
YWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCgpICYmICFtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNl
c3Npb24oKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNh
Y2hlQmxvY2tlZEZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9v
bCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tlZEZvclJlcXVl
c3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKIHsKICAgICBhdXRvKiBmcmFtZSA9IG1fZG9jdW1l
bnRMb2FkZXIuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3QudXJsKCkpLT5jYW5BY2Nl
c3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKSk7CisgICAg
cmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkFwcGxpY2F0aW9uQ2FjaGUpICE9IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6Okhhc1Jlc291cmNlQWNjZXNzOjpZZXM7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggODJlZGRjZTNjZDI2Yjcx
MDY0NWZjOTNmMjFlZjg0OWNmZWY4YTQwMi4uNDY2NmFhOGQ4NGI0ZGFmNjAzNjkzNjBiMDQ3YWM3
MDA0NmI2YTMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODM3LDcgKzgzNyw3
IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKCkKICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICghZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoZG9jdW1lbnQt
PnRvcE9yaWdpbigpKSkKKyAgICBpZiAoZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6U2Vzc2lvblN0b3JhZ2UpID09IFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6Okhhc1Jlc291cmNlQWNjZXNzOjpObykKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAgIGlmIChtX3Nlc3Npb25TdG9yYWdl
KQpAQCAtODYzLDcgKzg2Myw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6Omxv
Y2FsU3RvcmFnZSgpCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0xvY2FsU3Rv
cmFnZShudWxscHRyKSkKKyAgICBpZiAoZG9jdW1lbnQtPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9yYWdlKSA9PSBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpIYXNSZXNvdXJjZUFjY2Vzczo6Tm8pCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQt
PnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVmMzQ4MmRmNjQxOWE3NDA1MGZkNDZhZjNi
ZmQwYWM4YjdlOTNkNWYuLjVkM2Y2ODA0MmU3MmYyN2Y5NWQ1NmE1YmU1OTA3ZDQwNWYwNWEwNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzk3MiwxNiArMzk3MiwxNyBAQCB2b2lkIFBhZ2U6OnNl
dHVwRm9yUmVtb3RlV29ya2VyKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmCiAgICAgbWFpbkZyYW1lKCkubG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVkRG9j
dW1lbnQoeyB9KTsKICAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRl
cmVkUGxhY2Vob2xkZXIobWFpbkZyYW1lKCksIHNjcmlwdFVSTCk7CiAgICAgZG9jdW1lbnQtPmNy
ZWF0ZURPTVdpbmRvdygpOwotCiAgICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlk
Q2hhbmdlKCk7CiAKICAgICBhdXRvIG9yaWdpbiA9IHRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigp
OwotICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3RvcmFn
ZUJsb2NraW5nUG9saWN5KCkpOwotCiAgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9V
UkwoKTsKICAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOwogICAg
IGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7Ci0gICAgZG9j
dW1lbnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKSk7CisKKyAgICBpZiAoZG9jdW1lbnQtPnNldHRpbmdzKCkuc3RvcmFnZUJsb2Nr
aW5nUG9saWN5KCkgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCisg
ICAgICAgIGRvY3VtZW50LT5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihTdHJpbmcgeyBlbXB0
eVN0cmluZygpIH0pOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAgICBp
ZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KHJlZmVycmVyUG9saWN5LCBSZWZl
cnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCiAgICAgICAgIGRvY3VtZW50LT5zZXRSZWZl
cnJlclBvbGljeSgqcG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
aW5kZXggNmIxMzBiYjJjZjRhNTQ5ODgzZWYxY2M5MDdhN2E3MmM3NWNkMjliOS4uNjQ5NDIyN2Fk
NTRiMjY0NGIyMGYyNWZjYzMzMWExOTljMTRkNGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKQEAgLTIwOCw3ICsyMDgsNiBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQogICAgICwgbV91bml2ZXJzYWxB
Y2Nlc3MgeyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwgbV9kb21haW5XYXNTZXRJ
bkRPTSB7IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KICAgICAsIG1fY2FuTG9hZExvY2Fs
UmVzb3VyY2VzIHsgb3RoZXItPm1fY2FuTG9hZExvY2FsUmVzb3VyY2VzIH0KLSAgICAsIG1fc3Rv
cmFnZUJsb2NraW5nUG9saWN5IHsgb3RoZXItPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5IH0KICAg
ICAsIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24geyBvdGhlci0+bV9lbmZvcmNlc0ZpbGVQ
YXRoU2VwYXJhdGlvbiB9CiAgICAgLCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1
aXJrIHsgb3RoZXItPm1fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgfQogICAg
ICwgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgeyBvdGhlci0+bV9pc1BvdGVudGlhbGx5VHJ1
c3R3b3J0aHkgfQpAQCAtNDE4LDM2ICs0MTcsNiBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5E
aXNwbGF5KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0
b3BPcmlnaW4sIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgc2hvdWxkQWxsb3dGcm9tVGhpcmRQ
YXJ0eSkgY29uc3QKLXsKLSAgICBpZiAoaXNVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKGlzTG9jYWwoKSAmJiAhbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxz
UXVpcmsoKSAmJiAhbV91bml2ZXJzYWxBY2Nlc3MgJiYgc2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0
eSAhPSBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCi0gICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeTo6QmxvY2tBbGwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBU
aGlzIGNoZWNrIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGFuIEFTU0VSVCBvbmNlIHdlIGNhbiBn
dWFyYW50ZWUgdGhhdCB0b3BPcmlnaW4gaXMgbm90IG51bGwuCi0gICAgaWYgKCF0b3BPcmlnaW4p
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHRvcE9yaWdpbi0+bV9zdG9yYWdlQmxv
Y2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgPT0gQWx3
YXlzQWxsb3dGcm9tVGhpcmRQYXJ0eSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAo
bV91bml2ZXJzYWxBY2Nlc3MpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKChtX3N0
b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrVGhpcmRQ
YXJ0eSB8fCB0b3BPcmlnaW4tPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9j
a2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5KSAmJiAhdG9wT3JpZ2luLT5pc1NhbWVPcmlnaW5B
cygqdGhpcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
CiBTZWN1cml0eU9yaWdpbjo6UG9saWN5IFNlY3VyaXR5T3JpZ2luOjpjYW5TaG93Tm90aWZpY2F0
aW9ucygpIGNvbnN0CiB7CiAgICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQpAQCAtNTE3LDkgKzQ4
Niw2IEBAIHZvaWQgU2VjdXJpdHlPcmlnaW46OmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJM
c1F1aXJrKCkKIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkb21haW5Gb3JDYWNoZVBhcnRpdGlv
bigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFN0b3JhZ2VC
bG9ja2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLQogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJuIGhvc3QoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IGQyYmY3M2RhNjJkM2Y1YTFh
OTc0YTA3YWY3YWMyNTlkZGE2OWFhM2YuLmZmMWQyMmMxNWZlMGJmNDM0ZTFmZWY5NDQ2ZmMyZTgy
Y2M0ZmM5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTI5LDcgKzI5
LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCi0j
aW5jbHVkZSAiU3RvcmFnZUJsb2NraW5nUG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFp
dHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CkBAIC0xMzksMjEgKzEzOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBncmFu
dFVuaXZlcnNhbEFjY2VzcygpOwogICAgIGJvb2wgaGFzVW5pdmVyc2FsQWNjZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV91bml2ZXJzYWxBY2Nlc3M7IH0KIAotICAgIHZvaWQgc2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBwb2xpY3kpIHsgbV9zdG9yYWdlQmxvY2tp
bmdQb2xpY3kgPSBwb2xpY3k7IH0KLQogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZp
bGVVUkxzUXVpcmsoKTsKICAgICBib29sIG5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1
aXJrKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWly
azsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9u
KCkgY29uc3Q7Ci0KLSAgICBib29sIGNhbkFjY2Vzc0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luKiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2lu
KTsgfTsKLSAgICBib29sIGNhbkFjY2Vzc1Nlc3Npb25TdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdp
biwgQWx3YXlzQWxsb3dGcm9tVGhpcmRQYXJ0eSk7IH0KLSAgICBib29sIGNhbkFjY2Vzc0xvY2Fs
U3RvcmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBj
YW5BY2Nlc3NTdG9yYWdlKHRvcE9yaWdpbik7IH07Ci0gICAgYm9vbCBjYW5BY2Nlc3NTdG9yYWdl
TWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UobnVsbHB0cik7IH0KLSAg
ICBib29sIGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9y
aWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQotICAg
IGJvb2wgY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9w
T3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9Ci0g
ICAgYm9vbCBjYW5BY2Nlc3NDb29raWVzKCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0K
LSAgICBib29sIGNhblJlcXVlc3RHZW9sb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1
ZSgpOyB9CiAgICAgUG9saWN5IGNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3Q7CiAKICAgICAv
LyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gaXMgdGhlIG1vc3QgcHJpdmlsZWdlZCBTZWN1cml0
eU9yaWdpbi4KQEAgLTI0NCw3ICsyMzIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91bml2ZXJz
YWxBY2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyB7IGZhbHNlIH07Ci0gICAgU3Rv
cmFnZUJsb2NraW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5IHsgU3RvcmFnZUJsb2Nr
aW5nUG9saWN5OjpBbGxvd0FsbCB9OwogICAgIGJvb2wgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJh
dGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJM
c1F1aXJrIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pc1Bv
dGVudGlhbGx5VHJ1c3R3b3J0aHk7CkBAIC0yNjYsNyArMjUzLDYgQEAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gaW5saW5lIHZvaWQgU2VjdXJpdHlPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb24KICAgICBlbmNvZGVyIDw8IG1fdW5pdmVyc2FsQWNjZXNzOwogICAgIGVuY29kZXIg
PDwgbV9kb21haW5XYXNTZXRJbkRPTTsKICAgICBlbmNvZGVyIDw8IG1fY2FuTG9hZExvY2FsUmVz
b3VyY2VzOwotICAgIGVuY29kZXIgPDwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAgICAgZW5j
b2RlciA8PCBtX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uOwogICAgIGVuY29kZXIgPDwgbV9u
ZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsKICAgICBlbmNvZGVyIDw8IG1faXNQ
b3RlbnRpYWxseVRydXN0d29ydGh5OwpAQCAtMjk1LDggKzI4MSw2IEBAIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IGlubGluZSBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpk
ZWNvZGUoRGVjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUob3JpZ2luLT5tX2NhbkxvYWRMb2NhbFJlc291cmNlcykpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2luZ1Bv
bGljeSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
b3JpZ2luLT5tX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fbmVlZHNTdG9yYWdlQWNj
ZXNzRnJvbUZpbGVVUkxzUXVpcmspKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDI2YmFmNGYwNGQ3M2RiYTc5NWU0ZWY0
MTM5MmY5OTUzZDdmZWIwYWUuLmRkYjAzYjRiMDlmMjhhZDU5ZDk0ZGE5YjJjODczZjU4YmM4YTBl
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5jcHAKQEAgLTUxLDExICs1MSw4IEBAIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICAvLyBzbyB0aGUgRG9jdW1lbnQgaGFkIGJldHRlciBzdGlsbCBhY3R1YWxseSBoYXZlIGEgUGFn
ZS4KICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgpKTsKIAotICAgIGJvb2wgdHJhbnNpZW50ID0g
IWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZkb2N1bWVu
dC50b3BPcmlnaW4oKSk7Ci0KICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gc3RvcmFnZU5h
bWVzcGFjZTsKLQotICAgIGlmICh0cmFuc2llbnQpCisgICAgaWYgKGRvY3VtZW50LmNhbkFjY2Vz
c1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9jYWxTdG9y
YWdlKSA9PSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpIYXNSZXNvdXJjZUFjY2Vzczo6RGVmYXVs
dEZvclRoaXJkUGFydHkpCiAgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmdHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5wYWdlKCkt
PnNlc3Npb25JRCgpKTsKICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmbG9j
YWxTdG9yYWdlTmFtZXNwYWNlKGRvY3VtZW50LnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBmMmYyOThlNzg3
MjBmNzAzMDk5MDJjMmIzYjliZmJhMmJhZGUwYWM0Li41OTMzZTA3NGU4YjYzMjdkMDU2NjFiMzQx
ZTE2MjcyMDk5ZmQyOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcApAQCAtMTE2LDYgKzExNiw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJH
bG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlIHR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlCiAg
ICAgaWYgKG1fdG9wT3JpZ2luLT5uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygp
KQogICAgICAgICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCk7
CiAKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kobV9zZXR0aW5nc1ZhbHVlcy5zdG9yYWdl
QmxvY2tpbmdQb2xpY3kpOwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3Jp
Z2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShvcmlnaW4pKSk7CiAgICAgc2V0Q29udGVudFNlY3Vy
aXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9
LCAqdGhpcykpOwogICAgIHNldENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kocGFyYW1zLmNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDQ1YTQyMjAzNzkz
MzNjYWQ0NmI0ODZlYjI3MmNiOGQyYThkYjAzZjUuLmFiNGY1YTJjZjM1MzAwZDI5M2I3N2UzOTRm
Mzg0ZjhjNzhlZGFiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTIwNCw2ICsyMDQsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcm
IHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC0+
dG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpvYkRhdGEud29ya2VyVHlwZSA9IG9wdGlvbnMudHlw
ZTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI7Cisg
ICAgam9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA9IGNvbnRleHQtPmRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKCk7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gb3B0aW9u
czsKIAogICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMs
IFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKQEAgLTI1Miw2ICsyNTMsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBV
UkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAgICAgam9iRGF0YS50b3BPcmlnaW4gPSBjb250ZXh0
LnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRhLndvcmtlclR5cGUgPSB3b3JrZXJUeXBl
OwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGU7CisgICAg
am9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA9IGNvbnRleHQuZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKTsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAgICAgam9iRGF0
YS5zY3JpcHRVUkwgPSBzY3JpcHRVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCmluZGV4IGYwYWE4NmM1ZGE2
ZjI3OWZkN2UwNzJjZTMyNWEzNWNhMGNjOTNkNDAuLmViZTFhZWNkNzA0N2Q2NGVjY2IzN2NiNjU5
NmVkYzAxNjI3Y2FiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcApAQCAtNzgsNiArNzgsNyBAQCBTZXJ2aWNl
V29ya2VySm9iRGF0YSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
ICAgICByZXN1bHQuY2xpZW50Q3JlYXRpb25VUkwgPSBjbGllbnRDcmVhdGlvblVSTC5pc29sYXRl
ZENvcHkoKTsKICAgICByZXN1bHQudG9wT3JpZ2luID0gdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgp
OwogICAgIHJlc3VsdC5zY29wZVVSTCA9IHNjb3BlVVJMLmlzb2xhdGVkQ29weSgpOworICAgIHJl
c3VsdC5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA9IGRvbWFpbkZvckNhY2hlUGFydGl0aW9uLmlz
b2xhdGVkQ29weSgpOwogICAgIHJlc3VsdC5yZWdpc3RyYXRpb25PcHRpb25zID0gcmVnaXN0cmF0
aW9uT3B0aW9ucy5pc29sYXRlZENvcHkoKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5o
CmluZGV4IGRmYmFkYTM1ZTNkNDkwNzUzYTMxMjAxNjY1ZjlhYWQ1NWUzZjBmMjQuLjA4ZjlmZTll
MjVkMzdmNTQ3ODJiNGE4MDRkYzNkMDE1OTFiMDMzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCkBAIC01NSw2ICs1
NSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YSB7CiAgICAgU2VydmljZVdvcmtlck9y
Q2xpZW50SWRlbnRpZmllciBzb3VyY2VDb250ZXh0OwogICAgIFdvcmtlclR5cGUgd29ya2VyVHlw
ZTsKICAgICBTZXJ2aWNlV29ya2VySm9iVHlwZSB0eXBlOworICAgIFN0cmluZyBkb21haW5Gb3JD
YWNoZVBhcnRpdGlvbjsKICAgICBib29sIGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2Ug
fTsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zIHJlZ2lzdHJhdGlvbk9w
dGlvbnM7CkBAIC03NSw3ICs3Niw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgogdm9pZCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8IGNsaWVu
dENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250ZXh0IDw8
IHdvcmtlclR5cGUgPDwgaXNGcm9tU2VydmljZVdvcmtlclBhZ2U7CisgICAgZW5jb2RlciA8PCBp
ZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8IGNsaWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdp
biA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250ZXh0IDw8IHdvcmtlclR5cGUgPDwgZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24gPDwgaXNGcm9tU2VydmljZVdvcmtlclBhZ2U7CiAgICAgZW5jb2RlciA8
PCB0eXBlOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5
cGU6OlJlZ2lzdGVyOgpAQCAtMTE1LDYgKzExNiw4IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShq
b2JEYXRhLndvcmtlclR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbikpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRh
LmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEudHlwZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGU1NTNkMWNk
YjgzNTMxYjk0MjA2YTU4ZmUyZGRkZDA0ZWNkYWVmMzkuLjdjMzY0MmZlMzM4MWM5NmE5NGQxNTVj
YzQ3YWFiZTljZTg1NmI3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC01MTAsNyArNTEwLDcgQEAgdm9pZCBTV1NlcnZl
cjo6c3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwg
U1dTZXJ2ZXJSZWcKICAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBqb2JEYXRhLnRvcE9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpOwogICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpOwogCi0gICAgICAgIHJlcXVlc3Quc2V0RG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24odG9wT3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihqb2JEYXRhLmRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKTsKICAgICAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7
CiAgICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob3JpZ2luVVJMKHRvcE9y
aWdpbikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcAppbmRleCA3NGRmMjc1MTc4Y2E4ODBmODlmOTI5OTY1ODg3Mjk2ZDBkZjM1YTg4Li5hZjc3
YzM1OWVkNWUwZjVjZGU0MTIzMGY5NTEwNGNjN2ZlYjg0ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgV29y
a2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0VGhyZWFk
JiB0aHJlYWQsIFJlZjxKU0M6OlYKIHsKICAgICArK2dOdW1iZXJPZldvcmtsZXRHbG9iYWxTY29w
ZXM7CiAKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kocGFyYW1ldGVycy5zZXR0aW5nc1Zh
bHVlcy5zdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5
KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0aGlz
LT51cmwoKSkpKTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250
ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHRoaXMtPnVybCgpIH0sICp0aGlzKSk7CiB9CkBAIC03
NSw2ICs3Niw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPEpTQzo6Vk0+JiYgdm0sIFNjCiAKICAgICBBU1NFUlQoZG9jdW1l
bnQucGFnZSgpKTsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShtX2RvY3VtZW50LT5z
ZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKICAgICBzZXRTZWN1cml0eU9yaWdp
blBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUodGhpcy0+dXJsKCkpKSk7CiAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlx
dWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB0aGlzLT51cmwoKSB9LCAqdGhpcykpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCA0NWEwMTFiZTU1NjYyMDdjOWNhYzQ1ZjllZjYwOTJjZTgwMTUwMDFmLi5lNjg0Y2EwODZm
ZGE5NTZhYjg1YTY0OTFkMmU1NTY2OWM1N2UzNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNjEzLDggKzYxMyw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc3Rv
cmFnZUJsb2NraW5nUG9saWN5ID0gIWZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkuY2FuQWNjZXNzUGx1Z2luU3RvcmFnZShmcmFtZSgpLT5kb2N1bWVudCgpLT50b3BPcmlnaW4o
KSk7Ci0KKyAgICBib29sIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IGZyYW1lKCktPmRvY3VtZW50
KCktPmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlw
ZTo6UGx1Z2luKSAhPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpIYXNSZXNvdXJjZUFjY2Vzczo6
WWVzOwogICAgIG1fcGx1Z2luLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoc3RvcmFnZUJs
b2NraW5nUG9saWN5KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457149</attachid>
            <date>2022-04-08 22:46:03 -0700</date>
            <delta_ts>2022-04-09 01:29:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238524-20220408224601.patch</filename>
            <type>text/plain</type>
            <size>40399</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQzODdkNThhNzY0YjI1
ZmM4MjA0ODVlYmQ3ZDMzMGZjYWY0OGMyMS4uZTEyNDAzNmY1MDA3NWYzY2ExOGYyM2RlNDEzZjk2
ZGE1Yzk1ZGJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIyLTA0LTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3Rv
cmFnZSgpIGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MTMxODI1OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBDaHJpcyBEdW1lei4KKworICAgICAgICBBZGQgY2FuQWNjZXNzUmVzb3VyY2UoKSB0byBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IGJlY2F1c2UgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW5zdGVh
ZCBvZiBTZWN1cml0eU9yaWdpbiwgCisgICAgICAgIHNob3VsZCBiZSB0aGUgcGxhY2UgdGhhdCBo
b2xkcyBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgKG90aGVyd2lzZSBpdCdzIGNvbmZ1c2luZyB0aGF0
IHRoZSBvcmlnaW4gYW5kIHRvcCBvcmlnaW4gCisgICAgICAgIGRpc2FncmVlcyB3aXRoIGVhY2gg
b3RoZXIgb24gcG9saWN5KS4gQWxzbywgYmVjYXVzZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGhh
cyBhY2Nlc3MgdG8gb3JpZ2luIGFuZCB0b3BPcmlnaW4sCisgICAgICAgIGNhbGxlcnMgZG9uJ3Qg
bmVlZCB0byBleHBsaWNpdGx5IGdldCB0aGVtIGJlZm9yZSB0aGUgYWNjZXNzIGNoZWNrLgorCisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9u
OjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVzdHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVGhyb3dTZWN1
cml0eUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuSW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb25uZWN0aW9uSW5mbyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01X
aW5kb3dXZWJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dXZWJEYXRh
YmFzZTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bV93aGl0ZXNwYWNlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2llKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlRdWlja0xvb2tTYW5kYm94KToKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjppc09yaWdpbkVxdWl2YWxlbnRUb0xvY2FsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhbkFjY2Vzc1Jlc291cmNlIGNvbnN0KToKKyAg
ICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldHVwRm9yUmVtb3RlV29ya2VyKToKKyAgICAgICAgKiBw
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6Y2FuQWNjZXNzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpzZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFj
Y2Vzc0RhdGFiYXNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjYW5BY2Nlc3NTZXNzaW9uU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzTG9jYWxTdG9yYWdlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NTdG9y
YWdlTWFuYWdlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y2FuQWNjZXNzUGx1Z2luU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQ29v
a2llcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y2FuUmVxdWVzdEdlb2xvY2F0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9jcmVkZW50aWFscyk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lz
dHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENv
cHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToKKyAgICAgICAgKiB3b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNj
b3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUpOgorCiAyMDIyLTA0LTA4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgLyBPcHRpbWl6ZSB0aGUgd2hpdGVz
cGFjZSBjYWNoZSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ODIyZjZlN2EzZWRhNTdkM2Iw
MTJiOGQwZjUzNGRjOTczZjQyNjhkLi5kM2VlYTFiOWFhNzVmODYyNGNkN2JiMjFhYjY0ZjJkODVk
NGVkNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTA0LTA4ICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY2FuQWNjZXNzU3RvcmFnZSgp
IGNoZWNrIGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS85MTMxODI1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJp
cyBEdW1lei4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2Vk
KToKKwogMjAyMi0wNC0wOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTI0MjkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNjU0M2YzOTE5ODNjN2M0
NjMzZDI3OGE5ZWE5NWY1MGMzOTlhMjRmZS4uMWVmNGVkODdiOThiNTE5ZDNmMWM1NTFjOWE1YmM3
OGRiMTVlODdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmNwcApAQCAtOTYsMTEgKzk2LDEwIEBAIHZvaWQgQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1
cmF0aW9uKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBhdXRvIGFjY2VzcyA9IENETVByaXZhdGU6OkxvY2Fs
U3RvcmFnZUFjY2Vzczo6QWxsb3dlZDsKICAgICBib29sIGlzRXBoZW1lcmFsID0gIWRvY3VtZW50
LT5wYWdlKCkgfHwgZG9jdW1lbnQtPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsK
LQotICAgIFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KTsKLSAgICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luID0gZG9jdW1lbnQtPnRvcE9yaWdpbigp
OwotICAgIENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MgPSAhaXNFcGhlbWVy
YWwgJiYgb3JpZ2luLmNhbkFjY2Vzc0xvY2FsU3RvcmFnZSgmdG9wT3JpZ2luKSA/IENETVByaXZh
dGU6OkxvY2FsU3RvcmFnZUFjY2Vzczo6QWxsb3dlZCA6IENETVByaXZhdGU6OkxvY2FsU3RvcmFn
ZUFjY2Vzczo6Tm90QWxsb3dlZDsKKyAgICBpZiAoaXNFcGhlbWVyYWwgfHwgZG9jdW1lbnQtPmNh
bkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6TG9j
YWxTdG9yYWdlKSA9PSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpIYXNSZXNvdXJjZUFjY2Vzczo6
Tm8pCisgICAgICAgIGFjY2VzcyA9IENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vzczo6Tm90
QWxsb3dlZDsKICAgICBtX3ByaXZhdGUtPmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92
ZShjYW5kaWRhdGVDb25maWd1cmF0aW9uKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bi5jcHAKaW5kZXggY2QzNzJmNDM2OTFhZGQ0ZDdkZjBjOWU1MjU3MGVhZmZkMjkzNDAzNy4uYTBm
M2EyZjUwODI2ZGIzMWNmN2Q2YzEzM2U0ZGZjNDdiYWMyNzUyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTM3MSw3ICsz
NzEsNyBAQCBib29sIEdlb2xvY2F0aW9uOjpzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVzdHMo
KQogICAgIGJvb2wgaXNTZWN1cmUgPSBTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmUoZG9jdW1lbnQo
KS0+dXJsKCkpIHx8IGRvY3VtZW50KCktPmlzU2VjdXJlQ29udGV4dCgpOwogICAgIGJvb2wgaGFz
TWl4ZWRDb250ZW50ID0gIWRvY3VtZW50KCktPmZvdW5kTWl4ZWRDb250ZW50KCkuaXNFbXB0eSgp
OwogICAgIGJvb2wgaXNMb2NhbE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKTsK
LSAgICBpZiAoc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkpIHsKKyAg
ICBpZiAoZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6UmVzb3VyY2VUeXBlOjpHZW9sb2NhdGlvbikgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
SGFzUmVzb3VyY2VBY2Nlc3M6Ok5vKSB7CiAgICAgICAgIGlmIChpc0xvY2FsT3JpZ2luIHx8IChp
c1NlY3VyZSAmJiAhaGFzTWl4ZWRDb250ZW50KSB8fCBpc1JlcXVlc3RGcm9tSUJvb2tzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA1NmMxNzI3ZGRiODIxMGQxMzY5Nzc1
YmJjMzk1ZWY3ZjhmYjYzOTk2Li5hYzI3N2Q5YWFmMzNlOTExN2U1ZjI1YTBmZTViODcyMzRhZTdj
NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmNwcApAQCAtNTQsMTAgKzU0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVGhyb3dTZWN1cml0eUV4
Y2VwdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc0RhdGFiYXNlKG51bGxwdHIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29udGV4dC5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpSZXNvdXJjZVR5cGU6OkluZGV4ZWREQikgPT0gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6SGFzUmVzb3VyY2VBY2Nlc3M6Ok5vOwogfQogCiBSZWY8SURCRmFjdG9yeT4g
SURCRmFjdG9yeTo6Y3JlYXRlKElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0
aW9uUHJveHkpCkBAIC05MSw3ICs4OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1
ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiSURCRmFjdG9yeS5vcGVuKCkg
Y2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCJfcyB9OwogCiAgICAgQVNTRVJU
KGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgYm9vbCBpc1RyYW5zaWVudCA9ICFjb250
ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKCZjb250ZXh0LnRvcE9yaWdp
bigpKTsKKyAgICBib29sIGlzVHJhbnNpZW50ID0gKGNvbnRleHQuY2FuQWNjZXNzUmVzb3VyY2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpJbmRleGVkREIpID09IFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6Okhhc1Jlc291cmNlQWNjZXNzOjpEZWZhdWx0Rm9yVGhpcmRQYXJ0
eSk7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBT
ZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBT
ZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBpc1RyYW5z
aWVudCk7CiAgICAgaWYgKCFkYXRhYmFzZUlkZW50aWZpZXIuaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiSURCRmFjdG9yeS5vcGVuKCkgY2FsbGVkIHdp
dGggYW4gaW52YWxpZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKQEAgLTExMiw3ICsxMDksNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciwgIklEQkZhY3RvcnkuZGVsZXRlRGF0YWJhc2UoKSBjYWxsZWQgaW4gYW4gaW52YWxp
ZCBzZWN1cml0eSBjb250ZXh0Il9zIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9y
aWdpbigpKTsKLSAgICBib29sIGlzVHJhbnNpZW50ID0gIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4o
KS0+Y2FuQWNjZXNzRGF0YWJhc2UoJmNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIGJvb2wgaXNU
cmFuc2llbnQgPSAoY29udGV4dC5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpSZXNvdXJjZVR5cGU6OkluZGV4ZWREQikgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
SGFzUmVzb3VyY2VBY2Nlc3M6OkRlZmF1bHRGb3JUaGlyZFBhcnR5KTsKICAgICBJREJEYXRhYmFz
ZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7
IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7
IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGlzVHJhbnNpZW50KTsKICAgICBpZiAoIWRh
dGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIHdpdGggYW4gaW52
YWxpZCBzZWN1cml0eSBvcmlnaW4iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDYzNmI0OGM5ZjA0NzliYzVhZTMxOTRl
YTFlODkwNTY5NjU3MTdhNDUuLmRkNzJjNGE0Mzg5ZGNlNTUwNDhiN2EyNDQ1ZjIyMmY0NGRkYjQz
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmNwcApAQCAtNjcsMTIgKzY3LDExIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxDb25uZWN0aW9u
SW5mbz4gY29ubmVjdGlvbkluZm8oTmF2aWdhdG9yQmFzZSogbmF2aWdhdG9yKQogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAi
Q29udGV4dCBpcyBpbnZhbGlkIl9zIH07CiAKLSAgICBhdXRvKiBvcmlnaW4gPSBjb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpOwotICAgIGlmICghb3JpZ2luKQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJPcmlnaW4gaXMgaW52YWxpZCJfcyB9OworICAgIGlm
IChjb250ZXh0LT5jYW5BY2Nlc3NSZXNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpSZXNv
dXJjZVR5cGU6OlN0b3JhZ2VNYW5hZ2VyKSA9PSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpIYXNS
ZXNvdXJjZUFjY2Vzczo6Tm8pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJDb250ZXh0IG5vdCBhY2Nlc3Mgc3RvcmFnZSJfcyB9OwogCi0gICAgaWYgKCFvcmlnaW4tPmNh
bkFjY2Vzc1N0b3JhZ2VNYW5hZ2VyKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJPcmlnaW4gc2hvdWxkIG5vdCBhY2Nlc3Mgc3RvcmFnZSJfcyB9OworICAgIGF1dG8q
IG9yaWdpbiA9IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgQVNTRVJUKG9yaWdpbik7
CiAKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBj
b25uZWN0aW9uID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLT5zdG9yYWdlQ29ubmVjdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01X
aW5kb3dXZWJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcAppbmRleCA1NmFjMGU0MjJkZDRkZjkzNmUzY2NiMDBj
ZTVmNDVjM2Q2NTU0MTViLi44MTgxNWI0NTgyYWM3YmY2MDAyMjJhYzA0NmY5YzM2MDI3NTA0N2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcApAQCAtNDcsOSArNDcsOSBAQCBFeGNlcHRpb25PcjxS
ZWZQdHI8RGF0YWJhc2U+PiBET01XaW5kb3dXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKERPTVdp
bmRvdyYgd2luZAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9Owog
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTdG9yYWdlLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXZWIgU1FMIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ug
SW5kZXhlZERCIGluc3RlYWQuIl9zKTsKIAotICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKCFzZWN1cml0eU9yaWdpbi5jYW5BY2Nl
c3NEYXRhYmFzZSgmZG9jdW1lbnQtPnRvcE9yaWdpbigpKSkKKyAgICBpZiAoZG9jdW1lbnQtPmNh
bkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6V2Vi
U1FMKSAhPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpIYXNSZXNvdXJjZUFjY2Vzczo6WWVzKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OworCiAgICAgYXV0byBy
ZXN1bHQgPSBtYW5hZ2VyLm9wZW5EYXRhYmFzZSgqd2luZG93LmRvY3VtZW50KCksIG5hbWUsIHZl
cnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBXVEZNb3ZlKGNyZWF0aW9uQ2FsbGJh
Y2spKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBUbyBwcmVzZXJ2ZSBvdXIgcGFzdCBiZWhhdmlvciwgdGhpcyBkaXNjYXJkcyB0aGUgZXJyb3Ig
c3RyaW5nIGluIHRoZSBleGNlcHRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA0MDU1
YzRhMjI1MDZhYWI4NTY2YzAyNGNkZWVhMDhkYzYxY2I2YWY1Li4zODAxYmVkM2NmMjI1YmFiMTgy
YWJjYTkzZmI5NzFlOGJkOTY2NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYzMiw2
ICs2MzIsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5n
cyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bQogICAgICAgICBub2RlTGlzdEFuZENv
bGxlY3Rpb25Db3VudCA9IDA7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZEV2
ZW50TGlzdGVuZXJzVG9Ob2RlKCp0aGlzKTsKKyAgICBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
bV9zZXR0aW5ncy0+c3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwogfQogCiB2b2lkIERvY3VtZW50
OjpjcmVhdGVOZXdJZGVudGlmaWVyKCkKQEAgLTUzNDAsNyArNTM0MSw3IEBAIEV4Y2VwdGlvbk9y
PFN0cmluZz4gRG9jdW1lbnQ6OmNvb2tpZSgpCiAgICAgaWYgKGlzQ29va2llQXZlcnNlKCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGlmICghc2VjdXJpdHlPcmlnaW4oKS5jYW5B
Y2Nlc3NDb29raWVzKCkpCisgICAgaWYgKGNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlJlc291cmNlVHlwZTo6Q29va2llcykgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6SGFzUmVzb3VyY2VBY2Nlc3M6Ok5vKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2Vj
dXJpdHlFcnJvciB9OwogCiAgICAgVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOwpA
QCAtNTM2MSw3ICs1MzYyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OnNldENvb2tp
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlmIChpc0Nvb2tpZUF2ZXJzZSgpKQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgaWYgKCFzZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc0Nvb2tp
ZXMoKSkKKyAgICBpZiAoY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
UmVzb3VyY2VUeXBlOjpDb29raWVzKSA9PSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpIYXNSZXNv
dXJjZUFjY2Vzczo6Tm8pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9y
IH07CiAKICAgICBVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CkBAIC01NzkxLDcg
KzU3OTIsNyBAQCBib29sIERvY3VtZW50OjptZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHkoKSBj
b25zdAogCiB2b2lkIERvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpCiB7
Ci0gICAgc2VjdXJpdHlPcmlnaW4oKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3Mo
KS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CisgICAgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5
KHNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwogfQogCiAvLyBVc2VkIG9ubHkg
YnkgV2ViS2l0TGVnYWN5LgpAQCAtNjM0Nyw3ICs2MzQ4LDYgQEAgdm9pZCBEb2N1bWVudDo6aW5p
dFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbigpLnNldEVuZm9y
Y2VzRmlsZVBhdGhTZXBhcmF0aW9uKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgc2VjdXJpdHlP
cmlnaW4oKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tp
bmdQb2xpY3koKSk7CiAKICAgICBSZWZQdHIgcGFyZW50RG9jdW1lbnQgPSBvd25lckVsZW1lbnQo
KSA/ICZvd25lckVsZW1lbnQoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYgKHBhcmVu
dERvY3VtZW50ICYmIG1fZnJhbWUtPmxvYWRlcigpLnNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1
bWVudCh1cmwoKSkpIHsKQEAgLTc4ODgsOCArNzg4OCw4IEBAIHZvaWQgRG9jdW1lbnQ6OmFwcGx5
UXVpY2tMb29rU2FuZGJveCgpCiAgICAgQVNTRVJUKCFkb2N1bWVudFVSTC5wcm90b2NvbElzKFFM
UHJldmlld1Byb3RvY29sKSk7CiAgICAgQVNTRVJUKHJlc3BvbnNlVVJMLnByb3RvY29sSXMoUUxQ
cmV2aWV3UHJvdG9jb2wpKTsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTdG9yYWdl
QmxvY2tpbmdQb2xpY3k6OkJsb2NrQWxsKTsKICAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZU5vbkxvY2FsV2l0aEFsbG93ZWRGaWxlUGF0aChyZXNwb25zZVVS
TCwgZG9jdW1lbnRVUkwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgc2VjdXJpdHlPcmlnaW4tPnNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkJsb2NrQWxsKTsK
ICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRl
KFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKSk7CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBxdWlja0xvb2tDU1AgPSBtYWtlU3RyaW5nKCJkZWZhdWx0LXNyYyAiLCBRTFByZXZp
ZXdQcm90b2NvbCwgIjogJ3Vuc2FmZS1pbmxpbmUnOyBiYXNlLXVyaSAnbm9uZSc7IHNhbmRib3gg
YWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDM4ZjA3MTEwN2Q3NzZlZjZiZWI0NDc5
Y2IwNTc5N2ViZTBjNWIxMDQuLjIyODdiMWI5ZTJkY2E2ZDI3NjYzNjhkNmFmNTQ1ZTliYjA0MGQ3
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
QEAgLTU3OCw3ICs1NzgsMTMgQEAgSlNDOjpKU0dsb2JhbE9iamVjdCogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6Z2xvYmFsT2JqZWN0KCkKIAogU3RyaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kb21haW5G
b3JDYWNoZVBhcnRpdGlvbi5pc051bGwoKSA/IHRvcE9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKCkgOiBtX2RvbWFpbkZvckNhY2hlUGFydGl0aW9uOworICAgIGlmICghbV9kb21haW5G
b3JDYWNoZVBhcnRpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fZG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb247CisKKyAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgIT0gU3RvcmFn
ZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworCisgICAgcmV0dXJuIHRvcE9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFydGl0aW9u
KCk7CiB9CiAKIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWxsb3dzTWVkaWFEZXZpY2Vz
KCkgY29uc3QKQEAgLTcwOSw0ICs3MTUsMzcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojpwb3N0VGFza1RvUmVzcG9uc2libGVEb2N1bWVudChGdW5jdGlvbjx2b2lkKERvY3VtZW4KICAg
ICAgICAgY2FsbGJhY2soKmRvY3VtZW50KTsKIH0KIAorc3RhdGljIGJvb2wgaXNPcmlnaW5FcXVp
dmFsZW50VG9Mb2NhbChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVy
biBvcmlnaW4uaXNMb2NhbCgpICYmICFvcmlnaW4ubmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVV
UkxzUXVpcmsoKSAmJiAhb3JpZ2luLmhhc1VuaXZlcnNhbEFjY2VzcygpOworfQorCitTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpIYXNSZXNvdXJjZUFjY2VzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpjYW5BY2Nlc3NSZXNvdXJjZShSZXNvdXJjZVR5cGUgdHlwZSkgY29uc3QKK3sKKyAgICBhdXRv
KiBvcmlnaW4gPSBzZWN1cml0eU9yaWdpbigpOworICAgIGlmICghb3JpZ2luIHx8IG9yaWdpbi0+
aXNVbmlxdWUoKSkKKyAgICAgICAgcmV0dXJuIEhhc1Jlc291cmNlQWNjZXNzOjpObzsKKworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpDb29raWVzOgorICAgIGNh
c2UgUmVzb3VyY2VUeXBlOjpHZW9sb2NhdGlvbjoKKyAgICAgICAgcmV0dXJuIEhhc1Jlc291cmNl
QWNjZXNzOjpZZXM7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OkFwcGxpY2F0aW9uQ2FjaGU6Cisg
ICAgY2FzZSBSZXNvdXJjZVR5cGU6OlBsdWdpbjoKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6V2Vi
U1FMOgorICAgIGNhc2UgUmVzb3VyY2VUeXBlOjpJbmRleGVkREI6CisgICAgY2FzZSBSZXNvdXJj
ZVR5cGU6OkxvY2FsU3RvcmFnZToKKyAgICBjYXNlIFJlc291cmNlVHlwZTo6U3RvcmFnZU1hbmFn
ZXI6CisgICAgICAgIGlmIChpc09yaWdpbkVxdWl2YWxlbnRUb0xvY2FsKCpvcmlnaW4pKQorICAg
ICAgICAgICAgcmV0dXJuIEhhc1Jlc291cmNlQWNjZXNzOjpObzsKKyAgICAgICAgRkFMTFRIUk9V
R0g7CisgICAgY2FzZSBSZXNvdXJjZVR5cGU6OlNlc3Npb25TdG9yYWdlOgorICAgICAgICBpZiAo
bV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0Fs
bCkKKyAgICAgICAgICAgIHJldHVybiBIYXNSZXNvdXJjZUFjY2Vzczo6Tm87CisgICAgICAgIGlm
ICgobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9j
a1RoaXJkUGFydHkpICYmICF0b3BPcmlnaW4oKS5pc1NhbWVPcmlnaW5Bcygqb3JpZ2luKSAmJiAh
b3JpZ2luLT5oYXNVbml2ZXJzYWxBY2Nlc3MoKSkKKyAgICAgICAgICAgIHJldHVybiBIYXNSZXNv
dXJjZUFjY2Vzczo6RGVmYXVsdEZvclRoaXJkUGFydHk7CisgICAgICAgIHJldHVybiBIYXNSZXNv
dXJjZUFjY2Vzczo6WWVzOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMDNmZTI0NDdi
NDNlMDhiYTUxZGE3MmFmZjIzYzY5OTlmMTI1MTVlMS4uM2ZmYzVmZGUwNWI3ZDMwYjEyMDIxYzU5
MDM3YTA5ZDdhNjQ0MTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VCbG9ja2luZ1BvbGljeS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hhbmRs
ZVR5cGVzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMjk3LDYgKzI5OCwyMSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldhcm5p
bmcoKSBjb25zdCB7IHJldHVybiBtX2hhc0xvZ2dlZEF1dGhlbnRpY2F0ZWRFbmNyeXB0aW9uV2Fy
bmluZzsgfQogICAgIHZvaWQgc2V0SGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRpb25XYXJu
aW5nKGJvb2wgdmFsdWUpIHsgbV9oYXNMb2dnZWRBdXRoZW50aWNhdGVkRW5jcnlwdGlvbldhcm5p
bmcgPSB2YWx1ZTsgfQogCisgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFn
ZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHBvbGlj
eTsgfQorICAgIGVudW0gY2xhc3MgUmVzb3VyY2VUeXBlIDogdWludDhfdCB7CisgICAgICAgIEFw
cGxpY2F0aW9uQ2FjaGUsCisgICAgICAgIENvb2tpZXMsCisgICAgICAgIEdlb2xvY2F0aW9uLAor
ICAgICAgICBJbmRleGVkREIsCisgICAgICAgIExvY2FsU3RvcmFnZSwKKyAgICAgICAgUGx1Z2lu
LAorICAgICAgICBTZXNzaW9uU3RvcmFnZSwKKyAgICAgICAgU3RvcmFnZU1hbmFnZXIsCisgICAg
ICAgIFdlYlNRTAorICAgIH07CisgICAgZW51bSBjbGFzcyBIYXNSZXNvdXJjZUFjY2VzcyA6IHVp
bnQ4X3QgeyBObywgWWVzLCBEZWZhdWx0Rm9yVGhpcmRQYXJ0eSB9OworICAgIFdFQkNPUkVfRVhQ
T1JUIEhhc1Jlc291cmNlQWNjZXNzIGNhbkFjY2Vzc1Jlc291cmNlKFJlc291cmNlVHlwZSkgY29u
c3Q7CisKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRhc2sgOiBwdWJs
aWMgVGFzayB7CiAgICAgcHVibGljOgpAQCAtMzc4LDYgKzM5NCw3IEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ICAgICBib29sIG1faGFzTG9nZ2VkQXV0aGVudGljYXRlZEVuY3J5cHRpb25XYXJuaW5nIHsgZmFs
c2UgfTsKKyAgICBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kg
eyBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAx
MjJkODcwMjJhM2RmNjhiZDlhOWZjOGUwZGQ0NjRkODkwNjM4NWY0Li41NTY4MmQwZTQ3Y2Y4YWFl
NzdmNDk3ODM0MTc5M2EzNWQ1NTQwYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKQEAgLTIxNDgsOSArMjE0OCwxMiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjps
b2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIC8vIElm
IHdlIGFyZSBsb2FkaW5nIHRoZSBtYWluIHJlc291cmNlIG9mIGEgc3ViZnJhbWUsIHVzZSB0aGUg
Y2FjaGUgcGFydGl0aW9uIG9mIHRoZSBtYWluIGRvY3VtZW50LgogICAgICAgICBtYWluUmVzb3Vy
Y2VSZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKCptX2ZyYW1lLT5kb2N1bWVudCgp
KTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobWFpblJlc291cmNlUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7Ci0gICAg
ICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGZyYW1lTG9hZGVyKCktPmZyYW1l
KCkuc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7Ci0gICAgICAgIG1haW5SZXNv
dXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgaWYgKGZyYW1lTG9hZGVyKCktPmZyYW1lKCkuc2V0
dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSAhPSBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6
OkJsb2NrVGhpcmRQYXJ0eSkKKyAgICAgICAgICAgIG1haW5SZXNvdXJjZVJlcXVlc3Quc2V0RG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1haW5SZXNvdXJj
ZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgbWFpblJlc291
cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgbV9tYWluUmVzb3VyY2Ug
PSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0TWFpblJlc291cmNlKFdURk1vdmUobWFp
blJlc291cmNlUmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRl
eCA4NWM3ZDAxODNhYzE2ZGUxM2E3MTQ2YThhZGM5MGZkNzIxOTQyNzlkLi4wMDg3MGQzNDA3MzRm
YjljODE4YTY5NWUxNmU2ZmQ1YmYxNGJlODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTM4LDcg
KzEzOCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZShGcmFtZSYg
ZnJhbWUsIGNvbnN0IFVSTCYgcGFzc2VkTWFuaWZlc3RVCiAgICAgfQogCiAgICAgLy8gRG9uJ3Qg
YWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgot
ICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFt
ZS50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAo
ZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8IGZyYW1lLmRvY3VtZW50KCkt
PmNhbkFjY2Vzc1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6
QXBwbGljYXRpb25DYWNoZSkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6SGFzUmVzb3VyY2VB
Y2Nlc3M6OlllcykgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50TmFtZXMoKS5jaGVj
a2luZ0V2ZW50LCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSYgZnJhbWUpCiAgICAgQVNTRVJUKCFkb2N1bWVudExv
YWRlci5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLmFwcGxpY2F0aW9uQ2FjaGUoKSk7CiAKICAgICAv
LyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVu
YWJsZWQuCi0gICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAh
ZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNh
Y2hlKGZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewor
ICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgZnJhbWUuZG9j
dW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3Vy
Y2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlKSAhPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpIYXNS
ZXNvdXJjZUFjY2Vzczo6WWVzKSB7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnROYW1l
cygpLmNoZWNraW5nRXZlbnQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVy
VGFzayhldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICBy
ZXR1cm47CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnVw
ZGF0ZShGcmFtZSYgZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVPcHRpb24gdXAKICAgICB9
CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dz
aW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKSB8fCAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NBcHBs
aWNhdGlvbkNhY2hlKGZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpKSkgeworICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwg
ZnJhbWUuZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6UmVzb3VyY2VUeXBlOjpBcHBsaWNhdGlvbkNhY2hlKSAhPSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpIYXNSZXNvdXJjZUFjY2Vzczo6WWVzKSB7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdN
YXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKG1fcGVuZGlu
Z0VudHJpZXMuaXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2NhY2hlQmVpbmdVcGRhdGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwCmluZGV4IGVkNzU2NjUyNmIyZDdlZmJmMWM1MTcwMjA5NWE4NzliYWY1
Njk0NDcuLjZmMDMwMDJmYWVmMTRjOTJkZWM1MTdmZDE2ZWU3MzM0NDE4ZGIyZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcApAQCAtNTYxLDE0ICs1NjEsMTQgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpCiAgICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXIu
ZnJhbWUoKSAmJiBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkub2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKS0+
cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVCbG9ja2VkRm9yUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0
aW9uQ2FjaGVCbG9ja2VkRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQogewogICAg
IGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudExvYWRlci5mcmFtZSgpOwogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIVNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
cmVxdWVzdC51cmwoKSktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPmRvY3VtZW50
KCktPnRvcE9yaWdpbigpKTsKKyAgICByZXR1cm4gZnJhbWUtPmRvY3VtZW50KCktPmNhbkFjY2Vz
c1Jlc291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlJlc291cmNlVHlwZTo6QXBwbGljYXRp
b25DYWNoZSkgIT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6SGFzUmVzb3VyY2VBY2Nlc3M6Olll
czsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAppbmRleCA4MmVkZGNlM2NkMjZiNzEwNjQ1ZmM5M2YyMWVmODQ5Y2ZlZjhhNDAyLi40NjY2YWE4
ZDg0YjRkYWY2MDM2OTM2MGIwNDdhYzcwMDQ2YjZhMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCkBAIC04MzcsNyArODM3LDcgQEAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRv
dzo6c2Vzc2lvblN0b3JhZ2UoKQogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgaWYgKCFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NT
ZXNzaW9uU3RvcmFnZShkb2N1bWVudC0+dG9wT3JpZ2luKCkpKQorICAgIGlmIChkb2N1bWVudC0+
Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpT
ZXNzaW9uU3RvcmFnZSkgPT0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6SGFzUmVzb3VyY2VBY2Nl
c3M6Ok5vKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OwogCiAg
ICAgaWYgKG1fc2Vzc2lvblN0b3JhZ2UpCkBAIC04NjMsNyArODYzLDcgQEAgRXhjZXB0aW9uT3I8
U3RvcmFnZSo+IERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkKICAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkuY2FuQWNjZXNzTG9jYWxTdG9yYWdlKG51bGxwdHIpKQorICAgIGlmIChkb2N1bWVudC0+
Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpM
b2NhbFN0b3JhZ2UpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Okhhc1Jlc291cmNlQWNjZXNz
OjpObykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAogICAg
IGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZWYz
NDgyZGY2NDE5YTc0MDUwZmQ0NmFmM2JmZDBhYzhiN2U5M2Q1Zi4uNWQzZjY4MDQyZTcyZjI3Zjk1
ZDU2YTViZTU5MDdkNDA1ZjA1YTA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zOTcyLDE2ICsz
OTcyLDE3IEBAIHZvaWQgUGFnZTo6c2V0dXBGb3JSZW1vdGVXb3JrZXIoY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYKICAgICBtYWluRnJhbWUoKS5sb2FkZXIo
KS5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOwogICAgIGF1dG8gZG9jdW1lbnQgPSBE
b2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWluRnJhbWUoKSwgc2NyaXB0
VVJMKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7Ci0KICAgICBkb2N1bWVudC0+
c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIGF1dG8gb3JpZ2luID0gdG9w
T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7Ci0KICAgICBhdXRvIG9y
aWdpbkFzVVJMID0gb3JpZ2luLT50b1VSTCgpOwogICAgIGRvY3VtZW50LT5zZXRTaXRlRm9yQ29v
a2llcyhvcmlnaW5Bc1VSTCk7CiAgICAgZG9jdW1lbnQtPnNldEZpcnN0UGFydHlGb3JDb29raWVz
KG9yaWdpbkFzVVJMKTsKLSAgICBkb2N1bWVudC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
b3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKworICAgIGlmIChkb2N1bWVudC0+
c2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSAhPSBTdG9yYWdlQmxvY2tpbmdQb2xp
Y3k6OkJsb2NrVGhpcmRQYXJ0eSkKKyAgICAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hl
UGFydGl0aW9uKFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgZWxzZQorICAgICAgICBk
b2N1bWVudC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbigpKTsKIAogICAgIGlmIChhdXRvIHBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xp
Y3kocmVmZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkKICAg
ICAgICAgZG9jdW1lbnQtPnNldFJlZmVycmVyUG9saWN5KCpwb2xpY3kpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA2YjEzMGJiMmNmNGE1NDk4ODNlZjFjYzkwN2E3
YTcyYzc1Y2QyOWI5Li42NDk0MjI3YWQ1NGIyNjQ0YjIwZjI1ZmNjMzMxYTE5OWMxNGQ0YjgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjA4LDcgKzIwOCw2IEBA
IFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3Ro
ZXIpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyB7IG90aGVyLT5tX3VuaXZlcnNhbEFjY2VzcyB9
CiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NIHsgb3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00g
fQogICAgICwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgeyBvdGhlci0+bV9jYW5Mb2FkTG9jYWxS
ZXNvdXJjZXMgfQotICAgICwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBvdGhlci0+bV9zdG9y
YWdlQmxvY2tpbmdQb2xpY3kgfQogICAgICwgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbiB7
IG90aGVyLT5tX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIH0KICAgICAsIG1fbmVlZHNTdG9y
YWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBvdGhlci0+bV9uZWVkc1N0b3JhZ2VBY2Nlc3NG
cm9tRmlsZVVSTHNRdWlyayB9CiAgICAgLCBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB7IG90
aGVyLT5tX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB9CkBAIC00MTgsMzYgKzQxNyw2IEBAIGJv
b2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc1N0b3JhZ2Uo
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgU2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0
eSBzaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5KSBjb25zdAotewotICAgIGlmIChpc1VuaXF1ZSgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXNMb2NhbCgpICYmICFuZWVkc1N0
b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpICYmICFtX3VuaXZlcnNhbEFjY2VzcyAmJiBz
aG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ICE9IEFsd2F5c0FsbG93RnJvbVRoaXJkUGFydHkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja0FsbCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgg
YW4gQVNTRVJUIG9uY2Ugd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRvcE9yaWdpbiBpcyBub3QgbnVs
bC4KLSAgICBpZiAoIXRvcE9yaWdpbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAo
dG9wT3JpZ2luLT5tX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9PSBTdG9yYWdlQmxvY2tpbmdQb2xp
Y3k6OkJsb2NrQWxsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoc2hvdWxkQWxs
b3dGcm9tVGhpcmRQYXJ0eSA9PSBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBpZiAoKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IFN0b3JhZ2VCbG9j
a2luZ1BvbGljeTo6QmxvY2tUaGlyZFBhcnR5IHx8IHRvcE9yaWdpbi0+bV9zdG9yYWdlQmxvY2tp
bmdQb2xpY3kgPT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpICYmICF0
b3BPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFNlY3VyaXR5T3JpZ2luOjpQb2xpY3kgU2VjdXJpdHlP
cmlnaW46OmNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV91bml2ZXJz
YWxBY2Nlc3MpCkBAIC01MTcsOSArNDg2LDYgQEAgdm9pZCBTZWN1cml0eU9yaWdpbjo6Z3JhbnRT
dG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKQogCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46
OmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9zdG9yYWdlQmxv
Y2tpbmdQb2xpY3kgIT0gU3RvcmFnZUJsb2NraW5nUG9saWN5OjpCbG9ja1RoaXJkUGFydHkpCi0g
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCiAgICAgaWYgKGlzSFRUUEZhbWlseSgpKQog
ICAgICAgICByZXR1cm4gaG9zdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgK
aW5kZXggZDJiZjczZGE2MmQzZjVhMWE5NzRhMDdhZjdhYzI1OWRkYTY5YWEzZi4uZmYxZDIyYzE1
ZmUwYmY0MzRlMWZlZjk0NDZmYzJlODJjYzRmYzk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uaApAQCAtMjksNyArMjksNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJTdG9yYWdlQmxvY2tpbmdQb2xpY3kuaCIK
ICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTEzOSwyMSArMTM4LDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIGdyYW50VW5pdmVyc2FsQWNjZXNzKCk7CiAgICAgYm9vbCBoYXNV
bml2ZXJzYWxBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VuaXZlcnNhbEFjY2VzczsgfQogCi0g
ICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5IHBv
bGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHBvbGljeTsgfQotCiAgICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpOwogICAgIGJvb2wgbmVlZHNTdG9y
YWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU3RvcmFn
ZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdDsKLQotICAgIGJvb2wgY2FuQWNjZXNzRGF0
YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2Fu
QWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9OwotICAgIGJvb2wgY2FuQWNjZXNzU2Vzc2lvblN0
b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2Fu
QWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luLCBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5KTsgfQot
ICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BP
cmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsKLSAg
ICBib29sIGNhbkFjY2Vzc1N0b3JhZ2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNz
U3RvcmFnZShudWxscHRyKTsgfQotICAgIGJvb2wgY2FuQWNjZXNzUGx1Z2luU3RvcmFnZShjb25z
dCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9y
YWdlKCZ0b3BPcmlnaW4pOyB9Ci0gICAgYm9vbCBjYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0
b3JhZ2UoJnRvcE9yaWdpbik7IH0KLSAgICBib29sIGNhbkFjY2Vzc0Nvb2tpZXMoKSBjb25zdCB7
IHJldHVybiAhaXNVbmlxdWUoKTsgfQotICAgIGJvb2wgY2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KICAgICBQb2xpY3kgY2FuU2hvd05vdGlmaWNh
dGlvbnMoKSBjb25zdDsKIAogICAgIC8vIFRoZSBsb2NhbCBTZWN1cml0eU9yaWdpbiBpcyB0aGUg
bW9zdCBwcml2aWxlZ2VkIFNlY3VyaXR5T3JpZ2luLgpAQCAtMjQ0LDcgKzIzMiw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Rv
bWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2FuTG9hZExvY2FsUmVzb3Vy
Y2VzIHsgZmFsc2UgfTsKLSAgICBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tp
bmdQb2xpY3kgeyBTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsIH07CiAgICAgYm9vbCBt
X2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNT
dG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgeyBmYWxzZSB9OwogICAgIG11dGFibGUgc3Rk
OjpvcHRpb25hbDxib29sPiBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTsKQEAgLTI2Niw3ICsy
NTMsNiBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBTZWN1cml0eU9yaWdp
bjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXIgPDwgbV91bml2ZXJz
YWxBY2Nlc3M7CiAgICAgZW5jb2RlciA8PCBtX2RvbWFpbldhc1NldEluRE9NOwogICAgIGVuY29k
ZXIgPDwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXM7Ci0gICAgZW5jb2RlciA8PCBtX3N0b3JhZ2VC
bG9ja2luZ1BvbGljeTsKICAgICBlbmNvZGVyIDw8IG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRp
b247CiAgICAgZW5jb2RlciA8PCBtX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJr
OwogICAgIGVuY29kZXIgPDwgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk7CkBAIC0yOTUsOCAr
MjgxLDYgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gU2VjdXJpdHlPcmlnaW46OmRlY29kZShEZWMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fY2FuTG9hZExvY2FsUmVzb3VyY2Vz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmln
aW4tPm1fc3RvcmFnZUJsb2NraW5nUG9saWN5KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4tPm1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRp
b24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9y
aWdpbi0+bV9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaykpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXgg
MjZiYWY0ZjA0ZDczZGJhNzk1ZTRlZjQxMzkyZjk5NTNkN2ZlYjBhZS4uZGRiMDNiNGIwOWYyOGFk
NTlkOTRkYTliMmM4NzNmNThiYzhhMGVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNTEsMTEgKzUxLDggQEAgUmVm
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIC8vIHNvIHRoZSBEb2N1bWVudCBoYWQgYmV0dGVyIHN0
aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwog
Ci0gICAgYm9vbCB0cmFuc2llbnQgPSAhZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nl
c3NMb2NhbFN0b3JhZ2UoJmRvY3VtZW50LnRvcE9yaWdpbigpKTsKLQogICAgIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBzdG9yYWdlTmFtZXNwYWNlOwotCi0gICAgaWYgKHRyYW5zaWVudCkKKyAg
ICBpZiAoZG9jdW1lbnQuY2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
UmVzb3VyY2VUeXBlOjpMb2NhbFN0b3JhZ2UpID09IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Okhh
c1Jlc291cmNlQWNjZXNzOjpEZWZhdWx0Rm9yVGhpcmRQYXJ0eSkKICAgICAgICAgc3RvcmFnZU5h
bWVzcGFjZSA9ICZ0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoZG9jdW1lbnQudG9wT3Jp
Z2luKCksIGRvY3VtZW50LnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwogICAgIGVsc2UKICAgICAgICAg
c3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoZG9jdW1lbnQucGFnZSgp
LT5zZXNzaW9uSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCmluZGV4IGYyZjI5OGU3ODcyMGY3MDMwOTkwMmMyYjNiOWJmYmEyYmFkZTBhYzQuLjU5
MzNlMDc0ZThiNjMyN2QwNTY2MWIzNDFlMTYyNzIwOTlmZDI5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xMTYsNiArMTE2LDcgQEAgV29y
a2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUgdHlwZSwg
Y29uc3QgV29ya2VyUGFyYW1ldGUKICAgICBpZiAobV90b3BPcmlnaW4tPm5lZWRzU3RvcmFnZUFj
Y2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCkpCiAgICAgICAgIG9yaWdpbi0+Z3JhbnRTdG9yYWdlQWNj
ZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSht
X3NldHRpbmdzVmFsdWVzLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAgICAgc2V0U2VjdXJpdHlP
cmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbikp
KTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJp
dHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiAgICAgc2V0Q3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeShwYXJhbXMuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHAKaW5kZXggNDVhNDIyMDM3OTMzM2NhZDQ2YjQ4NmViMjcyY2I4ZDJhOGRiMDNmNS4uYWI0
ZjVhMmNmMzUzMDBkMjkzYjc3ZTM5NGYzODRmOGM3OGVkYWJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cApAQCAtMjA0LDYgKzIwNCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVn
aXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0
YS50b3BPcmlnaW4gPSBjb250ZXh0LT50b3BPcmlnaW4oKS5kYXRhKCk7CiAgICAgam9iRGF0YS53
b3JrZXJUeXBlID0gb3B0aW9ucy50eXBlOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3Jr
ZXJKb2JUeXBlOjpSZWdpc3RlcjsKKyAgICBqb2JEYXRhLmRvbWFpbkZvckNhY2hlUGFydGl0aW9u
ID0gY29udGV4dC0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKICAgICBqb2JEYXRhLnJlZ2lz
dHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCiAgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxT
ZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRh
KSkpOwpAQCAtMjUyLDYgKzI1Myw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBk
YXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYKICAgICBqb2JE
YXRhLnRvcE9yaWdpbiA9IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpvYkRhdGEu
d29ya2VyVHlwZSA9IHdvcmtlclR5cGU7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtl
ckpvYlR5cGU6OlVwZGF0ZTsKKyAgICBqb2JEYXRhLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uID0g
Y29udGV4dC5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpOwogICAgIGpvYkRhdGEuc2NvcGVVUkwg
PSBzY29wZVVSTDsKICAgICBqb2JEYXRhLnNjcmlwdFVSTCA9IHNjcmlwdFVSTDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0
YS5jcHAKaW5kZXggZjBhYTg2YzVkYTZmMjc5ZmQ3ZTA3MmNlMzI1YTM1Y2EwY2M5M2Q0MC4uZWJl
MWFlY2Q3MDQ3ZDY0ZWNjYjM3Y2I2NTk2ZWRjMDE2MjdjYWI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCkBA
IC03OCw2ICs3OCw3IEBAIFNlcnZpY2VXb3JrZXJKb2JEYXRhIFNlcnZpY2VXb3JrZXJKb2JEYXRh
Ojppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJlc3VsdC5jbGllbnRDcmVhdGlvblVSTCA9IGNs
aWVudENyZWF0aW9uVVJMLmlzb2xhdGVkQ29weSgpOwogICAgIHJlc3VsdC50b3BPcmlnaW4gPSB0
b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCk7CiAgICAgcmVzdWx0LnNjb3BlVVJMID0gc2NvcGVVUkwu
aXNvbGF0ZWRDb3B5KCk7CisgICAgcmVzdWx0LmRvbWFpbkZvckNhY2hlUGFydGl0aW9uID0gZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24uaXNvbGF0ZWRDb3B5KCk7CiAgICAgcmVzdWx0LnJlZ2lzdHJh
dGlvbk9wdGlvbnMgPSByZWdpc3RyYXRpb25PcHRpb25zLmlzb2xhdGVkQ29weSgpOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggZGZiYWRhMzVlM2Q0OTA3NTNhMzEyMDE2NjVm
OWFhZDU1ZTNmMGYyNC4uMDhmOWZlOWUyNWQzN2Y1NDc4MmI0YTgwNGRjM2QwMTU5MWIwMzNlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JEYXRhLmgKQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
IHsKICAgICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZUNvbnRleHQ7CiAg
ICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAgIFNlcnZpY2VXb3JrZXJKb2JUeXBlIHR5cGU7
CisgICAgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uOwogICAgIGJvb2wgaXNGcm9tU2Vy
dmljZVdvcmtlclBhZ2UgeyBmYWxzZSB9OwogCiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bk9wdGlvbnMgcmVnaXN0cmF0aW9uT3B0aW9uczsKQEAgLTc1LDcgKzc2LDcgQEAgcHJpdmF0ZToK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJKb2JEYXRhOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIo
KSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25VUkwgPDwgdG9wT3JpZ2luIDw8IHNjb3Bl
VVJMIDw8IHNvdXJjZUNvbnRleHQgPDwgd29ya2VyVHlwZSA8PCBpc0Zyb21TZXJ2aWNlV29ya2Vy
UGFnZTsKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIoKSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50
Q3JlYXRpb25VUkwgPDwgdG9wT3JpZ2luIDw8IHNjb3BlVVJMIDw8IHNvdXJjZUNvbnRleHQgPDwg
d29ya2VyVHlwZSA8PCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA8PCBpc0Zyb21TZXJ2aWNlV29y
a2VyUGFnZTsKICAgICBlbmNvZGVyIDw8IHR5cGU7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI6CkBAIC0xMTUsNiArMTE2LDggQEAg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gU2VydmljZVdvcmtlckpvYkRhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEud29ya2VyVHlwZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLmRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS50
eXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKaW5kZXggZTU1M2QxY2RiODM1MzFiOTQyMDZhNThmZTJkZGRkMDRlY2RhZWYzOS4u
N2MzNjQyZmUzMzgxYzk2YTk0ZDE1NWNjNDdhYWJlOWNlODU2YjdkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTUxMCw3
ICs1MTAsNyBAQCB2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBTV1NlcnZlclJlZwogICAgICAgICBhdXRvIHRvcE9yaWdp
biA9IGpvYkRhdGEudG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgICAgIGF1dG8gb3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCk7CiAKLSAgICAg
ICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbih0b3BPcmlnaW4tPmRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKCkpOworICAgICAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogICAgICAgICByZXF1ZXN0
LnNldEFsbG93Q29va2llcyh0cnVlKTsKICAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9y
Q29va2llcyhvcmlnaW5VUkwodG9wT3JpZ2luKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDc0ZGYyNzUxNzhjYTg4MGY4OWY5Mjk5
NjU4ODcyOTZkMGRmMzVhODguLmFmNzdjMzU5ZWQ1ZTBmNWNkZTQxMjMwZjk1MTA0Y2M3ZmViODRl
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNw
cApAQCAtNTgsNiArNTgsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29w
ZShXb3JrZXJPcldvcmtsZXRUaHJlYWQmIHRocmVhZCwgUmVmPEpTQzo6VgogewogICAgICsrZ051
bWJlck9mV29ya2xldEdsb2JhbFNjb3BlczsKIAorICAgIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eShwYXJhbWV0ZXJzLnNldHRpbmdzVmFsdWVzLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAgICAg
c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKHRoaXMtPnVybCgpKSkpOwogICAgIHNldENvbnRlbnRTZWN1cml0
eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgdGhpcy0+dXJs
KCkgfSwgKnRoaXMpKTsKIH0KQEAgLTc1LDYgKzc2LDcgQEAgV29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SlNDOjpWTT4mJiB2bSwg
U2MKIAogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCisgICAgc2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KG1fZG9jdW1lbnQtPnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkp
OwogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVh
dGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0aGlzLT51cmwoKSkpKTsKICAgICBzZXRDb250ZW50
U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHRo
aXMtPnVybCgpIH0sICp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ1YTAxMWJlNTU2NjIwN2M5Y2FjNDVmOWVmNjA5
MmNlODAxNTAwMWYuLmU2ODRjYTA4NmZkYTk1NmFiODVhNjQ5MWQyZTU1NjY5YzU3ZTM0ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC02MTMsOCArNjEzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNo
YW5nZWQoKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYm9vbCBzdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSAhZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NQbHVnaW5TdG9yYWdlKGZyYW1lKCkt
PmRvY3VtZW50KCktPnRvcE9yaWdpbigpKTsKLQorICAgIGJvb2wgc3RvcmFnZUJsb2NraW5nUG9s
aWN5ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Y2FuQWNjZXNzUmVzb3VyY2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6UmVzb3VyY2VUeXBlOjpQbHVnaW4pICE9IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6Okhhc1Jlc291cmNlQWNjZXNzOjpZZXM7CiAgICAgbV9wbHVnaW4tPnN0b3JhZ2VCbG9ja2lu
Z1N0YXRlQ2hhbmdlZChzdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>