<?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>237839</bug_id>
          
          <creation_ts>2022-03-14 10:28:06 -0700</creation_ts>
          <short_desc>CoreIPC Hardening: Add user gesture check when saving images</short_desc>
          <delta_ts>2022-03-16 15:26: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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237986</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1850929</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-14 10:28:06 -0700</bug_when>
    <thetext>We should check that a user gesture is being handled when the &apos;performActionOnElement&apos; message handler is attempting to save images to the user&apos;s media Library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850930</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-14 10:28:25 -0700</bug_when>
    <thetext>&lt;rdar://72058321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851081</commentid>
    <comment_count>2</comment_count>
      <attachid>454637</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-14 17:05:18 -0700</bug_when>
    <thetext>Created attachment 454637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851331</commentid>
    <comment_count>3</comment_count>
      <attachid>454637</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-15 09:26:41 -0700</bug_when>
    <thetext>Comment on attachment 454637
Patch

Presumably, if the WebContent process is compromised enough that it can send bogus IPC, it is compromised enough that it can bypass this user gesture check no? My understanding was that any hardening should be done on IPC recipient side for this reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851334</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-15 09:33:09 -0700</bug_when>
    <thetext>One idea (may need refining) is that WebPageProxy::performActionOnElement() could generate some kind of permission token (e.g. a UUID) and send it with the WebPage::PerformActionOnElement IPC. Then, when WebPage::performActionOnElement() sends IPC back, it would have to pass this same token that the UIProcess could validate.

This way, we&apos;d be sure that the WebPageProxy::SaveImageToLibrary IPC was the legitimate result of a legit WebPage::PerformActionOnElement IPC from the UIProcess.
Or something in that spirit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851339</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-15 09:40:43 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 454637 [details]
&gt; Patch
&gt; 
&gt; Presumably, if the WebContent process is compromised enough that it can send
&gt; bogus IPC, it is compromised enough that it can bypass this user gesture
&gt; check no? My understanding was that any hardening should be done on IPC
&gt; recipient side for this reason.

Yes -- I misunderstood how the UserGestureIndicator worked -- this checks for the indicator, but it won&apos;t exist yet. We would need to pass the token with the message.

I don&apos;t see examples of message passing UI tokens, Instead, we just send a boolean -- but I don&apos;t think that improves things at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851341</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-15 09:42:56 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #5)
&gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; Comment on attachment 454637 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Presumably, if the WebContent process is compromised enough that it can send
&gt; &gt; bogus IPC, it is compromised enough that it can bypass this user gesture
&gt; &gt; check no? My understanding was that any hardening should be done on IPC
&gt; &gt; recipient side for this reason.
&gt; 
&gt; Yes -- I misunderstood how the UserGestureIndicator worked -- this checks
&gt; for the indicator, but it won&apos;t exist yet. We would need to pass the token
&gt; with the message.
&gt; 
&gt; I don&apos;t see examples of message passing UI tokens, Instead, we just send a
&gt; boolean -- but I don&apos;t think that improves things at all.

As suggested above, we could send a UI token (like a UUID). If I remember correctly, I did just that for Geolocation permission.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851342</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-15 09:44:14 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Brent Fulgham from comment #5)
&gt; &gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; &gt; Comment on attachment 454637 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Presumably, if the WebContent process is compromised enough that it can send
&gt; &gt; &gt; bogus IPC, it is compromised enough that it can bypass this user gesture
&gt; &gt; &gt; check no? My understanding was that any hardening should be done on IPC
&gt; &gt; &gt; recipient side for this reason.
&gt; &gt; 
&gt; &gt; Yes -- I misunderstood how the UserGestureIndicator worked -- this checks
&gt; &gt; for the indicator, but it won&apos;t exist yet. We would need to pass the token
&gt; &gt; with the message.
&gt; &gt; 
&gt; &gt; I don&apos;t see examples of message passing UI tokens, Instead, we just send a
&gt; &gt; boolean -- but I don&apos;t think that improves things at all.
&gt; 
&gt; As suggested above, we could send a UI token (like a UUID). If I remember
&gt; correctly, I did just that for Geolocation permission.

See this example:
DidReceiveGeolocationPermissionDecision(WebKit::GeolocationIdentifier geolocationID, String authorizationToken)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851400</commentid>
    <comment_count>8</comment_count>
      <attachid>454734</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-15 11:35:57 -0700</bug_when>
    <thetext>Created attachment 454734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851414</commentid>
    <comment_count>9</comment_count>
      <attachid>454734</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-15 11:46:06 -0700</bug_when>
    <thetext>Comment on attachment 454734
Patch

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

It looks like I need to rebase my build before I can put this patch up.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2718
&gt; +    StdSet&lt;uint64_t&gt; m_userGestureTokens;

@Chris: This duplicates work you did for the GeoLocation manager. Should we modify GeoLocation to make use of this authentication token storage?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851417</commentid>
    <comment_count>10</comment_count>
      <attachid>454738</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-15 11:52:40 -0700</bug_when>
    <thetext>Created attachment 454738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851441</commentid>
    <comment_count>11</comment_count>
      <attachid>454738</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-15 12:39:00 -0700</bug_when>
    <thetext>Comment on attachment 454738
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2397
&gt; +    bool isValidAuthorizationToken(const String&amp; authorizationToken) const;

Same comment as below about the name being so generic while this is not truly reusable.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2398
&gt; +    void revokeAuthorizationToken(const String&amp; authorizationToken);

ditto.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2716
&gt; +    StdSet&lt;uint64_t&gt; m_userGestureTokens;

This is unused I think.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:3074
&gt; +    HashSet&lt;String&gt; m_validAuthorizationTokens;

I wonder a bit about the naming being so generic. It makes it look like this is directly reusable for other IPCs. However, I don&apos;t think that&apos;s true with the current implementation.
I don&apos;t think you would want the WebProcess to use an auth token from PerformActionOnElement to do some other operation in the UIProcess that is not the result of the PerformActionOnElement IPC.

E.g. It might need to be a HashMap from the IPC message name to the auth token. Alternatively, we could keep using a HashSet but the auth-token would be specific to the IPC message name (e.g. &quot;PerformActionOnElement-[UUID]&quot;).

If we start using this more (which sounds plausible), then we&apos;ll like need something a bit better to better restrict this to certain IPCs. As a result, I would suggest using a more specific name for now (e.g. m_performActionOnElementAuthTokens).
Alternatively, we can try and solve the &quot;how to make it generic&quot; problem now but I&apos;d be OK just crossing that bridge when we get there and use a specific name for now.

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:605
&gt; +    if (!isValidAuthorizationToken(authorizationToken))

This does a double HashSet lookup which is unfortunate: once for the contains, and then again for the remove. This is not great practice.

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:617
&gt; +    auto authorizationToken = needsAuthorizationToken(action) ? createVersion4UUIDString() : String();

Do we really gain much by only passing an authorizationToken for SaveImage? Why can&apos;t we just always send one, seems like it would make the code simpler. 

With the sendWithAsyncReply() I propose below, the auth token will get nicely revoked no matter what.

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:620
&gt; +    m_process-&gt;send(Messages::WebPage::PerformActionOnElement(action, authorizationToken), m_webPageID);

I think it would be nice to use sendWithAsyncReply() and revoke the auth token in the reply lambda.

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:3285
&gt; +        send(Messages::WebPageProxy::SaveImageToLibrary(SharedMemory::IPCHandle { WTFMove(handle), buffer-&gt;size() }, authorizationToken));

It is probably a good idea to do the same for the `send(Messages::WebPageProxy::WritePromisedAttachmentToPasteboard(WTFMove(attachmentInfo)));` call above in this function no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851461</commentid>
    <comment_count>12</comment_count>
      <attachid>454738</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-15 13:17:43 -0700</bug_when>
    <thetext>Comment on attachment 454738
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2397
&gt;&gt; +    bool isValidAuthorizationToken(const String&amp; authorizationToken) const;
&gt; 
&gt; Same comment as below about the name being so generic while this is not truly reusable.

Will do.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2398
&gt;&gt; +    void revokeAuthorizationToken(const String&amp; authorizationToken);
&gt; 
&gt; ditto.

Will do.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2716
&gt;&gt; +    StdSet&lt;uint64_t&gt; m_userGestureTokens;
&gt; 
&gt; This is unused I think.

Whoops!

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:3074
&gt;&gt; +    HashSet&lt;String&gt; m_validAuthorizationTokens;
&gt; 
&gt; I wonder a bit about the naming being so generic. It makes it look like this is directly reusable for other IPCs. However, I don&apos;t think that&apos;s true with the current implementation.
&gt; I don&apos;t think you would want the WebProcess to use an auth token from PerformActionOnElement to do some other operation in the UIProcess that is not the result of the PerformActionOnElement IPC.
&gt; 
&gt; E.g. It might need to be a HashMap from the IPC message name to the auth token. Alternatively, we could keep using a HashSet but the auth-token would be specific to the IPC message name (e.g. &quot;PerformActionOnElement-[UUID]&quot;).
&gt; 
&gt; If we start using this more (which sounds plausible), then we&apos;ll like need something a bit better to better restrict this to certain IPCs. As a result, I would suggest using a more specific name for now (e.g. m_performActionOnElementAuthTokens).
&gt; Alternatively, we can try and solve the &quot;how to make it generic&quot; problem now but I&apos;d be OK just crossing that bridge when we get there and use a specific name for now.

I&apos;ll use m_performActionOnElementAuthTokens for now.

&gt;&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:605
&gt;&gt; +    if (!isValidAuthorizationToken(authorizationToken))
&gt; 
&gt; This does a double HashSet lookup which is unfortunate: once for the contains, and then again for the remove. This is not great practice.

I&apos;m not even sure this method is needed. I only use it in the &apos;saveImageToLibrary&apos;, which does a message check using the token. I could probably do a find and remove in that method without needing this specialized method.

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:3285
&gt;&gt; +        send(Messages::WebPageProxy::SaveImageToLibrary(SharedMemory::IPCHandle { WTFMove(handle), buffer-&gt;size() }, authorizationToken));
&gt; 
&gt; It is probably a good idea to do the same for the `send(Messages::WebPageProxy::WritePromisedAttachmentToPasteboard(WTFMove(attachmentInfo)));` call above in this function no?

I wasn&apos;t sure if some sites might write to pasteboard based on script execution as a convenience for the user. I think we are less worried about pasteboard writes than pasteboard reads. But I&apos;m happy to make that change if you think it&apos;s warranted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851462</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-15 13:20:32 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #12)
&gt; Comment on attachment 454738 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=454738&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2397
&gt; &gt;&gt; +    bool isValidAuthorizationToken(const String&amp; authorizationToken) const;
&gt; &gt; 
&gt; &gt; Same comment as below about the name being so generic while this is not truly reusable.
&gt; 
&gt; Will do.
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2398
&gt; &gt;&gt; +    void revokeAuthorizationToken(const String&amp; authorizationToken);
&gt; &gt; 
&gt; &gt; ditto.
&gt; 
&gt; Will do.
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2716
&gt; &gt;&gt; +    StdSet&lt;uint64_t&gt; m_userGestureTokens;
&gt; &gt; 
&gt; &gt; This is unused I think.
&gt; 
&gt; Whoops!
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:3074
&gt; &gt;&gt; +    HashSet&lt;String&gt; m_validAuthorizationTokens;
&gt; &gt; 
&gt; &gt; I wonder a bit about the naming being so generic. It makes it look like this is directly reusable for other IPCs. However, I don&apos;t think that&apos;s true with the current implementation.
&gt; &gt; I don&apos;t think you would want the WebProcess to use an auth token from PerformActionOnElement to do some other operation in the UIProcess that is not the result of the PerformActionOnElement IPC.
&gt; &gt; 
&gt; &gt; E.g. It might need to be a HashMap from the IPC message name to the auth token. Alternatively, we could keep using a HashSet but the auth-token would be specific to the IPC message name (e.g. &quot;PerformActionOnElement-[UUID]&quot;).
&gt; &gt; 
&gt; &gt; If we start using this more (which sounds plausible), then we&apos;ll like need something a bit better to better restrict this to certain IPCs. As a result, I would suggest using a more specific name for now (e.g. m_performActionOnElementAuthTokens).
&gt; &gt; Alternatively, we can try and solve the &quot;how to make it generic&quot; problem now but I&apos;d be OK just crossing that bridge when we get there and use a specific name for now.
&gt; 
&gt; I&apos;ll use m_performActionOnElementAuthTokens for now.
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:605
&gt; &gt;&gt; +    if (!isValidAuthorizationToken(authorizationToken))
&gt; &gt; 
&gt; &gt; This does a double HashSet lookup which is unfortunate: once for the contains, and then again for the remove. This is not great practice.
&gt; 
&gt; I&apos;m not even sure this method is needed. I only use it in the
&gt; &apos;saveImageToLibrary&apos;, which does a message check using the token. I could
&gt; probably do a find and remove in that method without needing this
&gt; specialized method.
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:3285
&gt; &gt;&gt; +        send(Messages::WebPageProxy::SaveImageToLibrary(SharedMemory::IPCHandle { WTFMove(handle), buffer-&gt;size() }, authorizationToken));
&gt; &gt; 
&gt; &gt; It is probably a good idea to do the same for the `send(Messages::WebPageProxy::WritePromisedAttachmentToPasteboard(WTFMove(attachmentInfo)));` call above in this function no?
&gt; 
&gt; I wasn&apos;t sure if some sites might write to pasteboard based on script
&gt; execution as a convenience for the user. I think we are less worried about
&gt; pasteboard writes than pasteboard reads. But I&apos;m happy to make that change
&gt; if you think it&apos;s warranted.

I think we should add the restriction for WritePromisedAttachmentToPasteboard. I checked and the only call site for the WritePromisedAttachmentToPasteboard IPC is in WebPage::performActionOnElement(). WebPage::performActionOnElement() is only called as a result of the WebPage::PerformActionOnElement IPC from the UIProcess.

Therefore, I think the check is safe and very similar to the image saving case. It is also not much added complexity I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851488</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-15 13:56:17 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; 
&gt; I think we should add the restriction for
&gt; WritePromisedAttachmentToPasteboard. I checked and the only call site for
&gt; the WritePromisedAttachmentToPasteboard IPC is in
&gt; WebPage::performActionOnElement(). WebPage::performActionOnElement() is only
&gt; called as a result of the WebPage::PerformActionOnElement IPC from the
&gt; UIProcess.
&gt; 
&gt; Therefore, I think the check is safe and very similar to the image saving
&gt; case. It is also not much added complexity I think.

Will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851874</commentid>
    <comment_count>15</comment_count>
      <attachid>454856</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-16 10:29:45 -0700</bug_when>
    <thetext>Created attachment 454856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851883</commentid>
    <comment_count>16</comment_count>
      <attachid>454858</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-16 10:37:08 -0700</bug_when>
    <thetext>Created attachment 454858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851891</commentid>
    <comment_count>17</comment_count>
      <attachid>454858</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-16 10:46:16 -0700</bug_when>
    <thetext>Comment on attachment 454858
Patch

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

r=me with changes.

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:608
&gt; +    sendWithAsyncReply(Messages::WebPage::PerformActionOnElement(action, authorizationToken), [weakThis = WeakPtr { *this }, authorizationToken] () mutable {

authorizationToken = WTFMove(authorizationToken)

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:3243
&gt;  {

I think you should just add the following at the beginning of the function:
CompletionHandlerCallingScope callCompletionHandler(WTFMove(completionHandler));

Then you wouldn&apos;t need to call the completionHandler on every early return (which is a foot-gun).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851894</commentid>
    <comment_count>18</comment_count>
      <attachid>454858</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-16 10:53:12 -0700</bug_when>
    <thetext>Comment on attachment 454858
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:608
&gt;&gt; +    sendWithAsyncReply(Messages::WebPage::PerformActionOnElement(action, authorizationToken), [weakThis = WeakPtr { *this }, authorizationToken] () mutable {
&gt; 
&gt; authorizationToken = WTFMove(authorizationToken)

I tried this initially, and it resulted in the message send getting an empty string (I guess because the PerformActionOnElement constructor runs after the &apos;authorizationToken&apos; is moved into the lambda).

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:3243
&gt;&gt;  {
&gt; 
&gt; I think you should just add the following at the beginning of the function:
&gt; CompletionHandlerCallingScope callCompletionHandler(WTFMove(completionHandler));
&gt; 
&gt; Then you wouldn&apos;t need to call the completionHandler on every early return (which is a foot-gun).

Oh! I was thinking such a thing would be good to have -- I didn&apos;t know it existed already. That&apos;s great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851896</commentid>
    <comment_count>19</comment_count>
      <attachid>454858</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-16 10:56:32 -0700</bug_when>
    <thetext>Comment on attachment 454858
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:608
&gt;&gt;&gt; +    sendWithAsyncReply(Messages::WebPage::PerformActionOnElement(action, authorizationToken), [weakThis = WeakPtr { *this }, authorizationToken] () mutable {
&gt;&gt; 
&gt;&gt; authorizationToken = WTFMove(authorizationToken)
&gt; 
&gt; I tried this initially, and it resulted in the message send getting an empty string (I guess because the PerformActionOnElement constructor runs after the &apos;authorizationToken&apos; is moved into the lambda).

Oh, you&apos;re right. My bad. I didn&apos;t realize it was being used on the same line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851901</commentid>
    <comment_count>20</comment_count>
      <attachid>454865</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-16 11:08:34 -0700</bug_when>
    <thetext>Created attachment 454865
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851916</commentid>
    <comment_count>21</comment_count>
      <attachid>454873</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-16 11:47:31 -0700</bug_when>
    <thetext>Created attachment 454873
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851935</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-16 12:33:24 -0700</bug_when>
    <thetext>Patch 454865 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851939</commentid>
    <comment_count>23</comment_count>
      <attachid>454873</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-16 12:37:22 -0700</bug_when>
    <thetext>Comment on attachment 454873
Patch for landing

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:10195
&gt; +#if PLATFORM(IOS_FAMILY)

This looks a bit weird. Seems like the whole writePromisedAttachmentToPasteboard function and (its IPC message) should be protected via `#if PLATFORM(IOS_FAMILY)`, not just the hardening. It makes it look like we&apos;re not doing hardening on macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851965</commentid>
    <comment_count>24</comment_count>
      <attachid>454890</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-16 13:35:26 -0700</bug_when>
    <thetext>Created attachment 454890
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852007</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-16 15:00:03 -0700</bug_when>
    <thetext>Committed r291371 (248503@main): &lt;https://commits.webkit.org/248503@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454890.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454637</attachid>
            <date>2022-03-14 17:05:18 -0700</date>
            <delta_ts>2022-03-15 11:35:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237839-20220314170517.patch</filename>
            <type>text/plain</type>
            <size>1906</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU1N2M5MDVjMDhlNDU4NmE1
ZDE3NjZmNzgwOGIzM2I5YzY2YzAxOWQuLmVjNzQ2NjRmMzQ1ZWRkYmFhYjRjZGU4Yzg3MGZjZThk
MzJiOGJlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMTQgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29yZUlQQyBIYXJkZW5pbmc6
IEFkZCB1c2VyIGdlc3R1cmUgY2hlY2sgd2hlbiBzYXZpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzkKKyAgICAgICAgPHJkYXI6
Ly83MjA1ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBjaGVjayB0byBjb25maXJtIHRoYXQgYXR0ZW1wdHMgdG8gc3RvcmUgaW1hZ2Vz
IGluIHRoZSB1c2VyJ3MKKyAgICAgICAgcGhvdG8gTGlicmFyeSB3YXMgdHJpZ2dlcmVkIGJ5IGEg
dXNlciBnZXN0dXJlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50
KToKKwogMjAyMi0wMy0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBDcmFzaCB1bmRlciBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFzTm9kZVdp
dGhBbmltYXRlZFNjcm9sbENoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA0ZjRjMGFmODc4ZjE0NDM4MDU2ZTVl
YjljMGZhYjI4YzRmNmZjMDg0Li4yYWE3Nzc2YTkxMTU0ODE1ODFhZjM3MWVmNzVlZTZiNzk0NDNm
YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQpAQCAtMzI2OSw2ICszMjY5LDExIEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFj
dGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OldyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdURk1v
dmUoYXR0YWNobWVudEluZm8pKSk7CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKHN0YXRpY19jYXN0
PFNoZWV0QWN0aW9uPihhY3Rpb24pID09IFNoZWV0QWN0aW9uOjpTYXZlSW1hZ2UpIHsKKyAgICAg
ICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsK
KyAgICAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKG1haW5XZWJGcmFtZSgpLmZyYW1lSUQoKSwg
TWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJSZWZ1c2luZyB0
byBzYXZlIGltYWdlcyB0byBsaWJyYXJ5IHdpdGhvdXQgdXNlciBnZXN0dXJlLiJfcyk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdl
PigqZWxlbWVudC5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgQ2Fj
aGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJl
bmRlcmVyKCkpLmNhY2hlZEltYWdlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454734</attachid>
            <date>2022-03-15 11:35:57 -0700</date>
            <delta_ts>2022-03-15 11:52:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237839-20220315113556.patch</filename>
            <type>text/plain</type>
            <size>9721</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU1N2M5MDVjMDhlNDU4NmE1
ZDE3NjZmNzgwOGIzM2I5YzY2YzAxOWQuLjI0NGVmNzY1OTM5ZmNiYjM4MjY1MmY2ZWI0ZTdmNzdh
NWIyMmJmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDMtMTUgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29yZUlQQyBIYXJkZW5pbmc6
IEFkZCB1c2VyIGdlc3R1cmUgY2hlY2sgd2hlbiBzYXZpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzkKKyAgICAgICAgPHJkYXI6
Ly83MjA1ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBjaGVjayB0byBjb25maXJtIHRoYXQgYXR0ZW1wdHMgdG8gc3RvcmUgaW1hZ2Vz
IGluIHRoZSB1c2VyJ3MKKyAgICAgICAgcGhvdG8gTGlicmFyeSB3YXMgdHJpZ2dlcmVkIGJ5IGEg
dXNlciBnZXN0dXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbiBjb25zdCk6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJldm9rZUF1dGhvcml6YXRpb25Ub2tlbik6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpuZWVkc0F1dGhvcml6YXRpb25Ub2tlbik6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQpOiBQYXNzIGFu
IGF1dGhvcml6YXRpb24KKyAgICAgICAgdG9rZW4gd2l0aCB0aGUgcmVxdWVzdCB0byB0YWtlIGFj
dGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkp
OiBBZGQgTUVTU0FHRV9DSEVDSyB0aGF0IHRoZQorICAgICAgICBhdXRob3JpemF0aW9uIHRva2Vu
IGlzIHZhbGlkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KTogUGFzcyB0aGUgYXV0aG9yaXphdGlvbgor
ICAgICAgICB0b2tlbiBiYWNrIHRvIHRoZSBVSVByb2Nlc3MuCisKIDIwMjItMDMtMDQgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6Omhhc05vZGVXaXRoQW5pbWF0ZWRTY3JvbGxDaGFuZ2Vk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzhkNTRkODFkZjFi
NTg3MDBiMWI0MDVlYWY1N2I5MGEwZWZjY2U4Yi4uMGMwMDkyYjUzZTIwNDU3YmFhMTVhMmIzOWM1
OWQ1NDlmNTY1YmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTg4OSw3ICs4ODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9uV2l0aFBv
c2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KTsKICAgICB2b2lkIHN0b3BJbnRlcmFjdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybUFjdGlvbk9u
RWxlbWVudCh1aW50MzJfdCBhY3Rpb24pOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZSk7CisgICAgdm9pZCBzYXZl
SW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxl
LCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7CiAgICAgdm9pZCBmb2N1c05leHRG
b2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
ID0gW10geyB9KTsKICAgICB2b2lkIHNldEZvY3VzZWRFbGVtZW50VmFsdWUoY29uc3QgV2ViQ29y
ZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEZvY3VzZWRF
bGVtZW50U2VsZWN0ZWRJbmRleChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIHVpbnQz
Ml90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24gPSBmYWxzZSk7CkBAIC0yMzk1
LDYgKzIzOTUsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJD
b3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCB1cGRh
dGVTdHJpbmdGb3JGaW5kKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBpc1ZhbGlkQXV0aG9y
aXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBjb25zdDsKKyAg
ICB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRp
b25Ub2tlbik7CiAjZW5kaWYKIAogICAgIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4mKTsKQEAgLTI3MTIsNiArMjcx
NSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnB1dE1vZGU+IG1f
cGVuZGluZ0lucHV0TW9kZUNoYW5nZTsKICAgICBUcmFuc2FjdGlvbklEIG1fZmlyc3RMYXllclRy
ZWVUcmFuc2FjdGlvbklkQWZ0ZXJEaWRDb21taXRMb2FkOwogICAgIGludDMyX3QgbV9kZXZpY2VP
cmllbnRhdGlvbiB7IDAgfTsKKyAgICBTdGRTZXQ8dWludDY0X3Q+IG1fdXNlckdlc3R1cmVUb2tl
bnM7CiAgICAgYm9vbCBtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faXNLZXlib2FyZEFuaW1hdGluZ0luIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aXNTY3JvbGxpbmdPclpvb21pbmcgeyBmYWxzZSB9OwpAQCAtMzA2OSw2ICszMDczLDcgQEAgcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7CiAg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIGJvb2wg
bV9sYXN0T2JzZXJ2ZWRTdGF0ZVdhc0JhY2tncm91bmQgeyBmYWxzZSB9OworICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX3ZhbGlkQXV0aG9yaXphdGlvblRva2VuczsKICNlbmRpZgogCiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmlidXRlcz4gbV9jYWNoZWRGb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggMjA3YmMyMWQzMmE2ZmZlNmI3ZWY1ZmRkMDZlNjA0ZTIwYThh
YWU0OC4uODAxNjQyNTMzNGJhMzk1MTg5ZmU4MTVjZmI0NzRjZGRiMmZhMDI2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTYw
LDcgKzE2MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBJbnRlcnByZXRLZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JTdGF0
ZSBzdGF0ZSwgYm9vbCBpc0NoYXJFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMK
ICAgICBEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKLSAgICBTYXZlSW1hZ2VUb0xp
YnJhcnkoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpCisgICAgU2F2ZUlt
YWdlVG9MaWJyYXJ5KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBTdHJp
bmcgYXV0aG9yaXphdGlvblRva2VuKQogICAgIFNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29s
IGhhc1ZpZGVvLCBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRSZWN0LCBlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6Um91dGVTaGFyaW5nUG9saWN5IHBvbGljeSwgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlE
KQogICAgIENvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpCiAgICAgRGlkTm90SGFuZGxlVGFwQXND
bGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGQ4YTVkMjk2YjA0NTQ4NDkyNWYzNzg0NjJk
ZjM0NjE3ZGJhMDU0MDcuLjc4MGYzOTU4MGI1YjI4MjEyNmYzY2ViNjM3YTE1OGM2ZmU4YTNjMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtNTk0LDE0ICs1OTQsMzggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BJbnRlcmFjdGlvbigp
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wSW50ZXJhY3Rpb24o
KSwgbV93ZWJQYWdlSUQpOwogfQogCitib29sIFdlYlBhZ2VQcm94eTo6aXNWYWxpZEF1dGhvcml6
YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgY29uc3QKK3sKKyAg
ICByZXR1cm4gIWF1dGhvcml6YXRpb25Ub2tlbi5pc051bGwoKSAmJiBtX3ZhbGlkQXV0aG9yaXph
dGlvblRva2Vucy5jb250YWlucyhhdXRob3JpemF0aW9uVG9rZW4pOworfQorCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYgYXV0aG9yaXph
dGlvblRva2VuKQoreworICAgIEFTU0VSVChpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKGF1dGhv
cml6YXRpb25Ub2tlbikpOworICAgIGlmICghaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbihhdXRo
b3JpemF0aW9uVG9rZW4pKQorICAgICAgICByZXR1cm47CisgICAgbV92YWxpZEF1dGhvcml6YXRp
b25Ub2tlbnMucmVtb3ZlKGF1dGhvcml6YXRpb25Ub2tlbik7Cit9CisKK3N0YXRpYyBib29sIG5l
ZWRzQXV0aG9yaXphdGlvblRva2VuKHVpbnQzMl90IGFjdGlvbikKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8U2hlZXRBY3Rpb24+KGFjdGlvbikgPT0gU2hlZXRBY3Rpb246OlNhdmVJbWFnZTsK
K30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3Qg
YWN0aW9uKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9y
bUFjdGlvbk9uRWxlbWVudChhY3Rpb24pLCBtX3dlYlBhZ2VJRCk7CisgICAgYXV0byBhdXRob3Jp
emF0aW9uVG9rZW4gPSBuZWVkc0F1dGhvcml6YXRpb25Ub2tlbihhY3Rpb24pID8gY3JlYXRlVmVy
c2lvbjRVVUlEU3RyaW5nKCkgOiBTdHJpbmcoKTsKKyAgICBpZiAoIWF1dGhvcml6YXRpb25Ub2tl
bi5pc051bGwoKSkKKyAgICAgICAgbV92YWxpZEF1dGhvcml6YXRpb25Ub2tlbnMuYWRkKGF1dGhv
cml6YXRpb25Ub2tlbik7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQ
ZXJmb3JtQWN0aW9uT25FbGVtZW50KGFjdGlvbiwgYXV0aG9yaXphdGlvblRva2VuKSwgbV93ZWJQ
YWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvbnN0
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdl
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKIHsKICAgICBNRVNTQUdF
X0NIRUNLKCFpbWFnZUhhbmRsZS5oYW5kbGUuaXNOdWxsKCkpOworICAgIE1FU1NBR0VfQ0hFQ0so
aXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbihhdXRob3JpemF0aW9uVG9rZW4pKTsKKworICAgIHJl
dm9rZUF1dGhvcml6YXRpb25Ub2tlbihhdXRob3JpemF0aW9uVG9rZW4pOwogCiAgICAgYXV0byBz
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZS5oYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVt
b3J5QnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IGE1ZWJhZWM0NWJhMDI0YWQ0YmYyZjJiOWU2MWUyYzRkNWFjZWRkOTcuLjdhNWYxMDgzYzAw
Nzg4NmJlOTRjYjY2OTUwMGRkZjVhMWM4NjhlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTgxOSw3ICs4MTksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
UmVxdWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Q29udGV4dE9y
UG9zaXRpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mJiwgV2ViQ29y
ZTo6SW50UG9pbnQmJik7CiAgICAgdm9pZCBzdG9wSW50ZXJhY3Rpb24oKTsKLSAgICB2b2lkIHBl
cmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKTsKKyAgICB2b2lkIHBlcmZvcm1B
Y3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRp
b25Ub2tlbik7CiAgICAgdm9pZCBmb2N1c05leHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2Fy
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGF1dG9maWxsTG9naW5D
cmVkZW50aWFscyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEZv
Y3VzZWRFbGVtZW50VmFsdWUoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBT
dHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IDZmNTI2ZTQ5OTU4YzI2YmU4ZDcxMjI3MDBmOGI1MzVhYzA4
NDYzMDAuLmY1Njg5Y2FkMjRiY2NkZTkyM2I1MjA1OWVmNWFlZjdmODI5YjRmYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtOTYsNyArOTYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KQogICAgIFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxl
bWVudENvbnRleHRPclBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRl
eHQ+IGVsZW1lbnRDb250ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBTdG9wSW50
ZXJhY3Rpb24oKQotICAgIFBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQor
ICAgIFBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uLCBTdHJpbmcgYXV0aGVu
dGljYXRpb25Ub2tlbikKICAgICBGb2N1c05leHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2Fy
ZCkgLT4gKCkgQXN5bmMKICAgICBBdXRvZmlsbExvZ2luQ3JlZGVudGlhbHMoU3RyaW5nIHVzZXJu
YW1lLCBTdHJpbmcgcGFzc3dvcmQpCiAgICAgU2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZShzdHJ1Y3Qg
V2ViQ29yZTo6RWxlbWVudENvbnRleHQgY29udGV4dCwgU3RyaW5nIHZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA0
ZjRjMGFmODc4ZjE0NDM4MDU2ZTVlYjljMGZhYjI4YzRmNmZjMDg0Li5kNmMxODc0ODI1OWNkZTI4
NDFlMWY3YzVkYjc2ZmE2MDRjZjJmMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzIzOSw3ICszMjM5LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzdG9wSW50ZXJhY3Rpb24oKQogICAgIG1faW50ZXJhY3Rpb25Ob2RlID0gbnVs
bHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90
IGFjdGlvbikKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBh
Y3Rpb24sIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQogewogICAgIGlmICghaXM8
SFRNTEVsZW1lbnQ+KG1faW50ZXJhY3Rpb25Ob2RlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI4
Miw3ICszMjgyLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQz
Ml90IGFjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU2hhcmVkTWVtb3J5OjpI
YW5kbGUgaGFuZGxlOwogICAgICAgICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZSho
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVJbWFnZVRvTGlicmFyeShTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXplKCkgfSkpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVJbWFnZVRvTGlicmFyeShTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXplKCkgfSwgYXV0
aG9yaXphdGlvblRva2VuKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454738</attachid>
            <date>2022-03-15 11:52:40 -0700</date>
            <delta_ts>2022-03-16 10:29:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237839-20220315115238.patch</filename>
            <type>text/plain</type>
            <size>9705</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxOTU1ZTFkYWM1NzJhMTM0
MDY2YmIyY2FhMDhhM2UzYjZjMTFjNmIuLmY1OTdmMDAxY2ZlNWZlY2Y4YjlhZTgwYTRiMzA1Y2Fh
ZTJhYTUwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDMtMTUgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29yZUlQQyBIYXJkZW5pbmc6
IEFkZCB1c2VyIGdlc3R1cmUgY2hlY2sgd2hlbiBzYXZpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzkKKyAgICAgICAgPHJkYXI6
Ly83MjA1ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBjaGVjayB0byBjb25maXJtIHRoYXQgYXR0ZW1wdHMgdG8gc3RvcmUgaW1hZ2Vz
IGluIHRoZSB1c2VyJ3MKKyAgICAgICAgcGhvdG8gTGlicmFyeSB3YXMgdHJpZ2dlcmVkIGJ5IGEg
dXNlciBnZXN0dXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbiBjb25zdCk6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJldm9rZUF1dGhvcml6YXRpb25Ub2tlbik6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpuZWVkc0F1dGhvcml6YXRpb25Ub2tlbik6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQpOiBQYXNzIGFu
IGF1dGhvcml6YXRpb24KKyAgICAgICAgdG9rZW4gd2l0aCB0aGUgcmVxdWVzdCB0byB0YWtlIGFj
dGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkp
OiBBZGQgTUVTU0FHRV9DSEVDSyB0aGF0IHRoZQorICAgICAgICBhdXRob3JpemF0aW9uIHRva2Vu
IGlzIHZhbGlkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KTogUGFzcyB0aGUgYXV0aG9yaXphdGlvbgor
ICAgICAgICB0b2tlbiBiYWNrIHRvIHRoZSBVSVByb2Nlc3MuCisKIDIwMjItMDMtMTUgIEFkaXR5
YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEluZGVmaW5p
dGUgaGFuZyB3aGVuIHByaW50aW5nIHVzaW5nIGEgVUlQcmludFBhZ2VSZW5kZXJlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwNmI3MzdhZTAzYWUyZjNjMWIyY2Qz
YTI2YjM5YmFjYjFjNGUyNTJkLi5lYWZkMjkzZmJjNDUwODg1YjIxYjlhM2ZjN2I5MzYxNzMwZWEz
OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODg5LDcgKzg4
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoUG9zaXRpb25JbmZv
cm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwogICAgIHZv
aWQgc3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVp
bnQzMl90IGFjdGlvbik7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlKTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGli
cmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUsIGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKICAgICB2b2lkIGZvY3VzTmV4dEZvY3VzZWRFbGVt
ZW50KGJvb2wgaXNGb3J3YXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0p
OwogICAgIHZvaWQgc2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZShjb25zdCBXZWJDb3JlOjpFbGVtZW50
Q29udGV4dCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Rm9jdXNlZEVsZW1lbnRTZWxl
Y3RlZEluZGV4KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgdWludDMyX3QgaW5kZXgs
IGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlKTsKQEAgLTIzOTMsNiArMjM5Myw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNW
aWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRl
U2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHVwZGF0ZVN0cmluZ0Zv
ckZpbmQoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGlzVmFsaWRBdXRob3JpemF0aW9uVG9r
ZW4oY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIGNvbnN0OworICAgIHZvaWQgcmV2
b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiYpOwpAQCAtMjcxMCw2ICsyNzEzLDcgQEAgcHJp
dmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OklucHV0TW9kZT4gbV9wZW5kaW5nSW5w
dXRNb2RlQ2hhbmdlOwogICAgIFRyYW5zYWN0aW9uSUQgbV9maXJzdExheWVyVHJlZVRyYW5zYWN0
aW9uSWRBZnRlckRpZENvbW1pdExvYWQ7CiAgICAgaW50MzJfdCBtX2RldmljZU9yaWVudGF0aW9u
IHsgMCB9OworICAgIFN0ZFNldDx1aW50NjRfdD4gbV91c2VyR2VzdHVyZVRva2VuczsKICAgICBi
b29sIG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9pc0tleWJvYXJkQW5pbWF0aW5nSW4geyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Njcm9sbGlu
Z09yWm9vbWluZyB7IGZhbHNlIH07CkBAIC0zMDY3LDYgKzMwNzEsNyBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgYm9vbCBtX2xhc3RPYnNl
cnZlZFN0YXRlV2FzQmFja2dyb3VuZCB7IGZhbHNlIH07CisgICAgSGFzaFNldDxTdHJpbmc+IG1f
dmFsaWRBdXRob3JpemF0aW9uVG9rZW5zOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBtX2NhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25T
dGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA5MmExYzNjY2I2MDc5YjBiYmUyNGUyZmY5MzM2MDFlZGYzNmFlYTA0Li5iOGM0
YTZlMGQ3NzNiMjBmZTZhMjhiYzI4YTM4NGY2MGJjNjUyYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNjAsNyArMTYwLDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBi
b29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIERpZFJl
Y2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQotICAgIFNhdmVJbWFnZVRvTGlicmFyeShXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkKKyAgICBTYXZlSW1hZ2VUb0xpYnJh
cnkoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFN0cmluZyBhdXRob3Jp
emF0aW9uVG9rZW4pCiAgICAgU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8s
IFdlYkNvcmU6OkludFJlY3QgZWxlbWVudFJlY3QsIGVudW06dWludDhfdCBXZWJDb3JlOjpSb3V0
ZVNoYXJpbmdQb2xpY3kgcG9saWN5LCBTdHJpbmcgcm91dGluZ0NvbnRleHRVSUQpCiAgICAgQ29t
bWl0UG90ZW50aWFsVGFwRmFpbGVkKCkKICAgICBEaWROb3RIYW5kbGVUYXBBc0NsaWNrKFdlYkNv
cmU6OkludFBvaW50IHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KaW5kZXggNzdhZmFlODdjZmY0Nzk3ZTgxYzlhN2M0MDcxNTNlY2U3NjU4
NDQxZC4uMjZmMmZkYzU2YmYyMGYxNDk5YTEzYjk4NWJlOWU5MDdhMWYyYTcwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC01OTQsMTQg
KzU5NCwzOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcEludGVyYWN0aW9uKCkKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BJbnRlcmFjdGlvbigpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKK2Jvb2wgV2ViUGFnZVByb3h5Ojppc1ZhbGlkQXV0aG9yaXphdGlvblRva2Vu
KGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBjb25zdAoreworICAgIHJldHVybiAh
YXV0aG9yaXphdGlvblRva2VuLmlzTnVsbCgpICYmIG1fdmFsaWRBdXRob3JpemF0aW9uVG9rZW5z
LmNvbnRhaW5zKGF1dGhvcml6YXRpb25Ub2tlbik7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4p
Cit7CisgICAgQVNTRVJUKGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4oYXV0aG9yaXphdGlvblRv
a2VuKSk7CisgICAgaWYgKCFpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKGF1dGhvcml6YXRpb25U
b2tlbikpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ZhbGlkQXV0aG9yaXphdGlvblRva2Vucy5y
ZW1vdmUoYXV0aG9yaXphdGlvblRva2VuKTsKK30KKworc3RhdGljIGJvb2wgbmVlZHNBdXRob3Jp
emF0aW9uVG9rZW4odWludDMyX3QgYWN0aW9uKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxT
aGVldEFjdGlvbj4oYWN0aW9uKSA9PSBTaGVldEFjdGlvbjo6U2F2ZUltYWdlOworfQorCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtQWN0aW9uT25F
bGVtZW50KGFjdGlvbiksIG1fd2ViUGFnZUlEKTsKKyAgICBhdXRvIGF1dGhvcml6YXRpb25Ub2tl
biA9IG5lZWRzQXV0aG9yaXphdGlvblRva2VuKGFjdGlvbikgPyBjcmVhdGVWZXJzaW9uNFVVSURT
dHJpbmcoKSA6IFN0cmluZygpOworICAgIGlmICghYXV0aG9yaXphdGlvblRva2VuLmlzTnVsbCgp
KQorICAgICAgICBtX3ZhbGlkQXV0aG9yaXphdGlvblRva2Vucy5hZGQoYXV0aG9yaXphdGlvblRv
a2VuKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1BY3Rp
b25PbkVsZW1lbnQoYWN0aW9uLCBhdXRob3JpemF0aW9uVG9rZW4pLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlKQordm9pZCBXZWJQYWdlUHJveHk6OnNhdmVJbWFn
ZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUsIGNv
bnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQogewogICAgIE1FU1NBR0VfQ0hFQ0soIWlt
YWdlSGFuZGxlLmhhbmRsZS5pc051bGwoKSk7CisgICAgTUVTU0FHRV9DSEVDSyhpc1ZhbGlkQXV0
aG9yaXphdGlvblRva2VuKGF1dGhvcml6YXRpb25Ub2tlbikpOworCisgICAgcmV2b2tlQXV0aG9y
aXphdGlvblRva2VuKGF1dGhvcml6YXRpb25Ub2tlbik7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGltYWdlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNmU1Zjhm
MGE1MTE2ZTFhYTI2MmJhMGFkMzFiMmM5MjdiYzM2ZmRjZi4uYTk5MmE0YWQ5MjI0NDhlNjQ2ZGMx
Mjg1MzExYjY4Y2U0ZmZkYjhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtODE5LDcgKzgxOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RQ
b3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7
CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYmLCBXZWJDb3JlOjpJbnRQb2lu
dCYmKTsKICAgICB2b2lkIHN0b3BJbnRlcmFjdGlvbigpOwotICAgIHZvaWQgcGVyZm9ybUFjdGlv
bk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pOworICAgIHZvaWQgcGVyZm9ybUFjdGlvbk9uRWxl
bWVudCh1aW50MzJfdCBhY3Rpb24sIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsK
ICAgICB2b2lkIGZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wgaXNGb3J3YXJkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgYXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxz
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Rm9jdXNlZEVsZW1l
bnRWYWx1ZShjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFN0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggZmNjNWI3ZTAzNDI1ZDI4ZWM4ZTdiNjI0MmZkOGQ0NTJiMzFkNzJkYy4uOWRj
MGMxYWU4ZjI2ZDNlZGI2Y2NhNzI3MjJiNDk2OTAwNmU0MmZhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC05Niw3
ICs5Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcXVl
c3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0IHJlcXVlc3QpCiAgICAgU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Q29udGV4
dE9yUG9zaXRpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gZWxlbWVu
dENvbnRleHQsIFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAgIFN0b3BJbnRlcmFjdGlvbigp
Ci0gICAgUGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCisgICAgUGVyZm9y
bUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24sIFN0cmluZyBhdXRoZW50aWNhdGlvblRv
a2VuKQogICAgIEZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wgaXNGb3J3YXJkKSAtPiAoKQog
ICAgIEF1dG9maWxsTG9naW5DcmVkZW50aWFscyhTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBwYXNz
d29yZCkKICAgICBTZXRGb2N1c2VkRWxlbWVudFZhbHVlKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50
Q29udGV4dCBjb250ZXh0LCBTdHJpbmcgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDc5YjIyZTc4MTFkMzY3ZGMx
OTliY2JlNmEzYTU5MDhmMTJkYjUxNzUuLmEzODdlOTVhMjg0N2Q3ZjU5NWU5MTBmNzBkNjkzYWU5
NWE3MzQzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCkBAIC0zMjM5LDcgKzMyMzksNyBAQCB2b2lkIFdlYlBhZ2U6OnN0b3BJ
bnRlcmFjdGlvbigpCiAgICAgbV9pbnRlcmFjdGlvbk5vZGUgPSBudWxscHRyOwogfQogCi12b2lk
IFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQordm9pZCBX
ZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbiwgY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCiB7CiAgICAgaWYgKCFpczxIVE1MRWxlbWVudD4obV9p
bnRlcmFjdGlvbk5vZGUpKQogICAgICAgICByZXR1cm47CkBAIC0zMjgyLDcgKzMyODIsNyBAQCB2
b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAg
ICAgICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2F2ZUltYWdlVG9MaWJyYXJ5KFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RG
TW92ZShoYW5kbGUpLCBidWZmZXItPnNpemUoKSB9KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2F2ZUltYWdlVG9MaWJyYXJ5KFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXItPnNpemUoKSB9LCBhdXRob3JpemF0aW9uVG9rZW4p
KTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454856</attachid>
            <date>2022-03-16 10:29:45 -0700</date>
            <delta_ts>2022-03-16 10:37:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237839-20220316102944.patch</filename>
            <type>text/plain</type>
            <size>15180</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxOTU1ZTFkYWM1NzJhMTM0
MDY2YmIyY2FhMDhhM2UzYjZjMTFjNmIuLjNhMWMwNzg3ZTllZjY2YmZmMzRkZTM1NGFlZWRiNjE0
YjAyMDEyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDMtMTYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29yZUlQQyBIYXJkZW5pbmc6
IEFkZCB1c2VyIGdlc3R1cmUgY2hlY2sgd2hlbiBzYXZpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzkKKyAgICAgICAgPHJkYXI6
Ly83MjA1ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgY2hlY2sgdG8gY29uZmlybSB0aGF0IGF0dGVtcHRzIHRvIHN0b3JlIGltYWdlcyBp
biB0aGUgdXNlcidzIFBob3RvCisgICAgICAgIExpYnJhcnkgYW5kIGF0dGVtcHRzIHRvIHN0b3Jl
IGRhdGEgaW4gdGhlIHBhc3RlYm9hcmQgd2VyZSB0cmlnZ2VyZWQgYnkKKyAgICAgICAgYSB1c2Vy
IGdlc3R1cmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVi
b2FyZCk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24gdG9rZW4gYmVmb3JlCisgICAg
ICAgIHBlcmZvcm1pbmcgdGhlIHdyaXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmlzVmFsaWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aG9yaXphdGlv
blRva2VuIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVy
Zm9ybUFjdGlvbk9uRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24g
dG9rZW4gYmVmb3JlCisgICAgICAgIHBlcmZvcm1pbmcgdGhlIHNhdmUuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVs
ZW1lbnQpOgorCiAyMDIyLTAzLTE1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXSBJbmRlZmluaXRlIGhhbmcgd2hlbiBwcmludGluZyB1c2luZyBh
IFVJUHJpbnRQYWdlUmVuZGVyZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGEyN2ZkNDMzYzZlYWQzNWE5MGVlOWNmM2NiMGIwNmZmYjI1YjI3ZTQuLjk2YTZl
ZTZmMmI5NTA5MDdkZjRlZjIzMTVlMmRhOWQ3NWU1NDMwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0xMDE5MCw4ICsxMDE5MCwxMCBAQCBEYXRhT3duZXJUeXBlIFdl
YlBhZ2VQcm94eTo6ZGF0YU93bmVyRm9yUGFzdGVib2FyZChQYXN0ZWJvYXJkQWNjZXNzSW50ZW50
IGludGVudAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdl
UHJveHk6OndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21p
c2VkQXR0YWNobWVudEluZm8mJiBpbmZvKQordm9pZCBXZWJQYWdlUHJveHk6OndyaXRlUHJvbWlz
ZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8m
JiBpbmZvLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKIHsKKyAgICBNRVNTQUdF
X0NIRUNLKG1fcHJvY2VzcywgaXNWYWxpZFBlcmZvcm1BY3Rpb25PbkVsZW1lbnRBdXRob3JpemF0
aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKSk7CisKICAgICBwYWdlQ2xpZW50KCkud3JpdGVQ
cm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV1RGTW92ZShpbmZvKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMDZiNzM3YWUwM2FlMmYzYzFiMmNk
M2EyNmIzOWJhY2IxYzRlMjUyZC4uMTU3ZWNmYTE2MzU1NmEwOGRhMmY3OGY4ODI3MjBjYTdhMDkz
MmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04ODksNyAr
ODg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbklu
Zm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7CiAgICAg
dm9pZCBzdG9wSW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQo
dWludDMyX3QgYWN0aW9uKTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUpOworICAgIHZvaWQgc2F2ZUltYWdlVG9M
aWJyYXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZSwgY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOwogICAgIHZvaWQgZm9jdXNOZXh0Rm9jdXNlZEVs
ZW1lbnQoYm9vbCBpc0ZvcndhcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsg
fSk7CiAgICAgdm9pZCBzZXRGb2N1c2VkRWxlbWVudFZhbHVlKGNvbnN0IFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRGb2N1c2VkRWxlbWVudFNl
bGVjdGVkSW5kZXgoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCB1aW50MzJfdCBpbmRl
eCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOwpAQCAtMjM5Myw2ICsyMzkz
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhh
c1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91
dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgdXBkYXRlU3RyaW5n
Rm9yRmluZChjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgaXNWYWxpZFBlcmZvcm1BY3Rpb25P
bkVsZW1lbnRBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4pIGNvbnN0OworICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmlu
ZyYgYXV0aG9yaXphdGlvblRva2VuKTsKICNlbmRpZgogCiAgICAgdm9pZCBmb2N1c2VkRnJhbWVD
aGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiYpOwpA
QCAtMjU0MCw3ICsyNTQzLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8QVBJOjpBdHRhY2htZW50PiBl
bnN1cmVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBpbnZh
bGlkYXRlQWxsQXR0YWNobWVudHMoKTsKIAotICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1l
bnRUb1Bhc3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKyAgICB2
b2lkIHdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2Vk
QXR0YWNobWVudEluZm8mJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOwogCiAg
ICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAKQEAgLTMwNjcsNiArMzA3MCw3IEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWluaW11bVVub2JzY3VyZWRTaXplOwog
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBib29s
IG1fbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kIHsgZmFsc2UgfTsKKyAgICBIYXNoU2V0
PFN0cmluZz4gbV9wZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aFRva2VuczsKICNlbmRpZgogCiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmlidXRlcz4gbV9jYWNoZWRGb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTJhMWMzY2NiNjA3OWIwYmJlMjRlMmZmOTMz
NjAxZWRmMzZhZWEwNC4uZmQ5NjIwMDMxOWFhMTg3MmU2Y2RjZjBhYjhlZDMyZTA1ZGMxZmM0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2
MCw3ICsxNjAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgSW50ZXJwcmV0S2V5RXZlbnQoc3RydWN0IFdlYktpdDo6RWRpdG9yU3Rh
dGUgc3RhdGUsIGJvb2wgaXNDaGFyRXZlbnQpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3Vz
CiAgICAgRGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pCi0gICAgU2F2ZUltYWdlVG9M
aWJyYXJ5KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlKQorICAgIFNhdmVJ
bWFnZVRvTGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgU3Ry
aW5nIGF1dGhvcml6YXRpb25Ub2tlbikKICAgICBTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9v
bCBoYXNWaWRlbywgV2ViQ29yZTo6SW50UmVjdCBlbGVtZW50UmVjdCwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3ksIFN0cmluZyByb3V0aW5nQ29udGV4dFVJ
RCkKICAgICBDb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKQogICAgIERpZE5vdEhhbmRsZVRhcEFz
Q2xpY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCkBAIC01MjUsNyArNTI1LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZp
ZXIoU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2UsIGJvb2wgaGFzRW5jbG9zaW5nSW1h
Z2UpCiAgICAgRGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVyKFN0cmluZyBpZGVudGlm
aWVyKQogICAgIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKFZlY3RvcjxT
dHJpbmc+IGlkZW50aWZpZXJzKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4gc2VyYWxpemVkRGF0YSkgU3luY2hyb25vdXMKLSAgICBXcml0ZVByb21pc2VkQXR0
YWNobWVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5m
byBpbmZvKQorICAgIFdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBX
ZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvIGluZm8sIFN0cmluZyBhdXRob3JpemF0aW9u
VG9rZW4pCiAgICAgUmVxdWVzdEF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBTdHJp
bmcgY29udGVudFR5cGUsIFN0cmluZyBwYXRoLCBTdHJpbmcgdGl0bGUsIFdlYkNvcmU6OkZsb2F0
U2l6ZSBzaXplKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCmluZGV4IDc3YWZhZTg3Y2ZmNDc5N2U4MWM5YTdjNDA3MTUzZWNlNzY1
ODQ0MWQuLjc0YTRiN2QyNjQ4ZjA4NzVjNzFjYjIyYTcwODVlMzlmNDUxZDUyMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5NCwx
NCArNTk0LDMwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wSW50ZXJhY3Rpb24oKQogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcEludGVyYWN0aW9uKCksIG1fd2Vi
UGFnZUlEKTsKIH0KIAorYm9vbCBXZWJQYWdlUHJveHk6OmlzVmFsaWRQZXJmb3JtQWN0aW9uT25F
bGVtZW50QXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
KSBjb25zdAoreworICAgIHJldHVybiAhYXV0aG9yaXphdGlvblRva2VuLmlzTnVsbCgpICYmIG1f
cGVyZm9ybUFjdGlvbk9uRWxlbWVudEF1dGhUb2tlbnMuY29udGFpbnMoYXV0aG9yaXphdGlvblRv
a2VuKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWlu
dDMyX3QgYWN0aW9uKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UGVyZm9ybUFjdGlvbk9uRWxlbWVudChhY3Rpb24pLCBtX3dlYlBhZ2VJRCk7CisgICAgYXV0byBh
dXRob3JpemF0aW9uVG9rZW4gPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKKworICAgIG1f
cGVyZm9ybUFjdGlvbk9uRWxlbWVudEF1dGhUb2tlbnMuYWRkKGF1dGhvcml6YXRpb25Ub2tlbik7
CisgICAgCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3Jt
QWN0aW9uT25FbGVtZW50KGFjdGlvbiwgYXV0aG9yaXphdGlvblRva2VuKSwgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIGF1dGhvcml6YXRpb25Ub2tlbl0gKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJU
KHdlYWtUaGlzLT5pc1ZhbGlkUGVyZm9ybUFjdGlvbk9uRWxlbWVudEF1dGhvcml6YXRpb25Ub2tl
bihhdXRob3JpemF0aW9uVG9rZW4pKTsKKyAgICAgICAgd2Vha1RoaXMtPm1fcGVyZm9ybUFjdGlv
bk9uRWxlbWVudEF1dGhUb2tlbnMucmVtb3ZlKGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAgfSk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlKQordm9pZCBXZWJQYWdlUHJveHk6OnNhdmVJ
bWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUs
IGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQogewogICAgIE1FU1NBR0VfQ0hFQ0so
IWltYWdlSGFuZGxlLmhhbmRsZS5pc051bGwoKSk7CisgICAgTUVTU0FHRV9DSEVDSyhpc1ZhbGlk
UGVyZm9ybUFjdGlvbk9uRWxlbWVudEF1dGhvcml6YXRpb25Ub2tlbihhdXRob3JpemF0aW9uVG9r
ZW4pKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAo
aW1hZ2VIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
ICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA2ZTVmOGYwYTUxMTZlMWFhMjYyYmEwYWQzMWIyYzkyN2Jj
MzZmZGNmLi42YWVmMjBkZWYzMGMwNjkyNjE2ZWM4MDUyNjQwYTQyMzgxN2Q0ZDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODE5LDcgKzgxOSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9u
V2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0PiYmLCBXZWJDb3JlOjpJbnRQb2ludCYmKTsKICAgICB2b2lkIHN0b3BJbnRlcmFj
dGlvbigpOwotICAgIHZvaWQgcGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24p
OworICAgIHZvaWQgcGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24sIGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgZm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQoYm9vbCBpc0ZvcndhcmQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBhdXRvZmlsbExvZ2luQ3JlZGVudGlh
bHMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRGb2N1c2VkRWxl
bWVudFZhbHVlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCBmY2M1YjdlMDM0MjVkMjhlYzhlN2I2MjQyZmQ4ZDQ1MmIzMWQ3MmRjLi44
MGUxYTQwOTBlZTBlM2U4N2E2M2E1M2NhNDU3MzAzMzgwNzFiZjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEs
NCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Niw3ICs5Niw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcXVlc3RQb3Np
dGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0IHJlcXVlc3QpCiAgICAgU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Q29udGV4dE9yUG9z
aXRpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gZWxlbWVudENvbnRl
eHQsIFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAgIFN0b3BJbnRlcmFjdGlvbigpCi0gICAg
UGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCisgICAgUGVyZm9ybUFjdGlv
bk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24sIFN0cmluZyBhdXRoZW50aWNhdGlvblRva2VuKSAt
PiAoKQogICAgIEZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wgaXNGb3J3YXJkKSAtPiAoKQog
ICAgIEF1dG9maWxsTG9naW5DcmVkZW50aWFscyhTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBwYXNz
d29yZCkKICAgICBTZXRGb2N1c2VkRWxlbWVudFZhbHVlKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50
Q29udGV4dCBjb250ZXh0LCBTdHJpbmcgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDc5YjIyZTc4MTFkMzY3ZGMx
OTliY2JlNmEzYTU5MDhmMTJkYjUxNzUuLjlkY2U5N2RjNzlkOWVjMjM0NTBjNjMxNjcyMGQwODQ2
ZTZmNzU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzIzOSwxNCArMzIzOSwxOCBAQCB2b2lkIFdlYlBhZ2U6OnN0
b3BJbnRlcmFjdGlvbigpCiAgICAgbV9pbnRlcmFjdGlvbk5vZGUgPSBudWxscHRyOwogfQogCi12
b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQordm9p
ZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbiwgY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoIWlzPEhUTUxFbGVtZW50PihtX2ludGVyYWN0
aW9uTm9kZSkpCisgICAgaWYgKCFpczxIVE1MRWxlbWVudD4obV9pbnRlcmFjdGlvbk5vZGUpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PigqbV9pbnRl
cmFjdGlvbk5vZGUpOwotICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKQorICAgIGlmICghZWxl
bWVudC5yZW5kZXJlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoc3RhdGljX2Nhc3Q8U2hlZXRBY3Rpb24+KGFjdGlv
bikgPT0gU2hlZXRBY3Rpb246OkNvcHkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigq
ZWxlbWVudC5yZW5kZXJlcigpKSkgewpAQCAtMzI2NiwyNCArMzI3MCwzMyBAQCB2b2lkIFdlYlBh
Z2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICAgICAg
bV9pbnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZWRpdG9yKCkuY29weVVSTChlbGVtZW50LmRv
Y3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGVs
ZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhyZWZBdHRy
KSkpLCBlbGVtZW50LnRleHRDb250ZW50KCkpOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCiAgICAgICAgIGVsc2UgaWYgKGF1dG8gYXR0YWNobWVudEluZm8gPSBlbGVtZW50LmRvY3Vt
ZW50KCkuZWRpdG9yKCkucHJvbWlzZWRBdHRhY2htZW50SW5mbyhlbGVtZW50KSkKLSAgICAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JpdGVQcm9taXNlZEF0dGFjaG1lbnRU
b1Bhc3RlYm9hcmQoV1RGTW92ZShhdHRhY2htZW50SW5mbykpKTsKKyAgICAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9h
cmQoV1RGTW92ZShhdHRhY2htZW50SW5mbyksIGF1dGhvcml6YXRpb25Ub2tlbikpOwogI2VuZGlm
CiAgICAgfSBlbHNlIGlmIChzdGF0aWNfY2FzdDxTaGVldEFjdGlvbj4oYWN0aW9uKSA9PSBTaGVl
dEFjdGlvbjo6U2F2ZUltYWdlKSB7Ci0gICAgICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KCplbGVt
ZW50LnJlbmRlcmVyKCkpKQorICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqZWxlbWVudC5y
ZW5kZXJlcigpKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Ug
PSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2Uo
KTsKLSAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgICAgIGlmICghYnVmZmVyKQor
ICAgICAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBhdXRvIHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKLSAgICAgICAgaWYg
KCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAg
c2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTYXZlSW1hZ2VUb0xpYnJhcnkoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhh
bmRsZSksIGJ1ZmZlci0+c2l6ZSgpIH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTYXZlSW1hZ2VUb0xpYnJhcnkoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZN
b3ZlKGhhbmRsZSksIGJ1ZmZlci0+c2l6ZSgpIH0sIGF1dGhvcml6YXRpb25Ub2tlbikpOwogICAg
IH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxF
bGVtZW50PiBuZXh0QXNzaXN0YWJsZUVsZW1lbnQoTm9kZSogc3RhcnROb2RlLCBQYWdlJiBwYWdl
LCBib29sIGlzRm9yd2FyZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454858</attachid>
            <date>2022-03-16 10:37:08 -0700</date>
            <delta_ts>2022-03-16 11:54:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237839-20220316103707.patch</filename>
            <type>text/plain</type>
            <size>15110</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxOTU1ZTFkYWM1NzJhMTM0
MDY2YmIyY2FhMDhhM2UzYjZjMTFjNmIuLjNhMWMwNzg3ZTllZjY2YmZmMzRkZTM1NGFlZWRiNjE0
YjAyMDEyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDMtMTYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29yZUlQQyBIYXJkZW5pbmc6
IEFkZCB1c2VyIGdlc3R1cmUgY2hlY2sgd2hlbiBzYXZpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzkKKyAgICAgICAgPHJkYXI6
Ly83MjA1ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgY2hlY2sgdG8gY29uZmlybSB0aGF0IGF0dGVtcHRzIHRvIHN0b3JlIGltYWdlcyBp
biB0aGUgdXNlcidzIFBob3RvCisgICAgICAgIExpYnJhcnkgYW5kIGF0dGVtcHRzIHRvIHN0b3Jl
IGRhdGEgaW4gdGhlIHBhc3RlYm9hcmQgd2VyZSB0cmlnZ2VyZWQgYnkKKyAgICAgICAgYSB1c2Vy
IGdlc3R1cmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVi
b2FyZCk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24gdG9rZW4gYmVmb3JlCisgICAg
ICAgIHBlcmZvcm1pbmcgdGhlIHdyaXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmlzVmFsaWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aG9yaXphdGlv
blRva2VuIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVy
Zm9ybUFjdGlvbk9uRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24g
dG9rZW4gYmVmb3JlCisgICAgICAgIHBlcmZvcm1pbmcgdGhlIHNhdmUuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVs
ZW1lbnQpOgorCiAyMDIyLTAzLTE1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXSBJbmRlZmluaXRlIGhhbmcgd2hlbiBwcmludGluZyB1c2luZyBh
IFVJUHJpbnRQYWdlUmVuZGVyZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGEyN2ZkNDMzYzZlYWQzNWE5MGVlOWNmM2NiMGIwNmZmYjI1YjI3ZTQuLjk2YTZl
ZTZmMmI5NTA5MDdkZjRlZjIzMTVlMmRhOWQ3NWU1NDMwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0xMDE5MCw4ICsxMDE5MCwxMCBAQCBEYXRhT3duZXJUeXBlIFdl
YlBhZ2VQcm94eTo6ZGF0YU93bmVyRm9yUGFzdGVib2FyZChQYXN0ZWJvYXJkQWNjZXNzSW50ZW50
IGludGVudAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdl
UHJveHk6OndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21p
c2VkQXR0YWNobWVudEluZm8mJiBpbmZvKQordm9pZCBXZWJQYWdlUHJveHk6OndyaXRlUHJvbWlz
ZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8m
JiBpbmZvLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKIHsKKyAgICBNRVNTQUdF
X0NIRUNLKG1fcHJvY2VzcywgaXNWYWxpZFBlcmZvcm1BY3Rpb25PbkVsZW1lbnRBdXRob3JpemF0
aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKSk7CisKICAgICBwYWdlQ2xpZW50KCkud3JpdGVQ
cm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV1RGTW92ZShpbmZvKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMDZiNzM3YWUwM2FlMmYzYzFiMmNk
M2EyNmIzOWJhY2IxYzRlMjUyZC4uOTgwMTUyYzY2YjZhZDk4MmI4ZTM5NDY5YTk3NmM3OGFlNDIx
ODBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04ODksNyAr
ODg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbklu
Zm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7CiAgICAg
dm9pZCBzdG9wSW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQo
dWludDMyX3QgYWN0aW9uKTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUpOworICAgIHZvaWQgc2F2ZUltYWdlVG9M
aWJyYXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZSwgY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOwogICAgIHZvaWQgZm9jdXNOZXh0Rm9jdXNlZEVs
ZW1lbnQoYm9vbCBpc0ZvcndhcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsg
fSk7CiAgICAgdm9pZCBzZXRGb2N1c2VkRWxlbWVudFZhbHVlKGNvbnN0IFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRGb2N1c2VkRWxlbWVudFNl
bGVjdGVkSW5kZXgoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCB1aW50MzJfdCBpbmRl
eCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOwpAQCAtMjM5Myw2ICsyMzkz
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhh
c1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91
dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgdXBkYXRlU3RyaW5n
Rm9yRmluZChjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgaXNWYWxpZFBlcmZvcm1BY3Rpb25P
bkVsZW1lbnRBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4pIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7CkBAIC0yNTQwLDcgKzI1
NDIsNyBAQCBwcml2YXRlOgogICAgIFJlZjxBUEk6OkF0dGFjaG1lbnQ+IGVuc3VyZUF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICB2b2lkIGludmFsaWRhdGVBbGxBdHRh
Y2htZW50cygpOwogCi0gICAgdm9pZCB3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2Fy
ZChXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpOworICAgIHZvaWQgd3JpdGVQcm9t
aXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5m
byYmLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7CiAKICAgICB2b2lkIHJlcXVl
c3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmKTsKIApAQCAtMzA2Nyw2ICszMDY5LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgV2ViQ29yZTo6
RmxvYXRTaXplIG1fbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIGJvb2wgbV9sYXN0T2JzZXJ2
ZWRTdGF0ZVdhc0JhY2tncm91bmQgeyBmYWxzZSB9OworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Bl
cmZvcm1BY3Rpb25PbkVsZW1lbnRBdXRoVG9rZW5zOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBtX2NhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxl
Y3Rpb25TdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCA5MmExYzNjY2I2MDc5YjBiYmUyNGUyZmY5MzM2MDFlZGYzNmFlYTA0
Li5mZDk2MjAwMzE5YWExODcyZTZjZGNmMGFiOGVkMzJlMDVkYzFmYzRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEs
NCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYwLDcgKzE2MCw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBJbnRlcnByZXRLZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JTdGF0ZSBzdGF0ZSwgYm9v
bCBpc0NoYXJFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMKICAgICBEaWRSZWNl
aXZlUG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKLSAgICBTYXZlSW1hZ2VUb0xpYnJhcnkoV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpCisgICAgU2F2ZUltYWdlVG9MaWJyYXJ5
KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBTdHJpbmcgYXV0aG9yaXph
dGlvblRva2VuKQogICAgIFNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBX
ZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRSZWN0LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Um91dGVT
aGFyaW5nUG9saWN5IHBvbGljeSwgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKQogICAgIENvbW1p
dFBvdGVudGlhbFRhcEZhaWxlZCgpCiAgICAgRGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3Jl
OjpJbnRQb2ludCBwb2ludCkKQEAgLTUyNSw3ICs1MjUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIERpZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRl
bnRpZmllciwgU3RyaW5nIHNvdXJjZSwgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkKICAgICBEaWRS
ZW1vdmVBdHRhY2htZW50V2l0aElkZW50aWZpZXIoU3RyaW5nIGlkZW50aWZpZXIpCiAgICAgU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRp
ZmllcnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJh
bGl6ZWREYXRhKSBTeW5jaHJvbm91cwotICAgIFdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0
ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvIGluZm8pCisgICAg
V3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlByb21p
c2VkQXR0YWNobWVudEluZm8gaW5mbywgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbikKICAgICBS
ZXF1ZXN0QXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50VHlw
ZSwgU3RyaW5nIHBhdGgsIFN0cmluZyB0aXRsZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KaW5kZXggNzdhZmFlODdjZmY0Nzk3ZTgxYzlhN2M0MDcxNTNlY2U3NjU4NDQxZC4uNzRhNGI3
ZDI2NDhmMDg3NWM3MWNiMjJhNzA4NWUzOWY0NTFkNTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTk0LDE0ICs1OTQsMzAgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnN0b3BJbnRlcmFjdGlvbigpCiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wSW50ZXJhY3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQog
Citib29sIFdlYlBhZ2VQcm94eTo6aXNWYWxpZFBlcmZvcm1BY3Rpb25PbkVsZW1lbnRBdXRob3Jp
emF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFhdXRob3JpemF0aW9uVG9rZW4uaXNOdWxsKCkgJiYgbV9wZXJmb3JtQWN0aW9u
T25FbGVtZW50QXV0aFRva2Vucy5jb250YWlucyhhdXRob3JpemF0aW9uVG9rZW4pOworfQorCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24p
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtQWN0aW9u
T25FbGVtZW50KGFjdGlvbiksIG1fd2ViUGFnZUlEKTsKKyAgICBhdXRvIGF1dGhvcml6YXRpb25U
b2tlbiA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOworCisgICAgbV9wZXJmb3JtQWN0aW9u
T25FbGVtZW50QXV0aFRva2Vucy5hZGQoYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICAKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1BY3Rpb25PbkVsZW1l
bnQoYWN0aW9uLCBhdXRob3JpemF0aW9uVG9rZW4pLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgYXV0aG9yaXphdGlvblRva2VuXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQod2Vha1RoaXMtPmlz
VmFsaWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aG9yaXphdGlvblRva2VuKGF1dGhvcml6YXRp
b25Ub2tlbikpOworICAgICAgICB3ZWFrVGhpcy0+bV9wZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0
aFRva2Vucy5yZW1vdmUoYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICB9KTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYgaW1hZ2VIYW5kbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5
KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZSwgY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4pCiB7CiAgICAgTUVTU0FHRV9DSEVDSyghaW1hZ2VIYW5kbGUu
aGFuZGxlLmlzTnVsbCgpKTsKKyAgICBNRVNTQUdFX0NIRUNLKGlzVmFsaWRQZXJmb3JtQWN0aW9u
T25FbGVtZW50QXV0aG9yaXphdGlvblRva2VuKGF1dGhvcml6YXRpb25Ub2tlbikpOwogCiAgICAg
YXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZS5o
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hh
cmVkTWVtb3J5QnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDZlNWY4ZjBhNTExNmUxYWEyNjJiYTBhZDMxYjJjOTI3YmMzNmZkY2YuLjZhZWYy
MGRlZjMwYzA2OTI2MTZlYzgwNTI2NDBhNDIzODE3ZDRkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MTksNyArODE5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENv
bnRleHRPclBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiYs
IFdlYkNvcmU6OkludFBvaW50JiYpOwogICAgIHZvaWQgc3RvcEludGVyYWN0aW9uKCk7Ci0gICAg
dm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbik7CisgICAgdm9pZCBw
ZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbiwgY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBm
b2N1c05leHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIGF1dG9maWxsTG9naW5DcmVkZW50aWFscyhjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEZvY3VzZWRFbGVtZW50VmFsdWUoY29u
c3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4
IGZjYzViN2UwMzQyNWQyOGVjOGU3YjYyNDJmZDhkNDUyYjMxZDcyZGMuLjgwZTFhNDA5MGVlMGUz
ZTg3YTYzYTUzY2E0NTczMDMzODA3MWJmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDcgKzk2LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRp
b24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkK
ICAgICBTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBlbGVtZW50Q29udGV4dCwgV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQpCiAgICAgU3RvcEludGVyYWN0aW9uKCkKLSAgICBQZXJmb3JtQWN0aW9u
T25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKKyAgICBQZXJmb3JtQWN0aW9uT25FbGVtZW50KHVp
bnQzMl90IGFjdGlvbiwgU3RyaW5nIGF1dGhlbnRpY2F0aW9uVG9rZW4pIC0+ICgpCiAgICAgRm9j
dXNOZXh0Rm9jdXNlZEVsZW1lbnQoYm9vbCBpc0ZvcndhcmQpIC0+ICgpCiAgICAgQXV0b2ZpbGxM
b2dpbkNyZWRlbnRpYWxzKFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIHBhc3N3b3JkKQogICAgIFNl
dEZvY3VzZWRFbGVtZW50VmFsdWUoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGNvbnRl
eHQsIFN0cmluZyB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzliMjJlNzgxMWQzNjdkYzE5OWJjYmU2YTNhNTkw
OGYxMmRiNTE3NS4uOWRjZTk3ZGM3OWQ5ZWMyMzQ1MGM2MzE2NzIwZDA4NDZlNmY3NTZkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMjM5LDE0ICszMjM5LDE4IEBAIHZvaWQgV2ViUGFnZTo6c3RvcEludGVyYWN0aW9u
KCkKICAgICBtX2ludGVyYWN0aW9uTm9kZSA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCit2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uLCBjb25zdCBTdHJpbmcmIGF1dGhv
cml6YXRpb25Ub2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG1faW50ZXJhY3Rpb25Ob2RlKSkKKyAg
ICBpZiAoIWlzPEhUTUxFbGVtZW50PihtX2ludGVyYWN0aW9uTm9kZSkpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEhUTUxFbGVt
ZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCptX2ludGVyYWN0aW9uTm9kZSk7
Ci0gICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCkpCisgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVy
KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIGlmIChzdGF0aWNfY2FzdDxTaGVldEFjdGlvbj4oYWN0aW9uKSA9PSBTaGVldEFj
dGlvbjo6Q29weSkgewogICAgICAgICBpZiAoaXM8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRl
cmVyKCkpKSB7CkBAIC0zMjY2LDI0ICszMjcwLDMzIEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFj
dGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgICAgICBtX2ludGVyYWN0aW9u
Tm9kZS0+ZG9jdW1lbnQoKS5lZGl0b3IoKS5jb3B5VVJMKGVsZW1lbnQuZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZWxlbWVudC5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aHJlZkF0dHIpKSksIGVsZW1lbnQu
dGV4dENvbnRlbnQoKSk7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAgICAg
ZWxzZSBpZiAoYXV0byBhdHRhY2htZW50SW5mbyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5lZGl0b3Io
KS5wcm9taXNlZEF0dGFjaG1lbnRJbmZvKGVsZW1lbnQpKQotICAgICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpXcml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChX
VEZNb3ZlKGF0dGFjaG1lbnRJbmZvKSkpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpXcml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChXVEZNb3ZlKGF0
dGFjaG1lbnRJbmZvKSwgYXV0aG9yaXphdGlvblRva2VuKSk7CiAjZW5kaWYKICAgICB9IGVsc2Ug
aWYgKHN0YXRpY19jYXN0PFNoZWV0QWN0aW9uPihhY3Rpb24pID09IFNoZWV0QWN0aW9uOjpTYXZl
SW1hZ2UpIHsKLSAgICAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIo
KSkpCisgICAgICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFJl
bmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpOwotICAgICAgICBp
ZiAoIWNhY2hlZEltYWdlKQorICAgICAgICBpZiAoIWNhY2hlZEltYWdlKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFn
ZS0+cmVzb3VyY2VCdWZmZXIoKTsKLSAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgIGlmICgh
YnVmZmVyKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwotICAgICAgICBpZiAoIXNoYXJlZE1lbW9y
eUJ1ZmZlcikKKyAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAg
ICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgICAgICBzaGFyZWRNZW1vcnlC
dWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVJbWFnZVRv
TGlicmFyeShTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVy
LT5zaXplKCkgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVJ
bWFnZVRvTGlicmFyeShTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwg
YnVmZmVyLT5zaXplKCkgfSwgYXV0aG9yaXphdGlvblRva2VuKSk7CiAgICAgfQorICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPEVsZW1lbnQ+IG5leHRB
c3Npc3RhYmxlRWxlbWVudChOb2RlKiBzdGFydE5vZGUsIFBhZ2UmIHBhZ2UsIGJvb2wgaXNGb3J3
YXJkKQo=
</data>
<flag name="commit-queue"
          id="482657"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454865</attachid>
            <date>2022-03-16 11:08:34 -0700</date>
            <delta_ts>2022-03-16 12:33:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237839-20220316110833.patch</filename>
            <type>text/plain</type>
            <size>14038</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxOTU1ZTFkYWM1NzJhMTM0
MDY2YmIyY2FhMDhhM2UzYjZjMTFjNmIuLjY3ODg5YTIyZTNiYTdjNDRhZmE2ODNjM2ZkYmMzZDQz
NWViNDZkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDMtMTYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29yZUlQQyBIYXJkZW5pbmc6
IEFkZCB1c2VyIGdlc3R1cmUgY2hlY2sgd2hlbiBzYXZpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzkKKyAgICAgICAgPHJkYXI6
Ly83MjA1ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICBBZGQgY2hlY2sgdG8gY29uZmlybSB0aGF0IGF0dGVtcHRzIHRvIHN0b3JlIGltYWdlcyBpbiB0
aGUgdXNlcidzIFBob3RvCisgICAgICAgIExpYnJhcnkgYW5kIGF0dGVtcHRzIHRvIHN0b3JlIGRh
dGEgaW4gdGhlIHBhc3RlYm9hcmQgd2VyZSB0cmlnZ2VyZWQgYnkKKyAgICAgICAgYSB1c2VyIGdl
c3R1cmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2Fy
ZCk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24gdG9rZW4gYmVmb3JlCisgICAgICAg
IHBlcmZvcm1pbmcgdGhlIHdyaXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmlzVmFsaWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aG9yaXphdGlvblRv
a2VuIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9y
bUFjdGlvbk9uRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNhdmVJbWFnZVRvTGlicmFyeSk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24gdG9r
ZW4gYmVmb3JlCisgICAgICAgIHBlcmZvcm1pbmcgdGhlIHNhdmUuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1l
bnQpOgorCiAyMDIyLTAzLTE1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBJbmRlZmluaXRlIGhhbmcgd2hlbiBwcmludGluZyB1c2luZyBhIFVJ
UHJpbnRQYWdlUmVuZGVyZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGEyN2ZkNDMzYzZlYWQzNWE5MGVlOWNmM2NiMGIwNmZmYjI1YjI3ZTQuLjk2YTZlZTZm
MmI5NTA5MDdkZjRlZjIzMTVlMmRhOWQ3NWU1NDMwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0xMDE5MCw4ICsxMDE5MCwxMCBAQCBEYXRhT3duZXJUeXBlIFdlYlBh
Z2VQcm94eTo6ZGF0YU93bmVyRm9yUGFzdGVib2FyZChQYXN0ZWJvYXJkQWNjZXNzSW50ZW50IGlu
dGVudAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlUHJv
eHk6OndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2Vk
QXR0YWNobWVudEluZm8mJiBpbmZvKQordm9pZCBXZWJQYWdlUHJveHk6OndyaXRlUHJvbWlzZWRB
dHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mJiBp
bmZvLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKIHsKKyAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2VzcywgaXNWYWxpZFBlcmZvcm1BY3Rpb25PbkVsZW1lbnRBdXRob3JpemF0aW9u
VG9rZW4oYXV0aG9yaXphdGlvblRva2VuKSk7CisKICAgICBwYWdlQ2xpZW50KCkud3JpdGVQcm9t
aXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV1RGTW92ZShpbmZvKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMDZiNzM3YWUwM2FlMmYzYzFiMmNkM2Ey
NmIzOWJhY2IxYzRlMjUyZC4uOTgwMTUyYzY2YjZhZDk4MmI4ZTM5NDY5YTk3NmM3OGFlNDIxODBi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04ODksNyArODg5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7CiAgICAgdm9p
ZCBzdG9wSW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWlu
dDMyX3QgYWN0aW9uKTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUpOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJy
YXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZSwgY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOwogICAgIHZvaWQgZm9jdXNOZXh0Rm9jdXNlZEVsZW1l
bnQoYm9vbCBpc0ZvcndhcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsgfSk7
CiAgICAgdm9pZCBzZXRGb2N1c2VkRWxlbWVudFZhbHVlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRGb2N1c2VkRWxlbWVudFNlbGVj
dGVkSW5kZXgoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCB1aW50MzJfdCBpbmRleCwg
Ym9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOwpAQCAtMjM5Myw2ICsyMzkzLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1Zp
ZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVT
aGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgdXBkYXRlU3RyaW5nRm9y
RmluZChjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgaXNWYWxpZFBlcmZvcm1BY3Rpb25PbkVs
ZW1lbnRBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4p
IGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7CkBAIC0yNTQwLDcgKzI1NDIs
NyBAQCBwcml2YXRlOgogICAgIFJlZjxBUEk6OkF0dGFjaG1lbnQ+IGVuc3VyZUF0dGFjaG1lbnQo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICB2b2lkIGludmFsaWRhdGVBbGxBdHRhY2ht
ZW50cygpOwogCi0gICAgdm9pZCB3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChX
ZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpOworICAgIHZvaWQgd3JpdGVQcm9taXNl
ZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYm
LCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7CiAKICAgICB2b2lkIHJlcXVlc3RB
dHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmKTsKIApAQCAtMzA2Nyw2ICszMDY5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpGbG9hdFNpemUgbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIG1fbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIGJvb2wgbV9sYXN0T2JzZXJ2ZWRT
dGF0ZVdhc0JhY2tncm91bmQgeyBmYWxzZSB9OworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3BlcmZv
cm1BY3Rpb25PbkVsZW1lbnRBdXRoVG9rZW5zOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBtX2NhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA5MmExYzNjY2I2MDc5YjBiYmUyNGUyZmY5MzM2MDFlZGYzNmFlYTA0Li5m
ZDk2MjAwMzE5YWExODcyZTZjZGNmMGFiOGVkMzJlMDVkYzFmYzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBA
QAotIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYwLDcgKzE2MCw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBJ
bnRlcnByZXRLZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JTdGF0ZSBzdGF0ZSwgYm9vbCBp
c0NoYXJFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMKICAgICBEaWRSZWNlaXZl
UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKLSAgICBTYXZlSW1hZ2VUb0xpYnJhcnkoV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpCisgICAgU2F2ZUltYWdlVG9MaWJyYXJ5KFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBTdHJpbmcgYXV0aG9yaXphdGlv
blRva2VuKQogICAgIFNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBXZWJD
b3JlOjpJbnRSZWN0IGVsZW1lbnRSZWN0LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Um91dGVTaGFy
aW5nUG9saWN5IHBvbGljeSwgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKQogICAgIENvbW1pdFBv
dGVudGlhbFRhcEZhaWxlZCgpCiAgICAgRGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCkKQEAgLTUyNSw3ICs1MjUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgIERpZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRp
ZmllciwgU3RyaW5nIHNvdXJjZSwgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkKICAgICBEaWRSZW1v
dmVBdHRhY2htZW50V2l0aElkZW50aWZpZXIoU3RyaW5nIGlkZW50aWZpZXIpCiAgICAgU2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRpZmll
cnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJhbGl6
ZWREYXRhKSBTeW5jaHJvbm91cwotICAgIFdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJv
YXJkKHN0cnVjdCBXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvIGluZm8pCisgICAgV3Jp
dGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlByb21pc2Vk
QXR0YWNobWVudEluZm8gaW5mbywgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbikKICAgICBSZXF1
ZXN0QXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50VHlwZSwg
U3RyaW5nIHBhdGgsIFN0cmluZyB0aXRsZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
aW5kZXggNzdhZmFlODdjZmY0Nzk3ZTgxYzlhN2M0MDcxNTNlY2U3NjU4NDQxZC4uNzRhNGI3ZDI2
NDhmMDg3NWM3MWNiMjJhNzA4NWUzOWY0NTFkNTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTk0LDE0ICs1OTQsMzAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnN0b3BJbnRlcmFjdGlvbigpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTdG9wSW50ZXJhY3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQogCiti
b29sIFdlYlBhZ2VQcm94eTo6aXNWYWxpZFBlcmZvcm1BY3Rpb25PbkVsZW1lbnRBdXRob3JpemF0
aW9uVG9rZW4oY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIGNvbnN0Cit7CisgICAg
cmV0dXJuICFhdXRob3JpemF0aW9uVG9rZW4uaXNOdWxsKCkgJiYgbV9wZXJmb3JtQWN0aW9uT25F
bGVtZW50QXV0aFRva2Vucy5jb250YWlucyhhdXRob3JpemF0aW9uVG9rZW4pOworfQorCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtQWN0aW9uT25F
bGVtZW50KGFjdGlvbiksIG1fd2ViUGFnZUlEKTsKKyAgICBhdXRvIGF1dGhvcml6YXRpb25Ub2tl
biA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOworCisgICAgbV9wZXJmb3JtQWN0aW9uT25F
bGVtZW50QXV0aFRva2Vucy5hZGQoYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICAKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1BY3Rpb25PbkVsZW1lbnQo
YWN0aW9uLCBhdXRob3JpemF0aW9uVG9rZW4pLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgYXV0aG9yaXphdGlvblRva2VuXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQod2Vha1RoaXMtPmlzVmFs
aWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aG9yaXphdGlvblRva2VuKGF1dGhvcml6YXRpb25U
b2tlbikpOworICAgICAgICB3ZWFrVGhpcy0+bV9wZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aFRv
a2Vucy5yZW1vdmUoYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICB9KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYgaW1hZ2VIYW5kbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4pCiB7CiAgICAgTUVTU0FHRV9DSEVDSyghaW1hZ2VIYW5kbGUuaGFu
ZGxlLmlzTnVsbCgpKTsKKyAgICBNRVNTQUdFX0NIRUNLKGlzVmFsaWRQZXJmb3JtQWN0aW9uT25F
bGVtZW50QXV0aG9yaXphdGlvblRva2VuKGF1dGhvcml6YXRpb25Ub2tlbikpOwogCiAgICAgYXV0
byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZS5oYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVk
TWVtb3J5QnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDZlNWY4ZjBhNTExNmUxYWEyNjJiYTBhZDMxYjJjOTI3YmMzNmZkY2YuLjZhZWYyMGRl
ZjMwYzA2OTI2MTZlYzgwNTI2NDBhNDIzODE3ZDRkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MTksNyArODE5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QmKTsKICAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRl
eHRPclBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiYsIFdl
YkNvcmU6OkludFBvaW50JiYpOwogICAgIHZvaWQgc3RvcEludGVyYWN0aW9uKCk7Ci0gICAgdm9p
ZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbik7CisgICAgdm9pZCBwZXJm
b3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbiwgY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBmb2N1
c05leHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGF1dG9maWxsTG9naW5DcmVkZW50aWFscyhjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEZvY3VzZWRFbGVtZW50VmFsdWUoY29uc3Qg
V2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGZj
YzViN2UwMzQyNWQyOGVjOGU3YjYyNDJmZDhkNDUyYjMxZDcyZGMuLjgwZTFhNDA5MGVlMGUzZTg3
YTYzYTUzY2E0NTczMDMzODA3MWJmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDcgKzk2LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24o
c3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkKICAg
ICBTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBlbGVtZW50Q29udGV4dCwgV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQpCiAgICAgU3RvcEludGVyYWN0aW9uKCkKLSAgICBQZXJmb3JtQWN0aW9uT25F
bGVtZW50KHVpbnQzMl90IGFjdGlvbikKKyAgICBQZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQz
Ml90IGFjdGlvbiwgU3RyaW5nIGF1dGhlbnRpY2F0aW9uVG9rZW4pIC0+ICgpCiAgICAgRm9jdXNO
ZXh0Rm9jdXNlZEVsZW1lbnQoYm9vbCBpc0ZvcndhcmQpIC0+ICgpCiAgICAgQXV0b2ZpbGxMb2dp
bkNyZWRlbnRpYWxzKFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIHBhc3N3b3JkKQogICAgIFNldEZv
Y3VzZWRFbGVtZW50VmFsdWUoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGNvbnRleHQs
IFN0cmluZyB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzliMjJlNzgxMWQzNjdkYzE5OWJjYmU2YTNhNTkwOGYx
MmRiNTE3NS4uZmUzNWEyOWUxZmRmYTExOWJmZjRjNjgwZjIzMTMwYmQ2MmIwNzUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMjM5LDggKzMyMzksMTAgQEAgdm9pZCBXZWJQYWdlOjpzdG9wSW50ZXJhY3Rpb24oKQog
ICAgIG1faW50ZXJhY3Rpb25Ob2RlID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlOjpwZXJm
b3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKK3ZvaWQgV2ViUGFnZTo6cGVyZm9y
bUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24sIGNvbnN0IFN0cmluZyYgYXV0aG9yaXph
dGlvblRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CisgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY2FsbENvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKwogICAgIGlmICghaXM8SFRNTEVsZW1l
bnQ+KG1faW50ZXJhY3Rpb25Ob2RlKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjY2LDcgKzMy
NjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0
aW9uKQogICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZWRpdG9yKCku
Y29weVVSTChlbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihI
VE1MTmFtZXM6OmhyZWZBdHRyKSkpLCBlbGVtZW50LnRleHRDb250ZW50KCkpOwogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAgIGVsc2UgaWYgKGF1dG8gYXR0YWNobWVudElu
Zm8gPSBlbGVtZW50LmRvY3VtZW50KCkuZWRpdG9yKCkucHJvbWlzZWRBdHRhY2htZW50SW5mbyhl
bGVtZW50KSkKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JpdGVQ
cm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV1RGTW92ZShhdHRhY2htZW50SW5mbykpKTsK
KyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JpdGVQcm9taXNlZEF0
dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV1RGTW92ZShhdHRhY2htZW50SW5mbyksIGF1dGhvcml6YXRp
b25Ub2tlbikpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChzdGF0aWNfY2FzdDxTaGVldEFjdGlv
bj4oYWN0aW9uKSA9PSBTaGVldEFjdGlvbjo6U2F2ZUltYWdlKSB7CiAgICAgICAgIGlmICghaXM8
UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpKQpAQCAtMzI4Miw3ICszMjg0LDcgQEAg
dm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwog
ICAgICAgICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNhdmVJbWFnZVRvTGlicmFyeShTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdU
Rk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXplKCkgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNhdmVJbWFnZVRvTGlicmFyeShTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXplKCkgfSwgYXV0aG9yaXphdGlvblRva2Vu
KSk7CiAgICAgfQogfQogCg==
</data>
<flag name="commit-queue"
          id="482668"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454873</attachid>
            <date>2022-03-16 11:47:31 -0700</date>
            <delta_ts>2022-03-16 13:35:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237839-20220316114730.patch</filename>
            <type>text/plain</type>
            <size>14072</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxOTU1ZTFkYWM1NzJhMTM0
MDY2YmIyY2FhMDhhM2UzYjZjMTFjNmIuLjY3ODg5YTIyZTNiYTdjNDRhZmE2ODNjM2ZkYmMzZDQz
NWViNDZkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDMtMTYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29yZUlQQyBIYXJkZW5pbmc6
IEFkZCB1c2VyIGdlc3R1cmUgY2hlY2sgd2hlbiBzYXZpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzkKKyAgICAgICAgPHJkYXI6
Ly83MjA1ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICBBZGQgY2hlY2sgdG8gY29uZmlybSB0aGF0IGF0dGVtcHRzIHRvIHN0b3JlIGltYWdlcyBpbiB0
aGUgdXNlcidzIFBob3RvCisgICAgICAgIExpYnJhcnkgYW5kIGF0dGVtcHRzIHRvIHN0b3JlIGRh
dGEgaW4gdGhlIHBhc3RlYm9hcmQgd2VyZSB0cmlnZ2VyZWQgYnkKKyAgICAgICAgYSB1c2VyIGdl
c3R1cmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2Fy
ZCk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24gdG9rZW4gYmVmb3JlCisgICAgICAg
IHBlcmZvcm1pbmcgdGhlIHdyaXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmlzVmFsaWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aG9yaXphdGlvblRv
a2VuIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9y
bUFjdGlvbk9uRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNhdmVJbWFnZVRvTGlicmFyeSk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24gdG9r
ZW4gYmVmb3JlCisgICAgICAgIHBlcmZvcm1pbmcgdGhlIHNhdmUuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1l
bnQpOgorCiAyMDIyLTAzLTE1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBJbmRlZmluaXRlIGhhbmcgd2hlbiBwcmludGluZyB1c2luZyBhIFVJ
UHJpbnRQYWdlUmVuZGVyZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGEyN2ZkNDMzYzZlYWQzNWE5MGVlOWNmM2NiMGIwNmZmYjI1YjI3ZTQuLjc1NjVkMDY0
MzJmNDZjMjBhZGY5ZjFhODc2NjUzMTE3Mjg0N2EyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0xMDE5MCw4ICsxMDE5MCwxMiBAQCBEYXRhT3duZXJUeXBlIFdlYlBh
Z2VQcm94eTo6ZGF0YU93bmVyRm9yUGFzdGVib2FyZChQYXN0ZWJvYXJkQWNjZXNzSW50ZW50IGlu
dGVudAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlUHJv
eHk6OndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2Vk
QXR0YWNobWVudEluZm8mJiBpbmZvKQordm9pZCBXZWJQYWdlUHJveHk6OndyaXRlUHJvbWlzZWRB
dHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mJiBp
bmZvLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKIHsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBpc1ZhbGlkUGVyZm9ybUFj
dGlvbk9uRWxlbWVudEF1dGhvcml6YXRpb25Ub2tlbihhdXRob3JpemF0aW9uVG9rZW4pKTsKKyNl
bmRpZgorCiAgICAgcGFnZUNsaWVudCgpLndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJv
YXJkKFdURk1vdmUoaW5mbykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDA2YjczN2FlMDNhZTJmM2MxYjJjZDNhMjZiMzliYWNiMWM0ZTI1MmQuLjk4MDE1
MmM2NmI2YWQ5ODJiOGUzOTQ2OWE5NzZjNzhhZTQyMTgwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODg5LDcgKzg4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHN0YXJ0SW50ZXJhY3Rpb25XaXRoUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwogICAgIHZvaWQgc3RvcEludGVyYWN0aW9uKCk7CiAg
ICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbik7Ci0gICAgdm9p
ZCBzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdl
SGFuZGxlKTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
KTsKICAgICB2b2lkIGZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wgaXNGb3J3YXJkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0pOwogICAgIHZvaWQgc2V0Rm9jdXNlZEVs
ZW1lbnRWYWx1ZShjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgc2V0Rm9jdXNlZEVsZW1lbnRTZWxlY3RlZEluZGV4KGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0JiwgdWludDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVj
dGlvbiA9IGZhbHNlKTsKQEAgLTIzOTMsNiArMjM5Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3Ry
aW5nJik7CiAKICAgICB2b2lkIHVwZGF0ZVN0cmluZ0ZvckZpbmQoY29uc3QgU3RyaW5nJik7CisK
KyAgICBib29sIGlzVmFsaWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aG9yaXphdGlvblRva2Vu
KGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBjb25zdDsKICNlbmRpZgogCiAgICAg
dm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiYpOwpAQCAtMjU0MCw3ICsyNTQyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8
QVBJOjpBdHRhY2htZW50PiBlbnN1cmVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cik7CiAgICAgdm9pZCBpbnZhbGlkYXRlQWxsQXR0YWNobWVudHMoKTsKIAotICAgIHZvaWQgd3Jp
dGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyYmKTsKKyAgICB2b2lkIHdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJk
KFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mJiwgY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pOwogCiAgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAKQEAgLTMw
NjcsNiArMzA2OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWluaW11
bVVub2JzY3VyZWRTaXplOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21heGltdW1Vbm9ic2N1
cmVkU2l6ZTsKICAgICBib29sIG1fbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kIHsgZmFs
c2UgfTsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9wZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aFRv
a2VuczsKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmlidXRl
cz4gbV9jYWNoZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTJhMWMzY2Ni
NjA3OWIwYmJlMjRlMmZmOTMzNjAxZWRmMzZhZWEwNC4uZmQ5NjIwMDMxOWFhMTg3MmU2Y2RjZjBh
YjhlZDMyZTA1ZGMxZmM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE2MCw3ICsxNjAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkg
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSW50ZXJwcmV0S2V5RXZlbnQoc3RydWN0
IFdlYktpdDo6RWRpdG9yU3RhdGUgc3RhdGUsIGJvb2wgaXNDaGFyRXZlbnQpIC0+IChib29sIGhh
bmRsZWQpIFN5bmNocm9ub3VzCiAgICAgRGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24oc3Ry
dWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24p
Ci0gICAgU2F2ZUltYWdlVG9MaWJyYXJ5KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
aGFuZGxlKQorICAgIFNhdmVJbWFnZVRvTGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGhhbmRsZSwgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbikKICAgICBTaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgV2ViQ29yZTo6SW50UmVjdCBlbGVtZW50UmVj
dCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3ksIFN0cmlu
ZyByb3V0aW5nQ29udGV4dFVJRCkKICAgICBDb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKQogICAg
IERpZE5vdEhhbmRsZVRhcEFzQ2xpY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCkBAIC01MjUs
NyArNTI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRJbnNlcnRBdHRh
Y2htZW50V2l0aElkZW50aWZpZXIoU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2UsIGJv
b2wgaGFzRW5jbG9zaW5nSW1hZ2UpCiAgICAgRGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlm
aWVyKFN0cmluZyBpZGVudGlmaWVyKQogICAgIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklk
ZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyYWxpemVkRGF0YSkgU3luY2hyb25vdXMKLSAg
ICBXcml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UHJv
bWlzZWRBdHRhY2htZW50SW5mbyBpbmZvKQorICAgIFdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9Q
YXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvIGluZm8sIFN0
cmluZyBhdXRob3JpemF0aW9uVG9rZW4pCiAgICAgUmVxdWVzdEF0dGFjaG1lbnRJY29uKFN0cmlu
ZyBpZGVudGlmaWVyLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBwYXRoLCBTdHJpbmcgdGl0
bGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDc3YWZhZTg3Y2ZmNDc5N2U4
MWM5YTdjNDA3MTUzZWNlNzY1ODQ0MWQuLjc0YTRiN2QyNjQ4ZjA4NzVjNzFjYjIyYTcwODVlMzlm
NDUxZDUyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU5NCwxNCArNTk0LDMwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wSW50
ZXJhY3Rpb24oKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcElu
dGVyYWN0aW9uKCksIG1fd2ViUGFnZUlEKTsKIH0KIAorYm9vbCBXZWJQYWdlUHJveHk6OmlzVmFs
aWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuKSBjb25zdAoreworICAgIHJldHVybiAhYXV0aG9yaXphdGlvblRv
a2VuLmlzTnVsbCgpICYmIG1fcGVyZm9ybUFjdGlvbk9uRWxlbWVudEF1dGhUb2tlbnMuY29udGFp
bnMoYXV0aG9yaXphdGlvblRva2VuKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1B
Y3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUFjdGlvbk9uRWxlbWVudChhY3Rpb24pLCBtX3dlYlBh
Z2VJRCk7CisgICAgYXV0byBhdXRob3JpemF0aW9uVG9rZW4gPSBjcmVhdGVWZXJzaW9uNFVVSURT
dHJpbmcoKTsKKworICAgIG1fcGVyZm9ybUFjdGlvbk9uRWxlbWVudEF1dGhUb2tlbnMuYWRkKGF1
dGhvcml6YXRpb25Ub2tlbik7CisgICAgCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQZXJmb3JtQWN0aW9uT25FbGVtZW50KGFjdGlvbiwgYXV0aG9yaXphdGlvblRv
a2VuKSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGF1dGhvcml6YXRpb25Ub2tlbl0g
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgQVNTRVJUKHdlYWtUaGlzLT5pc1ZhbGlkUGVyZm9ybUFjdGlvbk9uRWxlbWVu
dEF1dGhvcml6YXRpb25Ub2tlbihhdXRob3JpemF0aW9uVG9rZW4pKTsKKyAgICAgICAgd2Vha1Ro
aXMtPm1fcGVyZm9ybUFjdGlvbk9uRWxlbWVudEF1dGhUb2tlbnMucmVtb3ZlKGF1dGhvcml6YXRp
b25Ub2tlbik7CisgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xp
YnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlKQordm9pZCBX
ZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYgaW1hZ2VIYW5kbGUsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQogewog
ICAgIE1FU1NBR0VfQ0hFQ0soIWltYWdlSGFuZGxlLmhhbmRsZS5pc051bGwoKSk7CisgICAgTUVT
U0FHRV9DSEVDSyhpc1ZhbGlkUGVyZm9ybUFjdGlvbk9uRWxlbWVudEF1dGhvcml6YXRpb25Ub2tl
bihhdXRob3JpemF0aW9uVG9rZW4pKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA2ZTVmOGYwYTUxMTZlMWFh
MjYyYmEwYWQzMWIyYzkyN2JjMzZmZGNmLi42YWVmMjBkZWYzMGMwNjkyNjE2ZWM4MDUyNjQwYTQy
MzgxN2Q0ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtODE5LDcgKzgxOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbklu
Zm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9p
ZCBzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYmLCBXZWJDb3JlOjpJbnRQb2ludCYmKTsKICAg
ICB2b2lkIHN0b3BJbnRlcmFjdGlvbigpOwotICAgIHZvaWQgcGVyZm9ybUFjdGlvbk9uRWxlbWVu
dCh1aW50MzJfdCBhY3Rpb24pOworICAgIHZvaWQgcGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50
MzJfdCBhY3Rpb24sIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQoYm9v
bCBpc0ZvcndhcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBhdXRv
ZmlsbExvZ2luQ3JlZGVudGlhbHMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBzZXRGb2N1c2VkRWxlbWVudFZhbHVlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiwgY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBmY2M1YjdlMDM0MjVkMjhlYzhlN2I2MjQy
ZmQ4ZDQ1MmIzMWQ3MmRjLi44MGUxYTQwOTBlZTBlM2U4N2E2M2E1M2NhNDU3MzAzMzgwNzFiZjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC05Niw3ICs5Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpCiAgICAgU3RhcnRJbnRlcmFjdGlvbldpdGhF
bGVtZW50Q29udGV4dE9yUG9zaXRpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29u
dGV4dD4gZWxlbWVudENvbnRleHQsIFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAgIFN0b3BJ
bnRlcmFjdGlvbigpCi0gICAgUGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24p
CisgICAgUGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24sIFN0cmluZyBhdXRo
ZW50aWNhdGlvblRva2VuKSAtPiAoKQogICAgIEZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wg
aXNGb3J3YXJkKSAtPiAoKQogICAgIEF1dG9maWxsTG9naW5DcmVkZW50aWFscyhTdHJpbmcgdXNl
cm5hbWUsIFN0cmluZyBwYXNzd29yZCkKICAgICBTZXRGb2N1c2VkRWxlbWVudFZhbHVlKHN0cnVj
dCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBjb250ZXh0LCBTdHJpbmcgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IDc5YjIyZTc4MTFkMzY3ZGMxOTliY2JlNmEzYTU5MDhmMTJkYjUxNzUuLmZlMzVhMjllMWZkZmEx
MTliZmY0YzY4MGYyMzEzMGJkNjJiMDc1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIzOSw4ICszMjM5LDEwIEBA
IHZvaWQgV2ViUGFnZTo6c3RvcEludGVyYWN0aW9uKCkKICAgICBtX2ludGVyYWN0aW9uTm9kZSA9
IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50
MzJfdCBhY3Rpb24pCit2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMy
X3QgYWN0aW9uLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIENvbXBsZXRpb25IYW5k
bGVyQ2FsbGluZ1Njb3BlIGNhbGxDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisKICAgICBpZiAoIWlzPEhUTUxFbGVtZW50PihtX2ludGVyYWN0aW9uTm9kZSkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMzI2Niw3ICszMjY4LDcgQEAgdm9pZCBXZWJQYWdlOjpw
ZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgICAgIG1faW50
ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmVkaXRvcigpLmNvcHlVUkwoZWxlbWVudC5kb2N1bWVu
dCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhlbGVtZW50
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpocmVmQXR0cikpKSwg
ZWxlbWVudC50ZXh0Q29udGVudCgpKTsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgICAgICBlbHNlIGlmIChhdXRvIGF0dGFjaG1lbnRJbmZvID0gZWxlbWVudC5kb2N1bWVudCgp
LmVkaXRvcigpLnByb21pc2VkQXR0YWNobWVudEluZm8oZWxlbWVudCkpCi0gICAgICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0
ZWJvYXJkKFdURk1vdmUoYXR0YWNobWVudEluZm8pKSk7CisgICAgICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OldyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdU
Rk1vdmUoYXR0YWNobWVudEluZm8pLCBhdXRob3JpemF0aW9uVG9rZW4pKTsKICNlbmRpZgogICAg
IH0gZWxzZSBpZiAoc3RhdGljX2Nhc3Q8U2hlZXRBY3Rpb24+KGFjdGlvbikgPT0gU2hlZXRBY3Rp
b246OlNhdmVJbWFnZSkgewogICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqZWxlbWVudC5y
ZW5kZXJlcigpKSkKQEAgLTMyODIsNyArMzI4NCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFj
dGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgc2hhcmVkTWVtb3J5QnVm
ZmVyLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlSW1hZ2VUb0xp
YnJhcnkoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlci0+
c2l6ZSgpIH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlSW1h
Z2VUb0xpYnJhcnkoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1
ZmZlci0+c2l6ZSgpIH0sIGF1dGhvcml6YXRpb25Ub2tlbikpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454890</attachid>
            <date>2022-03-16 13:35:26 -0700</date>
            <delta_ts>2022-03-16 15:00:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237839-20220316133525.patch</filename>
            <type>text/plain</type>
            <size>14325</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxOTU1ZTFkYWM1NzJhMTM0
MDY2YmIyY2FhMDhhM2UzYjZjMTFjNmIuLjY3ODg5YTIyZTNiYTdjNDRhZmE2ODNjM2ZkYmMzZDQz
NWViNDZkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDMtMTYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29yZUlQQyBIYXJkZW5pbmc6
IEFkZCB1c2VyIGdlc3R1cmUgY2hlY2sgd2hlbiBzYXZpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzkKKyAgICAgICAgPHJkYXI6
Ly83MjA1ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICBBZGQgY2hlY2sgdG8gY29uZmlybSB0aGF0IGF0dGVtcHRzIHRvIHN0b3JlIGltYWdlcyBpbiB0
aGUgdXNlcidzIFBob3RvCisgICAgICAgIExpYnJhcnkgYW5kIGF0dGVtcHRzIHRvIHN0b3JlIGRh
dGEgaW4gdGhlIHBhc3RlYm9hcmQgd2VyZSB0cmlnZ2VyZWQgYnkKKyAgICAgICAgYSB1c2VyIGdl
c3R1cmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2Fy
ZCk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24gdG9rZW4gYmVmb3JlCisgICAgICAg
IHBlcmZvcm1pbmcgdGhlIHdyaXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmlzVmFsaWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0aG9yaXphdGlvblRv
a2VuIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9y
bUFjdGlvbk9uRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNhdmVJbWFnZVRvTGlicmFyeSk6IE1lc3NhZ2UgY2hlY2sgdGhlIGF1dGhvcml6YXRpb24gdG9r
ZW4gYmVmb3JlCisgICAgICAgIHBlcmZvcm1pbmcgdGhlIHNhdmUuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1l
bnQpOgorCiAyMDIyLTAzLTE1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBJbmRlZmluaXRlIGhhbmcgd2hlbiBwcmludGluZyB1c2luZyBhIFVJ
UHJpbnRQYWdlUmVuZGVyZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGEyN2ZkNDMzYzZlYWQzNWE5MGVlOWNmM2NiMGIwNmZmYjI1YjI3ZTQuLmMyMzdjMzAx
YWQzYzllYjY4MDZjZWI5MDMzYTg1M2MyYWQxOTFkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0xMDE5MCw5ICsxMDE5MCwxNiBAQCBEYXRhT3duZXJUeXBlIFdlYlBh
Z2VQcm94eTo6ZGF0YU93bmVyRm9yUGFzdGVib2FyZChQYXN0ZWJvYXJkQWNjZXNzSW50ZW50IGlu
dGVudAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlUHJv
eHk6OndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2Vk
QXR0YWNobWVudEluZm8mJiBpbmZvKQordm9pZCBXZWJQYWdlUHJveHk6OndyaXRlUHJvbWlzZWRB
dHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mJiBp
bmZvLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKIHsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBpc1ZhbGlkUGVyZm9ybUFj
dGlvbk9uRWxlbWVudEF1dGhvcml6YXRpb25Ub2tlbihhdXRob3JpemF0aW9uVG9rZW4pKTsKKwog
ICAgIHBhZ2VDbGllbnQoKS53cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChXVEZN
b3ZlKGluZm8pKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGluZm8pOworICAgIFVOVVNFRF9Q
QVJBTShhdXRob3JpemF0aW9uVG9rZW4pOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBGbG9hdFNpemUmIHJlcXVlc3RlZFNpemUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDA2YjczN2FlMDNhZTJmM2MxYjJjZDNhMjZiMzliYWNi
MWM0ZTI1MmQuLmExNjk5MjVlOGY2YTA3MzdjMGE2MTY4YWVjNTBjNWYxYzU3ZTc3Y2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODg5LDcgKzg4OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoUG9zaXRpb25JbmZvcm1hdGlvbihj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwogICAgIHZvaWQgc3RvcElu
dGVyYWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFj
dGlvbik7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmIGltYWdlSGFuZGxlKTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShjb25z
dCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUsIGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuKTsKICAgICB2b2lkIGZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wg
aXNGb3J3YXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0pOwogICAgIHZv
aWQgc2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZShjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYs
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Rm9jdXNlZEVsZW1lbnRTZWxlY3RlZEluZGV4
KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgdWludDMyX3QgaW5kZXgsIGJvb2wgYWxs
b3dNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlKTsKQEAgLTIzOTMsNiArMjM5Myw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1Bv
bGljeSwgY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHVwZGF0ZVN0cmluZ0ZvckZpbmQoY29u
c3QgU3RyaW5nJik7CisKKyAgICBib29sIGlzVmFsaWRQZXJmb3JtQWN0aW9uT25FbGVtZW50QXV0
aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBjb25zdDsK
ICNlbmRpZgogCiAgICAgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiYpOwpAQCAtMjU0MCw3ICsyNTQyLDggQEAgcHJp
dmF0ZToKICAgICBSZWY8QVBJOjpBdHRhY2htZW50PiBlbnN1cmVBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBpbnZhbGlkYXRlQWxsQXR0YWNobWVudHMoKTsK
IAotICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV2ViQ29yZTo6
UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKyAgICAgICAgCisgICAgdm9pZCB3cml0ZVByb21p
c2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZv
JiYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKIAogICAgIHZvaWQgcmVxdWVz
dEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOwogCkBAIC0zMDY3LDYgKzMwNzAsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBXZWJDb3JlOjpG
bG9hdFNpemUgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgYm9vbCBtX2xhc3RPYnNlcnZl
ZFN0YXRlV2FzQmFja2dyb3VuZCB7IGZhbHNlIH07CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcGVy
Zm9ybUFjdGlvbk9uRWxlbWVudEF1dGhUb2tlbnM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVj
dGlvblN0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDkyYTFjM2NjYjYwNzliMGJiZTI0ZTJmZjkzMzYwMWVkZjM2YWVhMDQu
LmZkOTYyMDAzMTlhYTE4NzJlNmNkY2YwYWI4ZWQzMmUwNWRjMWZjNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjAsNyArMTYwLDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29s
IGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIERpZFJlY2Vp
dmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQotICAgIFNhdmVJbWFnZVRvTGlicmFyeShXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkKKyAgICBTYXZlSW1hZ2VUb0xpYnJhcnko
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFN0cmluZyBhdXRob3JpemF0
aW9uVG9rZW4pCiAgICAgU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIFdl
YkNvcmU6OkludFJlY3QgZWxlbWVudFJlY3QsIGVudW06dWludDhfdCBXZWJDb3JlOjpSb3V0ZVNo
YXJpbmdQb2xpY3kgcG9saWN5LCBTdHJpbmcgcm91dGluZ0NvbnRleHRVSUQpCiAgICAgQ29tbWl0
UG90ZW50aWFsVGFwRmFpbGVkKCkKICAgICBEaWROb3RIYW5kbGVUYXBBc0NsaWNrKFdlYkNvcmU6
OkludFBvaW50IHBvaW50KQpAQCAtNTI1LDcgKzUyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgRGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKFN0cmluZyBpZGVu
dGlmaWVyLCBTdHJpbmcgc291cmNlLCBib29sIGhhc0VuY2xvc2luZ0ltYWdlKQogICAgIERpZFJl
bW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKICAgICBTZXJp
YWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlm
aWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmFs
aXplZERhdGEpIFN5bmNocm9ub3VzCi0gICAgV3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3Rl
Ym9hcmQoc3RydWN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8gaW5mbykKKyAgICBX
cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UHJvbWlz
ZWRBdHRhY2htZW50SW5mbyBpbmZvLCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuKQogICAgIFJl
cXVlc3RBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5nIGNvbnRlbnRUeXBl
LCBTdHJpbmcgcGF0aCwgU3RyaW5nIHRpdGxlLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQppbmRleCA3N2FmYWU4N2NmZjQ3OTdlODFjOWE3YzQwNzE1M2VjZTc2NTg0NDFkLi43NGE0Yjdk
MjY0OGYwODc1YzcxY2IyMmE3MDg1ZTM5ZjQ1MWQ1MjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OTQsMTQgKzU5NCwzMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c3RvcEludGVyYWN0aW9uKCkKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BJbnRlcmFjdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
K2Jvb2wgV2ViUGFnZVByb3h5Ojppc1ZhbGlkUGVyZm9ybUFjdGlvbk9uRWxlbWVudEF1dGhvcml6
YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgY29uc3QKK3sKKyAg
ICByZXR1cm4gIWF1dGhvcml6YXRpb25Ub2tlbi5pc051bGwoKSAmJiBtX3BlcmZvcm1BY3Rpb25P
bkVsZW1lbnRBdXRoVG9rZW5zLmNvbnRhaW5zKGF1dGhvcml6YXRpb25Ub2tlbik7Cit9CisKIHZv
aWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikK
IHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1BY3Rpb25P
bkVsZW1lbnQoYWN0aW9uKSwgbV93ZWJQYWdlSUQpOworICAgIGF1dG8gYXV0aG9yaXphdGlvblRv
a2VuID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CisKKyAgICBtX3BlcmZvcm1BY3Rpb25P
bkVsZW1lbnRBdXRoVG9rZW5zLmFkZChhdXRob3JpemF0aW9uVG9rZW4pOworICAgIAorICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUFjdGlvbk9uRWxlbWVu
dChhY3Rpb24sIGF1dGhvcml6YXRpb25Ub2tlbiksIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBhdXRob3JpemF0aW9uVG9rZW5dICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVCh3ZWFrVGhpcy0+aXNW
YWxpZFBlcmZvcm1BY3Rpb25PbkVsZW1lbnRBdXRob3JpemF0aW9uVG9rZW4oYXV0aG9yaXphdGlv
blRva2VuKSk7CisgICAgICAgIHdlYWtUaGlzLT5tX3BlcmZvcm1BY3Rpb25PbkVsZW1lbnRBdXRo
VG9rZW5zLnJlbW92ZShhdXRob3JpemF0aW9uVG9rZW4pOworICAgIH0pOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlJiBpbWFnZUhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnko
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbikKIHsKICAgICBNRVNTQUdFX0NIRUNLKCFpbWFnZUhhbmRsZS5o
YW5kbGUuaXNOdWxsKCkpOworICAgIE1FU1NBR0VfQ0hFQ0soaXNWYWxpZFBlcmZvcm1BY3Rpb25P
bkVsZW1lbnRBdXRob3JpemF0aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKSk7CiAKICAgICBh
dXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGltYWdlSGFuZGxlLmhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFy
ZWRNZW1vcnlCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggNmU1ZjhmMGE1MTE2ZTFhYTI2MmJhMGFkMzFiMmM5MjdiYzM2ZmRjZi4uNmFlZjIw
ZGVmMzBjMDY5MjYxNmVjODA1MjY0MGE0MjM4MTdkNGQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxOSw3ICs4MTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Q29u
dGV4dE9yUG9zaXRpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mJiwg
V2ViQ29yZTo6SW50UG9pbnQmJik7CiAgICAgdm9pZCBzdG9wSW50ZXJhY3Rpb24oKTsKLSAgICB2
b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKTsKKyAgICB2b2lkIHBl
cmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uLCBjb25zdCBTdHJpbmcmIGF1dGhv
cml6YXRpb25Ub2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGZv
Y3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wgaXNGb3J3YXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgYXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZShjb25z
dCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
ZmNjNWI3ZTAzNDI1ZDI4ZWM4ZTdiNjI0MmZkOGQ0NTJiMzFkNzJkYy4uODBlMWE0MDkwZWUwZTNl
ODdhNjNhNTNjYTQ1NzMwMzM4MDcxYmYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTYsNyArOTYsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlv
bihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KQog
ICAgIFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRleHRPclBvc2l0aW9uKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGVsZW1lbnRDb250ZXh0LCBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCkKICAgICBTdG9wSW50ZXJhY3Rpb24oKQotICAgIFBlcmZvcm1BY3Rpb25P
bkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQorICAgIFBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWlu
dDMyX3QgYWN0aW9uLCBTdHJpbmcgYXV0aGVudGljYXRpb25Ub2tlbikgLT4gKCkKICAgICBGb2N1
c05leHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCkgLT4gKCkKICAgICBBdXRvZmlsbExv
Z2luQ3JlZGVudGlhbHMoU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgcGFzc3dvcmQpCiAgICAgU2V0
Rm9jdXNlZEVsZW1lbnRWYWx1ZShzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgY29udGV4
dCwgU3RyaW5nIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3OWIyMmU3ODExZDM2N2RjMTk5YmNiZTZhM2E1OTA4
ZjEyZGI1MTc1Li5mZTM1YTI5ZTFmZGZhMTE5YmZmNGM2ODBmMjMxMzBiZDYyYjA3NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMyMzksOCArMzIzOSwxMCBAQCB2b2lkIFdlYlBhZ2U6OnN0b3BJbnRlcmFjdGlvbigp
CiAgICAgbV9pbnRlcmFjdGlvbk5vZGUgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlBhZ2U6OnBl
cmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQordm9pZCBXZWJQYWdlOjpwZXJm
b3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbiwgY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKKyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjYWxsQ29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCiAgICAgaWYgKCFpczxIVE1MRWxl
bWVudD4obV9pbnRlcmFjdGlvbk5vZGUpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMyNjYsNyAr
MzI2OCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBh
Y3Rpb24pCiAgICAgICAgICAgICBtX2ludGVyYWN0aW9uTm9kZS0+ZG9jdW1lbnQoKS5lZGl0b3Io
KS5jb3B5VVJMKGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6aHJlZkF0dHIpKSksIGVsZW1lbnQudGV4dENvbnRlbnQoKSk7CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAgICAgZWxzZSBpZiAoYXV0byBhdHRhY2htZW50
SW5mbyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5lZGl0b3IoKS5wcm9taXNlZEF0dGFjaG1lbnRJbmZv
KGVsZW1lbnQpKQotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXcml0
ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChXVEZNb3ZlKGF0dGFjaG1lbnRJbmZvKSkp
OworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXcml0ZVByb21pc2Vk
QXR0YWNobWVudFRvUGFzdGVib2FyZChXVEZNb3ZlKGF0dGFjaG1lbnRJbmZvKSwgYXV0aG9yaXph
dGlvblRva2VuKSk7CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKHN0YXRpY19jYXN0PFNoZWV0QWN0
aW9uPihhY3Rpb24pID09IFNoZWV0QWN0aW9uOjpTYXZlSW1hZ2UpIHsKICAgICAgICAgaWYgKCFp
czxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkpCkBAIC0zMjgyLDcgKzMyODQsNyBA
QCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CiAgICAgICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2F2ZUltYWdlVG9MaWJyYXJ5KFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsg
V1RGTW92ZShoYW5kbGUpLCBidWZmZXItPnNpemUoKSB9KSk7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2F2ZUltYWdlVG9MaWJyYXJ5KFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXItPnNpemUoKSB9LCBhdXRob3JpemF0aW9uVG9r
ZW4pKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>