<?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>226328</bug_id>
          
          <creation_ts>2021-05-27 06:27:02 -0700</creation_ts>
          <short_desc>MediaSession.coordinator should not be optional, relying on coordinator state change instead</short_desc>
          <delta_ts>2021-06-01 18:20:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>226459</blocked>
    
    <blocked>226460</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1764309</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 06:27:02 -0700</bug_when>
    <thetext>MediaSession.coordinator should not be optional, relying on coordinator readyState change instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764311</commentid>
    <comment_count>1</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 06:27:43 -0700</bug_when>
    <thetext>rdar://77461335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764569</commentid>
    <comment_count>2</comment_count>
      <attachid>429949</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 16:23:13 -0700</bug_when>
    <thetext>Created attachment 429949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764623</commentid>
    <comment_count>3</comment_count>
      <attachid>429971</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 18:39:48 -0700</bug_when>
    <thetext>Created attachment 429971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764628</commentid>
    <comment_count>4</comment_count>
      <attachid>429971</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 18:46:50 -0700</bug_when>
    <thetext>Comment on attachment 429971
Patch

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

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:135
&gt;      : ActiveDOMObject(navigator.scriptExecutionContext())

Does this still need to be an ActiveDOMObject? It doesn&apos;t seem to be firing events anymore so I doubt it.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:53
&gt; +    return adoptRef(*new MediaSessionCoordinator(session, WTFMove(privateCoordinator)));

You are failing to call suspendIfNeeded() after constructing it here. This is mandatory for ActiveDOMObject and you&apos;ll likely hit assertions in debug.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:87
&gt; +    return m_asyncEventQueue-&gt;hasPendingActivity() || m_session;

Please check for event listeners as I suggested. We really don&apos;t want to keep objects alive longer than they need to be.

Also, do we need to stay alive once the state is MediaSessionCoordinatorState::Closed? Can you ever go back to another state once the state becomes closed? Or does the session gets nulled out when the state becomes closed? I had a look at the code but the link between the state and m_session wasn&apos;t clear to me.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h:76
&gt; +    void refEventTarget() final { ref(); }

Should not be public.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h:77
&gt; +    void derefEventTarget() final { deref(); }

ditto.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h:78
&gt; +    EventTargetInterface eventTargetInterface() const final { return MediaSessionCoordinatorEventTargetInterfaceType; }

ditto.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h:82
&gt; +    const char* activeDOMObjectName() const final { return &quot;MediaSessionCoordinator&quot;; }

ditto.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h:83
&gt; +    bool virtualHasPendingActivity() const final;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764633</commentid>
    <comment_count>5</comment_count>
      <attachid>429971</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 19:00:53 -0700</bug_when>
    <thetext>Comment on attachment 429971
Patch

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

&gt;&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:87
&gt;&gt; +    return m_asyncEventQueue-&gt;hasPendingActivity() || m_session;
&gt; 
&gt; Please check for event listeners as I suggested. We really don&apos;t want to keep objects alive longer than they need to be.
&gt; 
&gt; Also, do we need to stay alive once the state is MediaSessionCoordinatorState::Closed? Can you ever go back to another state once the state becomes closed? Or does the session gets nulled out when the state becomes closed? I had a look at the code but the link between the state and m_session wasn&apos;t clear to me.

In theory yes.

The state of the MediaSessionCoordinator is also controlled by the presence of a MediaSessionCoordinatorPrivate ; it is possible that one could be coming.

As for the present of event listener, ultimately, you don&apos;t need an event listener to be active to be able to use the MediaSessionCoordinator, JS could do without it in theory (like checking the state regularly).
It&apos;s also possible that the MediaSession isn&apos;t yet played with as we don&apos;t have a media element playing. The JS player would know that.

I can very well imagine conditions where the site is using a polyfill library that will only set up the listener once an external event has occurred. And from the assertion I&apos;m seeing with the object being garbage collected super early on, we definitely need to keep it alive for as long as the media session itself is alive (which is for as long the navigator is alive)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764634</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 19:02:33 -0700</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #5)
&gt; Comment on attachment 429971 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429971&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:87
&gt; &gt;&gt; +    return m_asyncEventQueue-&gt;hasPendingActivity() || m_session;
&gt; &gt; 
&gt; &gt; Please check for event listeners as I suggested. We really don&apos;t want to keep objects alive longer than they need to be.
&gt; &gt; 
&gt; &gt; Also, do we need to stay alive once the state is MediaSessionCoordinatorState::Closed? Can you ever go back to another state once the state becomes closed? Or does the session gets nulled out when the state becomes closed? I had a look at the code but the link between the state and m_session wasn&apos;t clear to me.
&gt; 
&gt; In theory yes.
&gt; 
&gt; The state of the MediaSessionCoordinator is also controlled by the presence
&gt; of a MediaSessionCoordinatorPrivate ; it is possible that one could be
&gt; coming.
&gt; 
&gt; As for the present of event listener, ultimately, you don&apos;t need an event
&gt; listener to be active to be able to use the MediaSessionCoordinator, JS
&gt; could do without it in theory (like checking the state regularly).
&gt; It&apos;s also possible that the MediaSession isn&apos;t yet played with as we don&apos;t
&gt; have a media element playing. The JS player would know that.
&gt; 
&gt; I can very well imagine conditions where the site is using a polyfill
&gt; library that will only set up the listener once an external event has
&gt; occurred. And from the assertion I&apos;m seeing with the object being garbage
&gt; collected super early on, we definitely need to keep it alive for as long as
&gt; the media session itself is alive (which is for as long the navigator is
&gt; alive)

This makes no sense, the JS would need to be holding on to the MediaSessionCoordinator JS object in order to register an event listener on it. Therefore, there is no point in the implementation keeping the JS wrapper alive if there is no register event listener (for the only event we fire).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764635</commentid>
    <comment_count>7</comment_count>
      <attachid>429971</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 19:03:47 -0700</bug_when>
    <thetext>Comment on attachment 429971
Patch

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

&gt;&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:135
&gt;&gt;      : ActiveDOMObject(navigator.scriptExecutionContext())
&gt; 
&gt; Does this still need to be an ActiveDOMObject? It doesn&apos;t seem to be firing events anymore so I doubt it.

I looked into that.
The reason for keeping it is that MediaSessionCoordinator is an ActiveDOMObject. The MediaSessionCoordinator is created and owned by the MediaSession.
ActiveDOMObject constructor requires a ScriptExecutionContext ; it felt logical to use the MediaSession ones. 

I could make it a ContextDestructionObserver instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764638</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 19:09:25 -0700</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #7)
&gt; Comment on attachment 429971 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429971&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:135
&gt; &gt;&gt;      : ActiveDOMObject(navigator.scriptExecutionContext())
&gt; &gt; 
&gt; &gt; Does this still need to be an ActiveDOMObject? It doesn&apos;t seem to be firing events anymore so I doubt it.
&gt; 
&gt; I looked into that.
&gt; The reason for keeping it is that MediaSessionCoordinator is an
&gt; ActiveDOMObject. The MediaSessionCoordinator is created and owned by the
&gt; MediaSession.
&gt; ActiveDOMObject constructor requires a ScriptExecutionContext ; it felt
&gt; logical to use the MediaSession ones. 
&gt; 
&gt; I could make it a ContextDestructionObserver instead.

Yes, ContextDestructionObserver would be much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764639</commentid>
    <comment_count>9</comment_count>
      <attachid>429971</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 19:10:59 -0700</bug_when>
    <thetext>Comment on attachment 429971
Patch

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

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:154
&gt;  void MediaSession::suspend(ReasonForSuspension reason)

Never mind, MediaSession overrides ActiveDOMObject::suspend() so you like do still need to subclass ActiveDOMObject (for the purpose of suspension).

&gt;&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:53
&gt;&gt; +    return adoptRef(*new MediaSessionCoordinator(session, WTFMove(privateCoordinator)));
&gt; 
&gt; You are failing to call suspendIfNeeded() after constructing it here. This is mandatory for ActiveDOMObject and you&apos;ll likely hit assertions in debug.

To be clear, the correct pattern for ActiveDOMObjects is:
auto coordinator = adoptRef(*new MediaSessionCoordinator(WTFMove(privateCoordinator)));
coordinator-&gt;suspendIfNeeded();
return coordinator;

Please don&apos;t call suspendIfNeeded() in the constructor like some people do, it is subtly wrong and we hit assertions in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764651</commentid>
    <comment_count>10</comment_count>
      <attachid>429979</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 20:41:32 -0700</bug_when>
    <thetext>Created attachment 429979
Patch

Apply comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764654</commentid>
    <comment_count>11</comment_count>
      <attachid>429979</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 21:00:55 -0700</bug_when>
    <thetext>Comment on attachment 429979
Patch

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

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:87
&gt; +    m_hasActiveListener = hasEventListeners(eventNames().coordinatorstatechangeEvent);

I think m_hasRelevantEventListener or m_hasCoordinatorsStateChangeEventListener would be a better name. It is unclear what an &quot;active&quot; event listener (does it mean the event listener is currently being invoked for e.g.? It could be misinterpreted).

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:94
&gt; +    return m_asyncEventQueue-&gt;hasPendingActivity() || m_hasActiveListener;

This doesn&apos;t seem quite right. If you have pending events but NO event listener registered for it, then why keep the JS wrapper alive?

I think you may want something like:
return m_hasActiveListener &amp;&amp; m_session;

As long as you have a session, you may fire events. And if you may fire event and there are registered event listeners for those events, then the wrapper needs to stay alive.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h:53
&gt; +    WEBCORE_EXPORT void setMediaSessionCoordinatorPrivate(Ref&lt;MediaSessionCoordinatorPrivate&gt;&amp;&amp;);

Maybe we should move this below so it isn&apos;t between the factory and the destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764655</commentid>
    <comment_count>12</comment_count>
      <attachid>429979</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 21:05:13 -0700</bug_when>
    <thetext>Comment on attachment 429979
Patch

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

&gt;&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:94
&gt;&gt; +    return m_asyncEventQueue-&gt;hasPendingActivity() || m_hasActiveListener;
&gt; 
&gt; This doesn&apos;t seem quite right. If you have pending events but NO event listener registered for it, then why keep the JS wrapper alive?
&gt; 
&gt; I think you may want something like:
&gt; return m_hasActiveListener &amp;&amp; m_session;
&gt; 
&gt; As long as you have a session, you may fire events. And if you may fire event and there are registered event listeners for those events, then the wrapper needs to stay alive.

in practice m_session will always be true and will be for as long as the document/navigator is alive.

&gt;&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h:53
&gt;&gt; +    WEBCORE_EXPORT void setMediaSessionCoordinatorPrivate(Ref&lt;MediaSessionCoordinatorPrivate&gt;&amp;&amp;);
&gt; 
&gt; Maybe we should move this below so it isn&apos;t between the factory and the destructor.

I grouped the WEBCORE_EXPORT together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764656</commentid>
    <comment_count>13</comment_count>
      <attachid>429979</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 21:07:01 -0700</bug_when>
    <thetext>Comment on attachment 429979
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h:53
&gt;&gt;&gt; +    WEBCORE_EXPORT void setMediaSessionCoordinatorPrivate(Ref&lt;MediaSessionCoordinatorPrivate&gt;&amp;&amp;);
&gt;&gt; 
&gt;&gt; Maybe we should move this below so it isn&apos;t between the factory and the destructor.
&gt; 
&gt; I grouped the WEBCORE_EXPORT together.

Sure, you can do that and still move it after the destructor :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764661</commentid>
    <comment_count>14</comment_count>
      <attachid>429982</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 21:15:28 -0700</bug_when>
    <thetext>Created attachment 429982
Patch

Apply comments part #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764663</commentid>
    <comment_count>15</comment_count>
      <attachid>429982</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 21:20:23 -0700</bug_when>
    <thetext>Comment on attachment 429982
Patch

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

The ActiveDOMObject stuff looks good but I&apos;ll let someone else review the media code :)

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:92
&gt; +    // Need to keep the object alive as long as it may still fire events in the future.

nit: s/object/wrapper

By &quot;object&quot;, it sounds like you are referring to this MediaSessionCoordinator implementation object but this function is about the JS wrapper&apos;s lifetime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764669</commentid>
    <comment_count>16</comment_count>
      <attachid>429983</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-27 22:07:33 -0700</bug_when>
    <thetext>Created attachment 429983
Patch

Apply comments part #3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764739</commentid>
    <comment_count>17</comment_count>
      <attachid>430006</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-28 05:57:47 -0700</bug_when>
    <thetext>Created attachment 430006
Patch

Update MediaSession IDL WPT test expectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764779</commentid>
    <comment_count>18</comment_count>
      <attachid>430006</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-28 09:16:58 -0700</bug_when>
    <thetext>Comment on attachment 430006
Patch

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

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:203
&gt; +    m_coordinator-&gt;setMediaSession(this);

This shouldn&apos;t be necessary as you pass the session to `MediaSessionCoordinator::create`.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:59
&gt; +MediaSessionCoordinator::MediaSessionCoordinator(MediaSession&amp; session, RefPtr&lt;MediaSessionCoordinatorPrivate&gt;&amp;&amp; privateCoordinator)
&gt; +    : ActiveDOMObject(session.scriptExecutionContext())

The only use of `session` here is to get the scriptExecutionContext, so you could either just pass that directly or also call `setMediaSession()` and skip the explicit call from MediaSession::createCoordinator.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:71
&gt; +    if (privateCoordinator) {
&gt; +        m_privateCoordinator = WTFMove(privateCoordinator);
&gt; +        m_privateCoordinator-&gt;setLogger(m_logger.copyRef(), m_logIdentifier);
&gt; +        m_privateCoordinator-&gt;setClient(makeWeakPtr(this));
&gt; +        coordinatorStateChanged(MediaSessionCoordinatorState::Waiting);
&gt; +    }

I would put all of this logic in `setMediaSessionCoordinatorPrivate` and call it from here.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:93
&gt; +    return m_hasCoordinatorsStateChangeEventListener;

I don&apos;t think we should fire events if there is no MediaSession (see below).

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:420
&gt; +    if (m_hasCoordinatorsStateChangeEventListener)

I don&apos;t think there is any reason to fire an event if there is no MediaSession, so this should also check `m_session`. Also, you might put the test into a method and also call it from `virtualHasPendingActivity` so we&apos;re sure they use the same logic if something changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765352</commentid>
    <comment_count>19</comment_count>
      <attachid>430186</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-31 01:16:08 -0700</bug_when>
    <thetext>Created attachment 430186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765701</commentid>
    <comment_count>20</comment_count>
      <attachid>430186</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-06-01 12:02:24 -0700</bug_when>
    <thetext>Comment on attachment 430186
Patch

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

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:68
&gt; +    if (privateCoordinator) {
&gt; +        setMediaSessionCoordinatorPrivate(*privateCoordinator);
&gt; +    }

Nit: WebKit style is to omit braces on a single line condition.

&gt; Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp:413
&gt; +bool MediaSessionCoordinator::shouldFireEvents() const {

Nit: opening brace for a method should be on a new line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765829</commentid>
    <comment_count>21</comment_count>
      <attachid>430310</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-01 17:35:19 -0700</bug_when>
    <thetext>Created attachment 430310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765830</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-01 17:37:06 -0700</bug_when>
    <thetext>ChangeLog entry in Tools/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765832</commentid>
    <comment_count>23</comment_count>
      <attachid>430311</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-01 17:40:39 -0700</bug_when>
    <thetext>Created attachment 430311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765845</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-01 18:20:45 -0700</bug_when>
    <thetext>Committed r278336 (238369@main): &lt;https://commits.webkit.org/238369@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430311.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429949</attachid>
            <date>2021-05-27 16:23:13 -0700</date>
            <delta_ts>2021-05-27 18:39:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226328-20210528092312.patch</filename>
            <type>text/plain</type>
            <size>30436</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI3ZmFkNzE2MzQwYjY5
MGM5MDMyZjYzNDQzZjMyNzFjOWUyMTc0Ny4uMWM4ZTQ3YTg1ZThlYjRmZmUyZWM5NjRhMzUzNWE5
NjAxNjA5NTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
c3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29vcmRpbmF0b3Igd2Fz
IGEgcmVhZC1vbmx5IG9wdGlvbmFsIGF0dHJpYnV0ZSBvZiB0aGUgTWVkaWFTZXNzaW9uIGVsZW1l
bnQuCisgICAgICAgIFRlc3RpbmcgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgdG8gYmUgdXNlZCB0byBk
ZXRlcm1pbmUgaWYgYSBNZWRpYVNlc3Npb25Db29yZGluYXRvcgorICAgICAgICB3YXMgbm93IGF2
YWlsYWJsZSBhbmQgZm9yIHRoZSBNZWRpYVNlc3Npb24gdG8gam9pbiBpdC4gVGhpcyBtYWRlIHRo
ZSB1c2Ugb2YgYW4gZXh0ZXJuYWwKKyAgICAgICAgcG9seWZpbGwgZGlmZmljdWx0IGFuZCBlbmZv
cmNpbmcgdGhlIHZhbGlkaXR5IG9mIGFuIHVzZXIgY3JlYXRlZCBjdXN0b20KKyAgICAgICAgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgZHVlIHRvIElETCBzZW1hbnRpY3MgbGltaXRhdGlvbnMgaGFy
ZC4KKyAgICAgICAgV2UgaW5zdGVhZCBhbHdheXMgY3JlYXRlIGEgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3Igd2hpY2ggaW4gaXRzIGRlZmF1bHQgc3RhdGUgaXMgQ2xvc2VkLgorICAgICAgICBPbmNl
IHRoaXMgc3RhdGUgaXMgY2hhbmdlZCB0byBXYWl0aW5nIGFuZCBhbiBldmVudCBpcyBmaXJlIHRo
ZSBNZWRpYVNlc3Npb24gY2FuIG5vdworICAgICAgICBqb2luIGl0LgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKTogTWVkaWFTZXNzaW9uIG5vIGxvbmdlciBuZWVkcyB0
byBmaXJlIGV2ZW50LgorICAgICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBpbmhlcml0
YW5jZSBhbmQgYXN5bmMgZXZlbnQgcXVldWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b246OmNyZWF0ZUNvb3JkaW5hdG9yKTogTWFrZSBtZXRob2QgcHJpdmF0ZS4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6Y29vcmRpbmF0b3IgY29uc3QpOiBNZWRpYVNlc3Npb25Db29yZGluYXRvciBh
bHdheXMgZXhpc3RzLiBSZXR1cm4gcmVmZXJlbmNlIGluc3RlYWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbDogQW1lbmQgZGVmaW5pdGlvbiwgcmVtb3Zl
IEV2ZW50SGFuZGxlcgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnZpcnR1YWxIYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OmpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjb29yZGluYXRv
clN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb25Db29yZGluYXRvci5pZGw6IEFkZGVkIG5ldyBFdmVudEhhbmRsZXIgYXR0cmlidXRlLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4
aW4uaWRsOiBVcGRhdGUgZm9yIG5ldyBBUEkgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBkb20vRXZl
bnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmludmFsaWRhdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcik6CisKIDIwMjEtMDUtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgTWVkaWFTZXNzaW9uLmNhbGxBY3Rpb25IYW5kbGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRl
eCBjNTU1ZDlkMzhmMzcxNmU4MWFjYTAzYWM5NzAzYmNhZWIxYzc5MTAxLi5hZmIxMmEzZjQ2NTEx
MmRmMDM2ZjRmYWIyNDBiNWE3OWM0MmUwNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTEzNCwxNyArMTM0LDE0
IEBAIFJlZjxNZWRpYVNlc3Npb24+IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKE5hdmlnYXRvciYgbmF2
aWdhdG9yKQogTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24oTmF2aWdhdG9yJiBuYXZpZ2F0b3Ip
CiAgICAgOiBBY3RpdmVET01PYmplY3QobmF2aWdhdG9yLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKICAgICAsIG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5hdmlnYXRvcikpCi0gICAgLCBtX2Fz
eW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3VtZW50OjpzaGFyZWRMb2dnZXIoKSk7
CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKIAogI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogICAgIGF1dG8qIGZyYW1lID0gbmF2aWdhdG9y
LmZyYW1lKCk7Ci0gICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiBu
dWxscHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIGNvb3JkaW5hdG9yUHJpdmF0ZSA9IHBhZ2UtPm1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBjcmVhdGVDb29yZGluYXRvcigq
Y29vcmRpbmF0b3JQcml2YXRlKTsKLSAgICB9CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSA/
IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKQorICAgICAgICBjcmVhdGVDb29yZGluYXRvcihwYWdl
LT5tZWRpYVNlc3Npb25Db29yZGluYXRvcigpKTsKICNlbmRpZgogCiAgICAgc3VzcGVuZElmTmVl
ZGVkKCk7CkBAIC0xNTQsMTEgKzE1MSw2IEBAIE1lZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKE5h
dmlnYXRvciYgbmF2aWdhdG9yKQogCiBNZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24oKSA9IGRl
ZmF1bHQ7CiAKLWJvb2wgTWVkaWFTZXNzaW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0
eSgpOwotfQotCiB2b2lkIE1lZGlhU2Vzc2lvbjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9u
IHJlYXNvbikKIHsKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKQEAgLTIw
MCwxOSArMTkyLDE1IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRSZWFkeVN0YXRlKE1lZGlhU2Vz
c2lvblJlYWR5U3RhdGUgc3RhdGUpCiAgICAgbm90aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwog
fQogCi12b2lkIE1lZGlhU2Vzc2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBjb29yZGluYXRvclByaXZhdGUpCit2b2lkIE1lZGlhU2Vz
c2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKiBj
b29yZGluYXRvclByaXZhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAog
ICAgIGlmIChtX2Nvb3JkaW5hdG9yKQogICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNl
c3Npb24obnVsbHB0cik7CiAKLSAgICBtX2Nvb3JkaW5hdG9yID0gTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvb3JkaW5hdG9yUHJpdmF0ZSkpOwotCi0gICAgaWYgKG1f
Y29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPnNldE1lZGlhU2Vzc2lvbih0aGlz
KTsKLQotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29vcmRpbmF0b3JjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgbV9jb29yZGluYXRvciA9IE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKnRoaXMsIGNvb3JkaW5hdG9yUHJpdmF0ZSk7CisgICAg
bV9jb29yZGluYXRvci0+c2V0TWVkaWFTZXNzaW9uKHRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5k
ZXggNTczMTg5NTAwYzM5NDczZjMzM2RhMGQ2ZmQ0NThhOWRjYjllOGM5Yi4uNDgxZmI2ODZmZjkz
NzIwZDVlNGI3MTY1OTMzNzdmOThkNzBlNTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTI4LDggKzI4LDcgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgot
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIk1lZGlhUG9zaXRpb25TdGF0ZS5o
IgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lv
bkFjdGlvbkhhbmRsZXIuaCIKQEAgLTUyLDcgKzUxLDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcml2YXRlOwogY2xhc3MgTmF2aWdhdG9yOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIERPTVByb21pc2VEZWZlcnJlZDsKIAotY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIENh
bk1ha2VXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTmF2aWdhdG9y
Jik7CkBAIC04MCw4ICs3OSw3IEBAIHB1YmxpYzoKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH07CiAgICAgdm9pZCBz
ZXRSZWFkeVN0YXRlKE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpOwogCi0gICAgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRvci5n
ZXQoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3ImIGNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gKm1fY29vcmRpbmF0b3I7IH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fUExBWUxJU1QpCkBAIC05OCwxMCArOTYs
NiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJu
ICptX2xvZ2dlci5nZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB1c2luZyBSZWZD
b3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICBjbGFzcyBP
YnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4gewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CkBAIC0xMzAsMTUgKzEyNCwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5QWN0aW9uSGFuZGxlck9ic2VydmVycygpOwog
ICAgIHZvaWQgbm90aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogCi0gICAgLy8gRXZlbnRUYXJn
ZXQKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFT
ZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2
b2lkIGNyZWF0ZUNvb3JkaW5hdG9yKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSopOwog
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRpYVNlc3Npb24iOyB9Ci0gICAgYm9vbCB2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5k
KFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCkBA
IC0xNTUsNyArMTQ0LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZp
ZXI7CiAKICAgICBXZWFrSGFzaFNldDxPYnNlcnZlcj4gbV9vYnNlcnZlcnM7Ci0gICAgVW5pcXVl
UmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAKICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKICAgICBNZWRpYVNlc3Npb25SZWFk
eVN0YXRlIG1fcmVhZHlTdGF0ZSB7IE1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVub3RoaW5n
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmlkbAppbmRleCBiYWEwODA4NDcwYjRiODYyN2VhZGMzODIzYjVhMGZiMWI1Y2JhODdj
Li41NDk0NjE2OTM2ZDA0YjU3NWMzN2Q4OTAxMTQ4NTQ3NDJiNDQ5ODQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKQEAg
LTI4LDggKzI4LDcgQEAKICAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAogICAgIEV4cG9z
ZWQ9V2luZG93LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0LAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uIDogRXZlbnRUYXJnZXQKK10g
aW50ZXJmYWNlIE1lZGlhU2Vzc2lvbgogewogICAgIGF0dHJpYnV0ZSBNZWRpYU1ldGFkYXRhPyBt
ZXRhZGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDljNjAyOGQxNDBk
NjgzYmIxMjc1NTBmZDE0NDJkYWJjNDQxZGY1YmEuLmIzNTBjZjg1ODM4MTFiNmQ1MTQzYWE4NmY1
YWQyZjFmYzYyZjM1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGUuaCIKQEAgLTQ3LDI0ICs0OCw0MyBAQCBzdGF0aWMgY29uc3Qgdm9pZCogbmV4
dENvb3JkaW5hdG9yTG9nSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KCsrbG9nSWRlbnRpZmllcik7CiB9CiAKLVJlZjxNZWRpYVNlc3Npb25Db29y
ZGluYXRvcj4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShSZWY8TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK1JlZjxNZWRpYVNlc3Np
b25Db29yZGluYXRvcj4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShNZWRpYVNlc3Np
b24mIHNlc3Npb24sIFJlZlB0cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJp
dmF0ZUNvb3JkaW5hdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yKFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKHNlc3Npb24sIFdURk1vdmUocHJp
dmF0ZUNvb3JkaW5hdG9yKSkpOwogfQogCi1NZWRpYVNlc3Npb25Db29yZGluYXRvcjo6TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBw
cml2YXRlQ29vcmRpbmF0b3IpCi0gICAgOiBtX3ByaXZhdGVDb29yZGluYXRvcihXVEZNb3ZlKHBy
aXZhdGVDb29yZGluYXRvcikpCitNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBSZWZQdHI8TWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKKyAgICA6IEFjdGl2ZURPTU9i
amVjdChzZXNzaW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fbG9nZ2VyKG1h
a2VSZWYoRG9jdW1lbnQ6OnNoYXJlZExvZ2dlcigpKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcihu
ZXh0Q29vcmRpbmF0b3JMb2dJZGVudGlmaWVyKCkpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShN
YWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRMb2dn
ZXIobV9sb2dnZXIuY29weVJlZigpLCBtX2xvZ0lkZW50aWZpZXIpOwotICAgIG1fcHJpdmF0ZUNv
b3JkaW5hdG9yLT5zZXRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgIGlmIChwcml2YXRl
Q29vcmRpbmF0b3IpIHsKKyAgICAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3IgPSBXVEZNb3ZlKHBy
aXZhdGVDb29yZGluYXRvcik7CisgICAgICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRMb2dn
ZXIobV9sb2dnZXIuY29weVJlZigpLCBtX2xvZ0lkZW50aWZpZXIpOworICAgICAgICBtX3ByaXZh
dGVDb29yZGluYXRvci0+c2V0Q2xpZW50KG1ha2VXZWFrUHRyKHRoaXMpKTsKKyAgICAgICAgY29v
cmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6V2FpdGlu
Zyk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRNZWRpYVNl
c3Npb25Db29yZGluYXRvclByaXZhdGUoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0
ZT4mJiBwcml2YXRlQ29vcmRpbmF0b3IpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKKyAgICBpZiAobV9wcml2YXRlQ29vcmRpbmF0b3IpCisgICAgICAgIG1fcHJpdmF0ZUNvb3Jk
aW5hdG9yLT5sZWF2ZSgpOworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yID0gV1RGTW92ZShwcml2
YXRlQ29vcmRpbmF0b3IpOworICAgIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yU3RhdGU6OldhaXRpbmcpOwogfQogCiBNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6fk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OwogCitib29sIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgpOworfQorCiB2
b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByb21pc2UpCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKQEAg
LTc1LDYgKzk1LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgbWFrZVN0cmluZygiVW5hYmxlIHRvIGpvaW4gd2hl
biBzdGF0ZSBpcyAiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhtX3N0YXRlKSkgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgQVNTRVJUKG1fcHJpdmF0ZUNvb3JkaW5hdG9yLCAi
V2UgbXVzdCBiZSBpbiBXYWl0aW5nIHN0YXRlIGlmIG5vIHByaXZhdGUgY29vcmRpbmF0b3IgaXMg
c2V0Iik7CiAKICAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+am9pbihbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVudGlmaWVyLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0gKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBp
ZiAoIXByb3RlY3RlZFRoaXMtPm1fc2Vzc2lvbikgewpAQCAtODgsNyArMTA5LDggQEAgdm9pZCBN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9zdGF0ZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkpvaW5lZDsK
KyAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JTdGF0ZTo6Sm9pbmVkKTsKKwogICAgICAgICBwcm9taXNlLnJlc29sdmUo
KTsKICAgICB9KTsKIH0KQEAgLTEwNyw3ICsxMjksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRp
YVNlc3Npb25Db29yZGluYXRvcjo6bGVhdmUoKQogdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6Y2xvc2UoKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9zdGF0
ZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkNsb3NlZDsKKyAgICBjb29yZGluYXRv
clN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpDbG9zZWQpOwogICAg
IGlmICghbV9wcml2YXRlQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzg3LDYg
KzQwOSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNvb3JkaW5hdG9yU3RhdGVD
aGFuZ2VkKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhCiAgICAgICAgIHJldHVybjsKICAgICBt
X3N0YXRlID0gc3RhdGU7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX3N0YXRlKTsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNvb3JkaW5hdG9yc3RhdGVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIGJvb2wgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OmN1cnJlbnRQb3NpdGlvbkFwcHJveGltYXRlbHlFcXVhbFRvKGRvdWJsZSB0aW1lKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKaW5kZXggYmU1MjAwMDJhNWJiMWJmN2VjNjlm
MGRiM2Q2ZTI2NTZjN2JhMzExNy4uZDUwOGJmNWQ5YjVjMjMyZjcwZTEzNzU5MDM4ZDJiM2JhOTI3
MzA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKIAorI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiR2VuZXJpY0V2
ZW50UXVldWUuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJNZWRpYVNl
c3Npb25Db29yZGluYXRvclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25Db29yZGlu
YXRvclN0YXRlLmgiCkBAIC00MSw5ICs0NCwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3Mg
RE9NUHJvbWlzZURlZmVycmVkOwogY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IKICAgICA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPgogICAgICwgcHVibGlj
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Ci0gICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9u
OjpPYnNlcnZlciB7CisgICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uOjpPYnNlcnZlcgorICAgICwg
cHVibGljIEFjdGl2ZURPTU9iamVjdAorICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEgIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjcmVhdGUoUmVm
PE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gY3JlYXRlKE1lZGlhU2Vzc2lvbiYs
IFJlZlB0cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKFJlZjxNZWRpYVNl
c3Npb25Db29yZGluYXRvclByaXZhdGU+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5NZWRpYVNl
c3Npb25Db29yZGluYXRvcigpOwogCiAgICAgdm9pZCBqb2luKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmKTsKQEAgLTYzLDggKzcwLDIwIEBAIHB1YmxpYzoKICAgICB1c2luZyBNZWRpYVNlc3Np
b25Db29yZGluYXRvckNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CiAgICAgdXNpbmcgV2Vha1ZhbHVl
VHlwZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50OjpXZWFrVmFsdWVUeXBlOwogCisg
ICAgLy8gRXZlbnRUYXJnZXQKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcg
UmVmQ291bnRlZDo6ZGVyZWY7CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVm
KCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKyAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBl
OyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIGNvbnN0
IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IiOyB9CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QgZmluYWw7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uJiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJpdmF0ZT4mJik7CiAKICAgICAvLyBNZWRpYVNlc3Npb246Ok9ic2VydmVyCiAg
ICAgdm9pZCBtZXRhZGF0YUNoYW5nZWQoY29uc3QgUmVmUHRyPE1lZGlhTWV0YWRhdGE+JikgZmlu
YWw7CkBAIC04NywxMCArMTA2LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGxvZ0NsYXNzTmFtZSgpIHsgcmV0dXJuICJNZWRpYVNlc3Npb25Db29yZGluYXRvciI7IH0KIAog
ICAgIFdlYWtQdHI8TWVkaWFTZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JTdGF0ZSBtX3N0YXRlIHsgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6V2Fp
dGluZyB9OwogICAgIFJlZlB0cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+IG1fcHJp
dmF0ZUNvb3JkaW5hdG9yOwogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVy
aWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclN0YXRlIG1fc3RhdGUgeyBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpDbG9zZWQg
fTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbAppbmRleCAyMTE4MjcwM2Qx
YjBkODcyZjIzN2RiYWEwM2RkZTU2MWNmZTZkNWNhLi4wODgxYzA2ZmQyY2FjMmFhZGRkY2IzZGEw
OWM0YmMyMzFhNDllNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsCkBAIC0yNCwx
NiArMjQsMjAgQEAKICAqLwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlv
bmFsPU1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1NZWRp
YVNlc3Npb25Db29yZGluYXRvciwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBFeHBvcnRNYWNy
bz1XRUJDT1JFX0VYUE9SVCwKLV0gaW50ZXJmYWNlIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHsK
KyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yIDogRXZlbnRUYXJnZXQgewogCiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IGpvaW4oKTsK
ICAgICB1bmRlZmluZWQgbGVhdmUoKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVNl
c3Npb25Db29yZGluYXRvclN0YXRlIHN0YXRlOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b25jb29yZGluYXRvcnN0YXRlY2hhbmdlOworICAgIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmc/IGlkZW50aWZpZXI7CiAKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gc2Vla1RvKHVu
cmVzdHJpY3RlZCBkb3VibGUgdGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvck1peGluLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4
aW4uaWRsCmluZGV4IGZkZGYwNTYwMzRiMTA0ZWYyYzE4YzQ3NjlhZmIxZTc5YTA2MzIyYWEuLjI0
YjllMzA5N2NlYmNjN2E0ZmIzMWFhYWY4ZmE2MDRmNTEyMDFiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4
aW4uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsCkBAIC0yNyw3ICsyNyw2IEBACiAgICAgQ29uZGl0aW9u
YWw9TUVESUFfU0VTU0lPTl9DT09SRElOQVRPUiwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLAogXSBpbnRlcmZhY2UgbWl4aW4gTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JNaXhpbiB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yPyBjb29yZGluYXRvcjsKLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uY29vcmRpbmF0
b3JjaGFuZ2U7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
IGNvb3JkaW5hdG9yOwogICAgIGF0dHJpYnV0ZSBNZWRpYVNlc3Npb25SZWFkeVN0YXRlIHJlYWR5
U3RhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggZWNkYzg4NzlhMzk0NTE5Y2Rk
NTExMzczOWJjMTUyZjIwN2U1YzIwMy4uNzgzMzYwMzJhMzJhZjYxMGQ4MjRmODJhOTMzNjUzMWMy
YmQwMzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xMDEsNyArMTAxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGNvbm5lY3RpbmcpIFwKICAgICBtYWNybyhjb250
ZXh0bWVudSkgXAogICAgIG1hY3JvKGNvbnRyb2xsZXJjaGFuZ2UpIFwKLSAgICBtYWNybyhjb29y
ZGluYXRvcmNoYW5nZSkgXAorICAgIG1hY3JvKGNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UpIFwKICAg
ICBtYWNybyhjb3B5KSBcCiAgICAgbWFjcm8oY3VlY2hhbmdlKSBcCiAgICAgbWFjcm8oY3V0KSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBiZTc4Y2I4ZWRj
NDQyYzBmZGZkNGY2ZjgwY2IyODc2ZmEwZjhlNDk0Li5jMjZiOWJlNDJmN2I0YWIxMTkxMTcwYjNm
ZmNiMGUzMDJmMzhmYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KQEAgLTIzLDcgKzIzLDcgQEAgTWVkaWFEZXZpY2VzIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TQogTWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQQogTWVkaWFRdWVy
eUxpc3QKIE1lZGlhUmVjb3JkZXIgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCi1NZWRpYVNlc3Np
b24gY29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTgorTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgY29u
ZGl0aW9uYWw9TUVESUFfU0VTU0lPTl9DT09SRElOQVRPUgogTWVkaWFTb3VyY2UgY29uZGl0aW9u
YWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1l
ZGlhU3RyZWFtVHJhY2sgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCA2MWRkODYwNThlN2ExZTcyMzBlZGQ2Nzg2Y2U4NGUxNDM0ZmNjZGJlLi5jZGFlN2U4ZmRh
NTcyMDNmZDkxNjlkOTBkNDBkZmU2MjNlZWRiYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTM0
MjcsNyArMzQyNyw3IEBAIHZvaWQgUGFnZTo6c2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoUmVm
PE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBtZWRpCiAKICAgICBhdXRvKiB3aW5k
b3cgPSBtYWluRnJhbWUoKS53aW5kb3coKTsKICAgICBpZiAoYXV0byogbmF2aWdhdG9yID0gd2lu
ZG93ID8gd2luZG93LT5vcHRpb25hbE5hdmlnYXRvcigpIDogbnVsbHB0cikKLSAgICAgICAgTmF2
aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24oKm5hdmlnYXRvcikuY3JlYXRlQ29vcmRp
bmF0b3IoKm1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IpOworICAgICAgICBOYXZpZ2F0b3JNZWRp
YVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdhdG9yKS5jb29yZGluYXRvcigpLnNldE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSgqbV9tZWRpYVNlc3Npb25Db29yZGluYXRvcik7CiB9
CiAKIHZvaWQgUGFnZTo6aW52YWxpZGF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkKQEAgLTM0
NDEsMTEgKzM0NDEsNyBAQCB2b2lkIFBhZ2U6OmludmFsaWRhdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcigpCiAgICAgaWYgKCFuYXZpZ2F0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8q
IGNvb3JkaW5hdG9yID0gTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24oKm5hdmln
YXRvcikuY29vcmRpbmF0b3IoKTsKLSAgICBpZiAoIWNvb3JkaW5hdG9yKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBjb29yZGluYXRvci0+Y2xvc2UoKTsKKyAgICBOYXZpZ2F0b3JNZWRpYVNlc3Np
b246Om1lZGlhU2Vzc2lvbigqbmF2aWdhdG9yKS5jb29yZGluYXRvcigpLmNsb3NlKCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDhjZjAyYjE3OWVi
ZmJkZDM3N2E2YTU0OGQwYzZhN2FmNjkxNzdmOTYuLjdjZDZiMGFiYzAwNjY0MzNiZDU4YjUwZjAx
YzkzNDMxZmE4OGNkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTYy
NDYsNyArNjI0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6cmVnaXN0ZXJNb2Nr
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoU2NyaXB0RXhlY3V0aW9uCiAgICAgYXV0byYgc2Vzc2lv
biA9IE5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKGRvY3VtZW50LT5kb21XaW5k
b3coKS0+bmF2aWdhdG9yKCkpOwogICAgIGF1dG8gbW9jayA9IE1vY2tNZWRpYVNlc3Npb25Db29y
ZGluYXRvcjo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUobGlzdGVuZXIpKTsKICAgICBtX21vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvciA9IG1vY2sucHRyKCk7Ci0gICAgc2Vzc2lvbi5jcmVhdGVD
b29yZGluYXRvcihXVEZNb3ZlKG1vY2spKTsKKyAgICBzZXNzaW9uLmNvb3JkaW5hdG9yKCkuc2V0
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKFdURk1vdmUobW9jaykpOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA0NzJkMzExZjlhZDNkMmRmZWI2YWZjZGE0ZDM5MjNmNDMyNGNiNDlkLi5hZWVmNzNj
NThjZGUzMjNhMzE3NzcxMTk5YjkwZDY3OWU2MzlhOTlkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjcg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYVNlc3Np
b24uY29vcmRpbmF0b3Igc2hvdWxkIG5vdCBiZSBvcHRpb25hbCwgcmVseWluZyBvbiBjb29yZGlu
YXRvciByZWFkeVN0YXRlIGNoYW5nZSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYzMjgKKyAgICAgICAgcmRhcjovLzc3NDYxMzM1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNyZWF0ZUNv
b3JkaW5hdG9yKTogQ2hhbmdlIHRlc3QgdG8gbWF0Y2ggbmV3IEFQSSwKKyAgICAgICAgdXNpbmcg
Y29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBldmVudCBpbnN0ZWFkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWw6CisKIDIwMjEtMDUtMjcg
IEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW3J1
bi13ZWJraXQtdGVzdHNdW1dpbl0gU3RyaXAgUEhQIHN1cHBvcnQgZnJvbSB3ZWJzZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbQppbmRleCA5YzY3OGE3NmQ1YzJjNzZjYzM4ZmZhYTVk
MmVlYTA1MmVkNDFkNjk5Li4xYzk2YThmNmYzNTE1MWQ1N2E1NGJkNGYxNTRiMjk1MjcwNmVhY2E4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Np
b25Db29yZGluYXRvclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tCkBAIC0yMTIsMTQgKzIxMiwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIH1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOwogCi0gICAgICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAiY29vcmRpbmF0b3JjaGFu
Z2UiX3MgfSk7CisgICAgICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAiY29vcmRpbmF0b3Jz
dGF0ZWNoYW5nZSJfcyB9KTsKIAogICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOwogICAgICAg
ICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIE5TTG9nKEAiLVtfY3JlYXRlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JGb3JUZXN0aW5nOmNvbXBsZXRpb25IYW5kbGVyOl0gZmFpbGVkISIpOwogCi0g
ICAgICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgiY29vcmRpbmF0b3JjaGFuZ2Ui
X3MpOwotICAgICAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJjb29yZGlu
YXRvcmNoYW5nZSJfcykpOworICAgICAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQo
ImNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UiX3MpOworICAgICAgICBBU1NFUlRfVFJVRShldmVudExp
c3RlbmVyV2FzQ2FsbGVkKCJjb29yZGluYXRvcnN0YXRlY2hhbmdlIl9zKSk7CiAgICAgfQogCiAg
ICAgVGVzdFdLV2ViVmlldyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIF93ZWJWaWV3LmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21l
ZGlhLXJlbW90ZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9t
ZWRpYS1yZW1vdGUuaHRtbAppbmRleCBmZDRkOTk2YTFiYjFiNDgwOWZmZmM2MjUyZTBlNDQ5YTA0
NDVlYmZiLi4wYjc2MjdhNWVmYTI5ZjU3M2M1MjQ4N2ZhNDMwMDE1ZmM5ZTkxZjYyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5o
dG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVt
b3RlLmh0bWwKQEAgLTk2LDcgKzk2LDcgQEAKICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShtZXNzYWdlKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHBvc3RFdmVudChldnQpIAorICAgICAgICBmdW5jdGlv
biBwb3N0RXZlbnQoZXZ0KQogICAgICAgICB7CiAgICAgICAgICAgICBwb3N0TWVzc2FnZShgJHtl
dnQudHlwZX0gZXZlbnRgKTsKICAgICAgICAgfQpAQCAtMTM1LDcgKzEzNSw3IEBACiAgICAgICAg
ICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgcG9zdEV2ZW50KTsKICAgICAgICAg
ICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgcG9zdEV2ZW50KTsKICAgICAgICAg
ICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3NlZWtlZCcsIHBvc3RFdmVudCk7Ci0gICAgICAg
ICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9y
Y2hhbmdlJywgcG9zdEV2ZW50KTsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24u
Y29vcmRpbmF0b3IuYWRkRXZlbnRMaXN0ZW5lcignY29vcmRpbmF0b3JzdGF0ZWNoYW5nZScsIHBv
c3RFdmVudCk7CiAgICAgICAgIH0sIGZhbHNlKTsKIAogICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM1
MDEzNjQ2ZjhmYTU1M2E1YThkMjBhMjUxZTdiNWMwM2QxZWEwM2IuLmQ5YjViMTY3Yzg4NGE2NDE2
MTg3Y2I3NGNmMDVmN2VjZDU1MmIxNmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0y
NyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvciBzaG91bGQgbm90IGJlIG9wdGlvbmFsLCByZWx5aW5nIG9uIGNvb3Jk
aW5hdG9yIHJlYWR5U3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci1leHBlY3RlZC50eHQ6CisgICAgICAgICog
bWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLmh0bWw6IENoYW5nZSB0ZXN0IHRv
IG1hdGNoIG5ldyBBUEkuCisKIDIwMjEtMDUtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgTWVkaWFTZXNzaW9uLmNhbGxBY3Rpb25IYW5kbGVyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0
b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNv
b3JkaW5hdG9yLWV4cGVjdGVkLnR4dAppbmRleCAxZTQ3OGJhOGFhYTdiMTdiNTljMTZhNjQ4NzY2
NTA2ZGJmNjQzZmQ2Li4zYzQ5YTVhYTk0ODU1YjI0NGFmZmJjZjA3Y2NmNmRkMWFlOTAxNmFkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0
b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9j
ay1jb29yZGluYXRvci1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsMTIgQEAKIAotKiogVGhlcmUg
c2hvdWxkIGJlIG5vIG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvciBpbml0aWFsbHkuCi1FWFBFQ1RF
RCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvciA9PSAndW5kZWZpbmVkJykgT0sK
KyoqIFRoZXJlIG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBzaG91bGQgYmUgY2xvc2Vk
IGluaXRpYWxseS4KK0VYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9y
LnN0YXRlID09ICdjbG9zZWQnKSBPSwogCi0qKiBUZXN0IHRoYXQgbWVkaWFTZXNzaW9uLmNvb3Jk
aW5hdG9yY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gaXQgY2hhbmdlcy4KKyoqIFRlc3QgdGhh
dCBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3IuY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBldmVudCBp
cyBmaXJlZCB3aGVuIGl0IGNoYW5nZXMuCiBSVU4oaW50ZXJuYWxzLnJlZ2lzdGVyTW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yKGNoYW5nZUhhbmRsZXIpKQotRVZFTlQoY29vcmRpbmF0b3JjaGFu
Z2UpCi1FWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvciAhPSAndW5k
ZWZpbmVkJykgT0sKK0VWRU5UKGNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UgU1RBVEUod2FpdGluZykK
IAotKiogbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBzaG91bGQgYmUg
IndhaXRpbmciIGludGl0aWFsbHkKKyoqIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0
b3Iuc3RhdGUgc2hvdWxkIGJlICJ3YWl0aW5nIiBpbml0aWFsbHkKIEVYUEVDVEVEIChuYXZpZ2F0
b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlID09ICd3YWl0aW5nJykgT0sKIAogKiog
VGVzdCB0aGF0IHdoZW4gY29vcmRpbmF0b3IgbWV0aG9kcyBmYWlsIGFuZCBwcm9taXNlcyByZWpl
Y3QgYmVmb3JlIG1lZGlhU2Vzc2lvbi5qb2luKCkgaXMgY2FsbGVkLgpAQCAtNzgsOSArNzcsOSBA
QCBFWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09ICcnKSBPSwogCiBSVU4oaW50ZXJuYWxzLnNldE1v
Y2tNZWRpYVNlc3Npb25Db29yZGluYXRvckNvbW1hbmRzU2hvdWxkRmFpbChmYWxzZSkpCiBSVU4o
cHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuam9pbigpKQorRVZF
TlQoY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBTVEFURShqb2luZWQpCiBQcm9taXNlIHJlc29sdmVk
IE9LCiBFWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSA9
PSAnam9pbmVkJykgT0sKLUVYUEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJ2Nvb3JkaW5hdG9yU3Rh
dGVDaGFuZ2VkJykgT0sKIAogKiogVGVzdCB0aGF0IHdoZW4gY29vcmRpbmF0b3IgbWV0aG9kcyBz
dWNjZWVkLCBwcm9taXNlcyByZXNvbHZlIGFuZCBtZWRpYVNlc3Npb24gYWN0aW9uIGhhbmRsZXJz
IGFyZSBjYWxsZWQuCiBSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRp
bmF0b3IucGxheSgpKQpAQCAtMTQ5LDggKzE0OCwxMSBAQCBFWFBFQ1RFRCAobmF2aWdhdG9yLm1l
ZGlhU2Vzc2lvbi5wbGF5YmFja1N0YXRlID09ICdub25lJykgT0sKIAogKiogTGVhdmUgdGhlIHNl
c3Npb24KIFJVTihuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmxlYXZlKCkpCitF
WFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09ICdwbGF5YmFja1N0YXRlQ2hhbmdlZCcpIE9LCitFWFBF
Q1RFRCAobGF0ZXN0Q2hhbmdlID09ICdwbGF5YmFja1N0YXRlQ2hhbmdlZCcpIE9LCitFWFBFQ1RF
RCAobGF0ZXN0Q2hhbmdlID09ICdwbGF5YmFja1N0YXRlQ2hhbmdlZCcpIE9LCitFVkVOVChjb29y
ZGluYXRvcnN0YXRlY2hhbmdlIFNUQVRFKGNsb3NlZCkKIEVYUEVDVEVEIChuYXZpZ2F0b3IubWVk
aWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlID09ICdjbG9zZWQnKSBPSwotRVhQRUNURUQgKGxh
dGVzdENoYW5nZSA9PSAnY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQnKSBPSwogCiAqKiBUZXN0IHRo
YXQgd2hlbiBjb29yZGluYXRvciBtZXRob2RzIGZhaWwgYW5kIHByb21pc2VzIHJlamVjdCBhZnRl
ciBtZWRpYVNlc3Npb24ubGVhdmUoKSBoYXMgYmVlbiBjYWxsZWQuCiBSVU4ocHJvbWlzZSA9IG5h
dmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IucGxheSgpKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbAppbmRleCA1
ODVhNWVhOTQ5MTBkMGU1Y2E3M2NiM2RjZWNiZjIyZmI3OTkwN2Y5Li5kMDY1ZGIwMjYyY2I0YzEy
ODg0NGZjM2E4OWExOTdhMGIxNTA1YmRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbApAQCAtMzMsMjggKzMzLDI2IEBA
CiAKICAgICAgICAgbGV0IGNoYW5nZVByb21pc2UgPSAoKSA9PiB7CiAgICAgICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1l
ZGlhU2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCdjb29yZGluYXRvcmNoYW5nZScsIChldmVudCkg
PT4gewotICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYEVWRU5UKCR7ZXZlbnQudHlw
ZX0pYCk7CisgICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRv
ci5hZGRFdmVudExpc3RlbmVyKCdjb29yZGluYXRvcnN0YXRlY2hhbmdlJywgKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRVZFTlQoJHtldmVudC50eXBlfSBT
VEFURSgke25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGV9KWApOwogICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
IAogICAgICAgICBhd2FpdCB3YWl0Rm9yRGVidWdnZXIoKTsKIAogICAgICAgICBjb25zb2xlV3Jp
dGUoJycpOwotICAgICAgICBjb25zb2xlV3JpdGUoJyoqIFRoZXJlIHNob3VsZCBiZSBubyBtZWRp
YVNlc3Npb24uY29vcmRpbmF0b3IgaW5pdGlhbGx5LicpCisgICAgICAgIGNvbnNvbGVXcml0ZSgn
KiogVGhlcmUgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSBjbG9zZWQg
aW5pdGlhbGx5LicpOwogCi0gICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvcicsIHVuZGVmaW5lZCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2
aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZScsICJjbG9zZWQiKTsKIAogICAg
ICAgICBjb25zb2xlV3JpdGUoJycpOwotICAgICAgICBjb25zb2xlV3JpdGUoJyoqIFRlc3QgdGhh
dCBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3JjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiBpdCBj
aGFuZ2VzLicpCisgICAgICAgIGNvbnNvbGVXcml0ZSgnKiogVGVzdCB0aGF0IG1lZGlhU2Vzc2lv
bi5jb29yZGluYXRvci5jb29yZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4g
aXQgY2hhbmdlcy4nKTsKIAogICAgICAgICBydW4oJ2ludGVybmFscy5yZWdpc3Rlck1vY2tNZWRp
YVNlc3Npb25Db29yZGluYXRvcihjaGFuZ2VIYW5kbGVyKScpOwogCiAgICAgICAgIGF3YWl0IGNo
YW5nZVByb21pc2UoKTsKLSAgICAgICAgCi0gICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9y
Lm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvcicsIHVuZGVmaW5lZCwgJyE9Jyk7CiAKICAgICAgICAg
WydwbGF5JywgJ3BhdXNlJywgJ3NlZWt0byddLmZvckVhY2goYWN0aW9uID0+IHsKICAgICAgICAg
ICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uc2V0QWN0aW9uSGFuZGxlcihhY3Rpb24sIGFjdGlv
bkRldGFpbHMgPT4gewpAQCAtMTIwLDcgKzExOCw3IEBACiAKICAgICAgICAgLy8gQmVmb3JlIGpv
aW5pbmcKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKLSAgICAgICAgY29uc29sZVdyaXRlKCcq
KiBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSAid2Fp
dGluZyIgaW50aXRpYWxseScpCisgICAgICAgIGNvbnNvbGVXcml0ZSgnKiogbmF2aWdhdG9yLm1l
ZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBzaG91bGQgYmUgIndhaXRpbmciIGluaXRpYWxs
eScpCiAgICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGlu
YXRvci5zdGF0ZScsICd3YWl0aW5nJyk7CiAKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKQEAg
LTE1OSw5ICsxNTcsOSBAQAogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwogICAgICAgICBydW4o
J2ludGVybmFscy5zZXRNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDb21tYW5kc1Nob3VsZEZh
aWwoZmFsc2UpJyk7CiAgICAgICAgIHJ1bigncHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYVNlc3Np
b24uY29vcmRpbmF0b3Iuam9pbigpJyk7CisgICAgICAgIGF3YWl0IGNoYW5nZVByb21pc2UoKTsK
ICAgICAgICAgYXdhaXQgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKCgpID0+IHsgfSkuY2F0
Y2goKCkgPT4geyB9KTsKICAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNz
aW9uLmNvb3JkaW5hdG9yLnN0YXRlJywgJ2pvaW5lZCcpOwotICAgICAgICB0ZXN0RXhwZWN0ZWQo
J2xhdGVzdENoYW5nZScsICdjb29yZGluYXRvclN0YXRlQ2hhbmdlZCcpOwogCiAgICAgICAgIGNv
bnNvbGVXcml0ZSgnJyk7CiAgICAgICAgIGNvbnNvbGVXcml0ZSgnKiogVGVzdCB0aGF0IHdoZW4g
Y29vcmRpbmF0b3IgbWV0aG9kcyBzdWNjZWVkLCBwcm9taXNlcyByZXNvbHZlIGFuZCBtZWRpYVNl
c3Npb24gYWN0aW9uIGhhbmRsZXJzIGFyZSBjYWxsZWQuJykKQEAgLTE4OSw4ICsxODcsOSBAQAog
ICAgICAgICBjb25zb2xlV3JpdGUoJzxicj4nKTsKICAgICAgICAgY29uc29sZVdyaXRlKCcqKiBM
ZWF2ZSB0aGUgc2Vzc2lvbicpCiAgICAgICAgIHJ1bignbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5j
b29yZGluYXRvci5sZWF2ZSgpJyk7CisgICAgICAgIGF3YWl0IGNoYW5nZVByb21pc2UoKTsKICAg
ICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0
YXRlJywgJ2Nsb3NlZCcpOwotICAgICAgICBhd2FpdCB0ZXN0RXhwZWN0ZWRFdmVudHVhbGx5KCds
YXRlc3RDaGFuZ2UnLCAnY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQnLCAnPT0nLCAxMDApOworCiAg
ICAgICAgIGxhdGVzdENoYW5nZSA9ICcnOwogCiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429971</attachid>
            <date>2021-05-27 18:39:48 -0700</date>
            <delta_ts>2021-05-27 20:41:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226328-20210528113946.patch</filename>
            <type>text/plain</type>
            <size>30660</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI3ZmFkNzE2MzQwYjY5
MGM5MDMyZjYzNDQzZjMyNzFjOWUyMTc0Ny4uMWM4ZTQ3YTg1ZThlYjRmZmUyZWM5NjRhMzUzNWE5
NjAxNjA5NTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
c3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29vcmRpbmF0b3Igd2Fz
IGEgcmVhZC1vbmx5IG9wdGlvbmFsIGF0dHJpYnV0ZSBvZiB0aGUgTWVkaWFTZXNzaW9uIGVsZW1l
bnQuCisgICAgICAgIFRlc3RpbmcgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgdG8gYmUgdXNlZCB0byBk
ZXRlcm1pbmUgaWYgYSBNZWRpYVNlc3Npb25Db29yZGluYXRvcgorICAgICAgICB3YXMgbm93IGF2
YWlsYWJsZSBhbmQgZm9yIHRoZSBNZWRpYVNlc3Npb24gdG8gam9pbiBpdC4gVGhpcyBtYWRlIHRo
ZSB1c2Ugb2YgYW4gZXh0ZXJuYWwKKyAgICAgICAgcG9seWZpbGwgZGlmZmljdWx0IGFuZCBlbmZv
cmNpbmcgdGhlIHZhbGlkaXR5IG9mIGFuIHVzZXIgY3JlYXRlZCBjdXN0b20KKyAgICAgICAgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgZHVlIHRvIElETCBzZW1hbnRpY3MgbGltaXRhdGlvbnMgaGFy
ZC4KKyAgICAgICAgV2UgaW5zdGVhZCBhbHdheXMgY3JlYXRlIGEgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3Igd2hpY2ggaW4gaXRzIGRlZmF1bHQgc3RhdGUgaXMgQ2xvc2VkLgorICAgICAgICBPbmNl
IHRoaXMgc3RhdGUgaXMgY2hhbmdlZCB0byBXYWl0aW5nIGFuZCBhbiBldmVudCBpcyBmaXJlIHRo
ZSBNZWRpYVNlc3Npb24gY2FuIG5vdworICAgICAgICBqb2luIGl0LgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKTogTWVkaWFTZXNzaW9uIG5vIGxvbmdlciBuZWVkcyB0
byBmaXJlIGV2ZW50LgorICAgICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBpbmhlcml0
YW5jZSBhbmQgYXN5bmMgZXZlbnQgcXVldWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b246OmNyZWF0ZUNvb3JkaW5hdG9yKTogTWFrZSBtZXRob2QgcHJpdmF0ZS4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6Y29vcmRpbmF0b3IgY29uc3QpOiBNZWRpYVNlc3Npb25Db29yZGluYXRvciBh
bHdheXMgZXhpc3RzLiBSZXR1cm4gcmVmZXJlbmNlIGluc3RlYWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbDogQW1lbmQgZGVmaW5pdGlvbiwgcmVtb3Zl
IEV2ZW50SGFuZGxlcgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnZpcnR1YWxIYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OmpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjb29yZGluYXRv
clN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb25Db29yZGluYXRvci5pZGw6IEFkZGVkIG5ldyBFdmVudEhhbmRsZXIgYXR0cmlidXRlLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4
aW4uaWRsOiBVcGRhdGUgZm9yIG5ldyBBUEkgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBkb20vRXZl
bnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmludmFsaWRhdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcik6CisKIDIwMjEtMDUtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgTWVkaWFTZXNzaW9uLmNhbGxBY3Rpb25IYW5kbGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRl
eCBjNTU1ZDlkMzhmMzcxNmU4MWFjYTAzYWM5NzAzYmNhZWIxYzc5MTAxLi5hZmIxMmEzZjQ2NTEx
MmRmMDM2ZjRmYWIyNDBiNWE3OWM0MmUwNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTEzNCwxNyArMTM0LDE0
IEBAIFJlZjxNZWRpYVNlc3Npb24+IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKE5hdmlnYXRvciYgbmF2
aWdhdG9yKQogTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24oTmF2aWdhdG9yJiBuYXZpZ2F0b3Ip
CiAgICAgOiBBY3RpdmVET01PYmplY3QobmF2aWdhdG9yLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKICAgICAsIG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5hdmlnYXRvcikpCi0gICAgLCBtX2Fz
eW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3VtZW50OjpzaGFyZWRMb2dnZXIoKSk7
CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKIAogI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogICAgIGF1dG8qIGZyYW1lID0gbmF2aWdhdG9y
LmZyYW1lKCk7Ci0gICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiBu
dWxscHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIGNvb3JkaW5hdG9yUHJpdmF0ZSA9IHBhZ2UtPm1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBjcmVhdGVDb29yZGluYXRvcigq
Y29vcmRpbmF0b3JQcml2YXRlKTsKLSAgICB9CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSA/
IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKQorICAgICAgICBjcmVhdGVDb29yZGluYXRvcihwYWdl
LT5tZWRpYVNlc3Npb25Db29yZGluYXRvcigpKTsKICNlbmRpZgogCiAgICAgc3VzcGVuZElmTmVl
ZGVkKCk7CkBAIC0xNTQsMTEgKzE1MSw2IEBAIE1lZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKE5h
dmlnYXRvciYgbmF2aWdhdG9yKQogCiBNZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24oKSA9IGRl
ZmF1bHQ7CiAKLWJvb2wgTWVkaWFTZXNzaW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0
eSgpOwotfQotCiB2b2lkIE1lZGlhU2Vzc2lvbjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9u
IHJlYXNvbikKIHsKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKQEAgLTIw
MCwxOSArMTkyLDE1IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRSZWFkeVN0YXRlKE1lZGlhU2Vz
c2lvblJlYWR5U3RhdGUgc3RhdGUpCiAgICAgbm90aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwog
fQogCi12b2lkIE1lZGlhU2Vzc2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBjb29yZGluYXRvclByaXZhdGUpCit2b2lkIE1lZGlhU2Vz
c2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKiBj
b29yZGluYXRvclByaXZhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAog
ICAgIGlmIChtX2Nvb3JkaW5hdG9yKQogICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNl
c3Npb24obnVsbHB0cik7CiAKLSAgICBtX2Nvb3JkaW5hdG9yID0gTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvb3JkaW5hdG9yUHJpdmF0ZSkpOwotCi0gICAgaWYgKG1f
Y29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPnNldE1lZGlhU2Vzc2lvbih0aGlz
KTsKLQotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29vcmRpbmF0b3JjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgbV9jb29yZGluYXRvciA9IE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKnRoaXMsIGNvb3JkaW5hdG9yUHJpdmF0ZSk7CisgICAg
bV9jb29yZGluYXRvci0+c2V0TWVkaWFTZXNzaW9uKHRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5k
ZXggNTczMTg5NTAwYzM5NDczZjMzM2RhMGQ2ZmQ0NThhOWRjYjllOGM5Yi4uNDgxZmI2ODZmZjkz
NzIwZDVlNGI3MTY1OTMzNzdmOThkNzBlNTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTI4LDggKzI4LDcgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgot
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIk1lZGlhUG9zaXRpb25TdGF0ZS5o
IgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lv
bkFjdGlvbkhhbmRsZXIuaCIKQEAgLTUyLDcgKzUxLDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcml2YXRlOwogY2xhc3MgTmF2aWdhdG9yOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIERPTVByb21pc2VEZWZlcnJlZDsKIAotY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIENh
bk1ha2VXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTmF2aWdhdG9y
Jik7CkBAIC04MCw4ICs3OSw3IEBAIHB1YmxpYzoKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH07CiAgICAgdm9pZCBz
ZXRSZWFkeVN0YXRlKE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpOwogCi0gICAgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRvci5n
ZXQoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3ImIGNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gKm1fY29vcmRpbmF0b3I7IH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fUExBWUxJU1QpCkBAIC05OCwxMCArOTYs
NiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJu
ICptX2xvZ2dlci5nZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB1c2luZyBSZWZD
b3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICBjbGFzcyBP
YnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4gewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CkBAIC0xMzAsMTUgKzEyNCwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5QWN0aW9uSGFuZGxlck9ic2VydmVycygpOwog
ICAgIHZvaWQgbm90aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogCi0gICAgLy8gRXZlbnRUYXJn
ZXQKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFT
ZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2
b2lkIGNyZWF0ZUNvb3JkaW5hdG9yKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSopOwog
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRpYVNlc3Npb24iOyB9Ci0gICAgYm9vbCB2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5k
KFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCkBA
IC0xNTUsNyArMTQ0LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZp
ZXI7CiAKICAgICBXZWFrSGFzaFNldDxPYnNlcnZlcj4gbV9vYnNlcnZlcnM7Ci0gICAgVW5pcXVl
UmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAKICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKICAgICBNZWRpYVNlc3Npb25SZWFk
eVN0YXRlIG1fcmVhZHlTdGF0ZSB7IE1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVub3RoaW5n
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmlkbAppbmRleCBiYWEwODA4NDcwYjRiODYyN2VhZGMzODIzYjVhMGZiMWI1Y2JhODdj
Li41NDk0NjE2OTM2ZDA0YjU3NWMzN2Q4OTAxMTQ4NTQ3NDJiNDQ5ODQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKQEAg
LTI4LDggKzI4LDcgQEAKICAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAogICAgIEV4cG9z
ZWQ9V2luZG93LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0LAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uIDogRXZlbnRUYXJnZXQKK10g
aW50ZXJmYWNlIE1lZGlhU2Vzc2lvbgogewogICAgIGF0dHJpYnV0ZSBNZWRpYU1ldGFkYXRhPyBt
ZXRhZGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDljNjAyOGQxNDBk
NjgzYmIxMjc1NTBmZDE0NDJkYWJjNDQxZGY1YmEuLmMwODg0NzRhMDczZTBiMjU0YWM4NjE0YzA2
OTM5MDkyNGMyMzIxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGUuaCIKQEAgLTQ3LDI0ICs0OCw0NSBAQCBzdGF0aWMgY29uc3Qgdm9pZCogbmV4
dENvb3JkaW5hdG9yTG9nSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KCsrbG9nSWRlbnRpZmllcik7CiB9CiAKLVJlZjxNZWRpYVNlc3Npb25Db29y
ZGluYXRvcj4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShSZWY8TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK1JlZjxNZWRpYVNlc3Np
b25Db29yZGluYXRvcj4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShNZWRpYVNlc3Np
b24mIHNlc3Npb24sIFJlZlB0cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJp
dmF0ZUNvb3JkaW5hdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yKFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKHNlc3Npb24sIFdURk1vdmUocHJp
dmF0ZUNvb3JkaW5hdG9yKSkpOwogfQogCi1NZWRpYVNlc3Npb25Db29yZGluYXRvcjo6TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBw
cml2YXRlQ29vcmRpbmF0b3IpCi0gICAgOiBtX3ByaXZhdGVDb29yZGluYXRvcihXVEZNb3ZlKHBy
aXZhdGVDb29yZGluYXRvcikpCitNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBSZWZQdHI8TWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKKyAgICA6IEFjdGl2ZURPTU9i
amVjdChzZXNzaW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fbG9nZ2VyKG1h
a2VSZWYoRG9jdW1lbnQ6OnNoYXJlZExvZ2dlcigpKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcihu
ZXh0Q29vcmRpbmF0b3JMb2dJZGVudGlmaWVyKCkpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShN
YWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRMb2dn
ZXIobV9sb2dnZXIuY29weVJlZigpLCBtX2xvZ0lkZW50aWZpZXIpOwotICAgIG1fcHJpdmF0ZUNv
b3JkaW5hdG9yLT5zZXRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgIGlmIChwcml2YXRl
Q29vcmRpbmF0b3IpIHsKKyAgICAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3IgPSBXVEZNb3ZlKHBy
aXZhdGVDb29yZGluYXRvcik7CisgICAgICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRMb2dn
ZXIobV9sb2dnZXIuY29weVJlZigpLCBtX2xvZ0lkZW50aWZpZXIpOworICAgICAgICBtX3ByaXZh
dGVDb29yZGluYXRvci0+c2V0Q2xpZW50KG1ha2VXZWFrUHRyKHRoaXMpKTsKKyAgICAgICAgY29v
cmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6V2FpdGlu
Zyk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRNZWRpYVNl
c3Npb25Db29yZGluYXRvclByaXZhdGUoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0
ZT4mJiBwcml2YXRlQ29vcmRpbmF0b3IpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKKyAgICBpZiAobV9wcml2YXRlQ29vcmRpbmF0b3IpCisgICAgICAgIG1fcHJpdmF0ZUNvb3Jk
aW5hdG9yLT5sZWF2ZSgpOworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yID0gV1RGTW92ZShwcml2
YXRlQ29vcmRpbmF0b3IpOworICAgIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yU3RhdGU6OldhaXRpbmcpOwogfQogCiBNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6fk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OwogCitib29sIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAg
ICAvLyBOZWVkIHRvIGtlZXAgdGhlIG9iamVjdCBhbGl2ZSBhcyBsb25nIGFzIGl0IG1heSBzdGls
bCBmaXJlIGV2ZW50cyBpbiB0aGUgZnV0dXJlLgorICAgIC8vIElmIGEgTWVkaWFTZXNzaW9uIGlz
IHByZXNlbnQsIGl0IGNvdWxkIGNhbGwgaW50byB0aGUgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ig
YXQgYW55IHRpbWUuCisgICAgcmV0dXJuIG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nQWN0
aXZpdHkoKSB8fCBtX3Nlc3Npb247Cit9CisKIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OmpvaW4oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwpAQCAtNzUsNiArOTcsNyBAQCB2b2lkIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpqb2luKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2Up
CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBt
YWtlU3RyaW5nKCJVbmFibGUgdG8gam9pbiB3aGVuIHN0YXRlIGlzICIsIGNvbnZlcnRFbnVtZXJh
dGlvblRvU3RyaW5nKG1fc3RhdGUpKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBB
U1NFUlQobV9wcml2YXRlQ29vcmRpbmF0b3IsICJXZSBtdXN0IGJlIGluIFdhaXRpbmcgc3RhdGUg
aWYgbm8gcHJpdmF0ZSBjb29yZGluYXRvciBpcyBzZXQiKTsKIAogICAgIG1fcHJpdmF0ZUNvb3Jk
aW5hdG9yLT5qb2luKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZp
ZXIsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4
Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9zZXNzaW9u
KSB7CkBAIC04OCw3ICsxMTEsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2lu
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3N0YXRlID0gTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JTdGF0ZTo6Sm9pbmVkOworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jb29y
ZGluYXRvclN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpKb2luZWQp
OworCiAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwogICAgIH0pOwogfQpAQCAtMTA3LDcgKzEz
MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpsZWF2ZSgp
CiB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjbG9zZSgpCiB7CiAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKLSAgICBtX3N0YXRlID0gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JT
dGF0ZTo6Q2xvc2VkOworICAgIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yU3RhdGU6OkNsb3NlZCk7CiAgICAgaWYgKCFtX3ByaXZhdGVDb29yZGluYXRvcikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zODcsNiArNDExLDggQEAgdm9pZCBNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JTdGEKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsIG1fc3RhdGUpOworICAgIGlmIChtX3Nlc3Npb24pCisgICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY29vcmRpbmF0b3JzdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogYm9vbCBNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6Y3VycmVudFBvc2l0aW9uQXBwcm94aW1hdGVseUVxdWFsVG8oZG91YmxlIHRpbWUpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb25Db29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaAppbmRleCBiZTUyMDAwMmE1YmIxYmY3ZWM2OWYwZGIz
ZDZlMjY1NmM3YmEzMTE3Li5kNTA4YmY1ZDliNWMyMzJmNzBlMTM3NTkwMzhkMmIzYmE5MjczMDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRR
dWV1ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
U3RhdGUuaCIKQEAgLTQxLDkgKzQ0LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Q
cm9taXNlRGVmZXJyZWQ7CiBjbGFzcyBNZWRpYVNlc3Npb25Db29yZGluYXRvcgogICAgIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+CiAgICAgLCBwdWJsaWMgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQKLSAgICAsIHB1YmxpYyBNZWRpYVNlc3Npb246Ok9i
c2VydmVyIHsKKyAgICAsIHB1YmxpYyBNZWRpYVNlc3Npb246Ok9ic2VydmVyCisgICAgLCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0CisgICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IGNyZWF0ZShSZWY8TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjcmVhdGUoTWVkaWFTZXNzaW9uJiwgUmVm
UHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUoUmVmPE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yKCk7CiAKICAgICB2b2lkIGpvaW4oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYpOwpAQCAtNjMsOCArNzAsMjAgQEAgcHVibGljOgogICAgIHVzaW5nIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yQ2xpZW50Ojp3ZWFrUHRyRmFjdG9yeTsKICAgICB1c2luZyBXZWFrVmFsdWVUeXBl
ID0gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQ6OldlYWtWYWx1ZVR5cGU7CiAKKyAgICAv
LyBFdmVudFRhcmdldAorICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZD
b3VudGVkOjpkZXJlZjsKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0K
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQorCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRpYVNlc3Np
b25Db29yZGluYXRvciI7IH0KKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKKwogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYVNlc3Npb25Db29yZGlu
YXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsKKyAgICBNZWRpYVNl
c3Npb25Db29yZGluYXRvcihNZWRpYVNlc3Npb24mLCBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcml2YXRlPiYmKTsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbjo6T2JzZXJ2ZXIKICAgICB2
b2lkIG1ldGFkYXRhQ2hhbmdlZChjb25zdCBSZWZQdHI8TWVkaWFNZXRhZGF0YT4mKSBmaW5hbDsK
QEAgLTg3LDEwICsxMDYsMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogbG9n
Q2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIjsgfQogCiAgICAg
V2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclN0YXRlIG1fc3RhdGUgeyBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpXYWl0aW5n
IH07CiAgICAgUmVmUHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4gbV9wcml2YXRl
Q29vcmRpbmF0b3I7CiAgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qg
dm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2
ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOworICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
U3RhdGUgbV9zdGF0ZSB7IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkNsb3NlZCB9Owog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsCmluZGV4IDIxMTgyNzAzZDFiMGQ4
NzJmMjM3ZGJhYTAzZGRlNTYxY2ZlNmQ1Y2EuLjA4ODFjMDZmZDJjYWMyYWFkZGRjYjNkYTA5YzRi
YzIzMWE0OWU2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwKQEAgLTI0LDE2ICsy
NCwyMCBAQAogICovCiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9
TUVESUFfU0VTU0lPTl9DT09SRElOQVRPUiwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLAogICAgIEV4cG9zZWQ9V2luZG93LAogICAgIEV4cG9ydE1hY3JvPVdF
QkNPUkVfRVhQT1JULAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgeworICAg
IEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IgOiBFdmVudFRhcmdldCB7CiAKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gam9pbigpOwogICAg
IHVuZGVmaW5lZCBsZWF2ZSgpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yU3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNv
b3JkaW5hdG9yc3RhdGVjaGFuZ2U7CisgICAgCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZz8gaWRlbnRpZmllcjsKIAogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZWVrVG8odW5yZXN0
cmljdGVkIGRvdWJsZSB0aW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhpbi5p
ZGwKaW5kZXggZmRkZjA1NjAzNGIxMDRlZjJjMThjNDc2OWFmYjFlNzlhMDYzMjJhYS4uMjRiOWUz
MDk3Y2ViY2M3YTRmYjMxYWFhZjhmYTYwNGY1MTIwMWJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhpbi5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JNaXhpbi5pZGwKQEAgLTI3LDcgKzI3LDYgQEAKICAgICBDb25kaXRpb25hbD1N
RURJQV9TRVNTSU9OX0NPT1JESU5BVE9SLAogICAgIEVuYWJsZWRCeVNldHRpbmc9TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IsCiBdIGludGVyZmFjZSBtaXhpbiBNZWRpYVNlc3Npb25Db29yZGluYXRv
ck1peGluIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I/
IGNvb3JkaW5hdG9yOwotICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb29yZGluYXRvcmNo
YW5nZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgY29v
cmRpbmF0b3I7CiAgICAgYXR0cmlidXRlIE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgcmVhZHlTdGF0
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBlY2RjODg3OWEzOTQ1MTljZGQ1MTEz
NzM5YmMxNTJmMjA3ZTVjMjAzLi43ODMzNjAzMmEzMmFmNjEwZDgyNGY4MmE5MzM2NTMxYzJiZDAz
MDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY29ubmVjdGluZykgXAogICAgIG1hY3JvKGNvbnRleHRt
ZW51KSBcCiAgICAgbWFjcm8oY29udHJvbGxlcmNoYW5nZSkgXAotICAgIG1hY3JvKGNvb3JkaW5h
dG9yY2hhbmdlKSBcCisgICAgbWFjcm8oY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSkgXAogICAgIG1h
Y3JvKGNvcHkpIFwKICAgICBtYWNybyhjdWVjaGFuZ2UpIFwKICAgICBtYWNybyhjdXQpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGJlNzhjYjhlZGM0NDJj
MGZkZmQ0ZjZmODBjYjI4NzZmYTBmOGU0OTQuLmMyNmI5YmU0MmY3YjRhYjExOTExNzBiM2ZmY2Iw
ZTMwMmYzOGZhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpA
QCAtMjMsNyArMjMsNyBAQCBNZWRpYURldmljZXMgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBN
ZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBCiBNZWRpYVF1ZXJ5TGlz
dAogTWVkaWFSZWNvcmRlciBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KLU1lZGlhU2Vzc2lvbiBj
b25kaXRpb25hbD1NRURJQV9TRVNTSU9OCitNZWRpYVNlc3Npb25Db29yZGluYXRvciBjb25kaXRp
b25hbD1NRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SCiBNZWRpYVNvdXJjZSBjb25kaXRpb25hbD1N
RURJQV9TT1VSQ0UKIE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFT
dHJlYW1UcmFjayBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IDYxZGQ4NjA1OGU3YTFlNzIzMGVkZDY3ODZjZTg0ZTE0MzRmY2NkYmUuLmNkYWU3ZThmZGE1NzIw
M2ZkOTE2OWQ5MGQ0MGRmZTYyM2VlZGJhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzQyNyw3
ICszNDI3LDcgQEAgdm9pZCBQYWdlOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmIG1lZGkKIAogICAgIGF1dG8qIHdpbmRvdyA9
IG1haW5GcmFtZSgpLndpbmRvdygpOwogICAgIGlmIChhdXRvKiBuYXZpZ2F0b3IgPSB3aW5kb3cg
PyB3aW5kb3ctPm9wdGlvbmFsTmF2aWdhdG9yKCkgOiBudWxscHRyKQotICAgICAgICBOYXZpZ2F0
b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdhdG9yKS5jcmVhdGVDb29yZGluYXRv
cigqbV9tZWRpYVNlc3Npb25Db29yZGluYXRvcik7CisgICAgICAgIE5hdmlnYXRvck1lZGlhU2Vz
c2lvbjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNvb3JkaW5hdG9yKCkuc2V0TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcml2YXRlKCptX21lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKTsKIH0KIAog
dm9pZCBQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKQpAQCAtMzQ0MSwx
MSArMzQ0MSw3IEBAIHZvaWQgUGFnZTo6aW52YWxpZGF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
KCkKICAgICBpZiAoIW5hdmlnYXRvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogY29v
cmRpbmF0b3IgPSBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdhdG9y
KS5jb29yZGluYXRvcigpOwotICAgIGlmICghY29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGNvb3JkaW5hdG9yLT5jbG9zZSgpOworICAgIE5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6
bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNvb3JkaW5hdG9yKCkuY2xvc2UoKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOGNmMDJiMTc5ZWJmYmRk
Mzc3YTZhNTQ4ZDBjNmE3YWY2OTE3N2Y5Ni4uN2NkNmIwYWJjMDA2NjQzM2JkNThiNTBmMDFjOTM0
MzFmYTg4Y2RkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjI0Niw3
ICs2MjQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tNZWRp
YVNlc3Npb25Db29yZGluYXRvcihTY3JpcHRFeGVjdXRpb24KICAgICBhdXRvJiBzZXNzaW9uID0g
TmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24oZG9jdW1lbnQtPmRvbVdpbmRvdygp
LT5uYXZpZ2F0b3IoKSk7CiAgICAgYXV0byBtb2NrID0gTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShsaXN0ZW5lcikpOwogICAgIG1fbW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yID0gbW9jay5wdHIoKTsKLSAgICBzZXNzaW9uLmNyZWF0ZUNvb3Jk
aW5hdG9yKFdURk1vdmUobW9jaykpOworICAgIHNlc3Npb24uY29vcmRpbmF0b3IoKS5zZXRNZWRp
YVNlc3Npb25Db29yZGluYXRvclByaXZhdGUoV1RGTW92ZShtb2NrKSk7CiAKICAgICByZXR1cm4g
eyB9OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQ3MmQzMTFmOWFkM2QyZGZlYjZhZmNkYTRkMzkyM2Y0MzI0Y2I0OWQuLmFlZWY3M2M1OGNk
ZTMyM2EzMTc3NzExOTliOTBkNjc5ZTYzOWE5OWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0yNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vzc2lvbi5j
b29yZGluYXRvciBzaG91bGQgbm90IGJlIG9wdGlvbmFsLCByZWx5aW5nIG9uIGNvb3JkaW5hdG9y
IHJlYWR5U3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6Y3JlYXRlQ29vcmRp
bmF0b3IpOiBDaGFuZ2UgdGVzdCB0byBtYXRjaCBuZXcgQVBJLAorICAgICAgICB1c2luZyBjb29y
ZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50IGluc3RlYWQuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbDoKKwogMjAyMS0wNS0yNyAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbcnVuLXdl
YmtpdC10ZXN0c11bV2luXSBTdHJpcCBQSFAgc3VwcG9ydCBmcm9tIHdlYnNlcnZlcgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JUZXN0Lm1tCmluZGV4IDljNjc4YTc2ZDVjMmM3NmNjMzhmZmFhNWQyZWVh
MDUyZWQ0MWQ2OTkuLjFjOTZhOGY2ZjM1MTUxZDU3YTU0YmQ0ZjE1NGIyOTUyNzA2ZWFjYTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9N
ZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KQEAgLTIxMiwxNCArMjEyLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgfV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CiAKLSAgICAgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJjb29yZGluYXRvcmNoYW5nZSJf
cyB9KTsKKyAgICAgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJjb29yZGluYXRvcnN0YXRl
Y2hhbmdlIl9zIH0pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CiAgICAgICAgIGlm
ICghcmVzdWx0KQogICAgICAgICAgICAgTlNMb2coQCItW19jcmVhdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvckZvclRlc3Rpbmc6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQhIik7CiAKLSAgICAg
ICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJjb29yZGluYXRvcmNoYW5nZSJfcyk7
Ci0gICAgICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoImNvb3JkaW5hdG9y
Y2hhbmdlIl9zKSk7CisgICAgICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgiY29v
cmRpbmF0b3JzdGF0ZWNoYW5nZSJfcyk7CisgICAgICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVu
ZXJXYXNDYWxsZWQoImNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UiX3MpKTsKICAgICB9CiAKICAgICBU
ZXN0V0tXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gX3dlYlZpZXcuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEt
cmVtb3RlLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlh
LXJlbW90ZS5odG1sCmluZGV4IGZkNGQ5OTZhMWJiMWI0ODA5ZmZmYzYyNTJlMGU0NDlhMDQ0NWVi
ZmIuLjBiNzYyN2E1ZWZhMjlmNTczYzUyNDg3ZmE0MzAwMTVmYzllOTFmNjIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUu
aHRtbApAQCAtOTYsNyArOTYsNyBAQAogICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAgICB9
CiAKLSAgICAgICAgZnVuY3Rpb24gcG9zdEV2ZW50KGV2dCkgCisgICAgICAgIGZ1bmN0aW9uIHBv
c3RFdmVudChldnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHBvc3RNZXNzYWdlKGAke2V2dC50
eXBlfSBldmVudGApOwogICAgICAgICB9CkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICAgICAgICAg
IGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCBwb3N0RXZlbnQpOwogICAgICAgICAgICAg
YXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBwb3N0RXZlbnQpOwogICAgICAgICAgICAg
YXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignc2Vla2VkJywgcG9zdEV2ZW50KTsKLSAgICAgICAgICAg
IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcignY29vcmRpbmF0b3JjaGFu
Z2UnLCBwb3N0RXZlbnQpOworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29y
ZGluYXRvci5hZGRFdmVudExpc3RlbmVyKCdjb29yZGluYXRvcnN0YXRlY2hhbmdlJywgcG9zdEV2
ZW50KTsKICAgICAgICAgfSwgZmFsc2UpOwogCiAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzUwMTM2
NDZmOGZhNTUzYTVhOGQyMGEyNTFlN2I1YzAzZDFlYTAzYi4uZDliNWIxNjdjODg0YTY0MTYxODdj
Yjc0Y2YwNWY3ZWNkNTUyYjE2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI3ICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9u
LmNvb3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0
b3IgcmVhZHlTdGF0ZSBjaGFuZ2UgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzI4CisgICAgICAgIHJkYXI6Ly83NzQ2MTMzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVk
aWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRp
YS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbDogQ2hhbmdlIHRlc3QgdG8gbWF0
Y2ggbmV3IEFQSS4KKwogMjAyMS0wNS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBNZWRpYVNlc3Npb24uY2FsbEFjdGlvbkhhbmRsZXIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRp
bmF0b3ItZXhwZWN0ZWQudHh0CmluZGV4IDFlNDc4YmE4YWFhN2IxN2I1OWMxNmE2NDg3NjY1MDZk
YmY2NDNmZDYuLjNjNDlhNWFhOTQ4NTViMjQ0YWZmYmNmMDdjY2Y2ZGQxYWU5MDE2YWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNv
b3JkaW5hdG9yLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSwxMiBAQAogCi0qKiBUaGVyZSBzaG91
bGQgYmUgbm8gbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yIGluaXRpYWxseS4KLUVYUEVDVEVEIChu
YXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yID09ICd1bmRlZmluZWQnKSBPSworKiog
VGhlcmUgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSBjbG9zZWQgaW5p
dGlhbGx5LgorRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3Rh
dGUgPT0gJ2Nsb3NlZCcpIE9LCiAKLSoqIFRlc3QgdGhhdCBtZWRpYVNlc3Npb24uY29vcmRpbmF0
b3JjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiBpdCBjaGFuZ2VzLgorKiogVGVzdCB0aGF0IG1l
ZGlhU2Vzc2lvbi5jb29yZGluYXRvci5jb29yZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50IGlzIGZp
cmVkIHdoZW4gaXQgY2hhbmdlcy4KIFJVTihpbnRlcm5hbHMucmVnaXN0ZXJNb2NrTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IoY2hhbmdlSGFuZGxlcikpCi1FVkVOVChjb29yZGluYXRvcmNoYW5nZSkK
LUVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yICE9ICd1bmRlZmlu
ZWQnKSBPSworRVZFTlQoY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBTVEFURSh3YWl0aW5nKQogCi0q
KiBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSAid2Fp
dGluZyIgaW50aXRpYWxseQorKiogbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5z
dGF0ZSBzaG91bGQgYmUgIndhaXRpbmciIGluaXRpYWxseQogRVhQRUNURUQgKG5hdmlnYXRvci5t
ZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgPT0gJ3dhaXRpbmcnKSBPSwogCiAqKiBUZXN0
IHRoYXQgd2hlbiBjb29yZGluYXRvciBtZXRob2RzIGZhaWwgYW5kIHByb21pc2VzIHJlamVjdCBi
ZWZvcmUgbWVkaWFTZXNzaW9uLmpvaW4oKSBpcyBjYWxsZWQuCkBAIC03OCw5ICs3Nyw5IEBAIEVY
UEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJycpIE9LCiAKIFJVTihpbnRlcm5hbHMuc2V0TW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ29tbWFuZHNTaG91bGRGYWlsKGZhbHNlKSkKIFJVTihwcm9t
aXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5qb2luKCkpCitFVkVOVChj
b29yZGluYXRvcnN0YXRlY2hhbmdlIFNUQVRFKGpvaW5lZCkKIFByb21pc2UgcmVzb2x2ZWQgT0sK
IEVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlID09ICdq
b2luZWQnKSBPSwotRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAnY29vcmRpbmF0b3JTdGF0ZUNo
YW5nZWQnKSBPSwogCiAqKiBUZXN0IHRoYXQgd2hlbiBjb29yZGluYXRvciBtZXRob2RzIHN1Y2Nl
ZWQsIHByb21pc2VzIHJlc29sdmUgYW5kIG1lZGlhU2Vzc2lvbiBhY3Rpb24gaGFuZGxlcnMgYXJl
IGNhbGxlZC4KIFJVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRv
ci5wbGF5KCkpCkBAIC0xNDksOCArMTQ4LDExIEBAIEVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFT
ZXNzaW9uLnBsYXliYWNrU3RhdGUgPT0gJ25vbmUnKSBPSwogCiAqKiBMZWF2ZSB0aGUgc2Vzc2lv
bgogUlVOKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IubGVhdmUoKSkKK0VYUEVD
VEVEIChsYXRlc3RDaGFuZ2UgPT0gJ3BsYXliYWNrU3RhdGVDaGFuZ2VkJykgT0sKK0VYUEVDVEVE
IChsYXRlc3RDaGFuZ2UgPT0gJ3BsYXliYWNrU3RhdGVDaGFuZ2VkJykgT0sKK0VYUEVDVEVEIChs
YXRlc3RDaGFuZ2UgPT0gJ3BsYXliYWNrU3RhdGVDaGFuZ2VkJykgT0sKK0VWRU5UKGNvb3JkaW5h
dG9yc3RhdGVjaGFuZ2UgU1RBVEUoY2xvc2VkKQogRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNl
c3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgPT0gJ2Nsb3NlZCcpIE9LCi1FWFBFQ1RFRCAobGF0ZXN0
Q2hhbmdlID09ICdjb29yZGluYXRvclN0YXRlQ2hhbmdlZCcpIE9LCiAKICoqIFRlc3QgdGhhdCB3
aGVuIGNvb3JkaW5hdG9yIG1ldGhvZHMgZmFpbCBhbmQgcHJvbWlzZXMgcmVqZWN0IGFmdGVyIG1l
ZGlhU2Vzc2lvbi5sZWF2ZSgpIGhhcyBiZWVuIGNhbGxlZC4KIFJVTihwcm9taXNlID0gbmF2aWdh
dG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5wbGF5KCkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbCBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sCmluZGV4IDU4NWE1
ZWE5NDkxMGQwZTVjYTczY2IzZGNlY2JmMjJmYjc5OTA3ZjkuLmQwNjVkYjAyNjJjYjRjMTI4ODQ0
ZmMzYTg5YTE5N2EwYjE1MDViZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sCkBAIC0zMywyOCArMzMsMjYgQEAKIAog
ICAgICAgICBsZXQgY2hhbmdlUHJvbWlzZSA9ICgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFT
ZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9yY2hhbmdlJywgKGV2ZW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRVZFTlQoJHtldmVudC50eXBlfSlg
KTsKKyAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmFk
ZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9yc3RhdGVjaGFuZ2UnLCAoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBFVkVOVCgke2V2ZW50LnR5cGV9IFNUQVRF
KCR7bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZX0pYCk7CiAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAg
ICAgICAgIGF3YWl0IHdhaXRGb3JEZWJ1Z2dlcigpOwogCiAgICAgICAgIGNvbnNvbGVXcml0ZSgn
Jyk7Ci0gICAgICAgIGNvbnNvbGVXcml0ZSgnKiogVGhlcmUgc2hvdWxkIGJlIG5vIG1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvciBpbml0aWFsbHkuJykKKyAgICAgICAgY29uc29sZVdyaXRlKCcqKiBU
aGVyZSBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlIGNsb3NlZCBpbml0
aWFsbHkuJyk7CiAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9u
LmNvb3JkaW5hdG9yJywgdW5kZWZpbmVkKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0
b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlJywgImNsb3NlZCIpOwogCiAgICAgICAg
IGNvbnNvbGVXcml0ZSgnJyk7Ci0gICAgICAgIGNvbnNvbGVXcml0ZSgnKiogVGVzdCB0aGF0IG1l
ZGlhU2Vzc2lvbi5jb29yZGluYXRvcmNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIGl0IGNoYW5n
ZXMuJykKKyAgICAgICAgY29uc29sZVdyaXRlKCcqKiBUZXN0IHRoYXQgbWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yLmNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiBpdCBj
aGFuZ2VzLicpOwogCiAgICAgICAgIHJ1bignaW50ZXJuYWxzLnJlZ2lzdGVyTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yKGNoYW5nZUhhbmRsZXIpJyk7CiAKICAgICAgICAgYXdhaXQgY2hhbmdl
UHJvbWlzZSgpOwotICAgICAgICAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVk
aWFTZXNzaW9uLmNvb3JkaW5hdG9yJywgdW5kZWZpbmVkLCAnIT0nKTsKIAogICAgICAgICBbJ3Bs
YXknLCAncGF1c2UnLCAnc2Vla3RvJ10uZm9yRWFjaChhY3Rpb24gPT4gewogICAgICAgICAgICAg
bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5zZXRBY3Rpb25IYW5kbGVyKGFjdGlvbiwgYWN0aW9uRGV0
YWlscyA9PiB7CkBAIC0xMjAsNyArMTE4LDcgQEAKIAogICAgICAgICAvLyBCZWZvcmUgam9pbmlu
ZwogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwotICAgICAgICBjb25zb2xlV3JpdGUoJyoqIG5h
dmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlICJ3YWl0aW5n
IiBpbnRpdGlhbGx5JykKKyAgICAgICAgY29uc29sZVdyaXRlKCcqKiBuYXZpZ2F0b3IubWVkaWFT
ZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSAid2FpdGluZyIgaW5pdGlhbGx5JykK
ICAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9y
LnN0YXRlJywgJ3dhaXRpbmcnKTsKIAogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwpAQCAtMTU5
LDkgKzE1Nyw5IEBACiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CiAgICAgICAgIHJ1bignaW50
ZXJuYWxzLnNldE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvckNvbW1hbmRzU2hvdWxkRmFpbChm
YWxzZSknKTsKICAgICAgICAgcnVuKCdwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5j
b29yZGluYXRvci5qb2luKCknKTsKKyAgICAgICAgYXdhaXQgY2hhbmdlUHJvbWlzZSgpOwogICAg
ICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKCkgPT4geyB9KS5jYXRjaCgo
KSA9PiB7IH0pOwogICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24u
Y29vcmRpbmF0b3Iuc3RhdGUnLCAnam9pbmVkJyk7Ci0gICAgICAgIHRlc3RFeHBlY3RlZCgnbGF0
ZXN0Q2hhbmdlJywgJ2Nvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkJyk7CiAKICAgICAgICAgY29uc29s
ZVdyaXRlKCcnKTsKICAgICAgICAgY29uc29sZVdyaXRlKCcqKiBUZXN0IHRoYXQgd2hlbiBjb29y
ZGluYXRvciBtZXRob2RzIHN1Y2NlZWQsIHByb21pc2VzIHJlc29sdmUgYW5kIG1lZGlhU2Vzc2lv
biBhY3Rpb24gaGFuZGxlcnMgYXJlIGNhbGxlZC4nKQpAQCAtMTg5LDggKzE4Nyw5IEBACiAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnPGJyPicpOwogICAgICAgICBjb25zb2xlV3JpdGUoJyoqIExlYXZl
IHRoZSBzZXNzaW9uJykKICAgICAgICAgcnVuKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3Jk
aW5hdG9yLmxlYXZlKCknKTsKKyAgICAgICAgYXdhaXQgY2hhbmdlUHJvbWlzZSgpOwogICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUn
LCAnY2xvc2VkJyk7Ci0gICAgICAgIGF3YWl0IHRlc3RFeHBlY3RlZEV2ZW50dWFsbHkoJ2xhdGVz
dENoYW5nZScsICdjb29yZGluYXRvclN0YXRlQ2hhbmdlZCcsICc9PScsIDEwMCk7CisKICAgICAg
ICAgbGF0ZXN0Q2hhbmdlID0gJyc7CiAKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429979</attachid>
            <date>2021-05-27 20:41:32 -0700</date>
            <delta_ts>2021-05-27 21:15:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226328-20210528134130.patch</filename>
            <type>text/plain</type>
            <size>31363</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI3ZmFkNzE2MzQwYjY5
MGM5MDMyZjYzNDQzZjMyNzFjOWUyMTc0Ny4uOGFjZGEyMjUyMzViMTdlMmZiN2Y1NWY5ZjEyNzRm
ZmRhOGE5ZmE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
c3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29vcmRpbmF0b3Igd2Fz
IGEgcmVhZC1vbmx5IG9wdGlvbmFsIGF0dHJpYnV0ZSBvZiB0aGUgTWVkaWFTZXNzaW9uIGVsZW1l
bnQuCisgICAgICAgIFRlc3RpbmcgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgdG8gYmUgdXNlZCB0byBk
ZXRlcm1pbmUgaWYgYSBNZWRpYVNlc3Npb25Db29yZGluYXRvcgorICAgICAgICB3YXMgbm93IGF2
YWlsYWJsZSBhbmQgZm9yIHRoZSBNZWRpYVNlc3Npb24gdG8gam9pbiBpdC4gVGhpcyBtYWRlIHRo
ZSB1c2Ugb2YgYW4gZXh0ZXJuYWwKKyAgICAgICAgcG9seWZpbGwgZGlmZmljdWx0IGFuZCBlbmZv
cmNpbmcgdGhlIHZhbGlkaXR5IG9mIGFuIHVzZXIgY3JlYXRlZCBjdXN0b20KKyAgICAgICAgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgZHVlIHRvIElETCBzZW1hbnRpY3MgbGltaXRhdGlvbnMgaGFy
ZC4KKyAgICAgICAgV2UgaW5zdGVhZCBhbHdheXMgY3JlYXRlIGEgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3Igd2hpY2ggaW4gaXRzIGRlZmF1bHQgc3RhdGUgaXMgQ2xvc2VkLgorICAgICAgICBPbmNl
IHRoaXMgc3RhdGUgaXMgY2hhbmdlZCB0byBXYWl0aW5nIGFuZCBhbiBldmVudCBpcyBmaXJlIHRo
ZSBNZWRpYVNlc3Npb24gY2FuIG5vdworICAgICAgICBqb2luIGl0LgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKTogTWVkaWFTZXNzaW9uIG5vIGxvbmdlciBuZWVkcyB0
byBmaXJlIGV2ZW50LgorICAgICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBpbmhlcml0
YW5jZSBhbmQgYXN5bmMgZXZlbnQgcXVldWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b246OmNyZWF0ZSk6IERyaXZlLWJ5IGZpeCwgZG9uJ3QgY2FsbCBzdXNwZW5kSWZOZWVkZWQoKSBp
biB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNyZWF0
ZUNvb3JkaW5hdG9yKTogTWFrZSBtZXRob2QgcHJpdmF0ZS4KKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6Y29vcmRpbmF0b3IgY29uc3QpOiBNZWRpYVNlc3Npb25Db29yZGluYXRvciBhbHdheXMgZXhp
c3RzLiBSZXR1cm4gcmVmZXJlbmNlIGluc3RlYWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmlkbDogQW1lbmQgZGVmaW5pdGlvbiwgcmVtb3ZlIEV2ZW50SGFu
ZGxlcgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Ok1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjb29yZGluYXRvclN0YXRlQ2hh
bmdlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29y
ZGluYXRvci5pZGw6IEFkZGVkIG5ldyBFdmVudEhhbmRsZXIgYXR0cmlidXRlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsOiBV
cGRhdGUgZm9yIG5ldyBBUEkgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5o
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmludmFsaWRhdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcik6CisK
IDIwMjEtMDUtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgTWVkaWFTZXNzaW9uLmNhbGxBY3Rpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRleCBjNTU1ZDlk
MzhmMzcxNmU4MWFjYTAzYWM5NzAzYmNhZWIxYzc5MTAxLi41Yzk0NzAxNjg0N2ZjMDU0YTA5M2Ni
MGZmNzY1OTFmZjQ2MzVhYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTEyOCwzNyArMTI4LDI5IEBAIHN0YXRp
YyBPcHRpb25hbDxzdGQ6OnBhaXI8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSwgUGxhdGZvCiAKIFJlZjxNZWRpYVNlc3Npb24+IE1lZGlhU2Vzc2lvbjo6Y3Jl
YXRlKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3
IE1lZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBzZXNzaW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAogTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24o
TmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiAgICAgOiBBY3RpdmVET01PYmplY3QobmF2aWdhdG9yLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50
UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3Vt
ZW50OjpzaGFyZWRMb2dnZXIoKSk7CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50
aWZpZXIoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogICAgIGF1
dG8qIGZyYW1lID0gbmF2aWdhdG9yLmZyYW1lKCk7Ci0gICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFt
ZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIGNvb3JkaW5h
dG9yUHJpdmF0ZSA9IHBhZ2UtPm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkpCi0gICAgICAgICAg
ICBjcmVhdGVDb29yZGluYXRvcigqY29vcmRpbmF0b3JQcml2YXRlKTsKLSAgICB9CisgICAgaWYg
KGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKQorICAgICAgICBj
cmVhdGVDb29yZGluYXRvcihwYWdlLT5tZWRpYVNlc3Npb25Db29yZGluYXRvcigpKTsKICNlbmRp
ZgogCi0gICAgc3VzcGVuZElmTmVlZGVkKCk7Ci0KICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogfQogCiBNZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24oKSA9IGRlZmF1bHQ7CiAKLWJv
b2wgTWVkaWFTZXNzaW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgpOwotfQotCiB2
b2lkIE1lZGlhU2Vzc2lvbjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKIHsK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKQEAgLTIwMCwxOSArMTkyLDE1
IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRSZWFkeVN0YXRlKE1lZGlhU2Vzc2lvblJlYWR5U3Rh
dGUgc3RhdGUpCiAgICAgbm90aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogfQogCi12b2lkIE1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZT4mJiBjb29yZGluYXRvclByaXZhdGUpCit2b2lkIE1lZGlhU2Vzc2lvbjo6Y3JlYXRl
Q29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKiBjb29yZGluYXRvclBy
aXZhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGlmIChtX2Nv
b3JkaW5hdG9yKQogICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNlc3Npb24obnVsbHB0
cik7CiAKLSAgICBtX2Nvb3JkaW5hdG9yID0gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0
ZShXVEZNb3ZlKGNvb3JkaW5hdG9yUHJpdmF0ZSkpOwotCi0gICAgaWYgKG1fY29vcmRpbmF0b3Ip
Ci0gICAgICAgIG1fY29vcmRpbmF0b3ItPnNldE1lZGlhU2Vzc2lvbih0aGlzKTsKLQotICAgIG1f
YXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29vcmRpbmF0b3JjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CisgICAgbV9jb29yZGluYXRvciA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpjcmVhdGUoKnRoaXMsIGNvb3JkaW5hdG9yUHJpdmF0ZSk7CisgICAgbV9jb29yZGluYXRv
ci0+c2V0TWVkaWFTZXNzaW9uKHRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNTczMTg5NTAw
YzM5NDczZjMzM2RhMGQ2ZmQ0NThhOWRjYjllOGM5Yi4uNDgxZmI2ODZmZjkzNzIwZDVlNGI3MTY1
OTMzNzdmOThkNzBlNTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTI4LDggKzI4LDcgQEAKICNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIk1lZGlhUG9zaXRpb25TdGF0ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkFjdGlvbkhhbmRs
ZXIuaCIKQEAgLTUyLDcgKzUxLDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2
YXRlOwogY2xhc3MgTmF2aWdhdG9yOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERPTVByb21p
c2VEZWZlcnJlZDsKIAotY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEgeworY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIENhbk1ha2VXZWFrUHRy
PE1lZGlhU2Vzc2lvbj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTmF2aWdhdG9yJik7CkBAIC04MCw4
ICs3OSw3IEBAIHB1YmxpYzoKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH07CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRl
KE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpOwogCi0gICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iq
IGNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRvci5nZXQoKTsgfQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3ImIGNvb3Jk
aW5hdG9yKCkgY29uc3QgeyByZXR1cm4gKm1fY29vcmRpbmF0b3I7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT05fUExBWUxJU1QpCkBAIC05OCwxMCArOTYsNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuICptX2xvZ2dlci5n
ZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICBjbGFzcyBPYnNlcnZlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4gewogICAgIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CkBAIC0xMzAsMTUgKzEyNCwxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5QWN0aW9uSGFuZGxlck9ic2VydmVycygpOwogICAgIHZvaWQgbm90
aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFTZXNzaW9uRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIGNyZWF0ZUNv
b3JkaW5hdG9yKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSopOwogCiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJNZWRpYVNlc3Npb24iOyB9Ci0gICAgYm9vbCB2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCkBAIC0xNTUsNyArMTQ0
LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAKICAgICBX
ZWFrSGFzaFNldDxPYnNlcnZlcj4gbV9vYnNlcnZlcnM7Ci0gICAgVW5pcXVlUmVmPE1haW5UaHJl
YWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAKICNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTl9DT09SRElOQVRPUikKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZSB7IE1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVub3RoaW5nIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbApp
bmRleCBiYWEwODA4NDcwYjRiODYyN2VhZGMzODIzYjVhMGZiMWI1Y2JhODdjLi41NDk0NjE2OTM2
ZDA0YjU3NWMzN2Q4OTAxMTQ4NTQ3NDJiNDQ5ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKQEAgLTI4LDggKzI4LDcg
QEAKICAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAogICAgIEV4cG9zZWQ9V2luZG93LAog
ICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uIDogRXZlbnRUYXJnZXQKK10gaW50ZXJmYWNlIE1l
ZGlhU2Vzc2lvbgogewogICAgIGF0dHJpYnV0ZSBNZWRpYU1ldGFkYXRhPyBtZXRhZGF0YTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDljNjAyOGQxNDBkNjgzYmIxMjc1NTBm
ZDE0NDJkYWJjNDQxZGY1YmEuLmY1YWY3ZjlkZTQyYjdmOWJmZTE1MGZmZWM0YjIzMjRlMTljMGUx
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUu
aCIKQEAgLTQ3LDI0ICs0OCw1MiBAQCBzdGF0aWMgY29uc3Qgdm9pZCogbmV4dENvb3JkaW5hdG9y
TG9nSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KCsrbG9nSWRlbnRpZmllcik7CiB9CiAKLVJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK1JlZjxNZWRpYVNlc3Npb25Db29yZGluYXRv
cj4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShNZWRpYVNlc3Npb24mIHNlc3Npb24s
IFJlZlB0cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5h
dG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
KFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGF1dG8gY29vcmRpbmF0b3IgPSBh
ZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKHNlc3Npb24sIFdURk1vdmUocHJp
dmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGNvb3JkaW5hdG9yLT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gY29vcmRpbmF0b3I7CiB9CiAKLU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpN
ZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRl
PiYmIHByaXZhdGVDb29yZGluYXRvcikKLSAgICA6IG1fcHJpdmF0ZUNvb3JkaW5hdG9yKFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkKK01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNl
c3Npb25Db29yZGluYXRvcihNZWRpYVNlc3Npb24mIHNlc3Npb24sIFJlZlB0cjxNZWRpYVNlc3Np
b25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQorICAgIDogQWN0aXZl
RE9NT2JqZWN0KHNlc3Npb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9sb2dn
ZXIobWFrZVJlZihEb2N1bWVudDo6c2hhcmVkTG9nZ2VyKCkpKQogICAgICwgbV9sb2dJZGVudGlm
aWVyKG5leHRDb29yZGluYXRvckxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNl
dExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCksIG1fbG9nSWRlbnRpZmllcik7Ci0gICAgbV9wcml2
YXRlQ29vcmRpbmF0b3ItPnNldENsaWVudChtYWtlV2Vha1B0cih0aGlzKSk7CisgICAgaWYgKHBy
aXZhdGVDb29yZGluYXRvcikgeworICAgICAgICBtX3ByaXZhdGVDb29yZGluYXRvciA9IFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKTsKKyAgICAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNl
dExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCksIG1fbG9nSWRlbnRpZmllcik7CisgICAgICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgICAg
ICBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpX
YWl0aW5nKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNldE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworICAgIGlmIChtX3ByaXZhdGVDb29yZGluYXRvcikKKyAgICAgICAgbV9wcml2YXRl
Q29vcmRpbmF0b3ItPmxlYXZlKCk7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3IgPSBXVEZNb3Zl
KHByaXZhdGVDb29yZGluYXRvcik7CisgICAgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6V2FpdGluZyk7CiB9CiAKIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjp+TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkKK3sKKyAgICBt
X2hhc0FjdGl2ZUxpc3RlbmVyID0gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmNvb3Jk
aW5hdG9yc3RhdGVjaGFuZ2VFdmVudCk7Cit9CisKK2Jvb2wgTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIC8vIE5lZWQgdG8g
a2VlcCB0aGUgb2JqZWN0IGFsaXZlIGFzIGxvbmcgYXMgaXQgbWF5IHN0aWxsIGZpcmUgZXZlbnRz
IGluIHRoZSBmdXR1cmUuCisgICAgLy8gSWYgYSBNZWRpYVNlc3Npb24gaXMgcHJlc2VudCwgaXQg
Y291bGQgY2FsbCBpbnRvIHRoZSBNZWRpYVNlc3Npb25Db29yZGluYXRvciBhdCBhbnkgdGltZS4K
KyAgICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1f
aGFzQWN0aXZlTGlzdGVuZXI7Cit9CisKIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Ompv
aW4oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBhdXRvIGlkZW50
aWZpZXIgPSBMT0dJREVOVElGSUVSOwpAQCAtNzUsNiArMTA0LDcgQEAgdm9pZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6am9pbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
ICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgbWFr
ZVN0cmluZygiVW5hYmxlIHRvIGpvaW4gd2hlbiBzdGF0ZSBpcyAiLCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhtX3N0YXRlKSkgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgQVNT
RVJUKG1fcHJpdmF0ZUNvb3JkaW5hdG9yLCAiV2UgbXVzdCBiZSBpbiBXYWl0aW5nIHN0YXRlIGlm
IG5vIHByaXZhdGUgY29vcmRpbmF0b3IgaXMgc2V0Iik7CiAKICAgICBtX3ByaXZhdGVDb29yZGlu
YXRvci0+am9pbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVudGlmaWVy
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNl
cHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fc2Vzc2lvbikg
ewpAQCAtODgsNyArMTE4LDggQEAgdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9zdGF0ZSA9IE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yU3RhdGU6OkpvaW5lZDsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29vcmRp
bmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6Sm9pbmVkKTsK
KwogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICB9KTsKIH0KQEAgLTEwNyw3ICsxMzgs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6bGVhdmUoKQog
dm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y2xvc2UoKQogewogICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7Ci0gICAgbV9zdGF0ZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3Rh
dGU6OkNsb3NlZDsKKyAgICBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Db29y
ZGluYXRvclN0YXRlOjpDbG9zZWQpOwogICAgIGlmICghbV9wcml2YXRlQ29vcmRpbmF0b3IpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMzg3LDYgKzQxOCw4IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
U3RhCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlID0gc3RhdGU7CiAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX3N0YXRlKTsKKyAgICBpZiAobV9oYXNBY3RpdmVMaXN0ZW5lcikK
KyAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb29yZGluYXRvcnN0YXRlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiBib29sIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjpjdXJyZW50UG9zaXRpb25BcHByb3hpbWF0ZWx5RXF1YWxUbyhkb3VibGUgdGlt
ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5oCmluZGV4IGJlNTIwMDAyYTViYjFiZjdl
YzY5ZjBkYjNkNmUyNjU2YzdiYTMxMTcuLjRiNDExOGZkODYyOWRiMjA0YWYyOThlYmFhMzEyZDVj
MGMwMzY3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaApAQCAtMjcsNiArMjcsOSBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCiAKKyNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkdlbmVy
aWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JTdGF0ZS5oIgpAQCAtNDEsOSArNDQsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIERPTVByb21pc2VEZWZlcnJlZDsKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yCiAg
ICAgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4KICAgICAsIHB1
YmxpYyBNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudAotICAgICwgcHVibGljIE1lZGlhU2Vz
c2lvbjo6T2JzZXJ2ZXIgeworICAgICwgcHVibGljIE1lZGlhU2Vzc2lvbjo6T2JzZXJ2ZXIKKyAg
ICAsIHB1YmxpYyBBY3RpdmVET01PYmplY3QKKyAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhICB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gY3JlYXRl
KFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IGNyZWF0ZShNZWRpYVNlc3Np
b24mLCBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShSZWY8TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IoKTsKIAogICAgIHZvaWQgam9pbihET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJik7CkBAIC02Miw5ICs2OSwyMiBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBNZWRp
YVNlc3Npb25Db29yZGluYXRvckNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CiAgICAgdXNpbmcgV2Vh
a1ZhbHVlVHlwZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50OjpXZWFrVmFsdWVUeXBl
OworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJl
ZjsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsKKyAgICBNZWRpYVNlc3Npb25Db29y
ZGluYXRvcihNZWRpYVNlc3Npb24mLCBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2
YXRlPiYmKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgp
IGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRl
cmVmKCk7IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIGV2ZW50TGlzdGVuZXJz
RGlkQ2hhbmdlKCkgZmluYWw7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBj
aGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yIjsgfQorICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTWVkaWFTZXNzaW9uOjpPYnNlcnZlcgogICAgIHZvaWQg
bWV0YWRhdGFDaGFuZ2VkKGNvbnN0IFJlZlB0cjxNZWRpYU1ldGFkYXRhPiYpIGZpbmFsOwpAQCAt
ODcsMTAgKzEwNywxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSB7IHJldHVybiAiTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IiOyB9CiAKICAgICBXZWFr
UHRyPE1lZGlhU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
U3RhdGUgbV9zdGF0ZSB7IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OldhaXRpbmcgfTsK
ICAgICBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiBtX3ByaXZhdGVDb29y
ZGluYXRvcjsKLSAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCBSZWY8
Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50
UXVldWU7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBtX3N0YXRlIHsgTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6Q2xvc2VkIH07CisgICAgYm9vbCBtX2hhc0FjdGl2ZUxp
c3RlbmVyIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbApp
bmRleCAyMTE4MjcwM2QxYjBkODcyZjIzN2RiYWEwM2RkZTU2MWNmZTZkNWNhLi4wODgxYzA2ZmQy
Y2FjMmFhZGRkY2IzZGEwOWM0YmMyMzFhNDllNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IuaWRsCkBAIC0yNCwxNiArMjQsMjAgQEAKICAqLwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0
LAogICAgIENvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IsCiAgICAgRW5hYmxl
ZEJ5U2V0dGluZz1NZWRpYVNlc3Npb25Db29yZGluYXRvciwKICAgICBFeHBvc2VkPVdpbmRvdywK
ICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLV0gaW50ZXJmYWNlIE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yIHsKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIDogRXZlbnRUYXJnZXQgewogCiAgICAgUHJvbWlzZTx1bmRl
ZmluZWQ+IGpvaW4oKTsKICAgICB1bmRlZmluZWQgbGVhdmUoKTsKIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlIHN0YXRlOworICAgIGF0dHJpYnV0
ZSBFdmVudEhhbmRsZXIgb25jb29yZGluYXRvcnN0YXRlY2hhbmdlOworICAgIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IGlkZW50aWZpZXI7CiAKICAgICBQcm9taXNlPHVuZGVm
aW5lZD4gc2Vla1RvKHVucmVzdHJpY3RlZCBkb3VibGUgdGltZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvck1p
eGluLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yTWl4aW4uaWRsCmluZGV4IGZkZGYwNTYwMzRiMTA0ZWYyYzE4YzQ3NjlhZmIx
ZTc5YTA2MzIyYWEuLjI0YjllMzA5N2NlYmNjN2E0ZmIzMWFhYWY4ZmE2MDRmNTEyMDFiZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yTWl4aW4uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsCkBAIC0yNyw3ICsyNyw2IEBA
CiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl9DT09SRElOQVRPUiwKICAgICBFbmFibGVk
QnlTZXR0aW5nPU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLAogXSBpbnRlcmZhY2UgbWl4aW4gTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhpbiB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yPyBjb29yZGluYXRvcjsKLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9uY29vcmRpbmF0b3JjaGFuZ2U7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yIGNvb3JkaW5hdG9yOwogICAgIGF0dHJpYnV0ZSBNZWRpYVNlc3Npb25S
ZWFkeVN0YXRlIHJlYWR5U3RhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggZWNk
Yzg4NzlhMzk0NTE5Y2RkNTExMzczOWJjMTUyZjIwN2U1YzIwMy4uNzgzMzYwMzJhMzJhZjYxMGQ4
MjRmODJhOTMzNjUzMWMyYmQwMzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xMDEs
NyArMTAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGNvbm5lY3RpbmcpIFwK
ICAgICBtYWNybyhjb250ZXh0bWVudSkgXAogICAgIG1hY3JvKGNvbnRyb2xsZXJjaGFuZ2UpIFwK
LSAgICBtYWNybyhjb29yZGluYXRvcmNoYW5nZSkgXAorICAgIG1hY3JvKGNvb3JkaW5hdG9yc3Rh
dGVjaGFuZ2UpIFwKICAgICBtYWNybyhjb3B5KSBcCiAgICAgbWFjcm8oY3VlY2hhbmdlKSBcCiAg
ICAgbWFjcm8oY3V0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpp
bmRleCBiZTc4Y2I4ZWRjNDQyYzBmZGZkNGY2ZjgwY2IyODc2ZmEwZjhlNDk0Li5jMjZiOWJlNDJm
N2I0YWIxMTkxMTcwYjNmZmNiMGUzMDJmMzhmYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KQEAgLTIzLDcgKzIzLDcgQEAgTWVkaWFEZXZpY2VzIGNvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTQogTWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9N
RURJQQogTWVkaWFRdWVyeUxpc3QKIE1lZGlhUmVjb3JkZXIgY29uZGl0aW9uYWw9TUVESUFfU1RS
RUFNCi1NZWRpYVNlc3Npb24gY29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTgorTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IgY29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl9DT09SRElOQVRPUgogTWVkaWFT
b3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KIE1lZGlhU3RyZWFtVHJhY2sgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCA2MWRkODYwNThlN2ExZTcyMzBlZGQ2Nzg2Y2U4NGUxNDM0ZmNj
ZGJlLi5jZGFlN2U4ZmRhNTcyMDNmZDkxNjlkOTBkNDBkZmU2MjNlZWRiYTQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKQEAgLTM0MjcsNyArMzQyNyw3IEBAIHZvaWQgUGFnZTo6c2V0TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBtZWRpCiAK
ICAgICBhdXRvKiB3aW5kb3cgPSBtYWluRnJhbWUoKS53aW5kb3coKTsKICAgICBpZiAoYXV0byog
bmF2aWdhdG9yID0gd2luZG93ID8gd2luZG93LT5vcHRpb25hbE5hdmlnYXRvcigpIDogbnVsbHB0
cikKLSAgICAgICAgTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24oKm5hdmlnYXRv
cikuY3JlYXRlQ29vcmRpbmF0b3IoKm1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IpOworICAgICAg
ICBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdhdG9yKS5jb29yZGlu
YXRvcigpLnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSgqbV9tZWRpYVNlc3Npb25D
b29yZGluYXRvcik7CiB9CiAKIHZvaWQgUGFnZTo6aW52YWxpZGF0ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yKCkKQEAgLTM0NDEsMTEgKzM0NDEsNyBAQCB2b2lkIFBhZ2U6OmludmFsaWRhdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvcigpCiAgICAgaWYgKCFuYXZpZ2F0b3IpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8qIGNvb3JkaW5hdG9yID0gTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRp
YVNlc3Npb24oKm5hdmlnYXRvcikuY29vcmRpbmF0b3IoKTsKLSAgICBpZiAoIWNvb3JkaW5hdG9y
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb29yZGluYXRvci0+Y2xvc2UoKTsKKyAgICBOYXZp
Z2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdhdG9yKS5jb29yZGluYXRvcigp
LmNsb3NlKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDhjZjAyYjE3OWViZmJkZDM3N2E2YTU0OGQwYzZhN2FmNjkxNzdmOTYuLjdjZDZiMGFiYzAw
NjY0MzNiZDU4YjUwZjAxYzkzNDMxZmE4OGNkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTYyNDYsNyArNjI0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFs
czo6cmVnaXN0ZXJNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoU2NyaXB0RXhlY3V0aW9uCiAg
ICAgYXV0byYgc2Vzc2lvbiA9IE5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKGRv
Y3VtZW50LT5kb21XaW5kb3coKS0+bmF2aWdhdG9yKCkpOwogICAgIGF1dG8gbW9jayA9IE1vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUobGlzdGVuZXIp
KTsKICAgICBtX21vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciA9IG1vY2sucHRyKCk7Ci0gICAg
c2Vzc2lvbi5jcmVhdGVDb29yZGluYXRvcihXVEZNb3ZlKG1vY2spKTsKKyAgICBzZXNzaW9uLmNv
b3JkaW5hdG9yKCkuc2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKFdURk1vdmUobW9j
aykpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NzJkMzExZjlhZDNkMmRmZWI2YWZjZGE0ZDM5MjNmNDMy
NGNiNDlkLi5hZWVmNzNjNThjZGUzMjNhMzE3NzcxMTk5YjkwZDY3OWU2MzlhOTlkIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjEtMDUtMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBNZWRpYVNlc3Npb24uY29vcmRpbmF0b3Igc2hvdWxkIG5vdCBiZSBvcHRpb25hbCwgcmVs
eWluZyBvbiBjb29yZGluYXRvciByZWFkeVN0YXRlIGNoYW5nZSBpbnN0ZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYzMjgKKyAgICAgICAgcmRh
cjovLzc3NDYxMzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRv
clRlc3QubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRv
clRlc3Q6OmNyZWF0ZUNvb3JkaW5hdG9yKTogQ2hhbmdlIHRlc3QgdG8gbWF0Y2ggbmV3IEFQSSwK
KyAgICAgICAgdXNpbmcgY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBldmVudCBpbnN0ZWFkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWw6
CisKIDIwMjEtMDUtMjcgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+
CiAKICAgICAgICAgW3J1bi13ZWJraXQtdGVzdHNdW1dpbl0gU3RyaXAgUEhQIHN1cHBvcnQgZnJv
bSB3ZWJzZXJ2ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbQppbmRleCA5YzY3OGE3NmQ1
YzJjNzZjYzM4ZmZhYTVkMmVlYTA1MmVkNDFkNjk5Li4xYzk2YThmNmYzNTE1MWQ1N2E1NGJkNGYx
NTRiMjk1MjcwNmVhY2E4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tCkBAIC0yMTIs
MTQgKzIxMiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIH1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOwogCi0gICAgICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAi
Y29vcmRpbmF0b3JjaGFuZ2UiX3MgfSk7CisgICAgICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMo
eyAiY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSJfcyB9KTsKIAogICAgICAgICBFWFBFQ1RfVFJVRShy
ZXN1bHQpOwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIE5TTG9nKEAiLVtfY3Jl
YXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOmNvbXBsZXRpb25IYW5kbGVyOl0g
ZmFpbGVkISIpOwogCi0gICAgICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgiY29v
cmRpbmF0b3JjaGFuZ2UiX3MpOwotICAgICAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2Fz
Q2FsbGVkKCJjb29yZGluYXRvcmNoYW5nZSJfcykpOworICAgICAgICB3YWl0Rm9yRXZlbnRMaXN0
ZW5lclRvQmVDYWxsZWQoImNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UiX3MpOworICAgICAgICBBU1NF
UlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJjb29yZGluYXRvcnN0YXRlY2hhbmdlIl9z
KSk7CiAgICAgfQogCiAgICAgVGVzdFdLV2ViVmlldyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJu
IF93ZWJWaWV3LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbAppbmRleCBmZDRkOTk2YTFiYjFiNDgwOWZm
ZmM2MjUyZTBlNDQ5YTA0NDVlYmZiLi4wYjc2MjdhNWVmYTI5ZjU3M2M1MjQ4N2ZhNDMwMDE1ZmM5
ZTkxZjYyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L21lZGlhLXJlbW90ZS5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwKQEAgLTk2LDcgKzk2LDcgQEAKICAgICAgICAgICAgICAg
ICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSht
ZXNzYWdlKTsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHBvc3RFdmVudChldnQpIAor
ICAgICAgICBmdW5jdGlvbiBwb3N0RXZlbnQoZXZ0KQogICAgICAgICB7CiAgICAgICAgICAgICBw
b3N0TWVzc2FnZShgJHtldnQudHlwZX0gZXZlbnRgKTsKICAgICAgICAgfQpAQCAtMTM1LDcgKzEz
NSw3IEBACiAgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgcG9zdEV2
ZW50KTsKICAgICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgcG9zdEV2
ZW50KTsKICAgICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3NlZWtlZCcsIHBvc3RF
dmVudCk7Ci0gICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Nvb3JkaW5hdG9yY2hhbmdlJywgcG9zdEV2ZW50KTsKKyAgICAgICAgICAgIG5hdmlnYXRv
ci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IuYWRkRXZlbnRMaXN0ZW5lcignY29vcmRpbmF0b3Jz
dGF0ZWNoYW5nZScsIHBvc3RFdmVudCk7CiAgICAgICAgIH0sIGZhbHNlKTsKIAogICAgIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGM1MDEzNjQ2ZjhmYTU1M2E1YThkMjBhMjUxZTdiNWMwM2QxZWEwM2IuLmQ5
YjViMTY3Yzg4NGE2NDE2MTg3Y2I3NGNmMDVmN2VjZDU1MmIxNmUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMS0wNS0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIE1lZGlhU2Vzc2lvbi5jb29yZGluYXRvciBzaG91bGQgbm90IGJlIG9wdGlvbmFsLCBy
ZWx5aW5nIG9uIGNvb3JkaW5hdG9yIHJlYWR5U3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICBy
ZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIG1lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci1leHBlY3RlZC50
eHQ6CisgICAgICAgICogbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLmh0bWw6
IENoYW5nZSB0ZXN0IHRvIG1hdGNoIG5ldyBBUEkuCisKIDIwMjEtMDUtMjEgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgTWVkaWFTZXNzaW9uLmNhbGxB
Y3Rpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9u
L21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dAppbmRleCAxZTQ3OGJhOGFhYTdi
MTdiNTljMTZhNjQ4NzY2NTA2ZGJmNjQzZmQ2Li4zYzQ5YTVhYTk0ODU1YjI0NGFmZmJjZjA3Y2Nm
NmRkMWFlOTAxNmFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9u
L21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsMTIg
QEAKIAotKiogVGhlcmUgc2hvdWxkIGJlIG5vIG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvciBpbml0
aWFsbHkuCi1FWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvciA9PSAn
dW5kZWZpbmVkJykgT0sKKyoqIFRoZXJlIG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBz
aG91bGQgYmUgY2xvc2VkIGluaXRpYWxseS4KK0VYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNz
aW9uLmNvb3JkaW5hdG9yLnN0YXRlID09ICdjbG9zZWQnKSBPSwogCi0qKiBUZXN0IHRoYXQgbWVk
aWFTZXNzaW9uLmNvb3JkaW5hdG9yY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gaXQgY2hhbmdl
cy4KKyoqIFRlc3QgdGhhdCBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3IuY29vcmRpbmF0b3JzdGF0
ZWNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIGl0IGNoYW5nZXMuCiBSVU4oaW50ZXJuYWxzLnJl
Z2lzdGVyTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKGNoYW5nZUhhbmRsZXIpKQotRVZFTlQo
Y29vcmRpbmF0b3JjaGFuZ2UpCi1FWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29y
ZGluYXRvciAhPSAndW5kZWZpbmVkJykgT0sKK0VWRU5UKGNvb3JkaW5hdG9yc3RhdGVjaGFuZ2Ug
U1RBVEUod2FpdGluZykKIAotKiogbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5z
dGF0ZSBzaG91bGQgYmUgIndhaXRpbmciIGludGl0aWFsbHkKKyoqIG5hdmlnYXRvci5tZWRpYVNl
c3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlICJ3YWl0aW5nIiBpbml0aWFsbHkKIEVY
UEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlID09ICd3YWl0
aW5nJykgT0sKIAogKiogVGVzdCB0aGF0IHdoZW4gY29vcmRpbmF0b3IgbWV0aG9kcyBmYWlsIGFu
ZCBwcm9taXNlcyByZWplY3QgYmVmb3JlIG1lZGlhU2Vzc2lvbi5qb2luKCkgaXMgY2FsbGVkLgpA
QCAtNzgsOSArNzcsOSBAQCBFWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09ICcnKSBPSwogCiBSVU4o
aW50ZXJuYWxzLnNldE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvckNvbW1hbmRzU2hvdWxkRmFp
bChmYWxzZSkpCiBSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0
b3Iuam9pbigpKQorRVZFTlQoY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBTVEFURShqb2luZWQpCiBQ
cm9taXNlIHJlc29sdmVkIE9LCiBFWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29y
ZGluYXRvci5zdGF0ZSA9PSAnam9pbmVkJykgT0sKLUVYUEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0g
J2Nvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkJykgT0sKIAogKiogVGVzdCB0aGF0IHdoZW4gY29vcmRp
bmF0b3IgbWV0aG9kcyBzdWNjZWVkLCBwcm9taXNlcyByZXNvbHZlIGFuZCBtZWRpYVNlc3Npb24g
YWN0aW9uIGhhbmRsZXJzIGFyZSBjYWxsZWQuCiBSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRp
YVNlc3Npb24uY29vcmRpbmF0b3IucGxheSgpKQpAQCAtMTQ5LDggKzE0OCwxMSBAQCBFWFBFQ1RF
RCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5wbGF5YmFja1N0YXRlID09ICdub25lJykgT0sKIAog
KiogTGVhdmUgdGhlIHNlc3Npb24KIFJVTihuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5h
dG9yLmxlYXZlKCkpCitFWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09ICdwbGF5YmFja1N0YXRlQ2hh
bmdlZCcpIE9LCitFWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09ICdwbGF5YmFja1N0YXRlQ2hhbmdl
ZCcpIE9LCitFWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09ICdwbGF5YmFja1N0YXRlQ2hhbmdlZCcp
IE9LCitFVkVOVChjb29yZGluYXRvcnN0YXRlY2hhbmdlIFNUQVRFKGNsb3NlZCkKIEVYUEVDVEVE
IChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlID09ICdjbG9zZWQnKSBP
SwotRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAnY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQnKSBP
SwogCiAqKiBUZXN0IHRoYXQgd2hlbiBjb29yZGluYXRvciBtZXRob2RzIGZhaWwgYW5kIHByb21p
c2VzIHJlamVjdCBhZnRlciBtZWRpYVNlc3Npb24ubGVhdmUoKSBoYXMgYmVlbiBjYWxsZWQuCiBS
VU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IucGxheSgpKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5h
dG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0
b3IuaHRtbAppbmRleCA1ODVhNWVhOTQ5MTBkMGU1Y2E3M2NiM2RjZWNiZjIyZmI3OTkwN2Y5Li5k
MDY1ZGIwMjYyY2I0YzEyODg0NGZjM2E4OWExOTdhMGIxNTA1YmRiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbApAQCAt
MzMsMjggKzMzLDI2IEBACiAKICAgICAgICAgbGV0IGNoYW5nZVByb21pc2UgPSAoKSA9PiB7CiAg
ICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICAg
ICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCdjb29yZGluYXRvcmNo
YW5nZScsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYEVW
RU5UKCR7ZXZlbnQudHlwZX0pYCk7CisgICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvci5hZGRFdmVudExpc3RlbmVyKCdjb29yZGluYXRvcnN0YXRlY2hhbmdl
JywgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRVZFTlQo
JHtldmVudC50eXBlfSBTVEFURSgke25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iu
c3RhdGV9KWApOwogICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0KIAogICAgICAgICBhd2FpdCB3YWl0Rm9yRGVidWdnZXIoKTsKIAogICAg
ICAgICBjb25zb2xlV3JpdGUoJycpOwotICAgICAgICBjb25zb2xlV3JpdGUoJyoqIFRoZXJlIHNo
b3VsZCBiZSBubyBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3IgaW5pdGlhbGx5LicpCisgICAgICAg
IGNvbnNvbGVXcml0ZSgnKiogVGhlcmUgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNo
b3VsZCBiZSBjbG9zZWQgaW5pdGlhbGx5LicpOwogCi0gICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2
aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvcicsIHVuZGVmaW5lZCk7CisgICAgICAgIHRl
c3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZScsICJj
bG9zZWQiKTsKIAogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwotICAgICAgICBjb25zb2xlV3Jp
dGUoJyoqIFRlc3QgdGhhdCBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3JjaGFuZ2UgZXZlbnQgaXMg
ZmlyZWQgd2hlbiBpdCBjaGFuZ2VzLicpCisgICAgICAgIGNvbnNvbGVXcml0ZSgnKiogVGVzdCB0
aGF0IG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5jb29yZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50
IGlzIGZpcmVkIHdoZW4gaXQgY2hhbmdlcy4nKTsKIAogICAgICAgICBydW4oJ2ludGVybmFscy5y
ZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcihjaGFuZ2VIYW5kbGVyKScpOwogCiAg
ICAgICAgIGF3YWl0IGNoYW5nZVByb21pc2UoKTsKLSAgICAgICAgCi0gICAgICAgIHRlc3RFeHBl
Y3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvcicsIHVuZGVmaW5lZCwgJyE9
Jyk7CiAKICAgICAgICAgWydwbGF5JywgJ3BhdXNlJywgJ3NlZWt0byddLmZvckVhY2goYWN0aW9u
ID0+IHsKICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uc2V0QWN0aW9uSGFuZGxl
cihhY3Rpb24sIGFjdGlvbkRldGFpbHMgPT4gewpAQCAtMTIwLDcgKzExOCw3IEBACiAKICAgICAg
ICAgLy8gQmVmb3JlIGpvaW5pbmcKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKLSAgICAgICAg
Y29uc29sZVdyaXRlKCcqKiBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRl
IHNob3VsZCBiZSAid2FpdGluZyIgaW50aXRpYWxseScpCisgICAgICAgIGNvbnNvbGVXcml0ZSgn
KiogbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBzaG91bGQgYmUgIndh
aXRpbmciIGluaXRpYWxseScpCiAgICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlh
U2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZScsICd3YWl0aW5nJyk7CiAKICAgICAgICAgY29uc29s
ZVdyaXRlKCcnKTsKQEAgLTE1OSw5ICsxNTcsOSBAQAogICAgICAgICBjb25zb2xlV3JpdGUoJycp
OwogICAgICAgICBydW4oJ2ludGVybmFscy5zZXRNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JD
b21tYW5kc1Nob3VsZEZhaWwoZmFsc2UpJyk7CiAgICAgICAgIHJ1bigncHJvbWlzZSA9IG5hdmln
YXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuam9pbigpJyk7CisgICAgICAgIGF3YWl0IGNo
YW5nZVByb21pc2UoKTsKICAgICAgICAgYXdhaXQgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVu
KCgpID0+IHsgfSkuY2F0Y2goKCkgPT4geyB9KTsKICAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZp
Z2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlJywgJ2pvaW5lZCcpOwotICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ2xhdGVzdENoYW5nZScsICdjb29yZGluYXRvclN0YXRlQ2hhbmdlZCcp
OwogCiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CiAgICAgICAgIGNvbnNvbGVXcml0ZSgnKiog
VGVzdCB0aGF0IHdoZW4gY29vcmRpbmF0b3IgbWV0aG9kcyBzdWNjZWVkLCBwcm9taXNlcyByZXNv
bHZlIGFuZCBtZWRpYVNlc3Npb24gYWN0aW9uIGhhbmRsZXJzIGFyZSBjYWxsZWQuJykKQEAgLTE4
OSw4ICsxODcsOSBAQAogICAgICAgICBjb25zb2xlV3JpdGUoJzxicj4nKTsKICAgICAgICAgY29u
c29sZVdyaXRlKCcqKiBMZWF2ZSB0aGUgc2Vzc2lvbicpCiAgICAgICAgIHJ1bignbmF2aWdhdG9y
Lm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5sZWF2ZSgpJyk7CisgICAgICAgIGF3YWl0IGNoYW5n
ZVByb21pc2UoKTsKICAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9u
LmNvb3JkaW5hdG9yLnN0YXRlJywgJ2Nsb3NlZCcpOwotICAgICAgICBhd2FpdCB0ZXN0RXhwZWN0
ZWRFdmVudHVhbGx5KCdsYXRlc3RDaGFuZ2UnLCAnY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQnLCAn
PT0nLCAxMDApOworCiAgICAgICAgIGxhdGVzdENoYW5nZSA9ICcnOwogCiAgICAgICAgIGNvbnNv
bGVXcml0ZSgnJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429982</attachid>
            <date>2021-05-27 21:15:28 -0700</date>
            <delta_ts>2021-05-27 22:07:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226328-20210528141527.patch</filename>
            <type>text/plain</type>
            <size>31343</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI3ZmFkNzE2MzQwYjY5
MGM5MDMyZjYzNDQzZjMyNzFjOWUyMTc0Ny4uOGFjZGEyMjUyMzViMTdlMmZiN2Y1NWY5ZjEyNzRm
ZmRhOGE5ZmE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
c3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29vcmRpbmF0b3Igd2Fz
IGEgcmVhZC1vbmx5IG9wdGlvbmFsIGF0dHJpYnV0ZSBvZiB0aGUgTWVkaWFTZXNzaW9uIGVsZW1l
bnQuCisgICAgICAgIFRlc3RpbmcgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgdG8gYmUgdXNlZCB0byBk
ZXRlcm1pbmUgaWYgYSBNZWRpYVNlc3Npb25Db29yZGluYXRvcgorICAgICAgICB3YXMgbm93IGF2
YWlsYWJsZSBhbmQgZm9yIHRoZSBNZWRpYVNlc3Npb24gdG8gam9pbiBpdC4gVGhpcyBtYWRlIHRo
ZSB1c2Ugb2YgYW4gZXh0ZXJuYWwKKyAgICAgICAgcG9seWZpbGwgZGlmZmljdWx0IGFuZCBlbmZv
cmNpbmcgdGhlIHZhbGlkaXR5IG9mIGFuIHVzZXIgY3JlYXRlZCBjdXN0b20KKyAgICAgICAgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgZHVlIHRvIElETCBzZW1hbnRpY3MgbGltaXRhdGlvbnMgaGFy
ZC4KKyAgICAgICAgV2UgaW5zdGVhZCBhbHdheXMgY3JlYXRlIGEgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3Igd2hpY2ggaW4gaXRzIGRlZmF1bHQgc3RhdGUgaXMgQ2xvc2VkLgorICAgICAgICBPbmNl
IHRoaXMgc3RhdGUgaXMgY2hhbmdlZCB0byBXYWl0aW5nIGFuZCBhbiBldmVudCBpcyBmaXJlIHRo
ZSBNZWRpYVNlc3Npb24gY2FuIG5vdworICAgICAgICBqb2luIGl0LgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKTogTWVkaWFTZXNzaW9uIG5vIGxvbmdlciBuZWVkcyB0
byBmaXJlIGV2ZW50LgorICAgICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBpbmhlcml0
YW5jZSBhbmQgYXN5bmMgZXZlbnQgcXVldWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b246OmNyZWF0ZSk6IERyaXZlLWJ5IGZpeCwgZG9uJ3QgY2FsbCBzdXNwZW5kSWZOZWVkZWQoKSBp
biB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNyZWF0
ZUNvb3JkaW5hdG9yKTogTWFrZSBtZXRob2QgcHJpdmF0ZS4KKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6Y29vcmRpbmF0b3IgY29uc3QpOiBNZWRpYVNlc3Npb25Db29yZGluYXRvciBhbHdheXMgZXhp
c3RzLiBSZXR1cm4gcmVmZXJlbmNlIGluc3RlYWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmlkbDogQW1lbmQgZGVmaW5pdGlvbiwgcmVtb3ZlIEV2ZW50SGFu
ZGxlcgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Ok1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjb29yZGluYXRvclN0YXRlQ2hh
bmdlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29y
ZGluYXRvci5pZGw6IEFkZGVkIG5ldyBFdmVudEhhbmRsZXIgYXR0cmlidXRlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsOiBV
cGRhdGUgZm9yIG5ldyBBUEkgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5o
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmludmFsaWRhdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcik6CisK
IDIwMjEtMDUtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgTWVkaWFTZXNzaW9uLmNhbGxBY3Rpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRleCBjNTU1ZDlk
MzhmMzcxNmU4MWFjYTAzYWM5NzAzYmNhZWIxYzc5MTAxLi41Yzk0NzAxNjg0N2ZjMDU0YTA5M2Ni
MGZmNzY1OTFmZjQ2MzVhYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTEyOCwzNyArMTI4LDI5IEBAIHN0YXRp
YyBPcHRpb25hbDxzdGQ6OnBhaXI8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSwgUGxhdGZvCiAKIFJlZjxNZWRpYVNlc3Npb24+IE1lZGlhU2Vzc2lvbjo6Y3Jl
YXRlKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3
IE1lZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBzZXNzaW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAogTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24o
TmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiAgICAgOiBBY3RpdmVET01PYmplY3QobmF2aWdhdG9yLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50
UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3Vt
ZW50OjpzaGFyZWRMb2dnZXIoKSk7CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50
aWZpZXIoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogICAgIGF1
dG8qIGZyYW1lID0gbmF2aWdhdG9yLmZyYW1lKCk7Ci0gICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFt
ZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIGNvb3JkaW5h
dG9yUHJpdmF0ZSA9IHBhZ2UtPm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkpCi0gICAgICAgICAg
ICBjcmVhdGVDb29yZGluYXRvcigqY29vcmRpbmF0b3JQcml2YXRlKTsKLSAgICB9CisgICAgaWYg
KGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKQorICAgICAgICBj
cmVhdGVDb29yZGluYXRvcihwYWdlLT5tZWRpYVNlc3Npb25Db29yZGluYXRvcigpKTsKICNlbmRp
ZgogCi0gICAgc3VzcGVuZElmTmVlZGVkKCk7Ci0KICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogfQogCiBNZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24oKSA9IGRlZmF1bHQ7CiAKLWJv
b2wgTWVkaWFTZXNzaW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgpOwotfQotCiB2
b2lkIE1lZGlhU2Vzc2lvbjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKIHsK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKQEAgLTIwMCwxOSArMTkyLDE1
IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRSZWFkeVN0YXRlKE1lZGlhU2Vzc2lvblJlYWR5U3Rh
dGUgc3RhdGUpCiAgICAgbm90aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogfQogCi12b2lkIE1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZT4mJiBjb29yZGluYXRvclByaXZhdGUpCit2b2lkIE1lZGlhU2Vzc2lvbjo6Y3JlYXRl
Q29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKiBjb29yZGluYXRvclBy
aXZhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGlmIChtX2Nv
b3JkaW5hdG9yKQogICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNlc3Npb24obnVsbHB0
cik7CiAKLSAgICBtX2Nvb3JkaW5hdG9yID0gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0
ZShXVEZNb3ZlKGNvb3JkaW5hdG9yUHJpdmF0ZSkpOwotCi0gICAgaWYgKG1fY29vcmRpbmF0b3Ip
Ci0gICAgICAgIG1fY29vcmRpbmF0b3ItPnNldE1lZGlhU2Vzc2lvbih0aGlzKTsKLQotICAgIG1f
YXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29vcmRpbmF0b3JjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CisgICAgbV9jb29yZGluYXRvciA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpjcmVhdGUoKnRoaXMsIGNvb3JkaW5hdG9yUHJpdmF0ZSk7CisgICAgbV9jb29yZGluYXRv
ci0+c2V0TWVkaWFTZXNzaW9uKHRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNTczMTg5NTAw
YzM5NDczZjMzM2RhMGQ2ZmQ0NThhOWRjYjllOGM5Yi4uNDgxZmI2ODZmZjkzNzIwZDVlNGI3MTY1
OTMzNzdmOThkNzBlNTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTI4LDggKzI4LDcgQEAKICNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIk1lZGlhUG9zaXRpb25TdGF0ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkFjdGlvbkhhbmRs
ZXIuaCIKQEAgLTUyLDcgKzUxLDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2
YXRlOwogY2xhc3MgTmF2aWdhdG9yOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERPTVByb21p
c2VEZWZlcnJlZDsKIAotY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEgeworY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIENhbk1ha2VXZWFrUHRy
PE1lZGlhU2Vzc2lvbj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTmF2aWdhdG9yJik7CkBAIC04MCw4
ICs3OSw3IEBAIHB1YmxpYzoKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH07CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRl
KE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpOwogCi0gICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iq
IGNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRvci5nZXQoKTsgfQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3ImIGNvb3Jk
aW5hdG9yKCkgY29uc3QgeyByZXR1cm4gKm1fY29vcmRpbmF0b3I7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT05fUExBWUxJU1QpCkBAIC05OCwxMCArOTYsNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuICptX2xvZ2dlci5n
ZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICBjbGFzcyBPYnNlcnZlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4gewogICAgIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CkBAIC0xMzAsMTUgKzEyNCwxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5QWN0aW9uSGFuZGxlck9ic2VydmVycygpOwogICAgIHZvaWQgbm90
aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFTZXNzaW9uRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIGNyZWF0ZUNv
b3JkaW5hdG9yKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSopOwogCiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJNZWRpYVNlc3Npb24iOyB9Ci0gICAgYm9vbCB2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCkBAIC0xNTUsNyArMTQ0
LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAKICAgICBX
ZWFrSGFzaFNldDxPYnNlcnZlcj4gbV9vYnNlcnZlcnM7Ci0gICAgVW5pcXVlUmVmPE1haW5UaHJl
YWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAKICNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTl9DT09SRElOQVRPUikKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZSB7IE1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVub3RoaW5nIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbApp
bmRleCBiYWEwODA4NDcwYjRiODYyN2VhZGMzODIzYjVhMGZiMWI1Y2JhODdjLi41NDk0NjE2OTM2
ZDA0YjU3NWMzN2Q4OTAxMTQ4NTQ3NDJiNDQ5ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKQEAgLTI4LDggKzI4LDcg
QEAKICAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAogICAgIEV4cG9zZWQ9V2luZG93LAog
ICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uIDogRXZlbnRUYXJnZXQKK10gaW50ZXJmYWNlIE1l
ZGlhU2Vzc2lvbgogewogICAgIGF0dHJpYnV0ZSBNZWRpYU1ldGFkYXRhPyBtZXRhZGF0YTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDljNjAyOGQxNDBkNjgzYmIxMjc1NTBm
ZDE0NDJkYWJjNDQxZGY1YmEuLjM2NWNmZmUxMDE4ZTc0ZmIxOWY0YzAyNzRhZDEzODlkZGY1NjMx
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUu
aCIKQEAgLTQ3LDI0ICs0OCw1MSBAQCBzdGF0aWMgY29uc3Qgdm9pZCogbmV4dENvb3JkaW5hdG9y
TG9nSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KCsrbG9nSWRlbnRpZmllcik7CiB9CiAKLVJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK1JlZjxNZWRpYVNlc3Npb25Db29yZGluYXRv
cj4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShNZWRpYVNlc3Npb24mIHNlc3Npb24s
IFJlZlB0cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5h
dG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
KFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGF1dG8gY29vcmRpbmF0b3IgPSBh
ZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKHNlc3Npb24sIFdURk1vdmUocHJp
dmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGNvb3JkaW5hdG9yLT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gY29vcmRpbmF0b3I7CiB9CiAKLU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpN
ZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRl
PiYmIHByaXZhdGVDb29yZGluYXRvcikKLSAgICA6IG1fcHJpdmF0ZUNvb3JkaW5hdG9yKFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkKK01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNl
c3Npb25Db29yZGluYXRvcihNZWRpYVNlc3Npb24mIHNlc3Npb24sIFJlZlB0cjxNZWRpYVNlc3Np
b25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQorICAgIDogQWN0aXZl
RE9NT2JqZWN0KHNlc3Npb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9sb2dn
ZXIobWFrZVJlZihEb2N1bWVudDo6c2hhcmVkTG9nZ2VyKCkpKQogICAgICwgbV9sb2dJZGVudGlm
aWVyKG5leHRDb29yZGluYXRvckxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNl
dExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCksIG1fbG9nSWRlbnRpZmllcik7Ci0gICAgbV9wcml2
YXRlQ29vcmRpbmF0b3ItPnNldENsaWVudChtYWtlV2Vha1B0cih0aGlzKSk7CisgICAgaWYgKHBy
aXZhdGVDb29yZGluYXRvcikgeworICAgICAgICBtX3ByaXZhdGVDb29yZGluYXRvciA9IFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKTsKKyAgICAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNl
dExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCksIG1fbG9nSWRlbnRpZmllcik7CisgICAgICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgICAg
ICBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpX
YWl0aW5nKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNldE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworICAgIGlmIChtX3ByaXZhdGVDb29yZGluYXRvcikKKyAgICAgICAgbV9wcml2YXRl
Q29vcmRpbmF0b3ItPmxlYXZlKCk7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3IgPSBXVEZNb3Zl
KHByaXZhdGVDb29yZGluYXRvcik7CisgICAgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6V2FpdGluZyk7CiB9CiAKIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjp+TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkKK3sKKyAgICBt
X2hhc0Nvb3JkaW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5jb29yZGluYXRvcnN0YXRlY2hhbmdlRXZlbnQpOworfQorCitib29s
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QKK3sKKyAgICAvLyBOZWVkIHRvIGtlZXAgdGhlIG9iamVjdCBhbGl2ZSBhcyBsb25nIGFzIGl0
IG1heSBzdGlsbCBmaXJlIGV2ZW50cyBpbiB0aGUgZnV0dXJlLgorICAgIHJldHVybiBtX2hhc0Nv
b3JkaW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lcjsKK30KKwogdm9pZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6am9pbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
ewogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CkBAIC03NSw2ICsxMDMsNyBA
QCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJVbmFibGUgdG8gam9pbiB3aGVuIHN0YXRlIGlzICIs
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKG1fc3RhdGUpKSB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKyAgICBBU1NFUlQobV9wcml2YXRlQ29vcmRpbmF0b3IsICJXZSBtdXN0IGJlIGlu
IFdhaXRpbmcgc3RhdGUgaWYgbm8gcHJpdmF0ZSBjb29yZGluYXRvciBpcyBzZXQiKTsKIAogICAg
IG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2luKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigq
dGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoT3B0aW9uYWw8
RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcHJvdGVjdGVk
VGhpcy0+bV9zZXNzaW9uKSB7CkBAIC04OCw3ICsxMTcsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjpqb2luKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3N0
YXRlID0gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6Sm9pbmVkOworICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5jb29yZGluYXRvclN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Db29yZGluYXRv
clN0YXRlOjpKb2luZWQpOworCiAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwogICAgIH0pOwog
fQpAQCAtMTA3LDcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpsZWF2ZSgpCiB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjbG9zZSgpCiB7
CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBtX3N0YXRlID0gTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JTdGF0ZTo6Q2xvc2VkOworICAgIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2Vk
KE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkNsb3NlZCk7CiAgICAgaWYgKCFtX3ByaXZh
dGVDb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0zODcsNiArNDE3LDggQEAgdm9p
ZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGEKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBzdGF0
ZTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG1fc3RhdGUpOworICAgIGlmIChtX2hh
c0Nvb3JkaW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lcikKKyAgICAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb29yZGlu
YXRvcnN0YXRlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObykpOwogfQogCiBib29sIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjdXJyZW50
UG9zaXRpb25BcHByb3hpbWF0ZWx5RXF1YWxUbyhkb3VibGUgdGltZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b25Db29yZGluYXRvci5oCmluZGV4IGJlNTIwMDAyYTViYjFiZjdlYzY5ZjBkYjNkNmUyNjU2Yzdi
YTMxMTcuLmMzYTVmNjg3ZmMwMTM2MzRiZDdkODA3OTczOGE0MGYyNGZhNDg4MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuaApAQCAtMjcsNiArMjcsOSBAQAogCiAjaWYgRU5BQkxFKE1FRElB
X1NFU1NJT05fQ09PUkRJTkFUT1IpCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAj
aW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZS5oIgpA
QCAtNDEsMTAgKzQ0LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlRGVm
ZXJyZWQ7CiBjbGFzcyBNZWRpYVNlc3Npb25Db29yZGluYXRvcgogICAgIDogcHVibGljIFJlZkNv
dW50ZWQ8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+CiAgICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JDbGllbnQKLSAgICAsIHB1YmxpYyBNZWRpYVNlc3Npb246Ok9ic2VydmVyIHsK
KyAgICAsIHB1YmxpYyBNZWRpYVNlc3Npb246Ok9ic2VydmVyCisgICAgLCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0CisgICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSAgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IGNyZWF0ZShSZWY8TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcml2YXRlPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjcmVhdGUoTWVkaWFTZXNzaW9uJiwgUmVmUHRyPE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVNl
c3Npb25Db29yZGluYXRvclByaXZhdGUoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0
ZT4mJik7CiAKICAgICB2b2lkIGpvaW4oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGxlYXZlKCk7CkBAIC02Miw5ICs2OSwyMiBAQCBwdWJsaWM6CiAK
ICAgICB1c2luZyBNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7
CiAgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50
OjpXZWFrVmFsdWVUeXBlOworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBS
ZWZDb3VudGVkOjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYVNlc3Npb25D
b29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsKKyAgICBN
ZWRpYVNlc3Npb25Db29yZGluYXRvcihNZWRpYVNlc3Npb24mLCBSZWZQdHI8TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcml2YXRlPiYmKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lk
IGV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkgZmluYWw7CisKKyAgICAvLyBBY3RpdmVET01PYmpl
Y3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIjsgfQorICAgIGJvb2wgdmlydHVhbEhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTWVkaWFTZXNzaW9uOjpPYnNl
cnZlcgogICAgIHZvaWQgbWV0YWRhdGFDaGFuZ2VkKGNvbnN0IFJlZlB0cjxNZWRpYU1ldGFkYXRh
PiYpIGZpbmFsOwpAQCAtODcsMTAgKzEwNywxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBsb2dDbGFzc05hbWUoKSB7IHJldHVybiAiTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ii
OyB9CiAKICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yU3RhdGUgbV9zdGF0ZSB7IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3Rh
dGU6OldhaXRpbmcgfTsKICAgICBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRl
PiBtX3ByaXZhdGVDb29yZGluYXRvcjsKLSAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsK
KyAgICBjb25zdCBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBt
X2xvZ0lkZW50aWZpZXI7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZT4gbV9hc3luY0V2ZW50UXVldWU7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBt
X3N0YXRlIHsgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6Q2xvc2VkIH07CisgICAgYm9v
bCBtX2hhc0Nvb3JkaW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lciB7IGZhbHNlIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwKaW5kZXggMjExODI3MDNkMWIwZDg3
MmYyMzdkYmFhMDNkZGU1NjFjZmU2ZDVjYS4uMDg4MWMwNmZkMmNhYzJhYWRkZGNiM2RhMDljNGJj
MjMxYTQ5ZTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbApAQCAtMjQsMTYgKzI0
LDIwIEBACiAgKi8KIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1N
RURJQV9TRVNTSU9OX0NPT1JESU5BVE9SLAogICAgIEVuYWJsZWRCeVNldHRpbmc9TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IsCiAgICAgRXhwb3NlZD1XaW5kb3csCiAgICAgRXhwb3J0TWFjcm89V0VC
Q09SRV9FWFBPUlQsCi1dIGludGVyZmFjZSBNZWRpYVNlc3Npb25Db29yZGluYXRvciB7CisgICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVNlc3Npb25Db29yZGluYXRv
ciA6IEV2ZW50VGFyZ2V0IHsKIAogICAgIFByb21pc2U8dW5kZWZpbmVkPiBqb2luKCk7CiAgICAg
dW5kZWZpbmVkIGxlYXZlKCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uY29v
cmRpbmF0b3JzdGF0ZWNoYW5nZTsKKyAgICAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nPyBpZGVudGlmaWVyOwogCiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IHNlZWtUbyh1bnJlc3Ry
aWN0ZWQgZG91YmxlIHRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhpbi5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvck1peGluLmlk
bAppbmRleCBmZGRmMDU2MDM0YjEwNGVmMmMxOGM0NzY5YWZiMWU3OWEwNjMyMmFhLi4yNGI5ZTMw
OTdjZWJjYzdhNGZiMzFhYWFmOGZhNjA0ZjUxMjAxYmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvck1peGluLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25D
b29yZGluYXRvck1peGluLmlkbApAQCAtMjcsNyArMjcsNiBAQAogICAgIENvbmRpdGlvbmFsPU1F
RElBX1NFU1NJT05fQ09PUkRJTkFUT1IsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1NZWRpYVNlc3Np
b25Db29yZGluYXRvciwKIF0gaW50ZXJmYWNlIG1peGluIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
TWl4aW4gewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVNlc3Npb25Db29yZGluYXRvcj8g
Y29vcmRpbmF0b3I7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNvb3JkaW5hdG9yY2hh
bmdlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVNlc3Npb25Db29yZGluYXRvciBjb29y
ZGluYXRvcjsKICAgICBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSByZWFkeVN0YXRl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGVjZGM4ODc5YTM5NDUxOWNkZDUxMTM3
MzliYzE1MmYyMDdlNWMyMDMuLjc4MzM2MDMyYTMyYWY2MTBkODI0ZjgyYTkzMzY1MzFjMmJkMDMw
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTAxLDcgKzEwMSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBtYWNybyhjb25uZWN0aW5nKSBcCiAgICAgbWFjcm8oY29udGV4dG1l
bnUpIFwKICAgICBtYWNybyhjb250cm9sbGVyY2hhbmdlKSBcCi0gICAgbWFjcm8oY29vcmRpbmF0
b3JjaGFuZ2UpIFwKKyAgICBtYWNybyhjb29yZGluYXRvcnN0YXRlY2hhbmdlKSBcCiAgICAgbWFj
cm8oY29weSkgXAogICAgIG1hY3JvKGN1ZWNoYW5nZSkgXAogICAgIG1hY3JvKGN1dCkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggYmU3OGNiOGVkYzQ0MmMw
ZmRmZDRmNmY4MGNiMjg3NmZhMGY4ZTQ5NC4uYzI2YjliZTQyZjdiNGFiMTE5MTE3MGIzZmZjYjBl
MzAyZjM4ZmE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBA
IC0yMyw3ICsyMyw3IEBAIE1lZGlhRGV2aWNlcyBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1l
ZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKIE1lZGlhUXVlcnlMaXN0
CiBNZWRpYVJlY29yZGVyIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQotTWVkaWFTZXNzaW9uIGNv
bmRpdGlvbmFsPU1FRElBX1NFU1NJT04KK01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIGNvbmRpdGlv
bmFsPU1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IKIE1lZGlhU291cmNlIGNvbmRpdGlvbmFsPU1F
RElBX1NPVVJDRQogTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRpYVN0
cmVhbVRyYWNrIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
NjFkZDg2MDU4ZTdhMWU3MjMwZWRkNjc4NmNlODRlMTQzNGZjY2RiZS4uY2RhZTdlOGZkYTU3MjAz
ZmQ5MTY5ZDkwZDQwZGZlNjIzZWVkYmE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zNDI3LDcg
KzM0MjcsNyBAQCB2b2lkIFBhZ2U6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFJlZjxNZWRp
YVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgbWVkaQogCiAgICAgYXV0byogd2luZG93ID0g
bWFpbkZyYW1lKCkud2luZG93KCk7CiAgICAgaWYgKGF1dG8qIG5hdmlnYXRvciA9IHdpbmRvdyA/
IHdpbmRvdy0+b3B0aW9uYWxOYXZpZ2F0b3IoKSA6IG51bGxwdHIpCi0gICAgICAgIE5hdmlnYXRv
ck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNyZWF0ZUNvb3JkaW5hdG9y
KCptX21lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKTsKKyAgICAgICAgTmF2aWdhdG9yTWVkaWFTZXNz
aW9uOjptZWRpYVNlc3Npb24oKm5hdmlnYXRvcikuY29vcmRpbmF0b3IoKS5zZXRNZWRpYVNlc3Np
b25Db29yZGluYXRvclByaXZhdGUoKm1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IpOwogfQogCiB2
b2lkIFBhZ2U6OmludmFsaWRhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcigpCkBAIC0zNDQxLDEx
ICszNDQxLDcgQEAgdm9pZCBQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Io
KQogICAgIGlmICghbmF2aWdhdG9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBjb29y
ZGluYXRvciA9IE5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3Ip
LmNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCFjb29yZGluYXRvcikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgY29vcmRpbmF0b3ItPmNsb3NlKCk7CisgICAgTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjpt
ZWRpYVNlc3Npb24oKm5hdmlnYXRvcikuY29vcmRpbmF0b3IoKS5jbG9zZSgpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4Y2YwMmIxNzllYmZiZGQz
NzdhNmE1NDhkMGM2YTdhZjY5MTc3Zjk2Li43Y2Q2YjBhYmMwMDY2NDMzYmQ1OGI1MGYwMWM5MzQz
MWZhODhjZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MjQ2LDcg
KzYyNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnJlZ2lzdGVyTW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yKFNjcmlwdEV4ZWN1dGlvbgogICAgIGF1dG8mIHNlc3Npb24gPSBO
YXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbihkb2N1bWVudC0+ZG9tV2luZG93KCkt
Pm5hdmlnYXRvcigpKTsKICAgICBhdXRvIG1vY2sgPSBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKGxpc3RlbmVyKSk7CiAgICAgbV9tb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IgPSBtb2NrLnB0cigpOwotICAgIHNlc3Npb24uY3JlYXRlQ29vcmRp
bmF0b3IoV1RGTW92ZShtb2NrKSk7CisgICAgc2Vzc2lvbi5jb29yZGluYXRvcigpLnNldE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShXVEZNb3ZlKG1vY2spKTsKIAogICAgIHJldHVybiB7
IH07CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNDcyZDMxMWY5YWQzZDJkZmViNmFmY2RhNGQzOTIzZjQzMjRjYjQ5ZC4uYWVlZjczYzU4Y2Rl
MzIzYTMxNzc3MTE5OWI5MGQ2NzllNjM5YTk5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
cmVhZHlTdGF0ZSBjaGFuZ2UgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzI4CisgICAgICAgIHJkYXI6Ly83NzQ2MTMzNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpjcmVhdGVDb29yZGlu
YXRvcik6IENoYW5nZSB0ZXN0IHRvIG1hdGNoIG5ldyBBUEksCisgICAgICAgIHVzaW5nIGNvb3Jk
aW5hdG9yc3RhdGVjaGFuZ2UgZXZlbnQgaW5zdGVhZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sOgorCiAyMDIxLTA1LTI3ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtydW4td2Vi
a2l0LXRlc3RzXVtXaW5dIFN0cmlwIFBIUCBzdXBwb3J0IGZyb20gd2Vic2VydmVyCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGlu
YXRvclRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Np
b25Db29yZGluYXRvclRlc3QubW0KaW5kZXggOWM2NzhhNzZkNWMyYzc2Y2MzOGZmYWE1ZDJlZWEw
NTJlZDQxZDY5OS4uMWM5NmE4ZjZmMzUxNTFkNTdhNTRiZDRmMTU0YjI5NTI3MDZlYWNhOCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbQpAQCAtMjEyLDE0ICsyMTIsMTQgQEAgcHVibGlj
OgogICAgICAgICB9XTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
IAotICAgICAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgImNvb3JkaW5hdG9yY2hhbmdlIl9z
IH0pOworICAgICAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgImNvb3JkaW5hdG9yc3RhdGVj
aGFuZ2UiX3MgfSk7CiAKICAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKICAgICAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgICAgICBOU0xvZyhAIi1bX2NyZWF0ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yRm9yVGVzdGluZzpjb21wbGV0aW9uSGFuZGxlcjpdIGZhaWxlZCEiKTsKIAotICAgICAg
ICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoImNvb3JkaW5hdG9yY2hhbmdlIl9zKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgiY29vcmRpbmF0b3Jj
aGFuZ2UiX3MpKTsKKyAgICAgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJjb29y
ZGluYXRvcnN0YXRlY2hhbmdlIl9zKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5l
cldhc0NhbGxlZCgiY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSJfcykpOwogICAgIH0KIAogICAgIFRl
c3RXS1dlYlZpZXcqIHdlYlZpZXcoKSBjb25zdCB7IHJldHVybiBfd2ViVmlldy5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1y
ZW1vdGUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEt
cmVtb3RlLmh0bWwKaW5kZXggZmQ0ZDk5NmExYmIxYjQ4MDlmZmZjNjI1MmUwZTQ0OWEwNDQ1ZWJm
Yi4uMGI3NjI3YTVlZmEyOWY1NzNjNTI0ODdmYTQzMDAxNWZjOWU5MWY2MiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5o
dG1sCkBAIC05Niw3ICs5Niw3IEBACiAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgIH0K
IAotICAgICAgICBmdW5jdGlvbiBwb3N0RXZlbnQoZXZ0KSAKKyAgICAgICAgZnVuY3Rpb24gcG9z
dEV2ZW50KGV2dCkKICAgICAgICAgewogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoYCR7ZXZ0LnR5
cGV9IGV2ZW50YCk7CiAgICAgICAgIH0KQEAgLTEzNSw3ICsxMzUsNyBAQAogICAgICAgICAgICAg
YXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBvc3RFdmVudCk7CiAgICAgICAgICAgICBh
dWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBvc3RFdmVudCk7CiAgICAgICAgICAgICBh
dWRpby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBwb3N0RXZlbnQpOwotICAgICAgICAgICAg
bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCdjb29yZGluYXRvcmNoYW5n
ZScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3Jk
aW5hdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9yc3RhdGVjaGFuZ2UnLCBwb3N0RXZl
bnQpOwogICAgICAgICB9LCBmYWxzZSk7CiAKICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNTAxMzY0
NmY4ZmE1NTNhNWE4ZDIwYTI1MWU3YjVjMDNkMWVhMDNiLi5kOWI1YjE2N2M4ODRhNjQxNjE4N2Ni
NzRjZjA1ZjdlY2Q1NTJiMTZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjcgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYVNlc3Npb24u
Y29vcmRpbmF0b3Igc2hvdWxkIG5vdCBiZSBvcHRpb25hbCwgcmVseWluZyBvbiBjb29yZGluYXRv
ciByZWFkeVN0YXRlIGNoYW5nZSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYzMjgKKyAgICAgICAgcmRhcjovLzc3NDYxMzM1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRp
YS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlh
L21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sOiBDaGFuZ2UgdGVzdCB0byBtYXRj
aCBuZXcgQVBJLgorCiAyMDIxLTA1LTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIE1lZGlhU2Vzc2lvbi5jYWxsQWN0aW9uSGFuZGxlcgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGlu
YXRvci1leHBlY3RlZC50eHQKaW5kZXggMWU0NzhiYThhYWE3YjE3YjU5YzE2YTY0ODc2NjUwNmRi
ZjY0M2ZkNi4uM2M0OWE1YWE5NDg1NWIyNDRhZmZiY2YwN2NjZjZkZDFhZTkwMTZhZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29v
cmRpbmF0b3ItZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDEyIEBACiAKLSoqIFRoZXJlIHNob3Vs
ZCBiZSBubyBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3IgaW5pdGlhbGx5LgotRVhQRUNURUQgKG5h
dmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IgPT0gJ3VuZGVmaW5lZCcpIE9LCisqKiBU
aGVyZSBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlIGNsb3NlZCBpbml0
aWFsbHkuCitFWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0
ZSA9PSAnY2xvc2VkJykgT0sKIAotKiogVGVzdCB0aGF0IG1lZGlhU2Vzc2lvbi5jb29yZGluYXRv
cmNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIGl0IGNoYW5nZXMuCisqKiBUZXN0IHRoYXQgbWVk
aWFTZXNzaW9uLmNvb3JkaW5hdG9yLmNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UgZXZlbnQgaXMgZmly
ZWQgd2hlbiBpdCBjaGFuZ2VzLgogUlVOKGludGVybmFscy5yZWdpc3Rlck1vY2tNZWRpYVNlc3Np
b25Db29yZGluYXRvcihjaGFuZ2VIYW5kbGVyKSkKLUVWRU5UKGNvb3JkaW5hdG9yY2hhbmdlKQot
RVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IgIT0gJ3VuZGVmaW5l
ZCcpIE9LCitFVkVOVChjb29yZGluYXRvcnN0YXRlY2hhbmdlIFNUQVRFKHdhaXRpbmcpCiAKLSoq
IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlICJ3YWl0
aW5nIiBpbnRpdGlhbGx5CisqKiBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0
YXRlIHNob3VsZCBiZSAid2FpdGluZyIgaW5pdGlhbGx5CiBFWFBFQ1RFRCAobmF2aWdhdG9yLm1l
ZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSA9PSAnd2FpdGluZycpIE9LCiAKICoqIFRlc3Qg
dGhhdCB3aGVuIGNvb3JkaW5hdG9yIG1ldGhvZHMgZmFpbCBhbmQgcHJvbWlzZXMgcmVqZWN0IGJl
Zm9yZSBtZWRpYVNlc3Npb24uam9pbigpIGlzIGNhbGxlZC4KQEAgLTc4LDkgKzc3LDkgQEAgRVhQ
RUNURUQgKGxhdGVzdENoYW5nZSA9PSAnJykgT0sKIAogUlVOKGludGVybmFscy5zZXRNb2NrTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JDb21tYW5kc1Nob3VsZEZhaWwoZmFsc2UpKQogUlVOKHByb21p
c2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmpvaW4oKSkKK0VWRU5UKGNv
b3JkaW5hdG9yc3RhdGVjaGFuZ2UgU1RBVEUoam9pbmVkKQogUHJvbWlzZSByZXNvbHZlZCBPSwog
RVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgPT0gJ2pv
aW5lZCcpIE9LCi1FWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09ICdjb29yZGluYXRvclN0YXRlQ2hh
bmdlZCcpIE9LCiAKICoqIFRlc3QgdGhhdCB3aGVuIGNvb3JkaW5hdG9yIG1ldGhvZHMgc3VjY2Vl
ZCwgcHJvbWlzZXMgcmVzb2x2ZSBhbmQgbWVkaWFTZXNzaW9uIGFjdGlvbiBoYW5kbGVycyBhcmUg
Y2FsbGVkLgogUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9y
LnBsYXkoKSkKQEAgLTE0OSw4ICsxNDgsMTEgQEAgRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNl
c3Npb24ucGxheWJhY2tTdGF0ZSA9PSAnbm9uZScpIE9LCiAKICoqIExlYXZlIHRoZSBzZXNzaW9u
CiBSVU4obmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5sZWF2ZSgpKQorRVhQRUNU
RUQgKGxhdGVzdENoYW5nZSA9PSAncGxheWJhY2tTdGF0ZUNoYW5nZWQnKSBPSworRVhQRUNURUQg
KGxhdGVzdENoYW5nZSA9PSAncGxheWJhY2tTdGF0ZUNoYW5nZWQnKSBPSworRVhQRUNURUQgKGxh
dGVzdENoYW5nZSA9PSAncGxheWJhY2tTdGF0ZUNoYW5nZWQnKSBPSworRVZFTlQoY29vcmRpbmF0
b3JzdGF0ZWNoYW5nZSBTVEFURShjbG9zZWQpCiBFWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvci5zdGF0ZSA9PSAnY2xvc2VkJykgT0sKLUVYUEVDVEVEIChsYXRlc3RD
aGFuZ2UgPT0gJ2Nvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkJykgT0sKIAogKiogVGVzdCB0aGF0IHdo
ZW4gY29vcmRpbmF0b3IgbWV0aG9kcyBmYWlsIGFuZCBwcm9taXNlcyByZWplY3QgYWZ0ZXIgbWVk
aWFTZXNzaW9uLmxlYXZlKCkgaGFzIGJlZW4gY2FsbGVkLgogUlVOKHByb21pc2UgPSBuYXZpZ2F0
b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnBsYXkoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLmh0bWwKaW5kZXggNTg1YTVl
YTk0OTEwZDBlNWNhNzNjYjNkY2VjYmYyMmZiNzk5MDdmOS4uZDA2NWRiMDI2MmNiNGMxMjg4NDRm
YzNhODlhMTk3YTBiMTUwNWJkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLmh0bWwKQEAgLTMzLDI4ICszMywyNiBAQAogCiAg
ICAgICAgIGxldCBjaGFuZ2VQcm9taXNlID0gKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNl
c3Npb24uYWRkRXZlbnRMaXN0ZW5lcignY29vcmRpbmF0b3JjaGFuZ2UnLCAoZXZlbnQpID0+IHsK
LSAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBFVkVOVCgke2V2ZW50LnR5cGV9KWAp
OworICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IuYWRk
RXZlbnRMaXN0ZW5lcignY29vcmRpbmF0b3JzdGF0ZWNoYW5nZScsIChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYEVWRU5UKCR7ZXZlbnQudHlwZX0gU1RBVEUo
JHtuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlfSlgKTsKICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKICAg
ICAgICAgYXdhaXQgd2FpdEZvckRlYnVnZ2VyKCk7CiAKICAgICAgICAgY29uc29sZVdyaXRlKCcn
KTsKLSAgICAgICAgY29uc29sZVdyaXRlKCcqKiBUaGVyZSBzaG91bGQgYmUgbm8gbWVkaWFTZXNz
aW9uLmNvb3JkaW5hdG9yIGluaXRpYWxseS4nKQorICAgICAgICBjb25zb2xlV3JpdGUoJyoqIFRo
ZXJlIG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBzaG91bGQgYmUgY2xvc2VkIGluaXRp
YWxseS4nKTsKIAotICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24u
Y29vcmRpbmF0b3InLCB1bmRlZmluZWQpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRv
ci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUnLCAiY2xvc2VkIik7CiAKICAgICAgICAg
Y29uc29sZVdyaXRlKCcnKTsKLSAgICAgICAgY29uc29sZVdyaXRlKCcqKiBUZXN0IHRoYXQgbWVk
aWFTZXNzaW9uLmNvb3JkaW5hdG9yY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gaXQgY2hhbmdl
cy4nKQorICAgICAgICBjb25zb2xlV3JpdGUoJyoqIFRlc3QgdGhhdCBtZWRpYVNlc3Npb24uY29v
cmRpbmF0b3IuY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIGl0IGNo
YW5nZXMuJyk7CiAKICAgICAgICAgcnVuKCdpbnRlcm5hbHMucmVnaXN0ZXJNb2NrTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IoY2hhbmdlSGFuZGxlciknKTsKIAogICAgICAgICBhd2FpdCBjaGFuZ2VQ
cm9taXNlKCk7Ci0gICAgICAgIAotICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRp
YVNlc3Npb24uY29vcmRpbmF0b3InLCB1bmRlZmluZWQsICchPScpOwogCiAgICAgICAgIFsncGxh
eScsICdwYXVzZScsICdzZWVrdG8nXS5mb3JFYWNoKGFjdGlvbiA9PiB7CiAgICAgICAgICAgICBu
YXZpZ2F0b3IubWVkaWFTZXNzaW9uLnNldEFjdGlvbkhhbmRsZXIoYWN0aW9uLCBhY3Rpb25EZXRh
aWxzID0+IHsKQEAgLTEyMCw3ICsxMTgsNyBAQAogCiAgICAgICAgIC8vIEJlZm9yZSBqb2luaW5n
CiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7Ci0gICAgICAgIGNvbnNvbGVXcml0ZSgnKiogbmF2
aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBzaG91bGQgYmUgIndhaXRpbmci
IGludGl0aWFsbHknKQorICAgICAgICBjb25zb2xlV3JpdGUoJyoqIG5hdmlnYXRvci5tZWRpYVNl
c3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlICJ3YWl0aW5nIiBpbml0aWFsbHknKQog
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iu
c3RhdGUnLCAnd2FpdGluZycpOwogCiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CkBAIC0xNTks
OSArMTU3LDkgQEAKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKICAgICAgICAgcnVuKCdpbnRl
cm5hbHMuc2V0TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ29tbWFuZHNTaG91bGRGYWlsKGZh
bHNlKScpOwogICAgICAgICBydW4oJ3Byb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yLmpvaW4oKScpOworICAgICAgICBhd2FpdCBjaGFuZ2VQcm9taXNlKCk7CiAgICAg
ICAgIGF3YWl0IHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoKSA9PiB7IH0pLmNhdGNoKCgp
ID0+IHsgfSk7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5j
b29yZGluYXRvci5zdGF0ZScsICdqb2luZWQnKTsKLSAgICAgICAgdGVzdEV4cGVjdGVkKCdsYXRl
c3RDaGFuZ2UnLCAnY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQnKTsKIAogICAgICAgICBjb25zb2xl
V3JpdGUoJycpOwogICAgICAgICBjb25zb2xlV3JpdGUoJyoqIFRlc3QgdGhhdCB3aGVuIGNvb3Jk
aW5hdG9yIG1ldGhvZHMgc3VjY2VlZCwgcHJvbWlzZXMgcmVzb2x2ZSBhbmQgbWVkaWFTZXNzaW9u
IGFjdGlvbiBoYW5kbGVycyBhcmUgY2FsbGVkLicpCkBAIC0xODksOCArMTg3LDkgQEAKICAgICAg
ICAgY29uc29sZVdyaXRlKCc8YnI+Jyk7CiAgICAgICAgIGNvbnNvbGVXcml0ZSgnKiogTGVhdmUg
dGhlIHNlc3Npb24nKQogICAgICAgICBydW4oJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRp
bmF0b3IubGVhdmUoKScpOworICAgICAgICBhd2FpdCBjaGFuZ2VQcm9taXNlKCk7CiAgICAgICAg
IHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZScs
ICdjbG9zZWQnKTsKLSAgICAgICAgYXdhaXQgdGVzdEV4cGVjdGVkRXZlbnR1YWxseSgnbGF0ZXN0
Q2hhbmdlJywgJ2Nvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkJywgJz09JywgMTAwKTsKKwogICAgICAg
ICBsYXRlc3RDaGFuZ2UgPSAnJzsKIAogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429983</attachid>
            <date>2021-05-27 22:07:33 -0700</date>
            <delta_ts>2021-05-28 05:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226328-20210528150731.patch</filename>
            <type>text/plain</type>
            <size>31347</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI3ZmFkNzE2MzQwYjY5
MGM5MDMyZjYzNDQzZjMyNzFjOWUyMTc0Ny4uOGFjZGEyMjUyMzViMTdlMmZiN2Y1NWY5ZjEyNzRm
ZmRhOGE5ZmE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
c3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29vcmRpbmF0b3Igd2Fz
IGEgcmVhZC1vbmx5IG9wdGlvbmFsIGF0dHJpYnV0ZSBvZiB0aGUgTWVkaWFTZXNzaW9uIGVsZW1l
bnQuCisgICAgICAgIFRlc3RpbmcgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgdG8gYmUgdXNlZCB0byBk
ZXRlcm1pbmUgaWYgYSBNZWRpYVNlc3Npb25Db29yZGluYXRvcgorICAgICAgICB3YXMgbm93IGF2
YWlsYWJsZSBhbmQgZm9yIHRoZSBNZWRpYVNlc3Npb24gdG8gam9pbiBpdC4gVGhpcyBtYWRlIHRo
ZSB1c2Ugb2YgYW4gZXh0ZXJuYWwKKyAgICAgICAgcG9seWZpbGwgZGlmZmljdWx0IGFuZCBlbmZv
cmNpbmcgdGhlIHZhbGlkaXR5IG9mIGFuIHVzZXIgY3JlYXRlZCBjdXN0b20KKyAgICAgICAgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgZHVlIHRvIElETCBzZW1hbnRpY3MgbGltaXRhdGlvbnMgaGFy
ZC4KKyAgICAgICAgV2UgaW5zdGVhZCBhbHdheXMgY3JlYXRlIGEgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3Igd2hpY2ggaW4gaXRzIGRlZmF1bHQgc3RhdGUgaXMgQ2xvc2VkLgorICAgICAgICBPbmNl
IHRoaXMgc3RhdGUgaXMgY2hhbmdlZCB0byBXYWl0aW5nIGFuZCBhbiBldmVudCBpcyBmaXJlIHRo
ZSBNZWRpYVNlc3Npb24gY2FuIG5vdworICAgICAgICBqb2luIGl0LgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKTogTWVkaWFTZXNzaW9uIG5vIGxvbmdlciBuZWVkcyB0
byBmaXJlIGV2ZW50LgorICAgICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBpbmhlcml0
YW5jZSBhbmQgYXN5bmMgZXZlbnQgcXVldWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b246OmNyZWF0ZSk6IERyaXZlLWJ5IGZpeCwgZG9uJ3QgY2FsbCBzdXNwZW5kSWZOZWVkZWQoKSBp
biB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNyZWF0
ZUNvb3JkaW5hdG9yKTogTWFrZSBtZXRob2QgcHJpdmF0ZS4KKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6Y29vcmRpbmF0b3IgY29uc3QpOiBNZWRpYVNlc3Npb25Db29yZGluYXRvciBhbHdheXMgZXhp
c3RzLiBSZXR1cm4gcmVmZXJlbmNlIGluc3RlYWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmlkbDogQW1lbmQgZGVmaW5pdGlvbiwgcmVtb3ZlIEV2ZW50SGFu
ZGxlcgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Ok1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjb29yZGluYXRvclN0YXRlQ2hh
bmdlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29y
ZGluYXRvci5pZGw6IEFkZGVkIG5ldyBFdmVudEhhbmRsZXIgYXR0cmlidXRlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsOiBV
cGRhdGUgZm9yIG5ldyBBUEkgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5o
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmludmFsaWRhdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcik6CisK
IDIwMjEtMDUtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgTWVkaWFTZXNzaW9uLmNhbGxBY3Rpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRleCBjNTU1ZDlk
MzhmMzcxNmU4MWFjYTAzYWM5NzAzYmNhZWIxYzc5MTAxLi41Yzk0NzAxNjg0N2ZjMDU0YTA5M2Ni
MGZmNzY1OTFmZjQ2MzVhYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTEyOCwzNyArMTI4LDI5IEBAIHN0YXRp
YyBPcHRpb25hbDxzdGQ6OnBhaXI8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSwgUGxhdGZvCiAKIFJlZjxNZWRpYVNlc3Npb24+IE1lZGlhU2Vzc2lvbjo6Y3Jl
YXRlKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3
IE1lZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBzZXNzaW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAogTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24o
TmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiAgICAgOiBBY3RpdmVET01PYmplY3QobmF2aWdhdG9yLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50
UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3Vt
ZW50OjpzaGFyZWRMb2dnZXIoKSk7CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50
aWZpZXIoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogICAgIGF1
dG8qIGZyYW1lID0gbmF2aWdhdG9yLmZyYW1lKCk7Ci0gICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFt
ZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIGNvb3JkaW5h
dG9yUHJpdmF0ZSA9IHBhZ2UtPm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkpCi0gICAgICAgICAg
ICBjcmVhdGVDb29yZGluYXRvcigqY29vcmRpbmF0b3JQcml2YXRlKTsKLSAgICB9CisgICAgaWYg
KGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKQorICAgICAgICBj
cmVhdGVDb29yZGluYXRvcihwYWdlLT5tZWRpYVNlc3Npb25Db29yZGluYXRvcigpKTsKICNlbmRp
ZgogCi0gICAgc3VzcGVuZElmTmVlZGVkKCk7Ci0KICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogfQogCiBNZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24oKSA9IGRlZmF1bHQ7CiAKLWJv
b2wgTWVkaWFTZXNzaW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgpOwotfQotCiB2
b2lkIE1lZGlhU2Vzc2lvbjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKIHsK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKQEAgLTIwMCwxOSArMTkyLDE1
IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRSZWFkeVN0YXRlKE1lZGlhU2Vzc2lvblJlYWR5U3Rh
dGUgc3RhdGUpCiAgICAgbm90aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogfQogCi12b2lkIE1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZT4mJiBjb29yZGluYXRvclByaXZhdGUpCit2b2lkIE1lZGlhU2Vzc2lvbjo6Y3JlYXRl
Q29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKiBjb29yZGluYXRvclBy
aXZhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGlmIChtX2Nv
b3JkaW5hdG9yKQogICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNlc3Npb24obnVsbHB0
cik7CiAKLSAgICBtX2Nvb3JkaW5hdG9yID0gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0
ZShXVEZNb3ZlKGNvb3JkaW5hdG9yUHJpdmF0ZSkpOwotCi0gICAgaWYgKG1fY29vcmRpbmF0b3Ip
Ci0gICAgICAgIG1fY29vcmRpbmF0b3ItPnNldE1lZGlhU2Vzc2lvbih0aGlzKTsKLQotICAgIG1f
YXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29vcmRpbmF0b3JjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CisgICAgbV9jb29yZGluYXRvciA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpjcmVhdGUoKnRoaXMsIGNvb3JkaW5hdG9yUHJpdmF0ZSk7CisgICAgbV9jb29yZGluYXRv
ci0+c2V0TWVkaWFTZXNzaW9uKHRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNTczMTg5NTAw
YzM5NDczZjMzM2RhMGQ2ZmQ0NThhOWRjYjllOGM5Yi4uNDgxZmI2ODZmZjkzNzIwZDVlNGI3MTY1
OTMzNzdmOThkNzBlNTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTI4LDggKzI4LDcgQEAKICNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIk1lZGlhUG9zaXRpb25TdGF0ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkFjdGlvbkhhbmRs
ZXIuaCIKQEAgLTUyLDcgKzUxLDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2
YXRlOwogY2xhc3MgTmF2aWdhdG9yOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERPTVByb21p
c2VEZWZlcnJlZDsKIAotY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEgeworY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIENhbk1ha2VXZWFrUHRy
PE1lZGlhU2Vzc2lvbj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTmF2aWdhdG9yJik7CkBAIC04MCw4
ICs3OSw3IEBAIHB1YmxpYzoKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH07CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRl
KE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpOwogCi0gICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iq
IGNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRvci5nZXQoKTsgfQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3ImIGNvb3Jk
aW5hdG9yKCkgY29uc3QgeyByZXR1cm4gKm1fY29vcmRpbmF0b3I7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT05fUExBWUxJU1QpCkBAIC05OCwxMCArOTYsNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuICptX2xvZ2dlci5n
ZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICBjbGFzcyBPYnNlcnZlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4gewogICAgIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CkBAIC0xMzAsMTUgKzEyNCwxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5QWN0aW9uSGFuZGxlck9ic2VydmVycygpOwogICAgIHZvaWQgbm90
aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFTZXNzaW9uRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIGNyZWF0ZUNv
b3JkaW5hdG9yKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSopOwogCiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJNZWRpYVNlc3Npb24iOyB9Ci0gICAgYm9vbCB2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCkBAIC0xNTUsNyArMTQ0
LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAKICAgICBX
ZWFrSGFzaFNldDxPYnNlcnZlcj4gbV9vYnNlcnZlcnM7Ci0gICAgVW5pcXVlUmVmPE1haW5UaHJl
YWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAKICNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTl9DT09SRElOQVRPUikKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZSB7IE1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVub3RoaW5nIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbApp
bmRleCBiYWEwODA4NDcwYjRiODYyN2VhZGMzODIzYjVhMGZiMWI1Y2JhODdjLi41NDk0NjE2OTM2
ZDA0YjU3NWMzN2Q4OTAxMTQ4NTQ3NDJiNDQ5ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKQEAgLTI4LDggKzI4LDcg
QEAKICAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAogICAgIEV4cG9zZWQ9V2luZG93LAog
ICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uIDogRXZlbnRUYXJnZXQKK10gaW50ZXJmYWNlIE1l
ZGlhU2Vzc2lvbgogewogICAgIGF0dHJpYnV0ZSBNZWRpYU1ldGFkYXRhPyBtZXRhZGF0YTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDljNjAyOGQxNDBkNjgzYmIxMjc1NTBm
ZDE0NDJkYWJjNDQxZGY1YmEuLjkwNTU0YWM3NWIyNjhmODhhNTE0N2FhZTQyOGU4MTIyNzliNjVl
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUu
aCIKQEAgLTQ3LDI0ICs0OCw1MSBAQCBzdGF0aWMgY29uc3Qgdm9pZCogbmV4dENvb3JkaW5hdG9y
TG9nSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KCsrbG9nSWRlbnRpZmllcik7CiB9CiAKLVJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK1JlZjxNZWRpYVNlc3Npb25Db29yZGluYXRv
cj4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShNZWRpYVNlc3Npb24mIHNlc3Npb24s
IFJlZlB0cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5h
dG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
KFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGF1dG8gY29vcmRpbmF0b3IgPSBh
ZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKHNlc3Npb24sIFdURk1vdmUocHJp
dmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGNvb3JkaW5hdG9yLT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gY29vcmRpbmF0b3I7CiB9CiAKLU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpN
ZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRl
PiYmIHByaXZhdGVDb29yZGluYXRvcikKLSAgICA6IG1fcHJpdmF0ZUNvb3JkaW5hdG9yKFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkKK01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNl
c3Npb25Db29yZGluYXRvcihNZWRpYVNlc3Npb24mIHNlc3Npb24sIFJlZlB0cjxNZWRpYVNlc3Np
b25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQorICAgIDogQWN0aXZl
RE9NT2JqZWN0KHNlc3Npb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9sb2dn
ZXIobWFrZVJlZihEb2N1bWVudDo6c2hhcmVkTG9nZ2VyKCkpKQogICAgICwgbV9sb2dJZGVudGlm
aWVyKG5leHRDb29yZGluYXRvckxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNl
dExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCksIG1fbG9nSWRlbnRpZmllcik7Ci0gICAgbV9wcml2
YXRlQ29vcmRpbmF0b3ItPnNldENsaWVudChtYWtlV2Vha1B0cih0aGlzKSk7CisgICAgaWYgKHBy
aXZhdGVDb29yZGluYXRvcikgeworICAgICAgICBtX3ByaXZhdGVDb29yZGluYXRvciA9IFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKTsKKyAgICAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNl
dExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCksIG1fbG9nSWRlbnRpZmllcik7CisgICAgICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgICAg
ICBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpX
YWl0aW5nKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNldE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworICAgIGlmIChtX3ByaXZhdGVDb29yZGluYXRvcikKKyAgICAgICAgbV9wcml2YXRl
Q29vcmRpbmF0b3ItPmxlYXZlKCk7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3IgPSBXVEZNb3Zl
KHByaXZhdGVDb29yZGluYXRvcik7CisgICAgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6V2FpdGluZyk7CiB9CiAKIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjp+TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkKK3sKKyAgICBt
X2hhc0Nvb3JkaW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5jb29yZGluYXRvcnN0YXRlY2hhbmdlRXZlbnQpOworfQorCitib29s
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QKK3sKKyAgICAvLyBOZWVkIHRvIGtlZXAgdGhlIEpTIHdyYXBwZXIgYWxpdmUgYXMgbG9uZyBh
cyBpdCBtYXkgc3RpbGwgZmlyZSBldmVudHMgaW4gdGhlIGZ1dHVyZS4KKyAgICByZXR1cm4gbV9o
YXNDb29yZGluYXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVuZXI7Cit9CisKIHZvaWQgTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwpAQCAtNzUsNiArMTAz
LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgbWFrZVN0cmluZygiVW5hYmxlIHRvIGpvaW4gd2hlbiBzdGF0ZSBp
cyAiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhtX3N0YXRlKSkgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgQVNTRVJUKG1fcHJpdmF0ZUNvb3JkaW5hdG9yLCAiV2UgbXVzdCBi
ZSBpbiBXYWl0aW5nIHN0YXRlIGlmIG5vIHByaXZhdGUgY29vcmRpbmF0b3IgaXMgc2V0Iik7CiAK
ICAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+am9pbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIoKnRoaXMpLCBpZGVudGlmaWVyLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKE9wdGlv
bmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoIXByb3Rl
Y3RlZFRoaXMtPm1fc2Vzc2lvbikgewpAQCAtODgsNyArMTE3LDggQEAgdm9pZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6am9pbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+
bV9zdGF0ZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkpvaW5lZDsKKyAgICAgICAg
cHJvdGVjdGVkVGhpcy0+Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JTdGF0ZTo6Sm9pbmVkKTsKKwogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICB9
KTsKIH0KQEAgLTEwNyw3ICsxMzcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6bGVhdmUoKQogdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y2xvc2Uo
KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9zdGF0ZSA9IE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkNsb3NlZDsKKyAgICBjb29yZGluYXRvclN0YXRlQ2hh
bmdlZChNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpDbG9zZWQpOwogICAgIGlmICghbV9w
cml2YXRlQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzg3LDYgKzQxNyw4IEBA
IHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlID0g
c3RhdGU7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX3N0YXRlKTsKKyAgICBpZiAo
bV9oYXNDb29yZGluYXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVuZXIpCisgICAgICAgIG1fYXN5
bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29v
cmRpbmF0b3JzdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogYm9vbCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y3Vy
cmVudFBvc2l0aW9uQXBwcm94aW1hdGVseUVxdWFsVG8oZG91YmxlIHRpbWUpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25D
b29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuaAppbmRleCBiZTUyMDAwMmE1YmIxYmY3ZWM2OWYwZGIzZDZlMjY1
NmM3YmEzMTE3Li5jM2E1ZjY4N2ZjMDEzNjM0YmQ3ZDgwNzk3MzhhNDBmMjRmYTQ4ODI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25D
b29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUu
aCIKQEAgLTQxLDEwICs0NCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRE9NUHJvbWlz
ZURlZmVycmVkOwogY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IKICAgICA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPgogICAgICwgcHVibGljIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yQ2xpZW50Ci0gICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uOjpPYnNlcnZl
ciB7CisgICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uOjpPYnNlcnZlcgorICAgICwgcHVibGljIEFj
dGl2ZURPTU9iamVjdAorICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjcmVhdGUoUmVmPE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gY3JlYXRlKE1lZGlhU2Vzc2lvbiYsIFJlZlB0cjxN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5N
ZWRpYVNlc3Npb25Db29yZGluYXRvcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
aXZhdGU+JiYpOwogCiAgICAgdm9pZCBqb2luKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBsZWF2ZSgpOwpAQCAtNjIsOSArNjksMjIgQEAgcHVibGlj
OgogCiAgICAgdXNpbmcgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQ6OndlYWtQdHJGYWN0
b3J5OwogICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBNZWRpYVNlc3Npb25Db29yZGluYXRvckNs
aWVudDo6V2Vha1ZhbHVlVHlwZTsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNp
bmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7Cisg
ICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uJiwgUmVmUHRyPE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVNlc3Npb25Db29y
ZGluYXRvckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAg
dm9pZCBldmVudExpc3RlbmVyc0RpZENoYW5nZSgpIGZpbmFsOworCisgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJNZWRpYVNlc3Npb25Db29yZGluYXRvciI7IH0KKyAgICBib29sIHZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbjo6
T2JzZXJ2ZXIKICAgICB2b2lkIG1ldGFkYXRhQ2hhbmdlZChjb25zdCBSZWZQdHI8TWVkaWFNZXRh
ZGF0YT4mKSBmaW5hbDsKQEAgLTg3LDEwICsxMDcsMTIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yIjsgfQogCiAgICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBNZWRp
YVNlc3Npb25Db29yZGluYXRvclN0YXRlIG1fc3RhdGUgeyBNZWRpYVNlc3Npb25Db29yZGluYXRv
clN0YXRlOjpXYWl0aW5nIH07CiAgICAgUmVmUHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJp
dmF0ZT4gbV9wcml2YXRlQ29vcmRpbmF0b3I7Ci0gICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dn
ZXI7CisgICAgY29uc3QgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyOworICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50
UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOworICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3Rh
dGUgbV9zdGF0ZSB7IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkNsb3NlZCB9OworICAg
IGJvb2wgbV9oYXNDb29yZGluYXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVuZXIgeyBmYWxzZSB9
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsCmluZGV4IDIxMTgyNzAzZDFi
MGQ4NzJmMjM3ZGJhYTAzZGRlNTYxY2ZlNmQ1Y2EuLjA4ODFjMDZmZDJjYWMyYWFkZGRjYjNkYTA5
YzRiYzIzMWE0OWU2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwKQEAgLTI0LDE2
ICsyNCwyMCBAQAogICovCiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9u
YWw9TUVESUFfU0VTU0lPTl9DT09SRElOQVRPUiwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLAogICAgIEV4cG9zZWQ9V2luZG93LAogICAgIEV4cG9ydE1hY3Jv
PVdFQkNPUkVfRVhQT1JULAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Igewor
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IgOiBFdmVudFRhcmdldCB7CiAKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gam9pbigpOwog
ICAgIHVuZGVmaW5lZCBsZWF2ZSgpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmNvb3JkaW5hdG9yc3RhdGVjaGFuZ2U7CisgICAgCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZz8gaWRlbnRpZmllcjsKIAogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZWVrVG8odW5y
ZXN0cmljdGVkIGRvdWJsZSB0aW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhp
bi5pZGwKaW5kZXggZmRkZjA1NjAzNGIxMDRlZjJjMThjNDc2OWFmYjFlNzlhMDYzMjJhYS4uMjRi
OWUzMDk3Y2ViY2M3YTRmYjMxYWFhZjhmYTYwNGY1MTIwMWJlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhp
bi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JNaXhpbi5pZGwKQEAgLTI3LDcgKzI3LDYgQEAKICAgICBDb25kaXRpb25h
bD1NRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SLAogICAgIEVuYWJsZWRCeVNldHRpbmc9TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IsCiBdIGludGVyZmFjZSBtaXhpbiBNZWRpYVNlc3Npb25Db29yZGlu
YXRvck1peGluIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I/IGNvb3JkaW5hdG9yOwotICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb29yZGluYXRv
cmNoYW5nZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ig
Y29vcmRpbmF0b3I7CiAgICAgYXR0cmlidXRlIE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgcmVhZHlT
dGF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBlY2RjODg3OWEzOTQ1MTljZGQ1
MTEzNzM5YmMxNTJmMjA3ZTVjMjAzLi43ODMzNjAzMmEzMmFmNjEwZDgyNGY4MmE5MzM2NTMxYzJi
ZDAzMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY29ubmVjdGluZykgXAogICAgIG1hY3JvKGNvbnRl
eHRtZW51KSBcCiAgICAgbWFjcm8oY29udHJvbGxlcmNoYW5nZSkgXAotICAgIG1hY3JvKGNvb3Jk
aW5hdG9yY2hhbmdlKSBcCisgICAgbWFjcm8oY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSkgXAogICAg
IG1hY3JvKGNvcHkpIFwKICAgICBtYWNybyhjdWVjaGFuZ2UpIFwKICAgICBtYWNybyhjdXQpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGJlNzhjYjhlZGM0
NDJjMGZkZmQ0ZjZmODBjYjI4NzZmYTBmOGU0OTQuLmMyNmI5YmU0MmY3YjRhYjExOTExNzBiM2Zm
Y2IwZTMwMmYzOGZhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgpAQCAtMjMsNyArMjMsNyBAQCBNZWRpYURldmljZXMgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CiBNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBCiBNZWRpYVF1ZXJ5
TGlzdAogTWVkaWFSZWNvcmRlciBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KLU1lZGlhU2Vzc2lv
biBjb25kaXRpb25hbD1NRURJQV9TRVNTSU9OCitNZWRpYVNlc3Npb25Db29yZGluYXRvciBjb25k
aXRpb25hbD1NRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SCiBNZWRpYVNvdXJjZSBjb25kaXRpb25h
bD1NRURJQV9TT1VSQ0UKIE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVk
aWFTdHJlYW1UcmFjayBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IDYxZGQ4NjA1OGU3YTFlNzIzMGVkZDY3ODZjZTg0ZTE0MzRmY2NkYmUuLmNkYWU3ZThmZGE1
NzIwM2ZkOTE2OWQ5MGQ0MGRmZTYyM2VlZGJhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzQy
Nyw3ICszNDI3LDcgQEAgdm9pZCBQYWdlOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmIG1lZGkKIAogICAgIGF1dG8qIHdpbmRv
dyA9IG1haW5GcmFtZSgpLndpbmRvdygpOwogICAgIGlmIChhdXRvKiBuYXZpZ2F0b3IgPSB3aW5k
b3cgPyB3aW5kb3ctPm9wdGlvbmFsTmF2aWdhdG9yKCkgOiBudWxscHRyKQotICAgICAgICBOYXZp
Z2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdhdG9yKS5jcmVhdGVDb29yZGlu
YXRvcigqbV9tZWRpYVNlc3Npb25Db29yZGluYXRvcik7CisgICAgICAgIE5hdmlnYXRvck1lZGlh
U2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNvb3JkaW5hdG9yKCkuc2V0TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKCptX21lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKTsKIH0K
IAogdm9pZCBQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKQpAQCAtMzQ0
MSwxMSArMzQ0MSw3IEBAIHZvaWQgUGFnZTo6aW52YWxpZGF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yKCkKICAgICBpZiAoIW5hdmlnYXRvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byog
Y29vcmRpbmF0b3IgPSBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdh
dG9yKS5jb29yZGluYXRvcigpOwotICAgIGlmICghY29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvb3JkaW5hdG9yLT5jbG9zZSgpOworICAgIE5hdmlnYXRvck1lZGlhU2Vzc2lv
bjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNvb3JkaW5hdG9yKCkuY2xvc2UoKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOGNmMDJiMTc5ZWJm
YmRkMzc3YTZhNTQ4ZDBjNmE3YWY2OTE3N2Y5Ni4uN2NkNmIwYWJjMDA2NjQzM2JkNThiNTBmMDFj
OTM0MzFmYTg4Y2RkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjI0
Niw3ICs2MjQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvcihTY3JpcHRFeGVjdXRpb24KICAgICBhdXRvJiBzZXNzaW9u
ID0gTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24oZG9jdW1lbnQtPmRvbVdpbmRv
dygpLT5uYXZpZ2F0b3IoKSk7CiAgICAgYXV0byBtb2NrID0gTW9ja01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShsaXN0ZW5lcikpOwogICAgIG1fbW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yID0gbW9jay5wdHIoKTsKLSAgICBzZXNzaW9uLmNyZWF0ZUNv
b3JkaW5hdG9yKFdURk1vdmUobW9jaykpOworICAgIHNlc3Npb24uY29vcmRpbmF0b3IoKS5zZXRN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUoV1RGTW92ZShtb2NrKSk7CiAKICAgICByZXR1
cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDQ3MmQzMTFmOWFkM2QyZGZlYjZhZmNkYTRkMzkyM2Y0MzI0Y2I0OWQuLmFlZWY3M2M1
OGNkZTMyM2EzMTc3NzExOTliOTBkNjc5ZTYzOWE5OWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0yNyAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vzc2lv
bi5jb29yZGluYXRvciBzaG91bGQgbm90IGJlIG9wdGlvbmFsLCByZWx5aW5nIG9uIGNvb3JkaW5h
dG9yIHJlYWR5U3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6Y3JlYXRlQ29v
cmRpbmF0b3IpOiBDaGFuZ2UgdGVzdCB0byBtYXRjaCBuZXcgQVBJLAorICAgICAgICB1c2luZyBj
b29yZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50IGluc3RlYWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbDoKKwogMjAyMS0wNS0yNyAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbcnVu
LXdlYmtpdC10ZXN0c11bV2luXSBTdHJpcCBQSFAgc3VwcG9ydCBmcm9tIHdlYnNlcnZlcgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tCmluZGV4IDljNjc4YTc2ZDVjMmM3NmNjMzhmZmFhNWQy
ZWVhMDUyZWQ0MWQ2OTkuLjFjOTZhOGY2ZjM1MTUxZDU3YTU0YmQ0ZjE1NGIyOTUyNzA2ZWFjYTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KQEAgLTIxMiwxNCArMjEyLDE0IEBAIHB1
YmxpYzoKICAgICAgICAgfV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CiAKLSAgICAgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJjb29yZGluYXRvcmNoYW5n
ZSJfcyB9KTsKKyAgICAgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJjb29yZGluYXRvcnN0
YXRlY2hhbmdlIl9zIH0pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CiAgICAgICAg
IGlmICghcmVzdWx0KQogICAgICAgICAgICAgTlNMb2coQCItW19jcmVhdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvckZvclRlc3Rpbmc6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQhIik7CiAKLSAg
ICAgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJjb29yZGluYXRvcmNoYW5nZSJf
cyk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoImNvb3JkaW5h
dG9yY2hhbmdlIl9zKSk7CisgICAgICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgi
Y29vcmRpbmF0b3JzdGF0ZWNoYW5nZSJfcyk7CisgICAgICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlz
dGVuZXJXYXNDYWxsZWQoImNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UiX3MpKTsKICAgICB9CiAKICAg
ICBUZXN0V0tXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gX3dlYlZpZXcuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVk
aWEtcmVtb3RlLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21l
ZGlhLXJlbW90ZS5odG1sCmluZGV4IGZkNGQ5OTZhMWJiMWI0ODA5ZmZmYzYyNTJlMGU0NDlhMDQ0
NWViZmIuLjBiNzYyN2E1ZWZhMjlmNTczYzUyNDg3ZmE0MzAwMTVmYzllOTFmNjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0
bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1v
dGUuaHRtbApAQCAtOTYsNyArOTYsNyBAQAogICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAg
ICB9CiAKLSAgICAgICAgZnVuY3Rpb24gcG9zdEV2ZW50KGV2dCkgCisgICAgICAgIGZ1bmN0aW9u
IHBvc3RFdmVudChldnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHBvc3RNZXNzYWdlKGAke2V2
dC50eXBlfSBldmVudGApOwogICAgICAgICB9CkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICAgICAg
ICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCBwb3N0RXZlbnQpOwogICAgICAgICAg
ICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBwb3N0RXZlbnQpOwogICAgICAgICAg
ICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignc2Vla2VkJywgcG9zdEV2ZW50KTsKLSAgICAgICAg
ICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcignY29vcmRpbmF0b3Jj
aGFuZ2UnLCBwb3N0RXZlbnQpOworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5j
b29yZGluYXRvci5hZGRFdmVudExpc3RlbmVyKCdjb29yZGluYXRvcnN0YXRlY2hhbmdlJywgcG9z
dEV2ZW50KTsKICAgICAgICAgfSwgZmFsc2UpOwogCiAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzUw
MTM2NDZmOGZhNTUzYTVhOGQyMGEyNTFlN2I1YzAzZDFlYTAzYi4uZDliNWIxNjdjODg0YTY0MTYx
ODdjYjc0Y2YwNWY3ZWNkNTUyYjE2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI3
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNz
aW9uLmNvb3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRp
bmF0b3IgcmVhZHlTdGF0ZSBjaGFuZ2UgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzI4CisgICAgICAgIHJkYXI6Ly83NzQ2MTMzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
bWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBt
ZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbDogQ2hhbmdlIHRlc3QgdG8g
bWF0Y2ggbmV3IEFQSS4KKwogMjAyMS0wNS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBNZWRpYVNlc3Npb24uY2FsbEFjdGlvbkhhbmRsZXIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRv
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29v
cmRpbmF0b3ItZXhwZWN0ZWQudHh0CmluZGV4IDFlNDc4YmE4YWFhN2IxN2I1OWMxNmE2NDg3NjY1
MDZkYmY2NDNmZDYuLjNjNDlhNWFhOTQ4NTViMjQ0YWZmYmNmMDdjY2Y2ZGQxYWU5MDE2YWQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRv
ci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2Nr
LWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSwxMiBAQAogCi0qKiBUaGVyZSBz
aG91bGQgYmUgbm8gbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yIGluaXRpYWxseS4KLUVYUEVDVEVE
IChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yID09ICd1bmRlZmluZWQnKSBPSwor
KiogVGhlcmUgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSBjbG9zZWQg
aW5pdGlhbGx5LgorRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iu
c3RhdGUgPT0gJ2Nsb3NlZCcpIE9LCiAKLSoqIFRlc3QgdGhhdCBtZWRpYVNlc3Npb24uY29vcmRp
bmF0b3JjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiBpdCBjaGFuZ2VzLgorKiogVGVzdCB0aGF0
IG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5jb29yZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50IGlz
IGZpcmVkIHdoZW4gaXQgY2hhbmdlcy4KIFJVTihpbnRlcm5hbHMucmVnaXN0ZXJNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IoY2hhbmdlSGFuZGxlcikpCi1FVkVOVChjb29yZGluYXRvcmNoYW5n
ZSkKLUVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yICE9ICd1bmRl
ZmluZWQnKSBPSworRVZFTlQoY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBTVEFURSh3YWl0aW5nKQog
Ci0qKiBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSAi
d2FpdGluZyIgaW50aXRpYWxseQorKiogbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRv
ci5zdGF0ZSBzaG91bGQgYmUgIndhaXRpbmciIGluaXRpYWxseQogRVhQRUNURUQgKG5hdmlnYXRv
ci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgPT0gJ3dhaXRpbmcnKSBPSwogCiAqKiBU
ZXN0IHRoYXQgd2hlbiBjb29yZGluYXRvciBtZXRob2RzIGZhaWwgYW5kIHByb21pc2VzIHJlamVj
dCBiZWZvcmUgbWVkaWFTZXNzaW9uLmpvaW4oKSBpcyBjYWxsZWQuCkBAIC03OCw5ICs3Nyw5IEBA
IEVYUEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJycpIE9LCiAKIFJVTihpbnRlcm5hbHMuc2V0TW9j
a01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ29tbWFuZHNTaG91bGRGYWlsKGZhbHNlKSkKIFJVTihw
cm9taXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5qb2luKCkpCitFVkVO
VChjb29yZGluYXRvcnN0YXRlY2hhbmdlIFNUQVRFKGpvaW5lZCkKIFByb21pc2UgcmVzb2x2ZWQg
T0sKIEVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlID09
ICdqb2luZWQnKSBPSwotRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAnY29vcmRpbmF0b3JTdGF0
ZUNoYW5nZWQnKSBPSwogCiAqKiBUZXN0IHRoYXQgd2hlbiBjb29yZGluYXRvciBtZXRob2RzIHN1
Y2NlZWQsIHByb21pc2VzIHJlc29sdmUgYW5kIG1lZGlhU2Vzc2lvbiBhY3Rpb24gaGFuZGxlcnMg
YXJlIGNhbGxlZC4KIFJVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGlu
YXRvci5wbGF5KCkpCkBAIC0xNDksOCArMTQ4LDExIEBAIEVYUEVDVEVEIChuYXZpZ2F0b3IubWVk
aWFTZXNzaW9uLnBsYXliYWNrU3RhdGUgPT0gJ25vbmUnKSBPSwogCiAqKiBMZWF2ZSB0aGUgc2Vz
c2lvbgogUlVOKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IubGVhdmUoKSkKK0VY
UEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJ3BsYXliYWNrU3RhdGVDaGFuZ2VkJykgT0sKK0VYUEVD
VEVEIChsYXRlc3RDaGFuZ2UgPT0gJ3BsYXliYWNrU3RhdGVDaGFuZ2VkJykgT0sKK0VYUEVDVEVE
IChsYXRlc3RDaGFuZ2UgPT0gJ3BsYXliYWNrU3RhdGVDaGFuZ2VkJykgT0sKK0VWRU5UKGNvb3Jk
aW5hdG9yc3RhdGVjaGFuZ2UgU1RBVEUoY2xvc2VkKQogRVhQRUNURUQgKG5hdmlnYXRvci5tZWRp
YVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgPT0gJ2Nsb3NlZCcpIE9LCi1FWFBFQ1RFRCAobGF0
ZXN0Q2hhbmdlID09ICdjb29yZGluYXRvclN0YXRlQ2hhbmdlZCcpIE9LCiAKICoqIFRlc3QgdGhh
dCB3aGVuIGNvb3JkaW5hdG9yIG1ldGhvZHMgZmFpbCBhbmQgcHJvbWlzZXMgcmVqZWN0IGFmdGVy
IG1lZGlhU2Vzc2lvbi5sZWF2ZSgpIGhhcyBiZWVuIGNhbGxlZC4KIFJVTihwcm9taXNlID0gbmF2
aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5wbGF5KCkpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbCBiL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sCmluZGV4IDU4
NWE1ZWE5NDkxMGQwZTVjYTczY2IzZGNlY2JmMjJmYjc5OTA3ZjkuLmQwNjVkYjAyNjJjYjRjMTI4
ODQ0ZmMzYTg5YTE5N2EwYjE1MDViZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlh
L21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sCkBAIC0zMywyOCArMzMsMjYgQEAK
IAogICAgICAgICBsZXQgY2hhbmdlUHJvbWlzZSA9ICgpID0+IHsKICAgICAgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVk
aWFTZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9yY2hhbmdlJywgKGV2ZW50KSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRVZFTlQoJHtldmVudC50eXBl
fSlgKTsKKyAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9y
LmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9yc3RhdGVjaGFuZ2UnLCAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBFVkVOVCgke2V2ZW50LnR5cGV9IFNU
QVRFKCR7bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZX0pYCk7CiAgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
CiAgICAgICAgIGF3YWl0IHdhaXRGb3JEZWJ1Z2dlcigpOwogCiAgICAgICAgIGNvbnNvbGVXcml0
ZSgnJyk7Ci0gICAgICAgIGNvbnNvbGVXcml0ZSgnKiogVGhlcmUgc2hvdWxkIGJlIG5vIG1lZGlh
U2Vzc2lvbi5jb29yZGluYXRvciBpbml0aWFsbHkuJykKKyAgICAgICAgY29uc29sZVdyaXRlKCcq
KiBUaGVyZSBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlIGNsb3NlZCBp
bml0aWFsbHkuJyk7CiAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNz
aW9uLmNvb3JkaW5hdG9yJywgdW5kZWZpbmVkKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZp
Z2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlJywgImNsb3NlZCIpOwogCiAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnJyk7Ci0gICAgICAgIGNvbnNvbGVXcml0ZSgnKiogVGVzdCB0aGF0
IG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvcmNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIGl0IGNo
YW5nZXMuJykKKyAgICAgICAgY29uc29sZVdyaXRlKCcqKiBUZXN0IHRoYXQgbWVkaWFTZXNzaW9u
LmNvb3JkaW5hdG9yLmNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiBp
dCBjaGFuZ2VzLicpOwogCiAgICAgICAgIHJ1bignaW50ZXJuYWxzLnJlZ2lzdGVyTW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yKGNoYW5nZUhhbmRsZXIpJyk7CiAKICAgICAgICAgYXdhaXQgY2hh
bmdlUHJvbWlzZSgpOwotICAgICAgICAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3Iu
bWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yJywgdW5kZWZpbmVkLCAnIT0nKTsKIAogICAgICAgICBb
J3BsYXknLCAncGF1c2UnLCAnc2Vla3RvJ10uZm9yRWFjaChhY3Rpb24gPT4gewogICAgICAgICAg
ICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5zZXRBY3Rpb25IYW5kbGVyKGFjdGlvbiwgYWN0aW9u
RGV0YWlscyA9PiB7CkBAIC0xMjAsNyArMTE4LDcgQEAKIAogICAgICAgICAvLyBCZWZvcmUgam9p
bmluZwogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwotICAgICAgICBjb25zb2xlV3JpdGUoJyoq
IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlICJ3YWl0
aW5nIiBpbnRpdGlhbGx5JykKKyAgICAgICAgY29uc29sZVdyaXRlKCcqKiBuYXZpZ2F0b3IubWVk
aWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSAid2FpdGluZyIgaW5pdGlhbGx5
JykKICAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5h
dG9yLnN0YXRlJywgJ3dhaXRpbmcnKTsKIAogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwpAQCAt
MTU5LDkgKzE1Nyw5IEBACiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CiAgICAgICAgIHJ1bign
aW50ZXJuYWxzLnNldE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvckNvbW1hbmRzU2hvdWxkRmFp
bChmYWxzZSknKTsKICAgICAgICAgcnVuKCdwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lv
bi5jb29yZGluYXRvci5qb2luKCknKTsKKyAgICAgICAgYXdhaXQgY2hhbmdlUHJvbWlzZSgpOwog
ICAgICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKCkgPT4geyB9KS5jYXRj
aCgoKSA9PiB7IH0pOwogICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Np
b24uY29vcmRpbmF0b3Iuc3RhdGUnLCAnam9pbmVkJyk7Ci0gICAgICAgIHRlc3RFeHBlY3RlZCgn
bGF0ZXN0Q2hhbmdlJywgJ2Nvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkJyk7CiAKICAgICAgICAgY29u
c29sZVdyaXRlKCcnKTsKICAgICAgICAgY29uc29sZVdyaXRlKCcqKiBUZXN0IHRoYXQgd2hlbiBj
b29yZGluYXRvciBtZXRob2RzIHN1Y2NlZWQsIHByb21pc2VzIHJlc29sdmUgYW5kIG1lZGlhU2Vz
c2lvbiBhY3Rpb24gaGFuZGxlcnMgYXJlIGNhbGxlZC4nKQpAQCAtMTg5LDggKzE4Nyw5IEBACiAg
ICAgICAgIGNvbnNvbGVXcml0ZSgnPGJyPicpOwogICAgICAgICBjb25zb2xlV3JpdGUoJyoqIExl
YXZlIHRoZSBzZXNzaW9uJykKICAgICAgICAgcnVuKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yLmxlYXZlKCknKTsKKyAgICAgICAgYXdhaXQgY2hhbmdlUHJvbWlzZSgpOwogICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3Rh
dGUnLCAnY2xvc2VkJyk7Ci0gICAgICAgIGF3YWl0IHRlc3RFeHBlY3RlZEV2ZW50dWFsbHkoJ2xh
dGVzdENoYW5nZScsICdjb29yZGluYXRvclN0YXRlQ2hhbmdlZCcsICc9PScsIDEwMCk7CisKICAg
ICAgICAgbGF0ZXN0Q2hhbmdlID0gJyc7CiAKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430006</attachid>
            <date>2021-05-28 05:57:47 -0700</date>
            <delta_ts>2021-05-31 01:16:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226328-20210528225746.patch</filename>
            <type>text/plain</type>
            <size>33929</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIxN2Y4MjJhMTFlYWZl
YmIxMjkzZWRjMjgxMTVlMmEyOWMwNmM4OS4uM2M5YjEzY2VkNGM3MTFmZDgyZmJmYmRjYThjMWNj
NjdmMTY1YjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
c3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29vcmRpbmF0b3Igd2Fz
IGEgcmVhZC1vbmx5IG9wdGlvbmFsIGF0dHJpYnV0ZSBvZiB0aGUgTWVkaWFTZXNzaW9uIGVsZW1l
bnQuCisgICAgICAgIFRlc3RpbmcgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgdG8gYmUgdXNlZCB0byBk
ZXRlcm1pbmUgaWYgYSBNZWRpYVNlc3Npb25Db29yZGluYXRvcgorICAgICAgICB3YXMgbm93IGF2
YWlsYWJsZSBhbmQgZm9yIHRoZSBNZWRpYVNlc3Npb24gdG8gam9pbiBpdC4gVGhpcyBtYWRlIHRo
ZSB1c2Ugb2YgYW4gZXh0ZXJuYWwKKyAgICAgICAgcG9seWZpbGwgZGlmZmljdWx0IGFuZCBlbmZv
cmNpbmcgdGhlIHZhbGlkaXR5IG9mIGFuIHVzZXIgY3JlYXRlZCBjdXN0b20KKyAgICAgICAgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgZHVlIHRvIElETCBzZW1hbnRpY3MgbGltaXRhdGlvbnMgaGFy
ZC4KKyAgICAgICAgV2UgaW5zdGVhZCBhbHdheXMgY3JlYXRlIGEgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3Igd2hpY2ggaW4gaXRzIGRlZmF1bHQgc3RhdGUgaXMgQ2xvc2VkLgorICAgICAgICBPbmNl
IHRoaXMgc3RhdGUgaXMgY2hhbmdlZCB0byBXYWl0aW5nIGFuZCBhbiBldmVudCBpcyBmaXJlIHRo
ZSBNZWRpYVNlc3Npb24gY2FuIG5vdworICAgICAgICBqb2luIGl0LgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKTogTWVkaWFTZXNzaW9uIG5vIGxvbmdlciBuZWVkcyB0
byBmaXJlIGV2ZW50LgorICAgICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBpbmhlcml0
YW5jZSBhbmQgYXN5bmMgZXZlbnQgcXVldWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b246OmNyZWF0ZSk6IERyaXZlLWJ5IGZpeCwgZG9uJ3QgY2FsbCBzdXNwZW5kSWZOZWVkZWQoKSBp
biB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNyZWF0
ZUNvb3JkaW5hdG9yKTogTWFrZSBtZXRob2QgcHJpdmF0ZS4KKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6Y29vcmRpbmF0b3IgY29uc3QpOiBNZWRpYVNlc3Npb25Db29yZGluYXRvciBhbHdheXMgZXhp
c3RzLiBSZXR1cm4gcmVmZXJlbmNlIGluc3RlYWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmlkbDogQW1lbmQgZGVmaW5pdGlvbiwgcmVtb3ZlIEV2ZW50SGFu
ZGxlcgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Ok1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjb29yZGluYXRvclN0YXRlQ2hh
bmdlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29y
ZGluYXRvci5pZGw6IEFkZGVkIG5ldyBFdmVudEhhbmRsZXIgYXR0cmlidXRlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsOiBV
cGRhdGUgZm9yIG5ldyBBUEkgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5o
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmludmFsaWRhdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcik6CisK
IDIwMjEtMDUtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgTWVkaWFTZXNzaW9uLmNhbGxBY3Rpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRleCBjNTU1ZDlk
MzhmMzcxNmU4MWFjYTAzYWM5NzAzYmNhZWIxYzc5MTAxLi41Yzk0NzAxNjg0N2ZjMDU0YTA5M2Ni
MGZmNzY1OTFmZjQ2MzVhYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTEyOCwzNyArMTI4LDI5IEBAIHN0YXRp
YyBPcHRpb25hbDxzdGQ6OnBhaXI8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSwgUGxhdGZvCiAKIFJlZjxNZWRpYVNlc3Npb24+IE1lZGlhU2Vzc2lvbjo6Y3Jl
YXRlKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3
IE1lZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBzZXNzaW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAogTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24o
TmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiAgICAgOiBBY3RpdmVET01PYmplY3QobmF2aWdhdG9yLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fbmF2aWdhdG9yKG1ha2VXZWFrUHRyKG5h
dmlnYXRvcikpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50
UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKERvY3Vt
ZW50OjpzaGFyZWRMb2dnZXIoKSk7CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50
aWZpZXIoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogICAgIGF1
dG8qIGZyYW1lID0gbmF2aWdhdG9yLmZyYW1lKCk7Ci0gICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFt
ZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIGNvb3JkaW5h
dG9yUHJpdmF0ZSA9IHBhZ2UtPm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkpCi0gICAgICAgICAg
ICBjcmVhdGVDb29yZGluYXRvcigqY29vcmRpbmF0b3JQcml2YXRlKTsKLSAgICB9CisgICAgaWYg
KGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKQorICAgICAgICBj
cmVhdGVDb29yZGluYXRvcihwYWdlLT5tZWRpYVNlc3Npb25Db29yZGluYXRvcigpKTsKICNlbmRp
ZgogCi0gICAgc3VzcGVuZElmTmVlZGVkKCk7Ci0KICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogfQogCiBNZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24oKSA9IGRlZmF1bHQ7CiAKLWJv
b2wgTWVkaWFTZXNzaW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgpOwotfQotCiB2
b2lkIE1lZGlhU2Vzc2lvbjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKIHsK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKQEAgLTIwMCwxOSArMTkyLDE1
IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRSZWFkeVN0YXRlKE1lZGlhU2Vzc2lvblJlYWR5U3Rh
dGUgc3RhdGUpCiAgICAgbm90aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogfQogCi12b2lkIE1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZT4mJiBjb29yZGluYXRvclByaXZhdGUpCit2b2lkIE1lZGlhU2Vzc2lvbjo6Y3JlYXRl
Q29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKiBjb29yZGluYXRvclBy
aXZhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGlmIChtX2Nv
b3JkaW5hdG9yKQogICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNlc3Npb24obnVsbHB0
cik7CiAKLSAgICBtX2Nvb3JkaW5hdG9yID0gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0
ZShXVEZNb3ZlKGNvb3JkaW5hdG9yUHJpdmF0ZSkpOwotCi0gICAgaWYgKG1fY29vcmRpbmF0b3Ip
Ci0gICAgICAgIG1fY29vcmRpbmF0b3ItPnNldE1lZGlhU2Vzc2lvbih0aGlzKTsKLQotICAgIG1f
YXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29vcmRpbmF0b3JjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CisgICAgbV9jb29yZGluYXRvciA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpjcmVhdGUoKnRoaXMsIGNvb3JkaW5hdG9yUHJpdmF0ZSk7CisgICAgbV9jb29yZGluYXRv
ci0+c2V0TWVkaWFTZXNzaW9uKHRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNTczMTg5NTAw
YzM5NDczZjMzM2RhMGQ2ZmQ0NThhOWRjYjllOGM5Yi4uNDgxZmI2ODZmZjkzNzIwZDVlNGI3MTY1
OTMzNzdmOThkNzBlNTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTI4LDggKzI4LDcgQEAKICNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIk1lZGlhUG9zaXRpb25TdGF0ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkFjdGlvbkhhbmRs
ZXIuaCIKQEAgLTUyLDcgKzUxLDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2
YXRlOwogY2xhc3MgTmF2aWdhdG9yOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERPTVByb21p
c2VEZWZlcnJlZDsKIAotY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEgeworY2xhc3MgTWVkaWFTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIENhbk1ha2VXZWFrUHRy
PE1lZGlhU2Vzc2lvbj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTmF2aWdhdG9yJik7CkBAIC04MCw4
ICs3OSw3IEBAIHB1YmxpYzoKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH07CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRl
KE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpOwogCi0gICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iq
IGNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRvci5nZXQoKTsgfQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3ImIGNvb3Jk
aW5hdG9yKCkgY29uc3QgeyByZXR1cm4gKm1fY29vcmRpbmF0b3I7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT05fUExBWUxJU1QpCkBAIC05OCwxMCArOTYsNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuICptX2xvZ2dlci5n
ZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICBjbGFzcyBPYnNlcnZlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4gewogICAgIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CkBAIC0xMzAsMTUgKzEyNCwxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5QWN0aW9uSGFuZGxlck9ic2VydmVycygpOwogICAgIHZvaWQgbm90
aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpOwogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFTZXNzaW9uRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIGNyZWF0ZUNv
b3JkaW5hdG9yKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSopOwogCiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJNZWRpYVNlc3Npb24iOyB9Ci0gICAgYm9vbCB2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCkBAIC0xNTUsNyArMTQ0
LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAKICAgICBX
ZWFrSGFzaFNldDxPYnNlcnZlcj4gbV9vYnNlcnZlcnM7Ci0gICAgVW5pcXVlUmVmPE1haW5UaHJl
YWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAKICNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTl9DT09SRElOQVRPUikKICAgICBNZWRpYVNlc3Npb25SZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZSB7IE1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVub3RoaW5nIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbApp
bmRleCBiYWEwODA4NDcwYjRiODYyN2VhZGMzODIzYjVhMGZiMWI1Y2JhODdjLi41NDk0NjE2OTM2
ZDA0YjU3NWMzN2Q4OTAxMTQ4NTQ3NDJiNDQ5ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKQEAgLTI4LDggKzI4LDcg
QEAKICAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAogICAgIEV4cG9zZWQ9V2luZG93LAog
ICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uIDogRXZlbnRUYXJnZXQKK10gaW50ZXJmYWNlIE1l
ZGlhU2Vzc2lvbgogewogICAgIGF0dHJpYnV0ZSBNZWRpYU1ldGFkYXRhPyBtZXRhZGF0YTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDljNjAyOGQxNDBkNjgzYmIxMjc1NTBm
ZDE0NDJkYWJjNDQxZGY1YmEuLjkwNTU0YWM3NWIyNjhmODhhNTE0N2FhZTQyOGU4MTIyNzliNjVl
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUu
aCIKQEAgLTQ3LDI0ICs0OCw1MSBAQCBzdGF0aWMgY29uc3Qgdm9pZCogbmV4dENvb3JkaW5hdG9y
TG9nSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KCsrbG9nSWRlbnRpZmllcik7CiB9CiAKLVJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK1JlZjxNZWRpYVNlc3Npb25Db29yZGluYXRv
cj4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShNZWRpYVNlc3Npb24mIHNlc3Npb24s
IFJlZlB0cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5h
dG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
KFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGF1dG8gY29vcmRpbmF0b3IgPSBh
ZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKHNlc3Npb24sIFdURk1vdmUocHJp
dmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGNvb3JkaW5hdG9yLT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gY29vcmRpbmF0b3I7CiB9CiAKLU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpN
ZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRl
PiYmIHByaXZhdGVDb29yZGluYXRvcikKLSAgICA6IG1fcHJpdmF0ZUNvb3JkaW5hdG9yKFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkKK01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNl
c3Npb25Db29yZGluYXRvcihNZWRpYVNlc3Npb24mIHNlc3Npb24sIFJlZlB0cjxNZWRpYVNlc3Np
b25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQorICAgIDogQWN0aXZl
RE9NT2JqZWN0KHNlc3Npb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9sb2dn
ZXIobWFrZVJlZihEb2N1bWVudDo6c2hhcmVkTG9nZ2VyKCkpKQogICAgICwgbV9sb2dJZGVudGlm
aWVyKG5leHRDb29yZGluYXRvckxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNl
dExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCksIG1fbG9nSWRlbnRpZmllcik7Ci0gICAgbV9wcml2
YXRlQ29vcmRpbmF0b3ItPnNldENsaWVudChtYWtlV2Vha1B0cih0aGlzKSk7CisgICAgaWYgKHBy
aXZhdGVDb29yZGluYXRvcikgeworICAgICAgICBtX3ByaXZhdGVDb29yZGluYXRvciA9IFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKTsKKyAgICAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNl
dExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCksIG1fbG9nSWRlbnRpZmllcik7CisgICAgICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgICAg
ICBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpX
YWl0aW5nKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNldE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworICAgIGlmIChtX3ByaXZhdGVDb29yZGluYXRvcikKKyAgICAgICAgbV9wcml2YXRl
Q29vcmRpbmF0b3ItPmxlYXZlKCk7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3IgPSBXVEZNb3Zl
KHByaXZhdGVDb29yZGluYXRvcik7CisgICAgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6V2FpdGluZyk7CiB9CiAKIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjp+TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkKK3sKKyAgICBt
X2hhc0Nvb3JkaW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5jb29yZGluYXRvcnN0YXRlY2hhbmdlRXZlbnQpOworfQorCitib29s
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QKK3sKKyAgICAvLyBOZWVkIHRvIGtlZXAgdGhlIEpTIHdyYXBwZXIgYWxpdmUgYXMgbG9uZyBh
cyBpdCBtYXkgc3RpbGwgZmlyZSBldmVudHMgaW4gdGhlIGZ1dHVyZS4KKyAgICByZXR1cm4gbV9o
YXNDb29yZGluYXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVuZXI7Cit9CisKIHZvaWQgTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwpAQCAtNzUsNiArMTAz
LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgbWFrZVN0cmluZygiVW5hYmxlIHRvIGpvaW4gd2hlbiBzdGF0ZSBp
cyAiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhtX3N0YXRlKSkgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgQVNTRVJUKG1fcHJpdmF0ZUNvb3JkaW5hdG9yLCAiV2UgbXVzdCBi
ZSBpbiBXYWl0aW5nIHN0YXRlIGlmIG5vIHByaXZhdGUgY29vcmRpbmF0b3IgaXMgc2V0Iik7CiAK
ICAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+am9pbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIoKnRoaXMpLCBpZGVudGlmaWVyLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKE9wdGlv
bmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoIXByb3Rl
Y3RlZFRoaXMtPm1fc2Vzc2lvbikgewpAQCAtODgsNyArMTE3LDggQEAgdm9pZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6am9pbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+
bV9zdGF0ZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkpvaW5lZDsKKyAgICAgICAg
cHJvdGVjdGVkVGhpcy0+Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JTdGF0ZTo6Sm9pbmVkKTsKKwogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICB9
KTsKIH0KQEAgLTEwNyw3ICsxMzcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6bGVhdmUoKQogdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y2xvc2Uo
KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9zdGF0ZSA9IE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkNsb3NlZDsKKyAgICBjb29yZGluYXRvclN0YXRlQ2hh
bmdlZChNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpDbG9zZWQpOwogICAgIGlmICghbV9w
cml2YXRlQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzg3LDYgKzQxNyw4IEBA
IHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlID0g
c3RhdGU7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX3N0YXRlKTsKKyAgICBpZiAo
bV9oYXNDb29yZGluYXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVuZXIpCisgICAgICAgIG1fYXN5
bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29v
cmRpbmF0b3JzdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogYm9vbCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y3Vy
cmVudFBvc2l0aW9uQXBwcm94aW1hdGVseUVxdWFsVG8oZG91YmxlIHRpbWUpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25D
b29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuaAppbmRleCBiZTUyMDAwMmE1YmIxYmY3ZWM2OWYwZGIzZDZlMjY1
NmM3YmEzMTE3Li5jM2E1ZjY4N2ZjMDEzNjM0YmQ3ZDgwNzk3MzhhNDBmMjRmYTQ4ODI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25D
b29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUu
aCIKQEAgLTQxLDEwICs0NCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRE9NUHJvbWlz
ZURlZmVycmVkOwogY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IKICAgICA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPgogICAgICwgcHVibGljIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yQ2xpZW50Ci0gICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uOjpPYnNlcnZl
ciB7CisgICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uOjpPYnNlcnZlcgorICAgICwgcHVibGljIEFj
dGl2ZURPTU9iamVjdAorICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjcmVhdGUoUmVmPE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gY3JlYXRlKE1lZGlhU2Vzc2lvbiYsIFJlZlB0cjxN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5N
ZWRpYVNlc3Npb25Db29yZGluYXRvcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
aXZhdGU+JiYpOwogCiAgICAgdm9pZCBqb2luKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBsZWF2ZSgpOwpAQCAtNjIsOSArNjksMjIgQEAgcHVibGlj
OgogCiAgICAgdXNpbmcgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQ6OndlYWtQdHJGYWN0
b3J5OwogICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBNZWRpYVNlc3Npb25Db29yZGluYXRvckNs
aWVudDo6V2Vha1ZhbHVlVHlwZTsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNp
bmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7Cisg
ICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uJiwgUmVmUHRyPE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVNlc3Npb25Db29y
ZGluYXRvckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAg
dm9pZCBldmVudExpc3RlbmVyc0RpZENoYW5nZSgpIGZpbmFsOworCisgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJNZWRpYVNlc3Npb25Db29yZGluYXRvciI7IH0KKyAgICBib29sIHZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbjo6
T2JzZXJ2ZXIKICAgICB2b2lkIG1ldGFkYXRhQ2hhbmdlZChjb25zdCBSZWZQdHI8TWVkaWFNZXRh
ZGF0YT4mKSBmaW5hbDsKQEAgLTg3LDEwICsxMDcsMTIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yIjsgfQogCiAgICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBNZWRp
YVNlc3Npb25Db29yZGluYXRvclN0YXRlIG1fc3RhdGUgeyBNZWRpYVNlc3Npb25Db29yZGluYXRv
clN0YXRlOjpXYWl0aW5nIH07CiAgICAgUmVmUHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJp
dmF0ZT4gbV9wcml2YXRlQ29vcmRpbmF0b3I7Ci0gICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dn
ZXI7CisgICAgY29uc3QgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyOworICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50
UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOworICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3Rh
dGUgbV9zdGF0ZSB7IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkNsb3NlZCB9OworICAg
IGJvb2wgbV9oYXNDb29yZGluYXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVuZXIgeyBmYWxzZSB9
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsCmluZGV4IDIxMTgyNzAzZDFi
MGQ4NzJmMjM3ZGJhYTAzZGRlNTYxY2ZlNmQ1Y2EuLjA4ODFjMDZmZDJjYWMyYWFkZGRjYjNkYTA5
YzRiYzIzMWE0OWU2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwKQEAgLTI0LDE2
ICsyNCwyMCBAQAogICovCiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9u
YWw9TUVESUFfU0VTU0lPTl9DT09SRElOQVRPUiwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLAogICAgIEV4cG9zZWQ9V2luZG93LAogICAgIEV4cG9ydE1hY3Jv
PVdFQkNPUkVfRVhQT1JULAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Igewor
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IgOiBFdmVudFRhcmdldCB7CiAKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gam9pbigpOwog
ICAgIHVuZGVmaW5lZCBsZWF2ZSgpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmNvb3JkaW5hdG9yc3RhdGVjaGFuZ2U7CisgICAgCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZz8gaWRlbnRpZmllcjsKIAogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZWVrVG8odW5y
ZXN0cmljdGVkIGRvdWJsZSB0aW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhp
bi5pZGwKaW5kZXggZmRkZjA1NjAzNGIxMDRlZjJjMThjNDc2OWFmYjFlNzlhMDYzMjJhYS4uMjRi
OWUzMDk3Y2ViY2M3YTRmYjMxYWFhZjhmYTYwNGY1MTIwMWJlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhp
bi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JNaXhpbi5pZGwKQEAgLTI3LDcgKzI3LDYgQEAKICAgICBDb25kaXRpb25h
bD1NRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SLAogICAgIEVuYWJsZWRCeVNldHRpbmc9TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IsCiBdIGludGVyZmFjZSBtaXhpbiBNZWRpYVNlc3Npb25Db29yZGlu
YXRvck1peGluIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I/IGNvb3JkaW5hdG9yOwotICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb29yZGluYXRv
cmNoYW5nZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ig
Y29vcmRpbmF0b3I7CiAgICAgYXR0cmlidXRlIE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgcmVhZHlT
dGF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBlY2RjODg3OWEzOTQ1MTljZGQ1
MTEzNzM5YmMxNTJmMjA3ZTVjMjAzLi43ODMzNjAzMmEzMmFmNjEwZDgyNGY4MmE5MzM2NTMxYzJi
ZDAzMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY29ubmVjdGluZykgXAogICAgIG1hY3JvKGNvbnRl
eHRtZW51KSBcCiAgICAgbWFjcm8oY29udHJvbGxlcmNoYW5nZSkgXAotICAgIG1hY3JvKGNvb3Jk
aW5hdG9yY2hhbmdlKSBcCisgICAgbWFjcm8oY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSkgXAogICAg
IG1hY3JvKGNvcHkpIFwKICAgICBtYWNybyhjdWVjaGFuZ2UpIFwKICAgICBtYWNybyhjdXQpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGJlNzhjYjhlZGM0
NDJjMGZkZmQ0ZjZmODBjYjI4NzZmYTBmOGU0OTQuLmMyNmI5YmU0MmY3YjRhYjExOTExNzBiM2Zm
Y2IwZTMwMmYzOGZhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgpAQCAtMjMsNyArMjMsNyBAQCBNZWRpYURldmljZXMgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CiBNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBCiBNZWRpYVF1ZXJ5
TGlzdAogTWVkaWFSZWNvcmRlciBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KLU1lZGlhU2Vzc2lv
biBjb25kaXRpb25hbD1NRURJQV9TRVNTSU9OCitNZWRpYVNlc3Npb25Db29yZGluYXRvciBjb25k
aXRpb25hbD1NRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SCiBNZWRpYVNvdXJjZSBjb25kaXRpb25h
bD1NRURJQV9TT1VSQ0UKIE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVk
aWFTdHJlYW1UcmFjayBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IDYxZGQ4NjA1OGU3YTFlNzIzMGVkZDY3ODZjZTg0ZTE0MzRmY2NkYmUuLmNkYWU3ZThmZGE1
NzIwM2ZkOTE2OWQ5MGQ0MGRmZTYyM2VlZGJhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzQy
Nyw3ICszNDI3LDcgQEAgdm9pZCBQYWdlOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmIG1lZGkKIAogICAgIGF1dG8qIHdpbmRv
dyA9IG1haW5GcmFtZSgpLndpbmRvdygpOwogICAgIGlmIChhdXRvKiBuYXZpZ2F0b3IgPSB3aW5k
b3cgPyB3aW5kb3ctPm9wdGlvbmFsTmF2aWdhdG9yKCkgOiBudWxscHRyKQotICAgICAgICBOYXZp
Z2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdhdG9yKS5jcmVhdGVDb29yZGlu
YXRvcigqbV9tZWRpYVNlc3Npb25Db29yZGluYXRvcik7CisgICAgICAgIE5hdmlnYXRvck1lZGlh
U2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNvb3JkaW5hdG9yKCkuc2V0TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKCptX21lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKTsKIH0K
IAogdm9pZCBQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKQpAQCAtMzQ0
MSwxMSArMzQ0MSw3IEBAIHZvaWQgUGFnZTo6aW52YWxpZGF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yKCkKICAgICBpZiAoIW5hdmlnYXRvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byog
Y29vcmRpbmF0b3IgPSBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdh
dG9yKS5jb29yZGluYXRvcigpOwotICAgIGlmICghY29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvb3JkaW5hdG9yLT5jbG9zZSgpOworICAgIE5hdmlnYXRvck1lZGlhU2Vzc2lv
bjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNvb3JkaW5hdG9yKCkuY2xvc2UoKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOGNmMDJiMTc5ZWJm
YmRkMzc3YTZhNTQ4ZDBjNmE3YWY2OTE3N2Y5Ni4uN2NkNmIwYWJjMDA2NjQzM2JkNThiNTBmMDFj
OTM0MzFmYTg4Y2RkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjI0
Niw3ICs2MjQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvcihTY3JpcHRFeGVjdXRpb24KICAgICBhdXRvJiBzZXNzaW9u
ID0gTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24oZG9jdW1lbnQtPmRvbVdpbmRv
dygpLT5uYXZpZ2F0b3IoKSk7CiAgICAgYXV0byBtb2NrID0gTW9ja01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShsaXN0ZW5lcikpOwogICAgIG1fbW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yID0gbW9jay5wdHIoKTsKLSAgICBzZXNzaW9uLmNyZWF0ZUNv
b3JkaW5hdG9yKFdURk1vdmUobW9jaykpOworICAgIHNlc3Npb24uY29vcmRpbmF0b3IoKS5zZXRN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUoV1RGTW92ZShtb2NrKSk7CiAKICAgICByZXR1
cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc3NWY3MjBjYmM1Y2U2YjMxYTg2MzQ2NGFjNjFmZWU0Zjc2MmMzOTEuLjY0YmFmYTJk
OTdhZTNjYzJmMjg5MDMxYmQyOTlkZThkNGM2OWQyZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0yNyAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vzc2lv
bi5jb29yZGluYXRvciBzaG91bGQgbm90IGJlIG9wdGlvbmFsLCByZWx5aW5nIG9uIGNvb3JkaW5h
dG9yIHJlYWR5U3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6Y3JlYXRlQ29v
cmRpbmF0b3IpOiBDaGFuZ2UgdGVzdCB0byBtYXRjaCBuZXcgQVBJLAorICAgICAgICB1c2luZyBj
b29yZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50IGluc3RlYWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbDoKKwogMjAyMS0wNS0yNyAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIyNzQ0NjApOiBbbWFjT1NdIFRlc3RXZWJLaXRBUEkuRnVsbHNjcmVlbi5XS1ZpZXdEZWxlZ2F0
ZSBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KaW5kZXggOWM2Nzhh
NzZkNWMyYzc2Y2MzOGZmYWE1ZDJlZWEwNTJlZDQxZDY5OS4uMWM5NmE4ZjZmMzUxNTFkNTdhNTRi
ZDRmMTU0YjI5NTI3MDZlYWNhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbQpAQCAt
MjEyLDE0ICsyMTIsMTQgQEAgcHVibGljOgogICAgICAgICB9XTsKICAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIAotICAgICAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2Vz
KHsgImNvb3JkaW5hdG9yY2hhbmdlIl9zIH0pOworICAgICAgICBsaXN0ZW5Gb3JFdmVudE1lc3Nh
Z2VzKHsgImNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UiX3MgfSk7CiAKICAgICAgICAgRVhQRUNUX1RS
VUUocmVzdWx0KTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBOU0xvZyhAIi1b
X2NyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZzpjb21wbGV0aW9uSGFuZGxl
cjpdIGZhaWxlZCEiKTsKIAotICAgICAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQo
ImNvb3JkaW5hdG9yY2hhbmdlIl9zKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5l
cldhc0NhbGxlZCgiY29vcmRpbmF0b3JjaGFuZ2UiX3MpKTsKKyAgICAgICAgd2FpdEZvckV2ZW50
TGlzdGVuZXJUb0JlQ2FsbGVkKCJjb29yZGluYXRvcnN0YXRlY2hhbmdlIl9zKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgiY29vcmRpbmF0b3JzdGF0ZWNoYW5n
ZSJfcykpOwogICAgIH0KIAogICAgIFRlc3RXS1dlYlZpZXcqIHdlYlZpZXcoKSBjb25zdCB7IHJl
dHVybiBfd2ViVmlldy5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwKaW5kZXggZmQ0ZDk5NmExYmIxYjQ4
MDlmZmZjNjI1MmUwZTQ0OWEwNDQ1ZWJmYi4uMGI3NjI3YTVlZmEyOWY1NzNjNTI0ODdmYTQzMDAx
NWZjOWU5MWY2MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9tZWRpYS1yZW1vdGUuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sCkBAIC05Niw3ICs5Niw3IEBACiAgICAgICAgICAg
ICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3Nh
Z2UobWVzc2FnZSk7CiAgICAgICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBwb3N0RXZlbnQoZXZ0
KSAKKyAgICAgICAgZnVuY3Rpb24gcG9zdEV2ZW50KGV2dCkKICAgICAgICAgewogICAgICAgICAg
ICAgcG9zdE1lc3NhZ2UoYCR7ZXZ0LnR5cGV9IGV2ZW50YCk7CiAgICAgICAgIH0KQEAgLTEzNSw3
ICsxMzUsNyBAQAogICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBv
c3RFdmVudCk7CiAgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBv
c3RFdmVudCk7CiAgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBw
b3N0RXZlbnQpOwotICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5hZGRFdmVudExp
c3RlbmVyKCdjb29yZGluYXRvcmNoYW5nZScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBuYXZp
Z2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5h
dG9yc3RhdGVjaGFuZ2UnLCBwb3N0RXZlbnQpOwogICAgICAgICB9LCBmYWxzZSk7CiAKICAgICA8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBjNTAxMzY0NmY4ZmE1NTNhNWE4ZDIwYTI1MWU3YjVjMDNkMWVhMDNi
Li5kOWI1YjE2N2M4ODRhNjQxNjE4N2NiNzRjZjA1ZjdlY2Q1NTJiMTZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjEtMDUtMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBNZWRpYVNlc3Npb24uY29vcmRpbmF0b3Igc2hvdWxkIG5vdCBiZSBvcHRpb25h
bCwgcmVseWluZyBvbiBjb29yZGluYXRvciByZWFkeVN0YXRlIGNoYW5nZSBpbnN0ZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYzMjgKKyAgICAg
ICAgcmRhcjovLzc3NDYxMzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3ItZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIG1lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5o
dG1sOiBDaGFuZ2UgdGVzdCB0byBtYXRjaCBuZXcgQVBJLgorCiAyMDIxLTA1LTIxICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIE1lZGlhU2Vzc2lvbi5j
YWxsQWN0aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYmY0Njdh
NGRjNzI2ZDJhZDJlNjkxNWNlZDMzYWM5Yzc2NzYxNjA1NS4uYTY0OGI5NmM1MGI4ZmEwMTUyZjUz
MTcxYWMwZDIwZjgzZjBiN2EzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMjEtMDUtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBNZWRpYVNlc3Npb24uY29vcmRpbmF0b3Igc2hvdWxkIG5vdCBiZSBvcHRp
b25hbCwgcmVseWluZyBvbiBjb29yZGluYXRvciBzdGF0ZSBjaGFuZ2UgaW5zdGVhZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzI4CisgICAgICAg
IHJkYXI6Ly83NzQ2MTMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhc2Vzc2lvbi9pZGxoYXJuZXNzLndp
bmRvdy1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDUtMjcgIFppcmFuIFN1biAgPHpzdW5AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbY3NzLWdyaWRdIEFkZCBkaXNjcmV0ZSBhbmltYXRpb24gc3VwcG9y
dCBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zfHJvd3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFzZXNzaW9uL2lkbGhhcm5lc3Mu
d2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWFzZXNzaW9uL2lkbGhhcm5lc3Mud2luZG93LWV4cGVjdGVkLnR4dAppbmRl
eCA3MWRiY2MzOGQzOTE5YmIzYzBiMzYyOGM0ZDEwZGQyNjQ3OTE1Y2U4Li5mZWM2ZDY0Mzg5ZWRl
MWMyMGQ0ZjI2MjM1N2YxMjYyYzcxMWEwMTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhc2Vzc2lvbi9pZGxoYXJuZXNzLndpbmRv
dy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYXNlc3Npb24vaWRsaGFybmVzcy53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0x
MiwxNCArMTIsMTAgQEAgUEFTUyBOYXZpZ2F0b3IgaW5jbHVkZXMgTmF2aWdhdG9yQ29udGVudFV0
aWxzOiBtZW1iZXIgbmFtZXMgYXJlIHVuaXF1ZQogUEFTUyBOYXZpZ2F0b3IgaW5jbHVkZXMgTmF2
aWdhdG9yQ29va2llczogbWVtYmVyIG5hbWVzIGFyZSB1bmlxdWUKIFBBU1MgTmF2aWdhdG9yIGlu
Y2x1ZGVzIE5hdmlnYXRvclBsdWdpbnM6IG1lbWJlciBuYW1lcyBhcmUgdW5pcXVlCiBQQVNTIE5h
dmlnYXRvciBpbmNsdWRlcyBOYXZpZ2F0b3JDb25jdXJyZW50SGFyZHdhcmU6IG1lbWJlciBuYW1l
cyBhcmUgdW5pcXVlCi1GQUlMIE1lZGlhU2Vzc2lvbiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQg
cHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IGFzc2VydF9lcXVhbHM6IHByb3RvdHlwZSBv
ZiBzZWxmJ3MgcHJvcGVydHkgIk1lZGlhU2Vzc2lvbiIgaXMgbm90IEZ1bmN0aW9uLnByb3RvdHlw
ZSBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0i
IGJ1dCBnb3QgZnVuY3Rpb24gImZ1bmN0aW9uIEV2ZW50VGFyZ2V0KCkgewotICAgIFtuYXRpdmUg
Y29kZV0KLX0iCitQQVNTIE1lZGlhU2Vzc2lvbiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJv
cGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0CiBQQVNTIE1lZGlhU2Vzc2lvbiBpbnRlcmZhY2Ug
b2JqZWN0IGxlbmd0aAogUEFTUyBNZWRpYVNlc3Npb24gaW50ZXJmYWNlIG9iamVjdCBuYW1lCi1G
QUlMIE1lZGlhU2Vzc2lvbiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBwcm90b3R5cGUgb2YgTWVk
aWFTZXNzaW9uLnByb3RvdHlwZSBpcyBub3QgT2JqZWN0LnByb3RvdHlwZSBleHBlY3RlZCBvYmpl
Y3QgIltvYmplY3QgT2JqZWN0XSIgYnV0IGdvdCBvYmplY3QgIltvYmplY3QgRXZlbnRUYXJnZXRd
IgorUEFTUyBNZWRpYVNlc3Npb24gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMg
b2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKIFBBU1MgTWVkaWFTZXNzaW9uIGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eQogUEFTUyBNZWRpYVNlc3Npb24gaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBA
QHVuc2NvcGFibGVzIHByb3BlcnR5CiBQQVNTIE1lZGlhU2Vzc2lvbiBpbnRlcmZhY2U6IGF0dHJp
YnV0ZSBtZXRhZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lv
bi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LXNlc3Npb24vbW9jay1jb29yZGluYXRvci1leHBlY3RlZC50eHQKaW5kZXggMWU0NzhiYThhYWE3
YjE3YjU5YzE2YTY0ODc2NjUwNmRiZjY0M2ZkNi4uM2M0OWE1YWE5NDg1NWIyNDRhZmZiY2YwN2Nj
ZjZkZDFhZTkwMTZhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lv
bi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDEy
IEBACiAKLSoqIFRoZXJlIHNob3VsZCBiZSBubyBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3IgaW5p
dGlhbGx5LgotRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IgPT0g
J3VuZGVmaW5lZCcpIE9LCisqKiBUaGVyZSBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUg
c2hvdWxkIGJlIGNsb3NlZCBpbml0aWFsbHkuCitFWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvci5zdGF0ZSA9PSAnY2xvc2VkJykgT0sKIAotKiogVGVzdCB0aGF0IG1l
ZGlhU2Vzc2lvbi5jb29yZGluYXRvcmNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIGl0IGNoYW5n
ZXMuCisqKiBUZXN0IHRoYXQgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmNvb3JkaW5hdG9yc3Rh
dGVjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiBpdCBjaGFuZ2VzLgogUlVOKGludGVybmFscy5y
ZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcihjaGFuZ2VIYW5kbGVyKSkKLUVWRU5U
KGNvb3JkaW5hdG9yY2hhbmdlKQotRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29v
cmRpbmF0b3IgIT0gJ3VuZGVmaW5lZCcpIE9LCitFVkVOVChjb29yZGluYXRvcnN0YXRlY2hhbmdl
IFNUQVRFKHdhaXRpbmcpCiAKLSoqIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iu
c3RhdGUgc2hvdWxkIGJlICJ3YWl0aW5nIiBpbnRpdGlhbGx5CisqKiBuYXZpZ2F0b3IubWVkaWFT
ZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSAid2FpdGluZyIgaW5pdGlhbGx5CiBF
WFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSA9PSAnd2Fp
dGluZycpIE9LCiAKICoqIFRlc3QgdGhhdCB3aGVuIGNvb3JkaW5hdG9yIG1ldGhvZHMgZmFpbCBh
bmQgcHJvbWlzZXMgcmVqZWN0IGJlZm9yZSBtZWRpYVNlc3Npb24uam9pbigpIGlzIGNhbGxlZC4K
QEAgLTc4LDkgKzc3LDkgQEAgRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAnJykgT0sKIAogUlVO
KGludGVybmFscy5zZXRNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDb21tYW5kc1Nob3VsZEZh
aWwoZmFsc2UpKQogUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5h
dG9yLmpvaW4oKSkKK0VWRU5UKGNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UgU1RBVEUoam9pbmVkKQog
UHJvbWlzZSByZXNvbHZlZCBPSwogRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29v
cmRpbmF0b3Iuc3RhdGUgPT0gJ2pvaW5lZCcpIE9LCi1FWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09
ICdjb29yZGluYXRvclN0YXRlQ2hhbmdlZCcpIE9LCiAKICoqIFRlc3QgdGhhdCB3aGVuIGNvb3Jk
aW5hdG9yIG1ldGhvZHMgc3VjY2VlZCwgcHJvbWlzZXMgcmVzb2x2ZSBhbmQgbWVkaWFTZXNzaW9u
IGFjdGlvbiBoYW5kbGVycyBhcmUgY2FsbGVkLgogUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVk
aWFTZXNzaW9uLmNvb3JkaW5hdG9yLnBsYXkoKSkKQEAgLTE0OSw4ICsxNDgsMTEgQEAgRVhQRUNU
RUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24ucGxheWJhY2tTdGF0ZSA9PSAnbm9uZScpIE9LCiAK
ICoqIExlYXZlIHRoZSBzZXNzaW9uCiBSVU4obmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGlu
YXRvci5sZWF2ZSgpKQorRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAncGxheWJhY2tTdGF0ZUNo
YW5nZWQnKSBPSworRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAncGxheWJhY2tTdGF0ZUNoYW5n
ZWQnKSBPSworRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAncGxheWJhY2tTdGF0ZUNoYW5nZWQn
KSBPSworRVZFTlQoY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBTVEFURShjbG9zZWQpCiBFWFBFQ1RF
RCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSA9PSAnY2xvc2VkJykg
T0sKLUVYUEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJ2Nvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkJykg
T0sKIAogKiogVGVzdCB0aGF0IHdoZW4gY29vcmRpbmF0b3IgbWV0aG9kcyBmYWlsIGFuZCBwcm9t
aXNlcyByZWplY3QgYWZ0ZXIgbWVkaWFTZXNzaW9uLmxlYXZlKCkgaGFzIGJlZW4gY2FsbGVkLgog
UlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnBsYXkoKSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGlu
YXRvci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5h
dG9yLmh0bWwKaW5kZXggNTg1YTVlYTk0OTEwZDBlNWNhNzNjYjNkY2VjYmYyMmZiNzk5MDdmOS4u
ZDA2NWRiMDI2MmNiNGMxMjg4NDRmYzNhODlhMTk3YTBiMTUwNWJkYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLmh0bWwKQEAg
LTMzLDI4ICszMywyNiBAQAogCiAgICAgICAgIGxldCBjaGFuZ2VQcm9taXNlID0gKCkgPT4gewog
ICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAg
ICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcignY29vcmRpbmF0b3Jj
aGFuZ2UnLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBF
VkVOVCgke2V2ZW50LnR5cGV9KWApOworICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNl
c3Npb24uY29vcmRpbmF0b3IuYWRkRXZlbnRMaXN0ZW5lcignY29vcmRpbmF0b3JzdGF0ZWNoYW5n
ZScsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYEVWRU5U
KCR7ZXZlbnQudHlwZX0gU1RBVEUoJHtuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9y
LnN0YXRlfSlgKTsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9CiAKICAgICAgICAgYXdhaXQgd2FpdEZvckRlYnVnZ2VyKCk7CiAKICAg
ICAgICAgY29uc29sZVdyaXRlKCcnKTsKLSAgICAgICAgY29uc29sZVdyaXRlKCcqKiBUaGVyZSBz
aG91bGQgYmUgbm8gbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yIGluaXRpYWxseS4nKQorICAgICAg
ICBjb25zb2xlV3JpdGUoJyoqIFRoZXJlIG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBz
aG91bGQgYmUgY2xvc2VkIGluaXRpYWxseS4nKTsKIAotICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25h
dmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3InLCB1bmRlZmluZWQpOworICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUnLCAi
Y2xvc2VkIik7CiAKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKLSAgICAgICAgY29uc29sZVdy
aXRlKCcqKiBUZXN0IHRoYXQgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yY2hhbmdlIGV2ZW50IGlz
IGZpcmVkIHdoZW4gaXQgY2hhbmdlcy4nKQorICAgICAgICBjb25zb2xlV3JpdGUoJyoqIFRlc3Qg
dGhhdCBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3IuY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBldmVu
dCBpcyBmaXJlZCB3aGVuIGl0IGNoYW5nZXMuJyk7CiAKICAgICAgICAgcnVuKCdpbnRlcm5hbHMu
cmVnaXN0ZXJNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoY2hhbmdlSGFuZGxlciknKTsKIAog
ICAgICAgICBhd2FpdCBjaGFuZ2VQcm9taXNlKCk7Ci0gICAgICAgIAotICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3InLCB1bmRlZmluZWQsICch
PScpOwogCiAgICAgICAgIFsncGxheScsICdwYXVzZScsICdzZWVrdG8nXS5mb3JFYWNoKGFjdGlv
biA9PiB7CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnNldEFjdGlvbkhhbmRs
ZXIoYWN0aW9uLCBhY3Rpb25EZXRhaWxzID0+IHsKQEAgLTEyMCw3ICsxMTgsNyBAQAogCiAgICAg
ICAgIC8vIEJlZm9yZSBqb2luaW5nCiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7Ci0gICAgICAg
IGNvbnNvbGVXcml0ZSgnKiogbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0
ZSBzaG91bGQgYmUgIndhaXRpbmciIGludGl0aWFsbHknKQorICAgICAgICBjb25zb2xlV3JpdGUo
JyoqIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlICJ3
YWl0aW5nIiBpbml0aWFsbHknKQogICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRp
YVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUnLCAnd2FpdGluZycpOwogCiAgICAgICAgIGNvbnNv
bGVXcml0ZSgnJyk7CkBAIC0xNTksOSArMTU3LDkgQEAKICAgICAgICAgY29uc29sZVdyaXRlKCcn
KTsKICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
Q29tbWFuZHNTaG91bGRGYWlsKGZhbHNlKScpOwogICAgICAgICBydW4oJ3Byb21pc2UgPSBuYXZp
Z2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmpvaW4oKScpOworICAgICAgICBhd2FpdCBj
aGFuZ2VQcm9taXNlKCk7CiAgICAgICAgIGF3YWl0IHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhl
bigoKSA9PiB7IH0pLmNhdGNoKCgpID0+IHsgfSk7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2
aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZScsICdqb2luZWQnKTsKLSAgICAg
ICAgdGVzdEV4cGVjdGVkKCdsYXRlc3RDaGFuZ2UnLCAnY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQn
KTsKIAogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwogICAgICAgICBjb25zb2xlV3JpdGUoJyoq
IFRlc3QgdGhhdCB3aGVuIGNvb3JkaW5hdG9yIG1ldGhvZHMgc3VjY2VlZCwgcHJvbWlzZXMgcmVz
b2x2ZSBhbmQgbWVkaWFTZXNzaW9uIGFjdGlvbiBoYW5kbGVycyBhcmUgY2FsbGVkLicpCkBAIC0x
ODksOCArMTg3LDkgQEAKICAgICAgICAgY29uc29sZVdyaXRlKCc8YnI+Jyk7CiAgICAgICAgIGNv
bnNvbGVXcml0ZSgnKiogTGVhdmUgdGhlIHNlc3Npb24nKQogICAgICAgICBydW4oJ25hdmlnYXRv
ci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IubGVhdmUoKScpOworICAgICAgICBhd2FpdCBjaGFu
Z2VQcm9taXNlKCk7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lv
bi5jb29yZGluYXRvci5zdGF0ZScsICdjbG9zZWQnKTsKLSAgICAgICAgYXdhaXQgdGVzdEV4cGVj
dGVkRXZlbnR1YWxseSgnbGF0ZXN0Q2hhbmdlJywgJ2Nvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkJywg
Jz09JywgMTAwKTsKKwogICAgICAgICBsYXRlc3RDaGFuZ2UgPSAnJzsKIAogICAgICAgICBjb25z
b2xlV3JpdGUoJycpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430186</attachid>
            <date>2021-05-31 01:16:08 -0700</date>
            <delta_ts>2021-06-01 17:35:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226328-20210531181606.patch</filename>
            <type>text/plain</type>
            <size>34291</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk5ZWVjNjJhNmIxMWZk
YjczNzIzNzkzNzdiNWUzOTk1MTllMmMwYy4uNjY4MmU5Mzk3ZjE3NjIyNjBmNjkwY2UwZWZiOTAx
OThjMTIxNGNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
c3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29vcmRpbmF0b3Igd2Fz
IGEgcmVhZC1vbmx5IG9wdGlvbmFsIGF0dHJpYnV0ZSBvZiB0aGUgTWVkaWFTZXNzaW9uIGVsZW1l
bnQuCisgICAgICAgIFRlc3RpbmcgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgdG8gYmUgdXNlZCB0byBk
ZXRlcm1pbmUgaWYgYSBNZWRpYVNlc3Npb25Db29yZGluYXRvcgorICAgICAgICB3YXMgbm93IGF2
YWlsYWJsZSBhbmQgZm9yIHRoZSBNZWRpYVNlc3Npb24gdG8gam9pbiBpdC4gVGhpcyBtYWRlIHRo
ZSB1c2Ugb2YgYW4gZXh0ZXJuYWwKKyAgICAgICAgcG9seWZpbGwgZGlmZmljdWx0IGFuZCBlbmZv
cmNpbmcgdGhlIHZhbGlkaXR5IG9mIGFuIHVzZXIgY3JlYXRlZCBjdXN0b20KKyAgICAgICAgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgZHVlIHRvIElETCBzZW1hbnRpY3MgbGltaXRhdGlvbnMgaGFy
ZC4KKyAgICAgICAgV2UgaW5zdGVhZCBhbHdheXMgY3JlYXRlIGEgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3Igd2hpY2ggaW4gaXRzIGRlZmF1bHQgc3RhdGUgaXMgQ2xvc2VkLgorICAgICAgICBPbmNl
IHRoaXMgc3RhdGUgaXMgY2hhbmdlZCB0byBXYWl0aW5nIGFuZCBhbiBldmVudCBpcyBmaXJlIHRo
ZSBNZWRpYVNlc3Npb24gY2FuIG5vdworICAgICAgICBqb2luIGl0LgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKTogTWVkaWFTZXNzaW9uIG5vIGxvbmdlciBuZWVkcyB0
byBmaXJlIGV2ZW50LgorICAgICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBpbmhlcml0
YW5jZSBhbmQgYXN5bmMgZXZlbnQgcXVldWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b246OmNyZWF0ZSk6IERyaXZlLWJ5IGZpeCwgZG9uJ3QgY2FsbCBzdXNwZW5kSWZOZWVkZWQoKSBp
biB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNyZWF0
ZUNvb3JkaW5hdG9yKTogTWFrZSBtZXRob2QgcHJpdmF0ZS4KKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bjo6Y29vcmRpbmF0b3IgY29uc3QpOiBNZWRpYVNlc3Npb25Db29yZGluYXRvciBhbHdheXMgZXhp
c3RzLiBSZXR1cm4gcmVmZXJlbmNlIGluc3RlYWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmlkbDogQW1lbmQgZGVmaW5pdGlvbiwgcmVtb3ZlIEV2ZW50SGFu
ZGxlcgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Ok1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjb29yZGluYXRvclN0YXRlQ2hh
bmdlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29y
ZGluYXRvci5pZGw6IEFkZGVkIG5ldyBFdmVudEhhbmRsZXIgYXR0cmlidXRlLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4uaWRsOiBV
cGRhdGUgZm9yIG5ldyBBUEkgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5o
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmludmFsaWRhdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpyZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcik6CisK
IDIwMjEtMDUtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgc29tZSBkZWFkIGNvZGUgZnJvbSBCYXNlQXVkaW9Db250ZXh0IC8gQXVkaW9Db250ZXh0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcAppbmRleCAxZTE0ZDc3ODU0MzY2YjAwODY2MzVmY2M5ZGZkYTE1OWI2YjRkY2FlLi42
ZTQ4YjkzNjY5NTEzMjc5ODE2N2I5YzZiNDc5MDdhOTFkMGIyZDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTEy
OCwzNyArMTI4LDI5IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBQCiAKIFJlZjxNZWRpYVNlc3Np
b24+IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBhdXRvIHNl
c3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbihuYXZpZ2F0b3IpKTsKKyAgICBzZXNz
aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAogTWVkaWFT
ZXNzaW9uOjpNZWRpYVNlc3Npb24oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QobmF2aWdhdG9yLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fbmF2
aWdhdG9yKG1ha2VXZWFrUHRyKG5hdmlnYXRvcikpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShN
YWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbV9sb2dn
ZXIgPSBtYWtlUmVmUHRyKERvY3VtZW50OjpzaGFyZWRMb2dnZXIoKSk7CiAgICAgbV9sb2dJZGVu
dGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
X0NPT1JESU5BVE9SKQogICAgIGF1dG8qIGZyYW1lID0gbmF2aWdhdG9yLmZyYW1lKCk7Ci0gICAg
aWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKSB7Ci0gICAg
ICAgIGlmIChhdXRvIGNvb3JkaW5hdG9yUHJpdmF0ZSA9IHBhZ2UtPm1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yKCkpCi0gICAgICAgICAgICBjcmVhdGVDb29yZGluYXRvcigqY29vcmRpbmF0b3JQcml2
YXRlKTsKLSAgICB9CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkg
OiBudWxscHRyKQorICAgICAgICBjcmVhdGVDb29yZGluYXRvcihwYWdlLT5tZWRpYVNlc3Npb25D
b29yZGluYXRvcigpKTsKICNlbmRpZgogCi0gICAgc3VzcGVuZElmTmVlZGVkKCk7Ci0KICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogfQogCiBNZWRpYVNlc3Npb246On5NZWRpYVNlc3Np
b24oKSA9IGRlZmF1bHQ7CiAKLWJvb2wgTWVkaWFTZXNzaW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRp
bmdBY3Rpdml0eSgpOwotfQotCiB2b2lkIE1lZGlhU2Vzc2lvbjo6c3VzcGVuZChSZWFzb25Gb3JT
dXNwZW5zaW9uIHJlYXNvbikKIHsKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRP
UikKQEAgLTIwMCwxOSArMTkyLDE1IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpzZXRSZWFkeVN0YXRl
KE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgc3RhdGUpCiAgICAgbm90aWZ5UmVhZHlTdGF0ZU9ic2Vy
dmVycygpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoUmVmPE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBjb29yZGluYXRvclByaXZhdGUpCit2b2lk
IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlQ29vcmRpbmF0b3IoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlKiBjb29yZGluYXRvclByaXZhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIAogICAgIGlmIChtX2Nvb3JkaW5hdG9yKQogICAgICAgICBtX2Nvb3JkaW5hdG9yLT5z
ZXRNZWRpYVNlc3Npb24obnVsbHB0cik7CiAKLSAgICBtX2Nvb3JkaW5hdG9yID0gTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvb3JkaW5hdG9yUHJpdmF0ZSkpOwotCi0g
ICAgaWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPnNldE1lZGlhU2Vz
c2lvbih0aGlzKTsKLQotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY29vcmRpbmF0b3JjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgbV9jb29yZGluYXRvciA9
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBjb29yZGluYXRvclByaXZhdGUpOworICAgIG1fY29vcmRpbmF0b3ItPnNldE1lZGlhU2Vzc2lv
bih0aGlzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IDNlNjQ2MDUzYzdiOThhOWE2NWM5NTZhMmVm
YjUyNjJlNWQwZjNlYjAuLjQ2NjFhOWIwNzQ1ODk1MDY5OGIzN2EyZDAwYmQ1NmJlM2ExYTIyZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5oCkBAIC0yOCw4ICsyOCw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2lu
Y2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNp
bmNsdWRlICJNZWRpYVBvc2l0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25BY3Rp
b24uaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyLmgiCkBAIC01Miw3ICs1
MSw3IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZTsKIGNsYXNzIE5hdmln
YXRvcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKLWNs
YXNzIE1lZGlhU2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbj4sIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKK2Ns
YXNzIE1lZGlhU2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbj4sIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVNlc3Npb24+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1l
ZGlhU2Vzc2lvbj4gY3JlYXRlKE5hdmlnYXRvciYpOwpAQCAtODAsOCArNzksNyBAQCBwdWJsaWM6
CiAgICAgTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9yZWFkeVN0YXRlOyB9OwogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVNlc3Npb25SZWFk
eVN0YXRlKTsKIAotICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29vcmRpbmF0b3IuZ2V0KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNyZWF0ZUNvb3JkaW5hdG9yKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+
JiYpOworICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yJiBjb29yZGluYXRvcigpIGNvbnN0IHsg
cmV0dXJuICptX2Nvb3JkaW5hdG9yOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OX1BMQVlMSVNUKQpAQCAtOTgsMTAgKzk2LDYgQEAgcHVibGljOgogCiAgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KIAotICAgIC8v
IEV2ZW50VGFyZ2V0Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwotICAgIHVzaW5nIFJlZkNv
dW50ZWQ6OmRlcmVmOwotCiAgICAgY2xhc3MgT2JzZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8T2JzZXJ2ZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkg
PSBkZWZhdWx0OwpAQCAtMTMwLDE1ICsxMjQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlm
eUFjdGlvbkhhbmRsZXJPYnNlcnZlcnMoKTsKICAgICB2b2lkIG5vdGlmeVJlYWR5U3RhdGVPYnNl
cnZlcnMoKTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdm9pZCByZWZFdmVudFRhcmdldCgp
IGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRl
cmVmKCk7IH0KLSAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbkV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdm9pZCBjcmVhdGVDb29yZGluYXRvcihNZWRpYVNl
c3Npb25Db29yZGluYXRvclByaXZhdGUqKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
TWVkaWFTZXNzaW9uIjsgfQotICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsK
ICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKIApAQCAtMTU1LDcgKzE0NCw2IEBAIHByaXZhdGU6CiAg
ICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogCiAgICAgV2Vha0hhc2hTZXQ8T2JzZXJ2
ZXI+IG1fb2JzZXJ2ZXJzOwotICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVl
dWU+IG1fYXN5bmNFdmVudFF1ZXVlOwogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJ
TkFUT1IpCiAgICAgTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGUgeyBNZWRpYVNl
c3Npb25SZWFkeVN0YXRlOjpIYXZlbm90aGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKaW5kZXggYmFhMDgwODQ3MGI0
Yjg2MjdlYWRjMzgyM2I1YTBmYjFiNWNiYTg3Yy4uNTQ5NDYxNjkzNmQwNGI1NzVjMzdkODkwMTE0
ODU0NzQyYjQ0OTg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCkBAIC0yOCw4ICsyOCw3IEBACiAgICAgQ29uZGl0aW9u
YWw9TUVESUFfU0VTU0lPTiwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBFeHBvcnRNYWNybz1X
RUJDT1JFX0VYUE9SVCwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLV0gaW50ZXJmYWNlIE1l
ZGlhU2Vzc2lvbiA6IEV2ZW50VGFyZ2V0CitdIGludGVyZmFjZSBNZWRpYVNlc3Npb24KIHsKICAg
ICBhdHRyaWJ1dGUgTWVkaWFNZXRhZGF0YT8gbWV0YWRhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yLmNwcAppbmRleCBiYzBiOGJiOGQ5N2QxZTU2ZGE0ZmY2YzM3M2E0MTMxYTQ1OWJjM2E4
Li5lZDkyYjZlOTI5OGNjYjcxNzFkMjZhNmFhYzcxMjBlNjRiNjczZDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTl9DT09SRElOQVRPUikKIAorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAj
aW5jbHVkZSAiSlNNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlLmgiCkBAIC00NywyNCArNDgs
NTAgQEAgc3RhdGljIGNvbnN0IHZvaWQqIG5leHRDb29yZGluYXRvckxvZ0lkZW50aWZpZXIoKQog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIp
OwogfQogCi1SZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpjcmVhdGUoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBwcml2YXRl
Q29vcmRpbmF0b3IpCitSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRy
PE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBwcml2YXRlQ29vcmRpbmF0b3IpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoV1RGTW92
ZShwcml2YXRlQ29vcmRpbmF0b3IpKSk7CisgICAgYXV0byBjb29yZGluYXRvciA9IGFkb3B0UmVm
KCpuZXcgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoY29udGV4dCwgV1RGTW92ZShwcml2YXRlQ29v
cmRpbmF0b3IpKSk7CisgICAgY29vcmRpbmF0b3ItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJl
dHVybiBjb29yZGluYXRvcjsKIH0KIAotTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Ok1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJp
dmF0ZUNvb3JkaW5hdG9yKQotICAgIDogbV9wcml2YXRlQ29vcmRpbmF0b3IoV1RGTW92ZShwcml2
YXRlQ29vcmRpbmF0b3IpKQorTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Ok1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxNZWRpYVNl
c3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQorICAgIDogQWN0
aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX2xvZ2dlcihtYWtlUmVmKERvY3VtZW50Ojpz
aGFyZWRMb2dnZXIoKSkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIobmV4dENvb3JkaW5hdG9yTG9n
SWRlbnRpZmllcigpKQorICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNF
dmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CiAKKyAgICBpZiAocHJpdmF0ZUNvb3JkaW5hdG9yKSB7CisgICAgICAgIHNldE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSgqcHJpdmF0ZUNvb3JkaW5hdG9yKTsKKyAgICB9Cit9CisK
K3ZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZShSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmIHByaXZhdGVDb29y
ZGluYXRvcikKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIGlmIChtX3By
aXZhdGVDb29yZGluYXRvcikKKyAgICAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPmxlYXZlKCk7
CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3IgPSBXVEZNb3ZlKHByaXZhdGVDb29yZGluYXRvcik7
CiAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNldExvZ2dlcihtX2xvZ2dlci5jb3B5UmVmKCks
IG1fbG9nSWRlbnRpZmllcik7CiAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNldENsaWVudCht
YWtlV2Vha1B0cih0aGlzKSk7CisgICAgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JTdGF0ZTo6V2FpdGluZyk7CiB9CiAKIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjp+TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkKK3sKKyAgICBtX2hh
c0Nvb3JkaW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVuZXJz
KGV2ZW50TmFtZXMoKS5jb29yZGluYXRvcnN0YXRlY2hhbmdlRXZlbnQpOworfQorCitib29sIE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
K3sKKyAgICAvLyBOZWVkIHRvIGtlZXAgdGhlIEpTIHdyYXBwZXIgYWxpdmUgYXMgbG9uZyBhcyBp
dCBtYXkgc3RpbGwgZmlyZSBldmVudHMgaW4gdGhlIGZ1dHVyZS4KKyAgICByZXR1cm4gc2hvdWxk
RmlyZUV2ZW50cygpOworfQorCiB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgYXV0byBpZGVudGlmaWVy
ID0gTE9HSURFTlRJRklFUjsKQEAgLTc1LDYgKzEwMiw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I6OmpvaW4oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICAg
ICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIG1ha2VTdHJp
bmcoIlVuYWJsZSB0byBqb2luIHdoZW4gc3RhdGUgaXMgIiwgY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcobV9zdGF0ZSkpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIEFTU0VSVCht
X3ByaXZhdGVDb29yZGluYXRvciwgIldlIG11c3QgYmUgaW4gV2FpdGluZyBzdGF0ZSBpZiBubyBw
cml2YXRlIGNvb3JkaW5hdG9yIGlzIHNldCIpOwogCiAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3It
PmpvaW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgaWRlbnRpZmllciwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNl
cHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fc2Vzc2lvbikg
ewpAQCAtODgsNyArMTE2LDggQEAgdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9zdGF0ZSA9IE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yU3RhdGU6OkpvaW5lZDsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29vcmRp
bmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6Sm9pbmVkKTsK
KwogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICB9KTsKIH0KQEAgLTEwNyw3ICsxMzYs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6bGVhdmUoKQog
dm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y2xvc2UoKQogewogICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7Ci0gICAgbV9zdGF0ZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3Rh
dGU6OkNsb3NlZDsKKyAgICBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Db29y
ZGluYXRvclN0YXRlOjpDbG9zZWQpOwogICAgIGlmICghbV9wcml2YXRlQ29vcmRpbmF0b3IpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMzgxLDEyICs0MTAsMTkgQEAgdm9pZCBNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6c2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2ssIENvbXBsZXRp
b25IYW4KICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIH0KIAorYm9vbCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6c2hvdWxkRmlyZUV2ZW50cygpIGNvbnN0IHsKKyAgICByZXR1cm4gbV9o
YXNDb29yZGluYXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVuZXIgJiYgbV9zZXNzaW9uOworfQor
CisKIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2Vk
KE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGUpCiB7CiAgICAgaWYgKG1fc3RhdGUg
PT0gc3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlID0gc3RhdGU7CiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX3N0YXRlKTsKKyAgICBpZiAoc2hvdWxkRmlyZUV2ZW50
cygpKQorICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmNvb3JkaW5hdG9yc3RhdGVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIGJvb2wgTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I6OmN1cnJlbnRQb3NpdGlvbkFwcHJveGltYXRlbHlFcXVhbFRvKGRvdWJs
ZSB0aW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKaW5kZXggMzMwYzRhZWI2MDUx
ZTNlM2RlOGE0ZjlhYWIwNzE1YTQ2MzUyNGE5Yi4uYWE0YmM0ZWIxMWVkNmQ5NmMzNDJmMDNmYmY4
ZWQyZWE0OGEwZTczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5oCkBAIC0yNyw2ICsyNyw5
IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKIAorI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAi
R2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRl
ICJNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Np
b25Db29yZGluYXRvclN0YXRlLmgiCkBAIC00MSwxMCArNDQsMTQgQEAgdGVtcGxhdGU8dHlwZW5h
bWU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4KICAg
ICAsIHB1YmxpYyBNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudAotICAgICwgcHVibGljIE1l
ZGlhU2Vzc2lvbjo6T2JzZXJ2ZXIgeworICAgICwgcHVibGljIE1lZGlhU2Vzc2lvbjo6T2JzZXJ2
ZXIKKyAgICAsIHB1YmxpYyBBY3RpdmVET01PYmplY3QKKyAgICAsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhICB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4g
Y3JlYXRlKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0
ZT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUo
UmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CiAKICAgICB2b2lkIGpvaW4o
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGxlYXZl
KCk7CkBAIC02Miw5ICs2OSwyMiBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBNZWRpYVNlc3Npb25D
b29yZGluYXRvckNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CiAgICAgdXNpbmcgV2Vha1ZhbHVlVHlw
ZSA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50OjpXZWFrVmFsdWVUeXBlOworICAgIHVz
aW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAogcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsKKyAgICBNZWRpYVNlc3Npb25Db29yZGluYXRvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJp
dmF0ZT4mJik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBk
ZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVNlc3Npb25Db29yZGluYXRvckV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdm9pZCBldmVudExpc3RlbmVy
c0RpZENoYW5nZSgpIGZpbmFsOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgY29uc3Qg
Y2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRpYVNl
c3Npb25Db29yZGluYXRvciI7IH0KKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbjo6T2JzZXJ2ZXIKICAgICB2b2lk
IG1ldGFkYXRhQ2hhbmdlZChjb25zdCBSZWZQdHI8TWVkaWFNZXRhZGF0YT4mKSBmaW5hbDsKQEAg
LTg1LDEyICsxMDUsMTUgQEAgcHJpdmF0ZToKICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgc3RhdGljIFdURkxvZ0No
YW5uZWwmIGxvZ0NoYW5uZWwoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1l
KCkgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIjsgfQorICAgIGJvb2wgc2hvdWxk
RmlyZUV2ZW50cygpIGNvbnN0OwogCiAgICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lv
bjsKLSAgICBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlIG1fc3RhdGUgeyBNZWRpYVNlc3Np
b25Db29yZGluYXRvclN0YXRlOjpXYWl0aW5nIH07CiAgICAgUmVmUHRyPE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJpdmF0ZT4gbV9wcml2YXRlQ29vcmRpbmF0b3I7Ci0gICAgUmVmPGNvbnN0IExv
Z2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3QgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAg
ICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFk
R2VuZXJpY0V2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOworICAgIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yU3RhdGUgbV9zdGF0ZSB7IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkNs
b3NlZCB9OworICAgIGJvb2wgbV9oYXNDb29yZGluYXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVu
ZXIgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsCmluZGV4
IDIxMTgyNzAzZDFiMGQ4NzJmMjM3ZGJhYTAzZGRlNTYxY2ZlNmQ1Y2EuLjA4ODFjMDZmZDJjYWMy
YWFkZGRjYjNkYTA5YzRiYzIzMWE0OWU2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5p
ZGwKQEAgLTI0LDE2ICsyNCwyMCBAQAogICovCiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAg
ICAgQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl9DT09SRElOQVRPUiwKICAgICBFbmFibGVkQnlT
ZXR0aW5nPU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLAogICAgIEV4cG9zZWQ9V2luZG93LAogICAg
IEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IgeworICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IgOiBFdmVudFRhcmdldCB7CiAKICAgICBQcm9taXNlPHVuZGVmaW5l
ZD4gam9pbigpOwogICAgIHVuZGVmaW5lZCBsZWF2ZSgpOwogCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbmNvb3JkaW5hdG9yc3RhdGVjaGFuZ2U7CisgICAgCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZz8gaWRlbnRpZmllcjsKIAogICAgIFByb21pc2U8dW5kZWZpbmVk
PiBzZWVrVG8odW5yZXN0cmljdGVkIGRvdWJsZSB0aW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWl4aW4u
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JNaXhpbi5pZGwKaW5kZXggZmRkZjA1NjAzNGIxMDRlZjJjMThjNDc2OWFmYjFlNzlh
MDYzMjJhYS4uMjRiOWUzMDk3Y2ViY2M3YTRmYjMxYWFhZjhmYTYwNGY1MTIwMWJlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JNaXhpbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhpbi5pZGwKQEAgLTI3LDcgKzI3LDYgQEAKICAg
ICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SLAogICAgIEVuYWJsZWRCeVNl
dHRpbmc9TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IsCiBdIGludGVyZmFjZSBtaXhpbiBNZWRpYVNl
c3Npb25Db29yZGluYXRvck1peGluIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I/IGNvb3JkaW5hdG9yOwotICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b25jb29yZGluYXRvcmNoYW5nZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IgY29vcmRpbmF0b3I7CiAgICAgYXR0cmlidXRlIE1lZGlhU2Vzc2lvblJlYWR5
U3RhdGUgcmVhZHlTdGF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBlY2RjODg3
OWEzOTQ1MTljZGQ1MTEzNzM5YmMxNTJmMjA3ZTVjMjAzLi43ODMzNjAzMmEzMmFmNjEwZDgyNGY4
MmE5MzM2NTMxYzJiZDAzMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTEwMSw3ICsx
MDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY29ubmVjdGluZykgXAogICAg
IG1hY3JvKGNvbnRleHRtZW51KSBcCiAgICAgbWFjcm8oY29udHJvbGxlcmNoYW5nZSkgXAotICAg
IG1hY3JvKGNvb3JkaW5hdG9yY2hhbmdlKSBcCisgICAgbWFjcm8oY29vcmRpbmF0b3JzdGF0ZWNo
YW5nZSkgXAogICAgIG1hY3JvKGNvcHkpIFwKICAgICBtYWNybyhjdWVjaGFuZ2UpIFwKICAgICBt
YWNybyhjdXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4
IGJlNzhjYjhlZGM0NDJjMGZkZmQ0ZjZmODBjYjI4NzZmYTBmOGU0OTQuLmMyNmI5YmU0MmY3YjRh
YjExOTExNzBiM2ZmY2IwZTMwMmYzOGZhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgpAQCAtMjMsNyArMjMsNyBAQCBNZWRpYURldmljZXMgY29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNCiBNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElB
CiBNZWRpYVF1ZXJ5TGlzdAogTWVkaWFSZWNvcmRlciBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0K
LU1lZGlhU2Vzc2lvbiBjb25kaXRpb25hbD1NRURJQV9TRVNTSU9OCitNZWRpYVNlc3Npb25Db29y
ZGluYXRvciBjb25kaXRpb25hbD1NRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SCiBNZWRpYVNvdXJj
ZSBjb25kaXRpb25hbD1NRURJQV9TT1VSQ0UKIE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElB
X1NUUkVBTQogTWVkaWFTdHJlYW1UcmFjayBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDdhOWU5Y2NiMmJhZGM5OTJjMTY2NTg2M2QyYTI3NTk2MzRhMjA3MzIu
Ljk0YTU0YmI2ZjBkYzVlMTZmOGIxNzMxNjhmMDRjZWM1NjJlZWFhZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMzQyNyw3ICszNDI3LDcgQEAgdm9pZCBQYWdlOjpzZXRNZWRpYVNlc3Npb25Db29y
ZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmIG1lZGkKIAogICAg
IGF1dG8qIHdpbmRvdyA9IG1haW5GcmFtZSgpLndpbmRvdygpOwogICAgIGlmIChhdXRvKiBuYXZp
Z2F0b3IgPSB3aW5kb3cgPyB3aW5kb3ctPm9wdGlvbmFsTmF2aWdhdG9yKCkgOiBudWxscHRyKQot
ICAgICAgICBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbigqbmF2aWdhdG9yKS5j
cmVhdGVDb29yZGluYXRvcigqbV9tZWRpYVNlc3Npb25Db29yZGluYXRvcik7CisgICAgICAgIE5h
dmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNvb3JkaW5hdG9y
KCkuc2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKCptX21lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yKTsKIH0KIAogdm9pZCBQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IoKQpAQCAtMzQ0MSwxMSArMzQ0MSw3IEBAIHZvaWQgUGFnZTo6aW52YWxpZGF0ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yKCkKICAgICBpZiAoIW5hdmlnYXRvcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byogY29vcmRpbmF0b3IgPSBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vz
c2lvbigqbmF2aWdhdG9yKS5jb29yZGluYXRvcigpOwotICAgIGlmICghY29vcmRpbmF0b3IpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGNvb3JkaW5hdG9yLT5jbG9zZSgpOworICAgIE5hdmlnYXRv
ck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNvb3JkaW5hdG9yKCkuY2xv
c2UoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
ZjU2MmIxZWUzYTdmZTk0YzAwYWQ0ZjhiZDIyNDk4NGNkYmY4YjZjYS4uYWUyNDVmMDk5OGI5ZWUy
OGEzY2RiZjY0OTU2Y2JhZjNkNGE5M2Q0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtNjI0Niw3ICs2MjQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpy
ZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcihTY3JpcHRFeGVjdXRpb24KICAgICBh
dXRvJiBzZXNzaW9uID0gTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24oZG9jdW1l
bnQtPmRvbVdpbmRvdygpLT5uYXZpZ2F0b3IoKSk7CiAgICAgYXV0byBtb2NrID0gTW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yOjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShsaXN0ZW5lcikpOwog
ICAgIG1fbW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yID0gbW9jay5wdHIoKTsKLSAgICBzZXNz
aW9uLmNyZWF0ZUNvb3JkaW5hdG9yKFdURk1vdmUobW9jaykpOworICAgIHNlc3Npb24uY29vcmRp
bmF0b3IoKS5zZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUoV1RGTW92ZShtb2NrKSk7
CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDdkYjg1YjczNzAwZWNiMWNkNWQzOWJmMjU2MGFkOWQzOWRhYjI0
NDQuLjIyMWQ4ZDRjNGExZTJkZDI1YWFhNTYzZjg3YmM0NzZlNzdmOTQ5YjAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMS0wNS0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IE1lZGlhU2Vzc2lvbi5jb29yZGluYXRvciBzaG91bGQgbm90IGJlIG9wdGlvbmFsLCByZWx5aW5n
IG9uIGNvb3JkaW5hdG9yIHJlYWR5U3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8v
Nzc0NjEzMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVz
dC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVz
dDo6Y3JlYXRlQ29vcmRpbmF0b3IpOiBDaGFuZ2UgdGVzdCB0byBtYXRjaCBuZXcgQVBJLAorICAg
ICAgICB1c2luZyBjb29yZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50IGluc3RlYWQuCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbDoKKwog
MjAyMS0wNS0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBVSSBwcm9jZXNzIGNyYXNoZXMgd2hlbiBkZWFsbG9jYXRpbmcgV0tXZWJWaWV3
IGluIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBkdXJpbmcgYW4gYWN0aXZlIHRvdWNoIGV2ZW50
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Np
b25Db29yZGluYXRvclRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9N
ZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KaW5kZXggOWM2NzhhNzZkNWMyYzc2Y2MzOGZm
YWE1ZDJlZWEwNTJlZDQxZDY5OS4uMWM5NmE4ZjZmMzUxNTFkNTdhNTRiZDRmMTU0YjI5NTI3MDZl
YWNhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbQpAQCAtMjEyLDE0ICsyMTIsMTQg
QEAgcHVibGljOgogICAgICAgICB9XTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKIAotICAgICAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgImNvb3JkaW5hdG9y
Y2hhbmdlIl9zIH0pOworICAgICAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgImNvb3JkaW5h
dG9yc3RhdGVjaGFuZ2UiX3MgfSk7CiAKICAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKICAg
ICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBOU0xvZyhAIi1bX2NyZWF0ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZzpjb21wbGV0aW9uSGFuZGxlcjpdIGZhaWxlZCEiKTsK
IAotICAgICAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoImNvb3JkaW5hdG9yY2hh
bmdlIl9zKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgiY29v
cmRpbmF0b3JjaGFuZ2UiX3MpKTsKKyAgICAgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2Fs
bGVkKCJjb29yZGluYXRvcnN0YXRlY2hhbmdlIl9zKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZl
bnRMaXN0ZW5lcldhc0NhbGxlZCgiY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSJfcykpOwogICAgIH0K
IAogICAgIFRlc3RXS1dlYlZpZXcqIHdlYlZpZXcoKSBjb25zdCB7IHJldHVybiBfd2ViVmlldy5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9tZWRpYS1yZW1vdGUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvbWVkaWEtcmVtb3RlLmh0bWwKaW5kZXggZmQ0ZDk5NmExYmIxYjQ4MDlmZmZjNjI1MmUwZTQ0
OWEwNDQ1ZWJmYi4uMGI3NjI3YTVlZmEyOWY1NzNjNTI0ODdmYTQzMDAxNWZjOWU5MWY2MiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1v
dGUuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlh
LXJlbW90ZS5odG1sCkBAIC05Niw3ICs5Niw3IEBACiAgICAgICAgICAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UobWVzc2FnZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBwb3N0RXZlbnQoZXZ0KSAKKyAgICAgICAgZnVu
Y3Rpb24gcG9zdEV2ZW50KGV2dCkKICAgICAgICAgewogICAgICAgICAgICAgcG9zdE1lc3NhZ2Uo
YCR7ZXZ0LnR5cGV9IGV2ZW50YCk7CiAgICAgICAgIH0KQEAgLTEzNSw3ICsxMzUsNyBAQAogICAg
ICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBvc3RFdmVudCk7CiAgICAg
ICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBvc3RFdmVudCk7CiAgICAg
ICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBwb3N0RXZlbnQpOwotICAg
ICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCdjb29yZGlu
YXRvcmNoYW5nZScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNz
aW9uLmNvb3JkaW5hdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9yc3RhdGVjaGFuZ2Un
LCBwb3N0RXZlbnQpOwogICAgICAgICB9LCBmYWxzZSk7CiAKICAgICA8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBlNDUzMGY2NWUwM2YyZmFkOGMyNDQ4M2JmNTMzNTU1OWEwN2RiNmM3Li4yNTQ0MWFlODgwOGRh
ZjQ5NzRjZDNlNTQ4MGZlNDAwNjdmODQyNjMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDUtMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRp
YVNlc3Npb24uY29vcmRpbmF0b3Igc2hvdWxkIG5vdCBiZSBvcHRpb25hbCwgcmVseWluZyBvbiBj
b29yZGluYXRvciByZWFkeVN0YXRlIGNoYW5nZSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYzMjgKKyAgICAgICAgcmRhcjovLzc3NDYx
MzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
ZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIG1lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sOiBDaGFuZ2UgdGVz
dCB0byBtYXRjaCBuZXcgQVBJLgorCiAyMDIxLTA1LTMwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgYWRkaXRpb25hbCB0YXJnZXQgbHVtaW5hbmNlIGtleXdv
cmRzIGZvciBjb2xvci1jb250cmFzdCgpIGFkZGVkIGZvciBodHRwczovL2dpdGh1Yi5jb20vdzNj
L2Nzc3dnLWRyYWZ0cy9pc3N1ZXMvNjMxMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5k
ZXggYWZlMGE3OTFiOWUxOGVjZTUwYzEzZGU4NTdmMDU1ZmUwNDBmZjZjZC4uZDkyYjE0YTgyN2Jm
OTAyNmMwOGU5MWUwODA5NWVmMTExN2Q0NDFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDUtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYVNlc3Npb24uY29vcmRpbmF0b3Igc2hvdWxkIG5v
dCBiZSBvcHRpb25hbCwgcmVseWluZyBvbiBjb29yZGluYXRvciBzdGF0ZSBjaGFuZ2UgaW5zdGVh
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzI4
CisgICAgICAgIHJkYXI6Ly83NzQ2MTMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhc2Vzc2lvbi9pZGxo
YXJuZXNzLndpbmRvdy1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDUtMjggIFJvYiBCdWlzICA8cmJ1
aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJraXQgZG9lc24ndCBjYWxjdWxhdGUgcGFkZGlu
Zy10b3AvLWJvdHRvbSBpbiAlIGNvcnJlY3RseSB3aGVuIHBhcmVudCBoYXMgcGFkZGluZwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YXNlc3Npb24vaWRsaGFybmVzcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYXNlc3Npb24vaWRsaGFybmVzcy53aW5k
b3ctZXhwZWN0ZWQudHh0CmluZGV4IDcxZGJjYzM4ZDM5MTliYjNjMGIzNjI4YzRkMTBkZDI2NDc5
MTVjZTguLmZlYzZkNjQzODllZGUxYzIwZDRmMjYyMzU3ZjEyNjJjNzExYTAxMzUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFzZXNz
aW9uL2lkbGhhcm5lc3Mud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhc2Vzc2lvbi9pZGxoYXJuZXNzLndpbmRv
dy1leHBlY3RlZC50eHQKQEAgLTEyLDE0ICsxMiwxMCBAQCBQQVNTIE5hdmlnYXRvciBpbmNsdWRl
cyBOYXZpZ2F0b3JDb250ZW50VXRpbHM6IG1lbWJlciBuYW1lcyBhcmUgdW5pcXVlCiBQQVNTIE5h
dmlnYXRvciBpbmNsdWRlcyBOYXZpZ2F0b3JDb29raWVzOiBtZW1iZXIgbmFtZXMgYXJlIHVuaXF1
ZQogUEFTUyBOYXZpZ2F0b3IgaW5jbHVkZXMgTmF2aWdhdG9yUGx1Z2luczogbWVtYmVyIG5hbWVz
IGFyZSB1bmlxdWUKIFBBU1MgTmF2aWdhdG9yIGluY2x1ZGVzIE5hdmlnYXRvckNvbmN1cnJlbnRI
YXJkd2FyZTogbWVtYmVyIG5hbWVzIGFyZSB1bmlxdWUKLUZBSUwgTWVkaWFTZXNzaW9uIGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgYXNzZXJ0
X2VxdWFsczogcHJvdG90eXBlIG9mIHNlbGYncyBwcm9wZXJ0eSAiTWVkaWFTZXNzaW9uIiBpcyBu
b3QgRnVuY3Rpb24ucHJvdG90eXBlIGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7Ci0g
ICAgW25hdGl2ZSBjb2RlXQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24gRXZlbnRUYXJn
ZXQoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIKK1BBU1MgTWVkaWFTZXNzaW9uIGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QKIFBBU1MgTWVk
aWFTZXNzaW9uIGludGVyZmFjZSBvYmplY3QgbGVuZ3RoCiBQQVNTIE1lZGlhU2Vzc2lvbiBpbnRl
cmZhY2Ugb2JqZWN0IG5hbWUKLUZBSUwgTWVkaWFTZXNzaW9uIGludGVyZmFjZTogZXhpc3RlbmNl
IGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGFzc2VydF9lcXVh
bHM6IHByb3RvdHlwZSBvZiBNZWRpYVNlc3Npb24ucHJvdG90eXBlIGlzIG5vdCBPYmplY3QucHJv
dG90eXBlIGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBPYmplY3RdIiBidXQgZ290IG9iamVjdCAi
W29iamVjdCBFdmVudFRhcmdldF0iCitQQVNTIE1lZGlhU2Vzc2lvbiBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdAogUEFTUyBN
ZWRpYVNlc3Npb24gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5CiBQQVNTIE1lZGlh
U2Vzc2lvbiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkKIFBBU1MgTWVkaWFTZXNz
aW9uIGludGVyZmFjZTogYXR0cmlidXRlIG1ldGFkYXRhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4
dAppbmRleCAxZTQ3OGJhOGFhYTdiMTdiNTljMTZhNjQ4NzY2NTA2ZGJmNjQzZmQ2Li4zYzQ5YTVh
YTk0ODU1YjI0NGFmZmJjZjA3Y2NmNmRkMWFlOTAxNmFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci1leHBlY3Rl
ZC50eHQKQEAgLTEsMTMgKzEsMTIgQEAKIAotKiogVGhlcmUgc2hvdWxkIGJlIG5vIG1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvciBpbml0aWFsbHkuCi1FWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvciA9PSAndW5kZWZpbmVkJykgT0sKKyoqIFRoZXJlIG1lZGlhU2Vzc2lv
bi5jb29yZGluYXRvci5zdGF0ZSBzaG91bGQgYmUgY2xvc2VkIGluaXRpYWxseS4KK0VYUEVDVEVE
IChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlID09ICdjbG9zZWQnKSBP
SwogCi0qKiBUZXN0IHRoYXQgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yY2hhbmdlIGV2ZW50IGlz
IGZpcmVkIHdoZW4gaXQgY2hhbmdlcy4KKyoqIFRlc3QgdGhhdCBtZWRpYVNlc3Npb24uY29vcmRp
bmF0b3IuY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIGl0IGNoYW5n
ZXMuCiBSVU4oaW50ZXJuYWxzLnJlZ2lzdGVyTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKGNo
YW5nZUhhbmRsZXIpKQotRVZFTlQoY29vcmRpbmF0b3JjaGFuZ2UpCi1FWFBFQ1RFRCAobmF2aWdh
dG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvciAhPSAndW5kZWZpbmVkJykgT0sKK0VWRU5UKGNv
b3JkaW5hdG9yc3RhdGVjaGFuZ2UgU1RBVEUod2FpdGluZykKIAotKiogbmF2aWdhdG9yLm1lZGlh
U2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBzaG91bGQgYmUgIndhaXRpbmciIGludGl0aWFsbHkK
KyoqIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlICJ3
YWl0aW5nIiBpbml0aWFsbHkKIEVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3Jk
aW5hdG9yLnN0YXRlID09ICd3YWl0aW5nJykgT0sKIAogKiogVGVzdCB0aGF0IHdoZW4gY29vcmRp
bmF0b3IgbWV0aG9kcyBmYWlsIGFuZCBwcm9taXNlcyByZWplY3QgYmVmb3JlIG1lZGlhU2Vzc2lv
bi5qb2luKCkgaXMgY2FsbGVkLgpAQCAtNzgsOSArNzcsOSBAQCBFWFBFQ1RFRCAobGF0ZXN0Q2hh
bmdlID09ICcnKSBPSwogCiBSVU4oaW50ZXJuYWxzLnNldE1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvckNvbW1hbmRzU2hvdWxkRmFpbChmYWxzZSkpCiBSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5t
ZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuam9pbigpKQorRVZFTlQoY29vcmRpbmF0b3JzdGF0ZWNo
YW5nZSBTVEFURShqb2luZWQpCiBQcm9taXNlIHJlc29sdmVkIE9LCiBFWFBFQ1RFRCAobmF2aWdh
dG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSA9PSAnam9pbmVkJykgT0sKLUVYUEVD
VEVEIChsYXRlc3RDaGFuZ2UgPT0gJ2Nvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkJykgT0sKIAogKiog
VGVzdCB0aGF0IHdoZW4gY29vcmRpbmF0b3IgbWV0aG9kcyBzdWNjZWVkLCBwcm9taXNlcyByZXNv
bHZlIGFuZCBtZWRpYVNlc3Npb24gYWN0aW9uIGhhbmRsZXJzIGFyZSBjYWxsZWQuCiBSVU4ocHJv
bWlzZSA9IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IucGxheSgpKQpAQCAtMTQ5
LDggKzE0OCwxMSBAQCBFWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5wbGF5YmFja1N0
YXRlID09ICdub25lJykgT0sKIAogKiogTGVhdmUgdGhlIHNlc3Npb24KIFJVTihuYXZpZ2F0b3Iu
bWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmxlYXZlKCkpCitFWFBFQ1RFRCAobGF0ZXN0Q2hhbmdl
ID09ICdwbGF5YmFja1N0YXRlQ2hhbmdlZCcpIE9LCitFWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09
ICdwbGF5YmFja1N0YXRlQ2hhbmdlZCcpIE9LCitFWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09ICdw
bGF5YmFja1N0YXRlQ2hhbmdlZCcpIE9LCitFVkVOVChjb29yZGluYXRvcnN0YXRlY2hhbmdlIFNU
QVRFKGNsb3NlZCkKIEVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9y
LnN0YXRlID09ICdjbG9zZWQnKSBPSwotRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAnY29vcmRp
bmF0b3JTdGF0ZUNoYW5nZWQnKSBPSwogCiAqKiBUZXN0IHRoYXQgd2hlbiBjb29yZGluYXRvciBt
ZXRob2RzIGZhaWwgYW5kIHByb21pc2VzIHJlamVjdCBhZnRlciBtZWRpYVNlc3Npb24ubGVhdmUo
KSBoYXMgYmVlbiBjYWxsZWQuCiBSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYVNlc3Npb24u
Y29vcmRpbmF0b3IucGxheSgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1z
ZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbAppbmRleCA1ODVhNWVhOTQ5MTBkMGU1Y2E3M2Ni
M2RjZWNiZjIyZmI3OTkwN2Y5Li5kMDY1ZGIwMjYyY2I0YzEyODg0NGZjM2E4OWExOTdhMGIxNTA1
YmRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29v
cmRpbmF0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2st
Y29vcmRpbmF0b3IuaHRtbApAQCAtMzMsMjggKzMzLDI2IEBACiAKICAgICAgICAgbGV0IGNoYW5n
ZVByb21pc2UgPSAoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7Ci0gICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5hZGRFdmVudExp
c3RlbmVyKCdjb29yZGluYXRvcmNoYW5nZScsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoYEVWRU5UKCR7ZXZlbnQudHlwZX0pYCk7CisgICAgICAgICAgICAg
ICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5hZGRFdmVudExpc3RlbmVyKCdj
b29yZGluYXRvcnN0YXRlY2hhbmdlJywgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnNvbGVXcml0ZShgRVZFTlQoJHtldmVudC50eXBlfSBTVEFURSgke25hdmlnYXRvci5tZWRp
YVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGV9KWApOwogICAgICAgICAgICAgICAgICAgICByZXNv
bHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSwgeyBvbmNlOiB0
cnVlIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBhd2FpdCB3YWl0
Rm9yRGVidWdnZXIoKTsKIAogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwotICAgICAgICBjb25z
b2xlV3JpdGUoJyoqIFRoZXJlIHNob3VsZCBiZSBubyBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3Ig
aW5pdGlhbGx5LicpCisgICAgICAgIGNvbnNvbGVXcml0ZSgnKiogVGhlcmUgbWVkaWFTZXNzaW9u
LmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSBjbG9zZWQgaW5pdGlhbGx5LicpOwogCi0gICAg
ICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvcicsIHVu
ZGVmaW5lZCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5j
b29yZGluYXRvci5zdGF0ZScsICJjbG9zZWQiKTsKIAogICAgICAgICBjb25zb2xlV3JpdGUoJycp
OwotICAgICAgICBjb25zb2xlV3JpdGUoJyoqIFRlc3QgdGhhdCBtZWRpYVNlc3Npb24uY29vcmRp
bmF0b3JjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiBpdCBjaGFuZ2VzLicpCisgICAgICAgIGNv
bnNvbGVXcml0ZSgnKiogVGVzdCB0aGF0IG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5jb29yZGlu
YXRvcnN0YXRlY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gaXQgY2hhbmdlcy4nKTsKIAogICAg
ICAgICBydW4oJ2ludGVybmFscy5yZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcihj
aGFuZ2VIYW5kbGVyKScpOwogCiAgICAgICAgIGF3YWl0IGNoYW5nZVByb21pc2UoKTsKLSAgICAg
ICAgCi0gICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGlu
YXRvcicsIHVuZGVmaW5lZCwgJyE9Jyk7CiAKICAgICAgICAgWydwbGF5JywgJ3BhdXNlJywgJ3Nl
ZWt0byddLmZvckVhY2goYWN0aW9uID0+IHsKICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNl
c3Npb24uc2V0QWN0aW9uSGFuZGxlcihhY3Rpb24sIGFjdGlvbkRldGFpbHMgPT4gewpAQCAtMTIw
LDcgKzExOCw3IEBACiAKICAgICAgICAgLy8gQmVmb3JlIGpvaW5pbmcKICAgICAgICAgY29uc29s
ZVdyaXRlKCcnKTsKLSAgICAgICAgY29uc29sZVdyaXRlKCcqKiBuYXZpZ2F0b3IubWVkaWFTZXNz
aW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSAid2FpdGluZyIgaW50aXRpYWxseScpCisg
ICAgICAgIGNvbnNvbGVXcml0ZSgnKiogbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRv
ci5zdGF0ZSBzaG91bGQgYmUgIndhaXRpbmciIGluaXRpYWxseScpCiAgICAgICAgIHRlc3RFeHBl
Y3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZScsICd3YWl0aW5n
Jyk7CiAKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKQEAgLTE1OSw5ICsxNTcsOSBAQAogICAg
ICAgICBjb25zb2xlV3JpdGUoJycpOwogICAgICAgICBydW4oJ2ludGVybmFscy5zZXRNb2NrTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JDb21tYW5kc1Nob3VsZEZhaWwoZmFsc2UpJyk7CiAgICAgICAg
IHJ1bigncHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuam9pbigp
Jyk7CisgICAgICAgIGF3YWl0IGNoYW5nZVByb21pc2UoKTsKICAgICAgICAgYXdhaXQgc2hvdWxk
UmVzb2x2ZShwcm9taXNlKS50aGVuKCgpID0+IHsgfSkuY2F0Y2goKCkgPT4geyB9KTsKICAgICAg
ICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRl
JywgJ2pvaW5lZCcpOwotICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2xhdGVzdENoYW5nZScsICdjb29y
ZGluYXRvclN0YXRlQ2hhbmdlZCcpOwogCiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CiAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnKiogVGVzdCB0aGF0IHdoZW4gY29vcmRpbmF0b3IgbWV0aG9kcyBz
dWNjZWVkLCBwcm9taXNlcyByZXNvbHZlIGFuZCBtZWRpYVNlc3Npb24gYWN0aW9uIGhhbmRsZXJz
IGFyZSBjYWxsZWQuJykKQEAgLTE4OSw4ICsxODcsOSBAQAogICAgICAgICBjb25zb2xlV3JpdGUo
Jzxicj4nKTsKICAgICAgICAgY29uc29sZVdyaXRlKCcqKiBMZWF2ZSB0aGUgc2Vzc2lvbicpCiAg
ICAgICAgIHJ1bignbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5sZWF2ZSgpJyk7
CisgICAgICAgIGF3YWl0IGNoYW5nZVByb21pc2UoKTsKICAgICAgICAgdGVzdEV4cGVjdGVkKCdu
YXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlJywgJ2Nsb3NlZCcpOwotICAg
ICAgICBhd2FpdCB0ZXN0RXhwZWN0ZWRFdmVudHVhbGx5KCdsYXRlc3RDaGFuZ2UnLCAnY29vcmRp
bmF0b3JTdGF0ZUNoYW5nZWQnLCAnPT0nLCAxMDApOworCiAgICAgICAgIGxhdGVzdENoYW5nZSA9
ICcnOwogCiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430310</attachid>
            <date>2021-06-01 17:35:19 -0700</date>
            <delta_ts>2021-06-01 17:40:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226328-20210602103518.patch</filename>
            <type>text/plain</type>
            <size>34169</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3OWE0MDc2NjgwMTU1
ZWYwNWE1MGM2YTk0NTlmYmEyZTc5OGVkMi4uYjY5MDZhN2FmYmE4ZDA0NTRkN2FiNzQ3NTgwZDU5
Mzc2ZTMxNmU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
c3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVGhlIGNvb3JkaW5hdG9yIHdhcyBh
IHJlYWQtb25seSBvcHRpb25hbCBhdHRyaWJ1dGUgb2YgdGhlIE1lZGlhU2Vzc2lvbiBlbGVtZW50
LgorICAgICAgICBUZXN0aW5nIGlmIHRoZSBhdHRyaWJ1dGUgd2FzIHRvIGJlIHVzZWQgdG8gZGV0
ZXJtaW5lIGlmIGEgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IKKyAgICAgICAgd2FzIG5vdyBhdmFp
bGFibGUgYW5kIGZvciB0aGUgTWVkaWFTZXNzaW9uIHRvIGpvaW4gaXQuIFRoaXMgbWFkZSB0aGUg
dXNlIG9mIGFuIGV4dGVybmFsCisgICAgICAgIHBvbHlmaWxsIGRpZmZpY3VsdCBhbmQgZW5mb3Jj
aW5nIHRoZSB2YWxpZGl0eSBvZiBhbiB1c2VyIGNyZWF0ZWQgY3VzdG9tCisgICAgICAgIE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yIGR1ZSB0byBJREwgc2VtYW50aWNzIGxpbWl0YXRpb25zIGhhcmQu
CisgICAgICAgIFdlIGluc3RlYWQgYWx3YXlzIGNyZWF0ZSBhIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yIHdoaWNoIGluIGl0cyBkZWZhdWx0IHN0YXRlIGlzIENsb3NlZC4KKyAgICAgICAgT25jZSB0
aGlzIHN0YXRlIGlzIGNoYW5nZWQgdG8gV2FpdGluZyBhbmQgYW4gZXZlbnQgaXMgZmlyZSB0aGUg
TWVkaWFTZXNzaW9uIGNhbiBub3cKKyAgICAgICAgam9pbiBpdC4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6IE1lZGlhU2Vzc2lvbiBubyBsb25nZXIgbmVlZHMgdG8g
ZmlyZSBldmVudC4KKyAgICAgICAgUmVtb3ZlIG5vIGxvbmdlciBuZWNlc3NhcnkgaW5oZXJpdGFu
Y2UgYW5kIGFzeW5jIGV2ZW50IHF1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
OjpjcmVhdGUpOiBEcml2ZS1ieSBmaXgsIGRvbid0IGNhbGwgc3VzcGVuZElmTmVlZGVkKCkgaW4g
dGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpjcmVhdGVD
b29yZGluYXRvcik6IE1ha2UgbWV0aG9kIHByaXZhdGUuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246
OmNvb3JkaW5hdG9yIGNvbnN0KTogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgYWx3YXlzIGV4aXN0
cy4gUmV0dXJuIHJlZmVyZW5jZSBpbnN0ZWFkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5pZGw6IEFtZW5kIGRlZmluaXRpb24sIHJlbW92ZSBFdmVudEhhbmRs
ZXIKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNlc3Np
b25Db29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6c2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IuaWRsOiBBZGRlZCBuZXcgRXZlbnRIYW5kbGVyIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvck1peGluLmlkbDogVXBk
YXRlIGZvciBuZXcgQVBJIGRlZmluaXRpb24uCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoK
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRv
cik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6cmVnaXN0ZXJNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IpOgorCiAy
MDIxLTA1LTMxICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OKHIyNzgyNjEpOiBCcm9rZSB3aW5kb3dzIGJ1aWxkIC0gZm9sbG93LXVwIGZp
eApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5jcHAKaW5kZXggMWUxNGQ3Nzg1NDM2NmIwMDg2NjM1ZmNjOWRmZGExNTliNmI0ZGNhZS4u
NmU0OGI5MzY2OTUxMzI3OTgxNjdiOWM2YjQ3OTA3YTkxZDBiMmQ2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0x
MjgsMzcgKzEyOCwyOSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgUAogCiBSZWY8TWVkaWFTZXNz
aW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdhdG9yKSk7CisgICAgYXV0byBz
ZXNzaW9uID0gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdhdG9yKSk7CisgICAgc2Vz
c2lvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKIE1lZGlh
U2Vzc2lvbjo6TWVkaWFTZXNzaW9uKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KG5hdmlnYXRvci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX25h
dmlnYXRvcihtYWtlV2Vha1B0cihuYXZpZ2F0b3IpKQotICAgICwgbV9hc3luY0V2ZW50UXVldWUo
TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIG1fbG9n
Z2VyID0gbWFrZVJlZlB0cihEb2N1bWVudDo6c2hhcmVkTG9nZ2VyKCkpOwogICAgIG1fbG9nSWRl
bnRpZmllciA9IG5leHRMb2dJZGVudGlmaWVyKCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
Tl9DT09SRElOQVRPUikKICAgICBhdXRvKiBmcmFtZSA9IG5hdmlnYXRvci5mcmFtZSgpOwotICAg
IGlmIChhdXRvKiBwYWdlID0gZnJhbWUgPyBmcmFtZS0+cGFnZSgpIDogbnVsbHB0cikgewotICAg
ICAgICBpZiAoYXV0byBjb29yZGluYXRvclByaXZhdGUgPSBwYWdlLT5tZWRpYVNlc3Npb25Db29y
ZGluYXRvcigpKQotICAgICAgICAgICAgY3JlYXRlQ29vcmRpbmF0b3IoKmNvb3JkaW5hdG9yUHJp
dmF0ZSk7Ci0gICAgfQorICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUgPyBmcmFtZS0+cGFnZSgp
IDogbnVsbHB0cikKKyAgICAgICAgY3JlYXRlQ29vcmRpbmF0b3IocGFnZS0+bWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IoKSk7CiAjZW5kaWYKIAotICAgIHN1c3BlbmRJZk5lZWRlZCgpOwotCiAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIH0KIAogTWVkaWFTZXNzaW9uOjp+TWVkaWFTZXNz
aW9uKCkgPSBkZWZhdWx0OwogCi1ib29sIE1lZGlhU2Vzc2lvbjo6dmlydHVhbEhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5k
aW5nQWN0aXZpdHkoKTsKLX0KLQogdm9pZCBNZWRpYVNlc3Npb246OnN1c3BlbmQoUmVhc29uRm9y
U3VzcGVuc2lvbiByZWFzb24pCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFU
T1IpCkBAIC0yMDAsMTkgKzE5MiwxNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0UmVhZHlTdGF0
ZShNZWRpYVNlc3Npb25SZWFkeVN0YXRlIHN0YXRlKQogICAgIG5vdGlmeVJlYWR5U3RhdGVPYnNl
cnZlcnMoKTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb246OmNyZWF0ZUNvb3JkaW5hdG9yKFJlZjxN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgY29vcmRpbmF0b3JQcml2YXRlKQordm9p
ZCBNZWRpYVNlc3Npb246OmNyZWF0ZUNvb3JkaW5hdG9yKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZSogY29vcmRpbmF0b3JQcml2YXRlKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CiAKICAgICBpZiAobV9jb29yZGluYXRvcikKICAgICAgICAgbV9jb29yZGluYXRvci0+
c2V0TWVkaWFTZXNzaW9uKG51bGxwdHIpOwogCi0gICAgbV9jb29yZGluYXRvciA9IE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpjcmVhdGUoV1RGTW92ZShjb29yZGluYXRvclByaXZhdGUpKTsKLQot
ICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNl
c3Npb24odGhpcyk7Ci0KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvb3JkaW5hdG9yY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgIG1fY29vcmRpbmF0b3Ig
PSBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgY29vcmRpbmF0b3JQcml2YXRlKTsKKyAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNlc3Np
b24odGhpcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAppbmRleCAzZTY0NjA1M2M3Yjk4YTlhNjVjOTU2YTJl
ZmI1MjYyZTVkMGYzZWIwLi40NjYxYTliMDc0NTg5NTA2OThiMzdhMmQwMGJkNTZiZTNhMWEyMmY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb24uaApAQCAtMjgsOCArMjgsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNp
bmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiTWVkaWFQb3NpdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0
aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlci5oIgpAQCAtNTIsNyAr
NTEsNyBAQCBjbGFzcyBNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU7CiBjbGFzcyBOYXZp
Z2F0b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwogCi1j
bGFzcyBNZWRpYVNlc3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlc3Npb24+LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7Citj
bGFzcyBNZWRpYVNlc3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlc3Npb24+LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFTZXNzaW9uPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVNlc3Npb24+IGNyZWF0ZShOYXZpZ2F0b3ImKTsKQEAgLTgwLDggKzc5LDcgQEAgcHVibGlj
OgogICAgIE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVhZHlTdGF0ZTsgfTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFTZXNzaW9uUmVh
ZHlTdGF0ZSk7CiAKLSAgICBNZWRpYVNlc3Npb25Db29yZGluYXRvciogY29vcmRpbmF0b3IoKSBj
b25zdCB7IHJldHVybiBtX2Nvb3JkaW5hdG9yLmdldCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjcmVhdGVDb29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRl
PiYmKTsKKyAgICBNZWRpYVNlc3Npb25Db29yZGluYXRvciYgY29vcmRpbmF0b3IoKSBjb25zdCB7
IHJldHVybiAqbV9jb29yZGluYXRvcjsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTl9QTEFZTElTVCkKQEAgLTk4LDEwICs5Niw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IExv
Z2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CiAKLSAgICAv
LyBFdmVudFRhcmdldAotICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2luZyBSZWZD
b3VudGVkOjpkZXJlZjsKLQogICAgIGNsYXNzIE9ic2VydmVyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPE9ic2VydmVyPiB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigp
ID0gZGVmYXVsdDsKQEAgLTEzMCwxNSArMTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3Rp
ZnlBY3Rpb25IYW5kbGVyT2JzZXJ2ZXJzKCk7CiAgICAgdm9pZCBub3RpZnlSZWFkeVN0YXRlT2Jz
ZXJ2ZXJzKCk7CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBk
ZXJlZigpOyB9Ci0gICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVNlc3Npb25FdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIHZvaWQgY3JlYXRlQ29vcmRpbmF0b3IoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Ik1lZGlhU2Vzc2lvbiI7IH0KLSAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7
CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAKQEAgLTE1NSw3ICsxNDQsNiBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKIAogICAgIFdlYWtIYXNoU2V0PE9ic2Vy
dmVyPiBtX29ic2VydmVyczsKLSAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1
ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JE
SU5BVE9SKQogICAgIE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgTWVkaWFT
ZXNzaW9uUmVhZHlTdGF0ZTo6SGF2ZW5vdGhpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCmluZGV4IGJhYTA4MDg0NzBi
NGI4NjI3ZWFkYzM4MjNiNWEwZmIxYjVjYmE4N2MuLjU0OTQ2MTY5MzZkMDRiNTc1YzM3ZDg5MDEx
NDg1NDc0MmI0NDk4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbApAQCAtMjgsOCArMjgsNyBAQAogICAgIENvbmRpdGlv
bmFsPU1FRElBX1NFU1NJT04sCiAgICAgRXhwb3NlZD1XaW5kb3csCiAgICAgRXhwb3J0TWFjcm89
V0VCQ09SRV9FWFBPUlQsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGludGVyZmFjZSBN
ZWRpYVNlc3Npb24gOiBFdmVudFRhcmdldAorXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uCiB7CiAg
ICAgYXR0cmlidXRlIE1lZGlhTWV0YWRhdGE/IG1ldGFkYXRhOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29y
ZGluYXRvci5jcHAKaW5kZXggYmMwYjhiYjhkOTdkMWU1NmRhNGZmNmMzNzNhNDEzMWE0NTliYzNh
OC4uMDgzNGFjZjliMTM5ZjlkNGM0MTkxMjVlY2RkMmQ1NjQ4MDMxNTc1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElB
X1NFU1NJT05fQ09PUkRJTkFUT1IpCiAKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIkpTTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZS5oIgpAQCAtNDcsMjQgKzQ4
LDQ5IEBAIHN0YXRpYyBjb25zdCB2b2lkKiBuZXh0Q29vcmRpbmF0b3JMb2dJZGVudGlmaWVyKCkK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oKytsb2dJZGVudGlmaWVy
KTsKIH0KIAotUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6Y3JlYXRlKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0
ZUNvb3JkaW5hdG9yKQorUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0
cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGF1dG8gY29vcmRpbmF0b3IgPSBhZG9wdFJl
ZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKGNvbnRleHQsIFdURk1vdmUocHJpdmF0ZUNv
b3JkaW5hdG9yKSkpOworICAgIGNvb3JkaW5hdG9yLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICBy
ZXR1cm4gY29vcmRpbmF0b3I7CiB9CiAKLU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNl
c3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmIHBy
aXZhdGVDb29yZGluYXRvcikKLSAgICA6IG1fcHJpdmF0ZUNvb3JkaW5hdG9yKFdURk1vdmUocHJp
dmF0ZUNvb3JkaW5hdG9yKSkKK01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNlc3Npb25D
b29yZGluYXRvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKKyAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV9sb2dnZXIobWFrZVJlZihEb2N1bWVudDo6
c2hhcmVkTG9nZ2VyKCkpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKG5leHRDb29yZGluYXRvckxv
Z0lkZW50aWZpZXIoKSkKKyAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmlj
RXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCisgICAgaWYgKHByaXZhdGVDb29yZGluYXRvcikKKyAgICAgICAgc2V0TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcml2YXRlKCpwcml2YXRlQ29vcmRpbmF0b3IpOworfQorCit2b2lkIE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUo
UmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBwcml2YXRlQ29vcmRpbmF0b3Ip
Cit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBpZiAobV9wcml2YXRlQ29v
cmRpbmF0b3IpCisgICAgICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5sZWF2ZSgpOworICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yID0gV1RGTW92ZShwcml2YXRlQ29vcmRpbmF0b3IpOwogICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRMb2dnZXIobV9sb2dnZXIuY29weVJlZigpLCBtX2xvZ0lk
ZW50aWZpZXIpOwogICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRDbGllbnQobWFrZVdlYWtQ
dHIodGhpcykpOworICAgIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGU6OldhaXRpbmcpOwogfQogCiBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6fk1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OwogCit2b2lkIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgpCit7CisgICAgbV9oYXNDb29yZGlu
YXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVuZXIgPSBoYXNFdmVudExpc3RlbmVycyhldmVudE5h
bWVzKCkuY29vcmRpbmF0b3JzdGF0ZWNoYW5nZUV2ZW50KTsKK30KKworYm9vbCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAg
Ly8gTmVlZCB0byBrZWVwIHRoZSBKUyB3cmFwcGVyIGFsaXZlIGFzIGxvbmcgYXMgaXQgbWF5IHN0
aWxsIGZpcmUgZXZlbnRzIGluIHRoZSBmdXR1cmUuCisgICAgcmV0dXJuIHNob3VsZEZpcmVFdmVu
dHMoKTsKK30KKwogdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lE
RU5USUZJRVI7CkBAIC03NSw2ICsxMDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
Ojpqb2luKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJVbmFi
bGUgdG8gam9pbiB3aGVuIHN0YXRlIGlzICIsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKG1f
c3RhdGUpKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBBU1NFUlQobV9wcml2YXRl
Q29vcmRpbmF0b3IsICJXZSBtdXN0IGJlIGluIFdhaXRpbmcgc3RhdGUgaWYgbm8gcHJpdmF0ZSBj
b29yZGluYXRvciBpcyBzZXQiKTsKIAogICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2luKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Nlc3Npb24pIHsKQEAgLTg4
LDcgKzExNSw4IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4oRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHByb3RlY3RlZFRoaXMtPm1fc3RhdGUgPSBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclN0YXRlOjpKb2luZWQ7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPmNvb3JkaW5hdG9yU3Rh
dGVDaGFuZ2VkKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkpvaW5lZCk7CisKICAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CiB9CkBAIC0xMDcsNyArMTM1LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmxlYXZlKCkKIHZvaWQgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNsb3NlKCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOwotICAgIG1fc3RhdGUgPSBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpDbG9z
ZWQ7CisgICAgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JT
dGF0ZTo6Q2xvc2VkKTsKICAgICBpZiAoIW1fcHJpdmF0ZUNvb3JkaW5hdG9yKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTM4MSwxMiArNDA5LDIwIEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0aW9uSGFuCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKK2Jvb2wgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OnNob3VsZEZpcmVFdmVudHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2hhc0Nvb3Jk
aW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lciAmJiBtX3Nlc3Npb247Cit9CisKKwogdm9p
ZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZSkKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBzdGF0
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsKICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fc3RhdGUpOworICAgIGlmIChzaG91bGRGaXJlRXZlbnRzKCkpCisg
ICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY29vcmRpbmF0b3JzdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogYm9vbCBNZWRpYVNlc3Npb25Db29y
ZGluYXRvcjo6Y3VycmVudFBvc2l0aW9uQXBwcm94aW1hdGVseUVxdWFsVG8oZG91YmxlIHRpbWUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb25Db29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaAppbmRleCAzMzBjNGFlYjYwNTFlM2UzZGU4
YTRmOWFhYjA3MTVhNDYzNTI0YTliLi5hYTRiYzRlYjExZWQ2ZDk2YzM0MmYwM2ZiZjhlZDJlYTQ4
YTBlNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5lcmlj
RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGUuaCIKQEAgLTQxLDEwICs0NCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgRE9NUHJvbWlzZURlZmVycmVkOwogY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IKICAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPgogICAgICwgcHVi
bGljIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Ci0gICAgLCBwdWJsaWMgTWVkaWFTZXNz
aW9uOjpPYnNlcnZlciB7CisgICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uOjpPYnNlcnZlcgorICAg
ICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEgIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjcmVhdGUo
UmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShSZWY8TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsKIAogICAgIHZvaWQgam9pbihET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gbGVhdmUoKTsKQEAg
LTYyLDkgKzY5LDIyIEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yQ2xpZW50Ojp3ZWFrUHRyRmFjdG9yeTsKICAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQ6OldlYWtWYWx1ZVR5cGU7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFJlZjxNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByaXZhdGU+JiYpOworICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYm
KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFs
IHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7
IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIGV2ZW50TGlzdGVuZXJzRGlkQ2hh
bmdlKCkgZmluYWw7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yIjsgfQorICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
IGZpbmFsOwogCiAgICAgLy8gTWVkaWFTZXNzaW9uOjpPYnNlcnZlcgogICAgIHZvaWQgbWV0YWRh
dGFDaGFuZ2VkKGNvbnN0IFJlZlB0cjxNZWRpYU1ldGFkYXRhPiYpIGZpbmFsOwpAQCAtODUsMTIg
KzEwNSwxNSBAQCBwcml2YXRlOgogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBzdGF0aWMgV1RGTG9nQ2hhbm5lbCYg
bG9nQ2hhbm5lbCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSB7IHJl
dHVybiAiTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IiOyB9CisgICAgYm9vbCBzaG91bGRGaXJlRXZl
bnRzKCkgY29uc3Q7CiAKICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAg
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgbV9zdGF0ZSB7IE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGU6OldhaXRpbmcgfTsKICAgICBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcml2YXRlPiBtX3ByaXZhdGVDb29yZGluYXRvcjsKLSAgICBSZWY8Y29uc3QgTG9nZ2VyPiBt
X2xvZ2dlcjsKKyAgICBjb25zdCBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25z
dCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmlj
RXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JTdGF0ZSBtX3N0YXRlIHsgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6Q2xvc2VkIH07
CisgICAgYm9vbCBtX2hhc0Nvb3JkaW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lciB7IGZh
bHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwKaW5kZXggMjExODI3
MDNkMWIwZDg3MmYyMzdkYmFhMDNkZGU1NjFjZmU2ZDVjYS4uMDg4MWMwNmZkMmNhYzJhYWRkZGNi
M2RhMDljNGJjMjMxYTQ5ZTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbApAQCAt
MjQsMTYgKzI0LDIwIEBACiAgKi8KIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25k
aXRpb25hbD1NRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SLAogICAgIEVuYWJsZWRCeVNldHRpbmc9
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IsCiAgICAgRXhwb3NlZD1XaW5kb3csCiAgICAgRXhwb3J0
TWFjcm89V0VCQ09SRV9FWFBPUlQsCi1dIGludGVyZmFjZSBNZWRpYVNlc3Npb25Db29yZGluYXRv
ciB7CisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVNlc3Npb25D
b29yZGluYXRvciA6IEV2ZW50VGFyZ2V0IHsKIAogICAgIFByb21pc2U8dW5kZWZpbmVkPiBqb2lu
KCk7CiAgICAgdW5kZWZpbmVkIGxlYXZlKCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9uY29vcmRpbmF0b3JzdGF0ZWNoYW5nZTsKKyAgICAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nPyBpZGVudGlmaWVyOwogCiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IHNlZWtU
byh1bnJlc3RyaWN0ZWQgZG91YmxlIHRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhpbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRv
ck1peGluLmlkbAppbmRleCBmZGRmMDU2MDM0YjEwNGVmMmMxOGM0NzY5YWZiMWU3OWEwNjMyMmFh
Li4yNGI5ZTMwOTdjZWJjYzdhNGZiMzFhYWFmOGZhNjA0ZjUxMjAxYmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRv
ck1peGluLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb25Db29yZGluYXRvck1peGluLmlkbApAQCAtMjcsNyArMjcsNiBAQAogICAgIENvbmRp
dGlvbmFsPU1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1N
ZWRpYVNlc3Npb25Db29yZGluYXRvciwKIF0gaW50ZXJmYWNlIG1peGluIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yTWl4aW4gewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVNlc3Npb25Db29y
ZGluYXRvcj8gY29vcmRpbmF0b3I7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNvb3Jk
aW5hdG9yY2hhbmdlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVNlc3Npb25Db29yZGlu
YXRvciBjb29yZGluYXRvcjsKICAgICBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBy
ZWFkeVN0YXRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGVjZGM4ODc5YTM5NDUx
OWNkZDUxMTM3MzliYzE1MmYyMDdlNWMyMDMuLjc4MzM2MDMyYTMyYWY2MTBkODI0ZjgyYTkzMzY1
MzFjMmJkMDMwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTAxLDcgKzEwMSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhjb25uZWN0aW5nKSBcCiAgICAgbWFjcm8o
Y29udGV4dG1lbnUpIFwKICAgICBtYWNybyhjb250cm9sbGVyY2hhbmdlKSBcCi0gICAgbWFjcm8o
Y29vcmRpbmF0b3JjaGFuZ2UpIFwKKyAgICBtYWNybyhjb29yZGluYXRvcnN0YXRlY2hhbmdlKSBc
CiAgICAgbWFjcm8oY29weSkgXAogICAgIG1hY3JvKGN1ZWNoYW5nZSkgXAogICAgIG1hY3JvKGN1
dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
biBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggYmU3OGNi
OGVkYzQ0MmMwZmRmZDRmNmY4MGNiMjg3NmZhMGY4ZTQ5NC4uYzI2YjliZTQyZjdiNGFiMTE5MTE3
MGIzZmZjYjBlMzAyZjM4ZmE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluCkBAIC0yMyw3ICsyMyw3IEBAIE1lZGlhRGV2aWNlcyBjb25kaXRpb25hbD1NRURJQV9T
VFJFQU0KIE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKIE1lZGlh
UXVlcnlMaXN0CiBNZWRpYVJlY29yZGVyIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQotTWVkaWFT
ZXNzaW9uIGNvbmRpdGlvbmFsPU1FRElBX1NFU1NJT04KK01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
IGNvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IKIE1lZGlhU291cmNlIGNvbmRp
dGlvbmFsPU1FRElBX1NPVVJDRQogTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CiBNZWRpYVN0cmVhbVRyYWNrIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggN2E5ZTljY2IyYmFkYzk5MmMxNjY1ODYzZDJhMjc1OTYzNGEyMDczMi4uOTRhNTRi
YjZmMGRjNWUxNmY4YjE3MzE2OGYwNGNlYzU2MmVlYWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0zNDI3LDcgKzM0MjcsNyBAQCB2b2lkIFBhZ2U6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
KFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgbWVkaQogCiAgICAgYXV0byog
d2luZG93ID0gbWFpbkZyYW1lKCkud2luZG93KCk7CiAgICAgaWYgKGF1dG8qIG5hdmlnYXRvciA9
IHdpbmRvdyA/IHdpbmRvdy0+b3B0aW9uYWxOYXZpZ2F0b3IoKSA6IG51bGxwdHIpCi0gICAgICAg
IE5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNyZWF0ZUNv
b3JkaW5hdG9yKCptX21lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKTsKKyAgICAgICAgTmF2aWdhdG9y
TWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24oKm5hdmlnYXRvcikuY29vcmRpbmF0b3IoKS5zZXRN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUoKm1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ip
OwogfQogCiB2b2lkIFBhZ2U6OmludmFsaWRhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcigpCkBA
IC0zNDQxLDExICszNDQxLDcgQEAgdm9pZCBQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IoKQogICAgIGlmICghbmF2aWdhdG9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvKiBjb29yZGluYXRvciA9IE5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpu
YXZpZ2F0b3IpLmNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCFjb29yZGluYXRvcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgY29vcmRpbmF0b3ItPmNsb3NlKCk7CisgICAgTmF2aWdhdG9yTWVkaWFT
ZXNzaW9uOjptZWRpYVNlc3Npb24oKm5hdmlnYXRvcikuY29vcmRpbmF0b3IoKS5jbG9zZSgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBmNTYyYjFl
ZTNhN2ZlOTRjMDBhZDRmOGJkMjI0OTg0Y2RiZjhiNmNhLi5hZTI0NWYwOTk4YjllZTI4YTNjZGJm
NjQ5NTZjYmFmM2Q0YTkzZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC02MjQ2LDcgKzYyNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnJlZ2lzdGVy
TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFNjcmlwdEV4ZWN1dGlvbgogICAgIGF1dG8mIHNl
c3Npb24gPSBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbihkb2N1bWVudC0+ZG9t
V2luZG93KCktPm5hdmlnYXRvcigpKTsKICAgICBhdXRvIG1vY2sgPSBNb2NrTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKGxpc3RlbmVyKSk7CiAgICAgbV9t
b2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgPSBtb2NrLnB0cigpOwotICAgIHNlc3Npb24uY3Jl
YXRlQ29vcmRpbmF0b3IoV1RGTW92ZShtb2NrKSk7CisgICAgc2Vzc2lvbi5jb29yZGluYXRvcigp
LnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShXVEZNb3ZlKG1vY2spKTsKIAogICAg
IHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggN2RiODViNzM3MDBlY2IxY2Q1ZDM5YmYyNTYwYWQ5ZDM5ZGFiMjQ0NC4uMjIx
ZDhkNGM0YTFlMmRkMjVhYWE1NjNmODdiYzQ3NmU3N2Y5NDliMCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1
LTI3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFT
ZXNzaW9uLmNvb3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29v
cmRpbmF0b3IgcmVhZHlTdGF0ZSBjaGFuZ2UgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzI4CisgICAgICAgIHJkYXI6Ly83NzQ2MTMz
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpjcmVh
dGVDb29yZGluYXRvcik6IENoYW5nZSB0ZXN0IHRvIG1hdGNoIG5ldyBBUEksCisgICAgICAgIHVz
aW5nIGNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UgZXZlbnQgaW5zdGVhZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sOgorCiAyMDIxLTA1
LTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIFVJIHByb2Nlc3MgY3Jhc2hlcyB3aGVuIGRlYWxsb2NhdGluZyBXS1dlYlZpZXcgaW4gYSBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVyIGR1cmluZyBhbiBhY3RpdmUgdG91Y2ggZXZlbnQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yVGVzdC5tbQppbmRleCA5YzY3OGE3NmQ1YzJjNzZjYzM4ZmZhYTVkMmVl
YTA1MmVkNDFkNjk5Li4xYzk2YThmNmYzNTE1MWQ1N2E1NGJkNGYxNTRiMjk1MjcwNmVhY2E4IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25D
b29yZGluYXRvclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tCkBAIC0yMTIsMTQgKzIxMiwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIH1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OwogCi0gICAgICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAiY29vcmRpbmF0b3JjaGFuZ2Ui
X3MgfSk7CisgICAgICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAiY29vcmRpbmF0b3JzdGF0
ZWNoYW5nZSJfcyB9KTsKIAogICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOwogICAgICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgICAgIE5TTG9nKEAiLVtfY3JlYXRlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JGb3JUZXN0aW5nOmNvbXBsZXRpb25IYW5kbGVyOl0gZmFpbGVkISIpOwogCi0gICAg
ICAgIHdhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNhbGxlZCgiY29vcmRpbmF0b3JjaGFuZ2UiX3Mp
OwotICAgICAgICBBU1NFUlRfVFJVRShldmVudExpc3RlbmVyV2FzQ2FsbGVkKCJjb29yZGluYXRv
cmNoYW5nZSJfcykpOworICAgICAgICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoImNv
b3JkaW5hdG9yc3RhdGVjaGFuZ2UiX3MpOworICAgICAgICBBU1NFUlRfVFJVRShldmVudExpc3Rl
bmVyV2FzQ2FsbGVkKCJjb29yZGluYXRvcnN0YXRlY2hhbmdlIl9zKSk7CiAgICAgfQogCiAgICAg
VGVzdFdLV2ViVmlldyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIF93ZWJWaWV3LmdldCgpOyB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlh
LXJlbW90ZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRp
YS1yZW1vdGUuaHRtbAppbmRleCBmZDRkOTk2YTFiYjFiNDgwOWZmZmM2MjUyZTBlNDQ5YTA0NDVl
YmZiLi4wYjc2MjdhNWVmYTI5ZjU3M2M1MjQ4N2ZhNDMwMDE1ZmM5ZTkxZjYyIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1s
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3Rl
Lmh0bWwKQEAgLTk2LDcgKzk2LDcgQEAKICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShtZXNzYWdlKTsKICAgICAgICAg
fQogCi0gICAgICAgIGZ1bmN0aW9uIHBvc3RFdmVudChldnQpIAorICAgICAgICBmdW5jdGlvbiBw
b3N0RXZlbnQoZXZ0KQogICAgICAgICB7CiAgICAgICAgICAgICBwb3N0TWVzc2FnZShgJHtldnQu
dHlwZX0gZXZlbnRgKTsKICAgICAgICAgfQpAQCAtMTM1LDcgKzEzNSw3IEBACiAgICAgICAgICAg
ICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgcG9zdEV2ZW50KTsKICAgICAgICAgICAg
IGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgcG9zdEV2ZW50KTsKICAgICAgICAgICAg
IGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3NlZWtlZCcsIHBvc3RFdmVudCk7Ci0gICAgICAgICAg
ICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9yY2hh
bmdlJywgcG9zdEV2ZW50KTsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29v
cmRpbmF0b3IuYWRkRXZlbnRMaXN0ZW5lcignY29vcmRpbmF0b3JzdGF0ZWNoYW5nZScsIHBvc3RF
dmVudCk7CiAgICAgICAgIH0sIGZhbHNlKTsKIAogICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUwZWMw
NTk2NDIxZTc5N2FlZWJiYTJmZmM5Mjc1OTBkNzdiYmZmMDYuLjEzMDMwMDFiZWMzYWI2OTBiYjFl
YzE1MjcyNDZjMGJjZTQ2MzhkMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0yNyAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vzc2lv
bi5jb29yZGluYXRvciBzaG91bGQgbm90IGJlIG9wdGlvbmFsLCByZWx5aW5nIG9uIGNvb3JkaW5h
dG9yIHJlYWR5U3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBtZWRpYS9tZWRp
YS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlh
L21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5odG1sOiBDaGFuZ2UgdGVzdCB0byBtYXRj
aCBuZXcgQVBJLgorCiAyMDIxLTA1LTMxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3ODI2MS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDQ5YTI2MWI0MjNlZGViZmJiODYwYjA3NGM1MTVk
NTc0MTc3ZjIwM2IuLmNiMzQzOThiNmIwOWE0MmM2N2EyM2VkNjUxNTI4MmM4NTI2MzRiNDggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA1LTI4
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNz
aW9uLmNvb3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRp
bmF0b3Igc3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWFzZXNzaW9uL2lkbGhhcm5lc3Mud2luZG93LWV4cGVjdGVkLnR4dDoKKwogMjAy
MS0wNC0yOSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBFbmFibGUgPHN1bW1hcnk+IHRvIGJlIGEgZmxleCBjb250YWluZXIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFzZXNzaW9u
L2lkbGhhcm5lc3Mud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFzZXNzaW9uL2lkbGhhcm5lc3Mud2luZG93LWV4cGVj
dGVkLnR4dAppbmRleCA3MWRiY2MzOGQzOTE5YmIzYzBiMzYyOGM0ZDEwZGQyNjQ3OTE1Y2U4Li5m
ZWM2ZDY0Mzg5ZWRlMWMyMGQ0ZjI2MjM1N2YxMjYyYzcxMWEwMTM1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhc2Vzc2lvbi9pZGxo
YXJuZXNzLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYXNlc3Npb24vaWRsaGFybmVzcy53aW5kb3ctZXhwZWN0
ZWQudHh0CkBAIC0xMiwxNCArMTIsMTAgQEAgUEFTUyBOYXZpZ2F0b3IgaW5jbHVkZXMgTmF2aWdh
dG9yQ29udGVudFV0aWxzOiBtZW1iZXIgbmFtZXMgYXJlIHVuaXF1ZQogUEFTUyBOYXZpZ2F0b3Ig
aW5jbHVkZXMgTmF2aWdhdG9yQ29va2llczogbWVtYmVyIG5hbWVzIGFyZSB1bmlxdWUKIFBBU1Mg
TmF2aWdhdG9yIGluY2x1ZGVzIE5hdmlnYXRvclBsdWdpbnM6IG1lbWJlciBuYW1lcyBhcmUgdW5p
cXVlCiBQQVNTIE5hdmlnYXRvciBpbmNsdWRlcyBOYXZpZ2F0b3JDb25jdXJyZW50SGFyZHdhcmU6
IG1lbWJlciBuYW1lcyBhcmUgdW5pcXVlCi1GQUlMIE1lZGlhU2Vzc2lvbiBpbnRlcmZhY2U6IGV4
aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IGFzc2VydF9lcXVhbHM6
IHByb3RvdHlwZSBvZiBzZWxmJ3MgcHJvcGVydHkgIk1lZGlhU2Vzc2lvbiIgaXMgbm90IEZ1bmN0
aW9uLnByb3RvdHlwZSBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgewotICAgIFtuYXRp
dmUgY29kZV0KLX0iIGJ1dCBnb3QgZnVuY3Rpb24gImZ1bmN0aW9uIEV2ZW50VGFyZ2V0KCkgewot
ICAgIFtuYXRpdmUgY29kZV0KLX0iCitQQVNTIE1lZGlhU2Vzc2lvbiBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0CiBQQVNTIE1lZGlhU2Vzc2lv
biBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aAogUEFTUyBNZWRpYVNlc3Npb24gaW50ZXJmYWNlIG9i
amVjdCBuYW1lCi1GQUlMIE1lZGlhU2Vzc2lvbiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJv
cGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBwcm90
b3R5cGUgb2YgTWVkaWFTZXNzaW9uLnByb3RvdHlwZSBpcyBub3QgT2JqZWN0LnByb3RvdHlwZSBl
eHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgYnV0IGdvdCBvYmplY3QgIltvYmplY3Qg
RXZlbnRUYXJnZXRdIgorUEFTUyBNZWRpYVNlc3Npb24gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5k
IHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKIFBBU1MgTWVkaWFTZXNz
aW9uIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90
b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eQogUEFTUyBNZWRpYVNlc3Npb24g
aW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlw
ZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5CiBQQVNTIE1lZGlhU2Vzc2lvbiBpbnRl
cmZhY2U6IGF0dHJpYnV0ZSBtZXRhZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci1leHBlY3RlZC50eHQKaW5kZXgg
MWU0NzhiYThhYWE3YjE3YjU5YzE2YTY0ODc2NjUwNmRiZjY0M2ZkNi4uM2M0OWE1YWE5NDg1NWIy
NDRhZmZiY2YwN2NjZjZkZDFhZTkwMTZhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0CkBA
IC0xLDEzICsxLDEyIEBACiAKLSoqIFRoZXJlIHNob3VsZCBiZSBubyBtZWRpYVNlc3Npb24uY29v
cmRpbmF0b3IgaW5pdGlhbGx5LgotRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29v
cmRpbmF0b3IgPT0gJ3VuZGVmaW5lZCcpIE9LCisqKiBUaGVyZSBtZWRpYVNlc3Npb24uY29vcmRp
bmF0b3Iuc3RhdGUgc2hvdWxkIGJlIGNsb3NlZCBpbml0aWFsbHkuCitFWFBFQ1RFRCAobmF2aWdh
dG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSA9PSAnY2xvc2VkJykgT0sKIAotKiog
VGVzdCB0aGF0IG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvcmNoYW5nZSBldmVudCBpcyBmaXJlZCB3
aGVuIGl0IGNoYW5nZXMuCisqKiBUZXN0IHRoYXQgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmNv
b3JkaW5hdG9yc3RhdGVjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiBpdCBjaGFuZ2VzLgogUlVO
KGludGVybmFscy5yZWdpc3Rlck1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcihjaGFuZ2VIYW5k
bGVyKSkKLUVWRU5UKGNvb3JkaW5hdG9yY2hhbmdlKQotRVhQRUNURUQgKG5hdmlnYXRvci5tZWRp
YVNlc3Npb24uY29vcmRpbmF0b3IgIT0gJ3VuZGVmaW5lZCcpIE9LCitFVkVOVChjb29yZGluYXRv
cnN0YXRlY2hhbmdlIFNUQVRFKHdhaXRpbmcpCiAKLSoqIG5hdmlnYXRvci5tZWRpYVNlc3Npb24u
Y29vcmRpbmF0b3Iuc3RhdGUgc2hvdWxkIGJlICJ3YWl0aW5nIiBpbnRpdGlhbGx5CisqKiBuYXZp
Z2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSAid2FpdGluZyIg
aW5pdGlhbGx5CiBFWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5z
dGF0ZSA9PSAnd2FpdGluZycpIE9LCiAKICoqIFRlc3QgdGhhdCB3aGVuIGNvb3JkaW5hdG9yIG1l
dGhvZHMgZmFpbCBhbmQgcHJvbWlzZXMgcmVqZWN0IGJlZm9yZSBtZWRpYVNlc3Npb24uam9pbigp
IGlzIGNhbGxlZC4KQEAgLTc4LDkgKzc3LDkgQEAgRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAn
JykgT0sKIAogUlVOKGludGVybmFscy5zZXRNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDb21t
YW5kc1Nob3VsZEZhaWwoZmFsc2UpKQogUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNz
aW9uLmNvb3JkaW5hdG9yLmpvaW4oKSkKK0VWRU5UKGNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UgU1RB
VEUoam9pbmVkKQogUHJvbWlzZSByZXNvbHZlZCBPSwogRVhQRUNURUQgKG5hdmlnYXRvci5tZWRp
YVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgPT0gJ2pvaW5lZCcpIE9LCi1FWFBFQ1RFRCAobGF0
ZXN0Q2hhbmdlID09ICdjb29yZGluYXRvclN0YXRlQ2hhbmdlZCcpIE9LCiAKICoqIFRlc3QgdGhh
dCB3aGVuIGNvb3JkaW5hdG9yIG1ldGhvZHMgc3VjY2VlZCwgcHJvbWlzZXMgcmVzb2x2ZSBhbmQg
bWVkaWFTZXNzaW9uIGFjdGlvbiBoYW5kbGVycyBhcmUgY2FsbGVkLgogUlVOKHByb21pc2UgPSBu
YXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnBsYXkoKSkKQEAgLTE0OSw4ICsxNDgs
MTEgQEAgRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24ucGxheWJhY2tTdGF0ZSA9PSAn
bm9uZScpIE9LCiAKICoqIExlYXZlIHRoZSBzZXNzaW9uCiBSVU4obmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvci5sZWF2ZSgpKQorRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAncGxh
eWJhY2tTdGF0ZUNoYW5nZWQnKSBPSworRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAncGxheWJh
Y2tTdGF0ZUNoYW5nZWQnKSBPSworRVhQRUNURUQgKGxhdGVzdENoYW5nZSA9PSAncGxheWJhY2tT
dGF0ZUNoYW5nZWQnKSBPSworRVZFTlQoY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSBTVEFURShjbG9z
ZWQpCiBFWFBFQ1RFRCAobmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSA9
PSAnY2xvc2VkJykgT0sKLUVYUEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJ2Nvb3JkaW5hdG9yU3Rh
dGVDaGFuZ2VkJykgT0sKIAogKiogVGVzdCB0aGF0IHdoZW4gY29vcmRpbmF0b3IgbWV0aG9kcyBm
YWlsIGFuZCBwcm9taXNlcyByZWplY3QgYWZ0ZXIgbWVkaWFTZXNzaW9uLmxlYXZlKCkgaGFzIGJl
ZW4gY2FsbGVkLgogUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5h
dG9yLnBsYXkoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24v
bW9jay1jb29yZGluYXRvci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9t
b2NrLWNvb3JkaW5hdG9yLmh0bWwKaW5kZXggNTg1YTVlYTk0OTEwZDBlNWNhNzNjYjNkY2VjYmYy
MmZiNzk5MDdmOS4uZDA2NWRiMDI2MmNiNGMxMjg4NDRmYzNhODlhMTk3YTBiMTUwNWJkYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9y
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5h
dG9yLmh0bWwKQEAgLTMzLDI4ICszMywyNiBAQAogCiAgICAgICAgIGxldCBjaGFuZ2VQcm9taXNl
ID0gKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewot
ICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcign
Y29vcmRpbmF0b3JjaGFuZ2UnLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKGBFVkVOVCgke2V2ZW50LnR5cGV9KWApOworICAgICAgICAgICAgICAgIG5hdmln
YXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IuYWRkRXZlbnRMaXN0ZW5lcignY29vcmRpbmF0
b3JzdGF0ZWNoYW5nZScsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoYEVWRU5UKCR7ZXZlbnQudHlwZX0gU1RBVEUoJHtuYXZpZ2F0b3IubWVkaWFTZXNzaW9u
LmNvb3JkaW5hdG9yLnN0YXRlfSlgKTsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwot
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKICAgICAgICAgYXdhaXQgd2FpdEZvckRlYnVn
Z2VyKCk7CiAKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKLSAgICAgICAgY29uc29sZVdyaXRl
KCcqKiBUaGVyZSBzaG91bGQgYmUgbm8gbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yIGluaXRpYWxs
eS4nKQorICAgICAgICBjb25zb2xlV3JpdGUoJyoqIFRoZXJlIG1lZGlhU2Vzc2lvbi5jb29yZGlu
YXRvci5zdGF0ZSBzaG91bGQgYmUgY2xvc2VkIGluaXRpYWxseS4nKTsKIAotICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3InLCB1bmRlZmluZWQp
OworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0
b3Iuc3RhdGUnLCAiY2xvc2VkIik7CiAKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKLSAgICAg
ICAgY29uc29sZVdyaXRlKCcqKiBUZXN0IHRoYXQgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yY2hh
bmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gaXQgY2hhbmdlcy4nKQorICAgICAgICBjb25zb2xlV3Jp
dGUoJyoqIFRlc3QgdGhhdCBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3IuY29vcmRpbmF0b3JzdGF0
ZWNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIGl0IGNoYW5nZXMuJyk7CiAKICAgICAgICAgcnVu
KCdpbnRlcm5hbHMucmVnaXN0ZXJNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoY2hhbmdlSGFu
ZGxlciknKTsKIAogICAgICAgICBhd2FpdCBjaGFuZ2VQcm9taXNlKCk7Ci0gICAgICAgIAotICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3InLCB1
bmRlZmluZWQsICchPScpOwogCiAgICAgICAgIFsncGxheScsICdwYXVzZScsICdzZWVrdG8nXS5m
b3JFYWNoKGFjdGlvbiA9PiB7CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnNl
dEFjdGlvbkhhbmRsZXIoYWN0aW9uLCBhY3Rpb25EZXRhaWxzID0+IHsKQEAgLTEyMCw3ICsxMTgs
NyBAQAogCiAgICAgICAgIC8vIEJlZm9yZSBqb2luaW5nCiAgICAgICAgIGNvbnNvbGVXcml0ZSgn
Jyk7Ci0gICAgICAgIGNvbnNvbGVXcml0ZSgnKiogbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29y
ZGluYXRvci5zdGF0ZSBzaG91bGQgYmUgIndhaXRpbmciIGludGl0aWFsbHknKQorICAgICAgICBj
b25zb2xlV3JpdGUoJyoqIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUg
c2hvdWxkIGJlICJ3YWl0aW5nIiBpbml0aWFsbHknKQogICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25h
dmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUnLCAnd2FpdGluZycpOwogCiAg
ICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CkBAIC0xNTksOSArMTU3LDkgQEAKICAgICAgICAgY29u
c29sZVdyaXRlKCcnKTsKICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0TW9ja01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yQ29tbWFuZHNTaG91bGRGYWlsKGZhbHNlKScpOwogICAgICAgICBydW4oJ3By
b21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmpvaW4oKScpOworICAg
ICAgICBhd2FpdCBjaGFuZ2VQcm9taXNlKCk7CiAgICAgICAgIGF3YWl0IHNob3VsZFJlc29sdmUo
cHJvbWlzZSkudGhlbigoKSA9PiB7IH0pLmNhdGNoKCgpID0+IHsgfSk7CiAgICAgICAgIHRlc3RF
eHBlY3RlZCgnbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZScsICdqb2lu
ZWQnKTsKLSAgICAgICAgdGVzdEV4cGVjdGVkKCdsYXRlc3RDaGFuZ2UnLCAnY29vcmRpbmF0b3JT
dGF0ZUNoYW5nZWQnKTsKIAogICAgICAgICBjb25zb2xlV3JpdGUoJycpOwogICAgICAgICBjb25z
b2xlV3JpdGUoJyoqIFRlc3QgdGhhdCB3aGVuIGNvb3JkaW5hdG9yIG1ldGhvZHMgc3VjY2VlZCwg
cHJvbWlzZXMgcmVzb2x2ZSBhbmQgbWVkaWFTZXNzaW9uIGFjdGlvbiBoYW5kbGVycyBhcmUgY2Fs
bGVkLicpCkBAIC0xODksOCArMTg3LDkgQEAKICAgICAgICAgY29uc29sZVdyaXRlKCc8YnI+Jyk7
CiAgICAgICAgIGNvbnNvbGVXcml0ZSgnKiogTGVhdmUgdGhlIHNlc3Npb24nKQogICAgICAgICBy
dW4oJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IubGVhdmUoKScpOworICAgICAg
ICBhd2FpdCBjaGFuZ2VQcm9taXNlKCk7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgnbmF2aWdhdG9y
Lm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZScsICdjbG9zZWQnKTsKLSAgICAgICAgYXdh
aXQgdGVzdEV4cGVjdGVkRXZlbnR1YWxseSgnbGF0ZXN0Q2hhbmdlJywgJ2Nvb3JkaW5hdG9yU3Rh
dGVDaGFuZ2VkJywgJz09JywgMTAwKTsKKwogICAgICAgICBsYXRlc3RDaGFuZ2UgPSAnJzsKIAog
ICAgICAgICBjb25zb2xlV3JpdGUoJycpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430311</attachid>
            <date>2021-06-01 17:40:39 -0700</date>
            <delta_ts>2021-06-01 18:20:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226328-20210602104038.patch</filename>
            <type>text/plain</type>
            <size>34167</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3OWE0MDc2NjgwMTU1
ZWYwNWE1MGM2YTk0NTlmYmEyZTc5OGVkMi4uYjY5MDZhN2FmYmE4ZDA0NTRkN2FiNzQ3NTgwZDU5
Mzc2ZTMxNmU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA1LTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29vcmRpbmF0b3Ig
c3RhdGUgY2hhbmdlIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjMyOAorICAgICAgICByZGFyOi8vNzc0NjEzMzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVGhlIGNvb3JkaW5hdG9yIHdhcyBh
IHJlYWQtb25seSBvcHRpb25hbCBhdHRyaWJ1dGUgb2YgdGhlIE1lZGlhU2Vzc2lvbiBlbGVtZW50
LgorICAgICAgICBUZXN0aW5nIGlmIHRoZSBhdHRyaWJ1dGUgd2FzIHRvIGJlIHVzZWQgdG8gZGV0
ZXJtaW5lIGlmIGEgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IKKyAgICAgICAgd2FzIG5vdyBhdmFp
bGFibGUgYW5kIGZvciB0aGUgTWVkaWFTZXNzaW9uIHRvIGpvaW4gaXQuIFRoaXMgbWFkZSB0aGUg
dXNlIG9mIGFuIGV4dGVybmFsCisgICAgICAgIHBvbHlmaWxsIGRpZmZpY3VsdCBhbmQgZW5mb3Jj
aW5nIHRoZSB2YWxpZGl0eSBvZiBhbiB1c2VyIGNyZWF0ZWQgY3VzdG9tCisgICAgICAgIE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yIGR1ZSB0byBJREwgc2VtYW50aWNzIGxpbWl0YXRpb25zIGhhcmQu
CisgICAgICAgIFdlIGluc3RlYWQgYWx3YXlzIGNyZWF0ZSBhIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yIHdoaWNoIGluIGl0cyBkZWZhdWx0IHN0YXRlIGlzIENsb3NlZC4KKyAgICAgICAgT25jZSB0
aGlzIHN0YXRlIGlzIGNoYW5nZWQgdG8gV2FpdGluZyBhbmQgYW4gZXZlbnQgaXMgZmlyZSB0aGUg
TWVkaWFTZXNzaW9uIGNhbiBub3cKKyAgICAgICAgam9pbiBpdC4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6IE1lZGlhU2Vzc2lvbiBubyBsb25nZXIgbmVlZHMgdG8g
ZmlyZSBldmVudC4KKyAgICAgICAgUmVtb3ZlIG5vIGxvbmdlciBuZWNlc3NhcnkgaW5oZXJpdGFu
Y2UgYW5kIGFzeW5jIGV2ZW50IHF1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
OjpjcmVhdGUpOiBEcml2ZS1ieSBmaXgsIGRvbid0IGNhbGwgc3VzcGVuZElmTmVlZGVkKCkgaW4g
dGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpjcmVhdGVD
b29yZGluYXRvcik6IE1ha2UgbWV0aG9kIHByaXZhdGUuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246
OmNvb3JkaW5hdG9yIGNvbnN0KTogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgYWx3YXlzIGV4aXN0
cy4gUmV0dXJuIHJlZmVyZW5jZSBpbnN0ZWFkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5pZGw6IEFtZW5kIGRlZmluaXRpb24sIHJlbW92ZSBFdmVudEhhbmRs
ZXIKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNlc3Np
b25Db29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6c2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IuaWRsOiBBZGRlZCBuZXcgRXZlbnRIYW5kbGVyIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvck1peGluLmlkbDogVXBk
YXRlIGZvciBuZXcgQVBJIGRlZmluaXRpb24uCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoK
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRv
cik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6cmVnaXN0ZXJNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IpOgorCiAy
MDIxLTA1LTMxICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OKHIyNzgyNjEpOiBCcm9rZSB3aW5kb3dzIGJ1aWxkIC0gZm9sbG93LXVwIGZp
eApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5jcHAKaW5kZXggMWUxNGQ3Nzg1NDM2NmIwMDg2NjM1ZmNjOWRmZGExNTliNmI0ZGNhZS4u
NmU0OGI5MzY2OTUxMzI3OTgxNjdiOWM2YjQ3OTA3YTkxZDBiMmQ2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0x
MjgsMzcgKzEyOCwyOSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgUAogCiBSZWY8TWVkaWFTZXNz
aW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdhdG9yKSk7CisgICAgYXV0byBz
ZXNzaW9uID0gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdhdG9yKSk7CisgICAgc2Vz
c2lvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKIE1lZGlh
U2Vzc2lvbjo6TWVkaWFTZXNzaW9uKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KG5hdmlnYXRvci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX25h
dmlnYXRvcihtYWtlV2Vha1B0cihuYXZpZ2F0b3IpKQotICAgICwgbV9hc3luY0V2ZW50UXVldWUo
TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIG1fbG9n
Z2VyID0gbWFrZVJlZlB0cihEb2N1bWVudDo6c2hhcmVkTG9nZ2VyKCkpOwogICAgIG1fbG9nSWRl
bnRpZmllciA9IG5leHRMb2dJZGVudGlmaWVyKCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
Tl9DT09SRElOQVRPUikKICAgICBhdXRvKiBmcmFtZSA9IG5hdmlnYXRvci5mcmFtZSgpOwotICAg
IGlmIChhdXRvKiBwYWdlID0gZnJhbWUgPyBmcmFtZS0+cGFnZSgpIDogbnVsbHB0cikgewotICAg
ICAgICBpZiAoYXV0byBjb29yZGluYXRvclByaXZhdGUgPSBwYWdlLT5tZWRpYVNlc3Npb25Db29y
ZGluYXRvcigpKQotICAgICAgICAgICAgY3JlYXRlQ29vcmRpbmF0b3IoKmNvb3JkaW5hdG9yUHJp
dmF0ZSk7Ci0gICAgfQorICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUgPyBmcmFtZS0+cGFnZSgp
IDogbnVsbHB0cikKKyAgICAgICAgY3JlYXRlQ29vcmRpbmF0b3IocGFnZS0+bWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IoKSk7CiAjZW5kaWYKIAotICAgIHN1c3BlbmRJZk5lZWRlZCgpOwotCiAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIH0KIAogTWVkaWFTZXNzaW9uOjp+TWVkaWFTZXNz
aW9uKCkgPSBkZWZhdWx0OwogCi1ib29sIE1lZGlhU2Vzc2lvbjo6dmlydHVhbEhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5k
aW5nQWN0aXZpdHkoKTsKLX0KLQogdm9pZCBNZWRpYVNlc3Npb246OnN1c3BlbmQoUmVhc29uRm9y
U3VzcGVuc2lvbiByZWFzb24pCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFU
T1IpCkBAIC0yMDAsMTkgKzE5MiwxNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0UmVhZHlTdGF0
ZShNZWRpYVNlc3Npb25SZWFkeVN0YXRlIHN0YXRlKQogICAgIG5vdGlmeVJlYWR5U3RhdGVPYnNl
cnZlcnMoKTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb246OmNyZWF0ZUNvb3JkaW5hdG9yKFJlZjxN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgY29vcmRpbmF0b3JQcml2YXRlKQordm9p
ZCBNZWRpYVNlc3Npb246OmNyZWF0ZUNvb3JkaW5hdG9yKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZSogY29vcmRpbmF0b3JQcml2YXRlKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CiAKICAgICBpZiAobV9jb29yZGluYXRvcikKICAgICAgICAgbV9jb29yZGluYXRvci0+
c2V0TWVkaWFTZXNzaW9uKG51bGxwdHIpOwogCi0gICAgbV9jb29yZGluYXRvciA9IE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpjcmVhdGUoV1RGTW92ZShjb29yZGluYXRvclByaXZhdGUpKTsKLQot
ICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNl
c3Npb24odGhpcyk7Ci0KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvb3JkaW5hdG9yY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgIG1fY29vcmRpbmF0b3Ig
PSBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgY29vcmRpbmF0b3JQcml2YXRlKTsKKyAgICBtX2Nvb3JkaW5hdG9yLT5zZXRNZWRpYVNlc3Np
b24odGhpcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAppbmRleCAzZTY0NjA1M2M3Yjk4YTlhNjVjOTU2YTJl
ZmI1MjYyZTVkMGYzZWIwLi40NjYxYTliMDc0NTg5NTA2OThiMzdhMmQwMGJkNTZiZTNhMWEyMmY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb24uaApAQCAtMjgsOCArMjgsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNp
bmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiTWVkaWFQb3NpdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0
aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlci5oIgpAQCAtNTIsNyAr
NTEsNyBAQCBjbGFzcyBNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU7CiBjbGFzcyBOYXZp
Z2F0b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwogCi1j
bGFzcyBNZWRpYVNlc3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlc3Npb24+LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7Citj
bGFzcyBNZWRpYVNlc3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlc3Npb24+LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFTZXNzaW9uPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVNlc3Npb24+IGNyZWF0ZShOYXZpZ2F0b3ImKTsKQEAgLTgwLDggKzc5LDcgQEAgcHVibGlj
OgogICAgIE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVhZHlTdGF0ZTsgfTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFTZXNzaW9uUmVh
ZHlTdGF0ZSk7CiAKLSAgICBNZWRpYVNlc3Npb25Db29yZGluYXRvciogY29vcmRpbmF0b3IoKSBj
b25zdCB7IHJldHVybiBtX2Nvb3JkaW5hdG9yLmdldCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjcmVhdGVDb29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRl
PiYmKTsKKyAgICBNZWRpYVNlc3Npb25Db29yZGluYXRvciYgY29vcmRpbmF0b3IoKSBjb25zdCB7
IHJldHVybiAqbV9jb29yZGluYXRvcjsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTl9QTEFZTElTVCkKQEAgLTk4LDEwICs5Niw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IExv
Z2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CiAKLSAgICAv
LyBFdmVudFRhcmdldAotICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2luZyBSZWZD
b3VudGVkOjpkZXJlZjsKLQogICAgIGNsYXNzIE9ic2VydmVyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPE9ic2VydmVyPiB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigp
ID0gZGVmYXVsdDsKQEAgLTEzMCwxNSArMTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3Rp
ZnlBY3Rpb25IYW5kbGVyT2JzZXJ2ZXJzKCk7CiAgICAgdm9pZCBub3RpZnlSZWFkeVN0YXRlT2Jz
ZXJ2ZXJzKCk7CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBk
ZXJlZigpOyB9Ci0gICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVNlc3Npb25FdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIHZvaWQgY3JlYXRlQ29vcmRpbmF0b3IoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Ik1lZGlhU2Vzc2lvbiI7IH0KLSAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7
CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAKQEAgLTE1NSw3ICsxNDQsNiBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKIAogICAgIFdlYWtIYXNoU2V0PE9ic2Vy
dmVyPiBtX29ic2VydmVyczsKLSAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1
ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JE
SU5BVE9SKQogICAgIE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgTWVkaWFT
ZXNzaW9uUmVhZHlTdGF0ZTo6SGF2ZW5vdGhpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCmluZGV4IGJhYTA4MDg0NzBi
NGI4NjI3ZWFkYzM4MjNiNWEwZmIxYjVjYmE4N2MuLjU0OTQ2MTY5MzZkMDRiNTc1YzM3ZDg5MDEx
NDg1NDc0MmI0NDk4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbApAQCAtMjgsOCArMjgsNyBAQAogICAgIENvbmRpdGlv
bmFsPU1FRElBX1NFU1NJT04sCiAgICAgRXhwb3NlZD1XaW5kb3csCiAgICAgRXhwb3J0TWFjcm89
V0VCQ09SRV9FWFBPUlQsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGludGVyZmFjZSBN
ZWRpYVNlc3Npb24gOiBFdmVudFRhcmdldAorXSBpbnRlcmZhY2UgTWVkaWFTZXNzaW9uCiB7CiAg
ICAgYXR0cmlidXRlIE1lZGlhTWV0YWRhdGE/IG1ldGFkYXRhOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29y
ZGluYXRvci5jcHAKaW5kZXggYmMwYjhiYjhkOTdkMWU1NmRhNGZmNmMzNzNhNDEzMWE0NTliYzNh
OC4uMDgzNGFjZjliMTM5ZjlkNGM0MTkxMjVlY2RkMmQ1NjQ4MDMxNTc1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElB
X1NFU1NJT05fQ09PUkRJTkFUT1IpCiAKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIkpTTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZS5oIgpAQCAtNDcsMjQgKzQ4
LDQ5IEBAIHN0YXRpYyBjb25zdCB2b2lkKiBuZXh0Q29vcmRpbmF0b3JMb2dJZGVudGlmaWVyKCkK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oKytsb2dJZGVudGlmaWVy
KTsKIH0KIAotUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6Y3JlYXRlKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0
ZUNvb3JkaW5hdG9yKQorUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0
cjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFdURk1v
dmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkpOworICAgIGF1dG8gY29vcmRpbmF0b3IgPSBhZG9wdFJl
ZigqbmV3IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKGNvbnRleHQsIFdURk1vdmUocHJpdmF0ZUNv
b3JkaW5hdG9yKSkpOworICAgIGNvb3JkaW5hdG9yLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICBy
ZXR1cm4gY29vcmRpbmF0b3I7CiB9CiAKLU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNl
c3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmIHBy
aXZhdGVDb29yZGluYXRvcikKLSAgICA6IG1fcHJpdmF0ZUNvb3JkaW5hdG9yKFdURk1vdmUocHJp
dmF0ZUNvb3JkaW5hdG9yKSkKK01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpNZWRpYVNlc3Npb25D
b29yZGluYXRvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKKyAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV9sb2dnZXIobWFrZVJlZihEb2N1bWVudDo6
c2hhcmVkTG9nZ2VyKCkpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKG5leHRDb29yZGluYXRvckxv
Z0lkZW50aWZpZXIoKSkKKyAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmlj
RXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCisgICAgaWYgKHByaXZhdGVDb29yZGluYXRvcikKKyAgICAgICAgc2V0TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcml2YXRlKCpwcml2YXRlQ29vcmRpbmF0b3IpOworfQorCit2b2lkIE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUo
UmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJiBwcml2YXRlQ29vcmRpbmF0b3Ip
Cit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBpZiAobV9wcml2YXRlQ29v
cmRpbmF0b3IpCisgICAgICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5sZWF2ZSgpOworICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yID0gV1RGTW92ZShwcml2YXRlQ29vcmRpbmF0b3IpOwogICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRMb2dnZXIobV9sb2dnZXIuY29weVJlZigpLCBtX2xvZ0lk
ZW50aWZpZXIpOwogICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRDbGllbnQobWFrZVdlYWtQ
dHIodGhpcykpOworICAgIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGU6OldhaXRpbmcpOwogfQogCiBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6fk1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OwogCit2b2lkIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgpCit7CisgICAgbV9oYXNDb29yZGlu
YXRvcnNTdGF0ZUNoYW5nZUV2ZW50TGlzdGVuZXIgPSBoYXNFdmVudExpc3RlbmVycyhldmVudE5h
bWVzKCkuY29vcmRpbmF0b3JzdGF0ZWNoYW5nZUV2ZW50KTsKK30KKworYm9vbCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAg
Ly8gTmVlZCB0byBrZWVwIHRoZSBKUyB3cmFwcGVyIGFsaXZlIGFzIGxvbmcgYXMgaXQgbWF5IHN0
aWxsIGZpcmUgZXZlbnRzIGluIHRoZSBmdXR1cmUuCisgICAgcmV0dXJuIHNob3VsZEZpcmVFdmVu
dHMoKTsKK30KKwogdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lE
RU5USUZJRVI7CkBAIC03NSw2ICsxMDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
Ojpqb2luKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJVbmFi
bGUgdG8gam9pbiB3aGVuIHN0YXRlIGlzICIsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKG1f
c3RhdGUpKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBBU1NFUlQobV9wcml2YXRl
Q29vcmRpbmF0b3IsICJXZSBtdXN0IGJlIGluIFdhaXRpbmcgc3RhdGUgaWYgbm8gcHJpdmF0ZSBj
b29yZGluYXRvciBpcyBzZXQiKTsKIAogICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2luKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Nlc3Npb24pIHsKQEAgLTg4
LDcgKzExNSw4IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4oRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHByb3RlY3RlZFRoaXMtPm1fc3RhdGUgPSBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclN0YXRlOjpKb2luZWQ7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPmNvb3JkaW5hdG9yU3Rh
dGVDaGFuZ2VkKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU6OkpvaW5lZCk7CisKICAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CiB9CkBAIC0xMDcsNyArMTM1LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmxlYXZlKCkKIHZvaWQgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNsb3NlKCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOwotICAgIG1fc3RhdGUgPSBNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpDbG9z
ZWQ7CisgICAgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JT
dGF0ZTo6Q2xvc2VkKTsKICAgICBpZiAoIW1fcHJpdmF0ZUNvb3JkaW5hdG9yKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTM4MSwxMiArNDA5LDIwIEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0aW9uSGFuCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKK2Jvb2wgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OnNob3VsZEZpcmVFdmVudHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2hhc0Nvb3Jk
aW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lciAmJiBtX3Nlc3Npb247Cit9CisKKwogdm9p
ZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZSkKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBzdGF0
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsKICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1fc3RhdGUpOworICAgIGlmIChzaG91bGRGaXJlRXZlbnRzKCkpCisg
ICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY29vcmRpbmF0b3JzdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogYm9vbCBNZWRpYVNlc3Npb25Db29y
ZGluYXRvcjo6Y3VycmVudFBvc2l0aW9uQXBwcm94aW1hdGVseUVxdWFsVG8oZG91YmxlIHRpbWUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb25Db29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaAppbmRleCAzMzBjNGFlYjYwNTFlM2UzZGU4
YTRmOWFhYjA3MTVhNDYzNTI0YTliLi5hYTRiYzRlYjExZWQ2ZDk2YzM0MmYwM2ZiZjhlZDJlYTQ4
YTBlNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5lcmlj
RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGUuaCIKQEAgLTQxLDEwICs0NCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgRE9NUHJvbWlzZURlZmVycmVkOwogY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IKICAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPgogICAgICwgcHVi
bGljIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Ci0gICAgLCBwdWJsaWMgTWVkaWFTZXNz
aW9uOjpPYnNlcnZlciB7CisgICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uOjpPYnNlcnZlcgorICAg
ICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEgIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjcmVhdGUo
UmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZT4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShSZWY8TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYmKTsKIAogICAgIHZvaWQgam9pbihET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gbGVhdmUoKTsKQEAg
LTYyLDkgKzY5LDIyIEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yQ2xpZW50Ojp3ZWFrUHRyRmFjdG9yeTsKICAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQ6OldlYWtWYWx1ZVR5cGU7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFJlZjxNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByaXZhdGU+JiYpOworICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlPiYm
KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFs
IHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7
IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIGV2ZW50TGlzdGVuZXJzRGlkQ2hh
bmdlKCkgZmluYWw7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yIjsgfQorICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
IGZpbmFsOwogCiAgICAgLy8gTWVkaWFTZXNzaW9uOjpPYnNlcnZlcgogICAgIHZvaWQgbWV0YWRh
dGFDaGFuZ2VkKGNvbnN0IFJlZlB0cjxNZWRpYU1ldGFkYXRhPiYpIGZpbmFsOwpAQCAtODUsMTIg
KzEwNSwxNSBAQCBwcml2YXRlOgogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBzdGF0aWMgV1RGTG9nQ2hhbm5lbCYg
bG9nQ2hhbm5lbCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSB7IHJl
dHVybiAiTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IiOyB9CisgICAgYm9vbCBzaG91bGRGaXJlRXZl
bnRzKCkgY29uc3Q7CiAKICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAg
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgbV9zdGF0ZSB7IE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGU6OldhaXRpbmcgfTsKICAgICBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcml2YXRlPiBtX3ByaXZhdGVDb29yZGluYXRvcjsKLSAgICBSZWY8Y29uc3QgTG9nZ2VyPiBt
X2xvZ2dlcjsKKyAgICBjb25zdCBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25z
dCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmlj
RXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CisgICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JTdGF0ZSBtX3N0YXRlIHsgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6Q2xvc2VkIH07
CisgICAgYm9vbCBtX2hhc0Nvb3JkaW5hdG9yc1N0YXRlQ2hhbmdlRXZlbnRMaXN0ZW5lciB7IGZh
bHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGwKaW5kZXggMjExODI3
MDNkMWIwZDg3MmYyMzdkYmFhMDNkZGU1NjFjZmU2ZDVjYS4uMDg4MWMwNmZkMmNhYzJhYWRkZGNi
M2RhMDljNGJjMjMxYTQ5ZTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbApAQCAt
MjQsMTYgKzI0LDIwIEBACiAgKi8KIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25k
aXRpb25hbD1NRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SLAogICAgIEVuYWJsZWRCeVNldHRpbmc9
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IsCiAgICAgRXhwb3NlZD1XaW5kb3csCiAgICAgRXhwb3J0
TWFjcm89V0VCQ09SRV9FWFBPUlQsCi1dIGludGVyZmFjZSBNZWRpYVNlc3Npb25Db29yZGluYXRv
ciB7CisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVNlc3Npb25D
b29yZGluYXRvciA6IEV2ZW50VGFyZ2V0IHsKIAogICAgIFByb21pc2U8dW5kZWZpbmVkPiBqb2lu
KCk7CiAgICAgdW5kZWZpbmVkIGxlYXZlKCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9uY29vcmRpbmF0b3JzdGF0ZWNoYW5nZTsKKyAgICAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nPyBpZGVudGlmaWVyOwogCiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IHNlZWtU
byh1bnJlc3RyaWN0ZWQgZG91YmxlIHRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JNaXhpbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRv
ck1peGluLmlkbAppbmRleCBmZGRmMDU2MDM0YjEwNGVmMmMxOGM0NzY5YWZiMWU3OWEwNjMyMmFh
Li4yNGI5ZTMwOTdjZWJjYzdhNGZiMzFhYWFmOGZhNjA0ZjUxMjAxYmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRv
ck1peGluLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb25Db29yZGluYXRvck1peGluLmlkbApAQCAtMjcsNyArMjcsNiBAQAogICAgIENvbmRp
dGlvbmFsPU1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1N
ZWRpYVNlc3Npb25Db29yZGluYXRvciwKIF0gaW50ZXJmYWNlIG1peGluIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yTWl4aW4gewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVNlc3Npb25Db29y
ZGluYXRvcj8gY29vcmRpbmF0b3I7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNvb3Jk
aW5hdG9yY2hhbmdlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVNlc3Npb25Db29yZGlu
YXRvciBjb29yZGluYXRvcjsKICAgICBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBy
ZWFkeVN0YXRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGVjZGM4ODc5YTM5NDUx
OWNkZDUxMTM3MzliYzE1MmYyMDdlNWMyMDMuLjc4MzM2MDMyYTMyYWY2MTBkODI0ZjgyYTkzMzY1
MzFjMmJkMDMwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTAxLDcgKzEwMSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhjb25uZWN0aW5nKSBcCiAgICAgbWFjcm8o
Y29udGV4dG1lbnUpIFwKICAgICBtYWNybyhjb250cm9sbGVyY2hhbmdlKSBcCi0gICAgbWFjcm8o
Y29vcmRpbmF0b3JjaGFuZ2UpIFwKKyAgICBtYWNybyhjb29yZGluYXRvcnN0YXRlY2hhbmdlKSBc
CiAgICAgbWFjcm8oY29weSkgXAogICAgIG1hY3JvKGN1ZWNoYW5nZSkgXAogICAgIG1hY3JvKGN1
dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
biBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggYmU3OGNi
OGVkYzQ0MmMwZmRmZDRmNmY4MGNiMjg3NmZhMGY4ZTQ5NC4uYzI2YjliZTQyZjdiNGFiMTE5MTE3
MGIzZmZjYjBlMzAyZjM4ZmE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluCkBAIC0yMyw3ICsyMyw3IEBAIE1lZGlhRGV2aWNlcyBjb25kaXRpb25hbD1NRURJQV9T
VFJFQU0KIE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKIE1lZGlh
UXVlcnlMaXN0CiBNZWRpYVJlY29yZGVyIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQotTWVkaWFT
ZXNzaW9uIGNvbmRpdGlvbmFsPU1FRElBX1NFU1NJT04KK01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
IGNvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IKIE1lZGlhU291cmNlIGNvbmRp
dGlvbmFsPU1FRElBX1NPVVJDRQogTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CiBNZWRpYVN0cmVhbVRyYWNrIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggN2E5ZTljY2IyYmFkYzk5MmMxNjY1ODYzZDJhMjc1OTYzNGEyMDczMi4uOTRhNTRi
YjZmMGRjNWUxNmY4YjE3MzE2OGYwNGNlYzU2MmVlYWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0zNDI3LDcgKzM0MjcsNyBAQCB2b2lkIFBhZ2U6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
KFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGU+JiYgbWVkaQogCiAgICAgYXV0byog
d2luZG93ID0gbWFpbkZyYW1lKCkud2luZG93KCk7CiAgICAgaWYgKGF1dG8qIG5hdmlnYXRvciA9
IHdpbmRvdyA/IHdpbmRvdy0+b3B0aW9uYWxOYXZpZ2F0b3IoKSA6IG51bGxwdHIpCi0gICAgICAg
IE5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpuYXZpZ2F0b3IpLmNyZWF0ZUNv
b3JkaW5hdG9yKCptX21lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKTsKKyAgICAgICAgTmF2aWdhdG9y
TWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24oKm5hdmlnYXRvcikuY29vcmRpbmF0b3IoKS5zZXRN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUoKm1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ip
OwogfQogCiB2b2lkIFBhZ2U6OmludmFsaWRhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcigpCkBA
IC0zNDQxLDExICszNDQxLDcgQEAgdm9pZCBQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IoKQogICAgIGlmICghbmF2aWdhdG9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvKiBjb29yZGluYXRvciA9IE5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKCpu
YXZpZ2F0b3IpLmNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCFjb29yZGluYXRvcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgY29vcmRpbmF0b3ItPmNsb3NlKCk7CisgICAgTmF2aWdhdG9yTWVkaWFT
ZXNzaW9uOjptZWRpYVNlc3Npb24oKm5hdmlnYXRvcikuY29vcmRpbmF0b3IoKS5jbG9zZSgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBmNTYyYjFl
ZTNhN2ZlOTRjMDBhZDRmOGJkMjI0OTg0Y2RiZjhiNmNhLi5hZTI0NWYwOTk4YjllZTI4YTNjZGJm
NjQ5NTZjYmFmM2Q0YTkzZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC02MjQ2LDcgKzYyNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnJlZ2lzdGVy
TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFNjcmlwdEV4ZWN1dGlvbgogICAgIGF1dG8mIHNl
c3Npb24gPSBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vzc2lvbihkb2N1bWVudC0+ZG9t
V2luZG93KCktPm5hdmlnYXRvcigpKTsKICAgICBhdXRvIG1vY2sgPSBNb2NrTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKGxpc3RlbmVyKSk7CiAgICAgbV9t
b2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgPSBtb2NrLnB0cigpOwotICAgIHNlc3Npb24uY3Jl
YXRlQ29vcmRpbmF0b3IoV1RGTW92ZShtb2NrKSk7CisgICAgc2Vzc2lvbi5jb29yZGluYXRvcigp
LnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZShXVEZNb3ZlKG1vY2spKTsKIAogICAg
IHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggN2RiODViNzM3MDBlY2IxY2Q1ZDM5YmYyNTYwYWQ5ZDM5ZGFiMjQ0NC4uYzU2
ZjQ0MzM1YjRmM2U3ZTgwMTkyOTdhYmE2NDk4NWMzNzU4ZDFkOSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1
LTI3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFT
ZXNzaW9uLmNvb3JkaW5hdG9yIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIHJlbHlpbmcgb24gY29v
cmRpbmF0b3IgcmVhZHlTdGF0ZSBjaGFuZ2UgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzI4CisgICAgICAgIHJkYXI6Ly83NzQ2MTMz
NQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6Y3JlYXRl
Q29vcmRpbmF0b3IpOiBDaGFuZ2UgdGVzdCB0byBtYXRjaCBuZXcgQVBJLAorICAgICAgICB1c2lu
ZyBjb29yZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50IGluc3RlYWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbDoKKwogMjAyMS0wNS0z
MCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBVSSBwcm9jZXNzIGNyYXNoZXMgd2hlbiBkZWFsbG9jYXRpbmcgV0tXZWJWaWV3IGluIGEgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlciBkdXJpbmcgYW4gYWN0aXZlIHRvdWNoIGV2ZW50CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGlu
YXRvclRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Np
b25Db29yZGluYXRvclRlc3QubW0KaW5kZXggOWM2NzhhNzZkNWMyYzc2Y2MzOGZmYWE1ZDJlZWEw
NTJlZDQxZDY5OS4uMWM5NmE4ZjZmMzUxNTFkNTdhNTRiZDRmMTU0YjI5NTI3MDZlYWNhOCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbQpAQCAtMjEyLDE0ICsyMTIsMTQgQEAgcHVibGlj
OgogICAgICAgICB9XTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
IAotICAgICAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgImNvb3JkaW5hdG9yY2hhbmdlIl9z
IH0pOworICAgICAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgImNvb3JkaW5hdG9yc3RhdGVj
aGFuZ2UiX3MgfSk7CiAKICAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKICAgICAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgICAgICBOU0xvZyhAIi1bX2NyZWF0ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yRm9yVGVzdGluZzpjb21wbGV0aW9uSGFuZGxlcjpdIGZhaWxlZCEiKTsKIAotICAgICAg
ICB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVDYWxsZWQoImNvb3JkaW5hdG9yY2hhbmdlIl9zKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgiY29vcmRpbmF0b3Jj
aGFuZ2UiX3MpKTsKKyAgICAgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJjb29y
ZGluYXRvcnN0YXRlY2hhbmdlIl9zKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZlbnRMaXN0ZW5l
cldhc0NhbGxlZCgiY29vcmRpbmF0b3JzdGF0ZWNoYW5nZSJfcykpOwogICAgIH0KIAogICAgIFRl
c3RXS1dlYlZpZXcqIHdlYlZpZXcoKSBjb25zdCB7IHJldHVybiBfd2ViVmlldy5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1y
ZW1vdGUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEt
cmVtb3RlLmh0bWwKaW5kZXggZmQ0ZDk5NmExYmIxYjQ4MDlmZmZjNjI1MmUwZTQ0OWEwNDQ1ZWJm
Yi4uMGI3NjI3YTVlZmEyOWY1NzNjNTI0ODdmYTQzMDAxNWZjOWU5MWY2MiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5o
dG1sCkBAIC05Niw3ICs5Niw3IEBACiAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgIH0K
IAotICAgICAgICBmdW5jdGlvbiBwb3N0RXZlbnQoZXZ0KSAKKyAgICAgICAgZnVuY3Rpb24gcG9z
dEV2ZW50KGV2dCkKICAgICAgICAgewogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoYCR7ZXZ0LnR5
cGV9IGV2ZW50YCk7CiAgICAgICAgIH0KQEAgLTEzNSw3ICsxMzUsNyBAQAogICAgICAgICAgICAg
YXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBvc3RFdmVudCk7CiAgICAgICAgICAgICBh
dWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBvc3RFdmVudCk7CiAgICAgICAgICAgICBh
dWRpby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBwb3N0RXZlbnQpOwotICAgICAgICAgICAg
bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCdjb29yZGluYXRvcmNoYW5n
ZScsIHBvc3RFdmVudCk7CisgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3Jk
aW5hdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9yc3RhdGVjaGFuZ2UnLCBwb3N0RXZl
bnQpOwogICAgICAgICB9LCBmYWxzZSk7CiAKICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMGVjMDU5
NjQyMWU3OTdhZWViYmEyZmZjOTI3NTkwZDc3YmJmZjA2Li4xMzAzMDAxYmVjM2FiNjkwYmIxZWMx
NTI3MjQ2YzBiY2U0NjM4ZDMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjcgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYVNlc3Npb24u
Y29vcmRpbmF0b3Igc2hvdWxkIG5vdCBiZSBvcHRpb25hbCwgcmVseWluZyBvbiBjb29yZGluYXRv
ciByZWFkeVN0YXRlIGNoYW5nZSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYzMjgKKyAgICAgICAgcmRhcjovLzc3NDYxMzM1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogbWVkaWEvbWVkaWEt
c2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS9t
ZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3IuaHRtbDogQ2hhbmdlIHRlc3QgdG8gbWF0Y2gg
bmV3IEFQSS4KKwogMjAyMS0wNS0zMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzgyNjEuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA0OWEyNjFiNDIzZWRlYmZiYjg2MGIwNzRjNTE1ZDU3
NDE3N2YyMDNiLi5jYjM0Mzk4YjZiMDlhNDJjNjdhMjNlZDY1MTUyODJjODUyNjM0YjQ4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNS0yOCAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vzc2lv
bi5jb29yZGluYXRvciBzaG91bGQgbm90IGJlIG9wdGlvbmFsLCByZWx5aW5nIG9uIGNvb3JkaW5h
dG9yIHN0YXRlIGNoYW5nZSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjYzMjgKKyAgICAgICAgcmRhcjovLzc3NDYxMzM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhc2Vzc2lvbi9pZGxoYXJuZXNzLndpbmRvdy1leHBlY3RlZC50eHQ6CisKIDIwMjEt
MDQtMjkgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgRW5hYmxlIDxzdW1tYXJ5PiB0byBiZSBhIGZsZXggY29udGFpbmVyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhc2Vzc2lvbi9p
ZGxoYXJuZXNzLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhc2Vzc2lvbi9pZGxoYXJuZXNzLndpbmRvdy1leHBlY3Rl
ZC50eHQKaW5kZXggNzFkYmNjMzhkMzkxOWJiM2MwYjM2MjhjNGQxMGRkMjY0NzkxNWNlOC4uZmVj
NmQ2NDM4OWVkZTFjMjBkNGYyNjIzNTdmMTI2MmM3MTFhMDEzNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYXNlc3Npb24vaWRsaGFy
bmVzcy53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFzZXNzaW9uL2lkbGhhcm5lc3Mud2luZG93LWV4cGVjdGVk
LnR4dApAQCAtMTIsMTQgKzEyLDEwIEBAIFBBU1MgTmF2aWdhdG9yIGluY2x1ZGVzIE5hdmlnYXRv
ckNvbnRlbnRVdGlsczogbWVtYmVyIG5hbWVzIGFyZSB1bmlxdWUKIFBBU1MgTmF2aWdhdG9yIGlu
Y2x1ZGVzIE5hdmlnYXRvckNvb2tpZXM6IG1lbWJlciBuYW1lcyBhcmUgdW5pcXVlCiBQQVNTIE5h
dmlnYXRvciBpbmNsdWRlcyBOYXZpZ2F0b3JQbHVnaW5zOiBtZW1iZXIgbmFtZXMgYXJlIHVuaXF1
ZQogUEFTUyBOYXZpZ2F0b3IgaW5jbHVkZXMgTmF2aWdhdG9yQ29uY3VycmVudEhhcmR3YXJlOiBt
ZW1iZXIgbmFtZXMgYXJlIHVuaXF1ZQotRkFJTCBNZWRpYVNlc3Npb24gaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBw
cm90b3R5cGUgb2Ygc2VsZidzIHByb3BlcnR5ICJNZWRpYVNlc3Npb24iIGlzIG5vdCBGdW5jdGlv
bi5wcm90b3R5cGUgZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsKLSAgICBbbmF0aXZl
IGNvZGVdCi19IiBidXQgZ290IGZ1bmN0aW9uICJmdW5jdGlvbiBFdmVudFRhcmdldCgpIHsKLSAg
ICBbbmF0aXZlIGNvZGVdCi19IgorUEFTUyBNZWRpYVNlc3Npb24gaW50ZXJmYWNlOiBleGlzdGVu
Y2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdAogUEFTUyBNZWRpYVNlc3Npb24g
aW50ZXJmYWNlIG9iamVjdCBsZW5ndGgKIFBBU1MgTWVkaWFTZXNzaW9uIGludGVyZmFjZSBvYmpl
Y3QgbmFtZQotRkFJTCBNZWRpYVNlc3Npb24gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3Bl
cnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X2VxdWFsczogcHJvdG90
eXBlIG9mIE1lZGlhU2Vzc2lvbi5wcm90b3R5cGUgaXMgbm90IE9iamVjdC5wcm90b3R5cGUgZXhw
ZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iIGJ1dCBnb3Qgb2JqZWN0ICJbb2JqZWN0IEV2
ZW50VGFyZ2V0XSIKK1BBU1MgTWVkaWFTZXNzaW9uIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0CiBQQVNTIE1lZGlhU2Vzc2lv
biBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkKIFBBU1MgTWVkaWFTZXNzaW9uIGlu
dGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUg
b2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eQogUEFTUyBNZWRpYVNlc3Npb24gaW50ZXJm
YWNlOiBhdHRyaWJ1dGUgbWV0YWRhdGEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zZXNzaW9uL21vY2stY29vcmRpbmF0b3ItZXhwZWN0ZWQudHh0CmluZGV4IDFl
NDc4YmE4YWFhN2IxN2I1OWMxNmE2NDg3NjY1MDZkYmY2NDNmZDYuLjNjNDlhNWFhOTQ4NTViMjQ0
YWZmYmNmMDdjY2Y2ZGQxYWU5MDE2YWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9tb2NrLWNvb3JkaW5hdG9yLWV4cGVjdGVkLnR4dApAQCAt
MSwxMyArMSwxMiBAQAogCi0qKiBUaGVyZSBzaG91bGQgYmUgbm8gbWVkaWFTZXNzaW9uLmNvb3Jk
aW5hdG9yIGluaXRpYWxseS4KLUVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3Jk
aW5hdG9yID09ICd1bmRlZmluZWQnKSBPSworKiogVGhlcmUgbWVkaWFTZXNzaW9uLmNvb3JkaW5h
dG9yLnN0YXRlIHNob3VsZCBiZSBjbG9zZWQgaW5pdGlhbGx5LgorRVhQRUNURUQgKG5hdmlnYXRv
ci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgPT0gJ2Nsb3NlZCcpIE9LCiAKLSoqIFRl
c3QgdGhhdCBtZWRpYVNlc3Npb24uY29vcmRpbmF0b3JjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hl
biBpdCBjaGFuZ2VzLgorKiogVGVzdCB0aGF0IG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5jb29y
ZGluYXRvcnN0YXRlY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gaXQgY2hhbmdlcy4KIFJVTihp
bnRlcm5hbHMucmVnaXN0ZXJNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoY2hhbmdlSGFuZGxl
cikpCi1FVkVOVChjb29yZGluYXRvcmNoYW5nZSkKLUVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFT
ZXNzaW9uLmNvb3JkaW5hdG9yICE9ICd1bmRlZmluZWQnKSBPSworRVZFTlQoY29vcmRpbmF0b3Jz
dGF0ZWNoYW5nZSBTVEFURSh3YWl0aW5nKQogCi0qKiBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yLnN0YXRlIHNob3VsZCBiZSAid2FpdGluZyIgaW50aXRpYWxseQorKiogbmF2aWdh
dG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSBzaG91bGQgYmUgIndhaXRpbmciIGlu
aXRpYWxseQogRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3Rh
dGUgPT0gJ3dhaXRpbmcnKSBPSwogCiAqKiBUZXN0IHRoYXQgd2hlbiBjb29yZGluYXRvciBtZXRo
b2RzIGZhaWwgYW5kIHByb21pc2VzIHJlamVjdCBiZWZvcmUgbWVkaWFTZXNzaW9uLmpvaW4oKSBp
cyBjYWxsZWQuCkBAIC03OCw5ICs3Nyw5IEBAIEVYUEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJycp
IE9LCiAKIFJVTihpbnRlcm5hbHMuc2V0TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ29tbWFu
ZHNTaG91bGRGYWlsKGZhbHNlKSkKIFJVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lv
bi5jb29yZGluYXRvci5qb2luKCkpCitFVkVOVChjb29yZGluYXRvcnN0YXRlY2hhbmdlIFNUQVRF
KGpvaW5lZCkKIFByb21pc2UgcmVzb2x2ZWQgT0sKIEVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFT
ZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlID09ICdqb2luZWQnKSBPSwotRVhQRUNURUQgKGxhdGVz
dENoYW5nZSA9PSAnY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQnKSBPSwogCiAqKiBUZXN0IHRoYXQg
d2hlbiBjb29yZGluYXRvciBtZXRob2RzIHN1Y2NlZWQsIHByb21pc2VzIHJlc29sdmUgYW5kIG1l
ZGlhU2Vzc2lvbiBhY3Rpb24gaGFuZGxlcnMgYXJlIGNhbGxlZC4KIFJVTihwcm9taXNlID0gbmF2
aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5wbGF5KCkpCkBAIC0xNDksOCArMTQ4LDEx
IEBAIEVYUEVDVEVEIChuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnBsYXliYWNrU3RhdGUgPT0gJ25v
bmUnKSBPSwogCiAqKiBMZWF2ZSB0aGUgc2Vzc2lvbgogUlVOKG5hdmlnYXRvci5tZWRpYVNlc3Np
b24uY29vcmRpbmF0b3IubGVhdmUoKSkKK0VYUEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJ3BsYXli
YWNrU3RhdGVDaGFuZ2VkJykgT0sKK0VYUEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJ3BsYXliYWNr
U3RhdGVDaGFuZ2VkJykgT0sKK0VYUEVDVEVEIChsYXRlc3RDaGFuZ2UgPT0gJ3BsYXliYWNrU3Rh
dGVDaGFuZ2VkJykgT0sKK0VWRU5UKGNvb3JkaW5hdG9yc3RhdGVjaGFuZ2UgU1RBVEUoY2xvc2Vk
KQogRVhQRUNURUQgKG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUgPT0g
J2Nsb3NlZCcpIE9LCi1FWFBFQ1RFRCAobGF0ZXN0Q2hhbmdlID09ICdjb29yZGluYXRvclN0YXRl
Q2hhbmdlZCcpIE9LCiAKICoqIFRlc3QgdGhhdCB3aGVuIGNvb3JkaW5hdG9yIG1ldGhvZHMgZmFp
bCBhbmQgcHJvbWlzZXMgcmVqZWN0IGFmdGVyIG1lZGlhU2Vzc2lvbi5sZWF2ZSgpIGhhcyBiZWVu
IGNhbGxlZC4KIFJVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRv
ci5wbGF5KCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL21v
Y2stY29vcmRpbmF0b3IuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9j
ay1jb29yZGluYXRvci5odG1sCmluZGV4IDU4NWE1ZWE5NDkxMGQwZTVjYTczY2IzZGNlY2JmMjJm
Yjc5OTA3ZjkuLmQwNjVkYjAyNjJjYjRjMTI4ODQ0ZmMzYTg5YTE5N2EwYjE1MDViZGIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRvci5o
dG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vbW9jay1jb29yZGluYXRv
ci5odG1sCkBAIC0zMywyOCArMzMsMjYgQEAKIAogICAgICAgICBsZXQgY2hhbmdlUHJvbWlzZSA9
ICgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAg
ICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2Nv
b3JkaW5hdG9yY2hhbmdlJywgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZShgRVZFTlQoJHtldmVudC50eXBlfSlgKTsKKyAgICAgICAgICAgICAgICBuYXZpZ2F0
b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9y
c3RhdGVjaGFuZ2UnLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKGBFVkVOVCgke2V2ZW50LnR5cGV9IFNUQVRFKCR7bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5j
b29yZGluYXRvci5zdGF0ZX0pYCk7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGF3YWl0IHdhaXRGb3JEZWJ1Z2dl
cigpOwogCiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7Ci0gICAgICAgIGNvbnNvbGVXcml0ZSgn
KiogVGhlcmUgc2hvdWxkIGJlIG5vIG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvciBpbml0aWFsbHku
JykKKyAgICAgICAgY29uc29sZVdyaXRlKCcqKiBUaGVyZSBtZWRpYVNlc3Npb24uY29vcmRpbmF0
b3Iuc3RhdGUgc2hvdWxkIGJlIGNsb3NlZCBpbml0aWFsbHkuJyk7CiAKLSAgICAgICAgdGVzdEV4
cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yJywgdW5kZWZpbmVkKTsK
KyAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9y
LnN0YXRlJywgImNsb3NlZCIpOwogCiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7Ci0gICAgICAg
IGNvbnNvbGVXcml0ZSgnKiogVGVzdCB0aGF0IG1lZGlhU2Vzc2lvbi5jb29yZGluYXRvcmNoYW5n
ZSBldmVudCBpcyBmaXJlZCB3aGVuIGl0IGNoYW5nZXMuJykKKyAgICAgICAgY29uc29sZVdyaXRl
KCcqKiBUZXN0IHRoYXQgbWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmNvb3JkaW5hdG9yc3RhdGVj
aGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiBpdCBjaGFuZ2VzLicpOwogCiAgICAgICAgIHJ1bign
aW50ZXJuYWxzLnJlZ2lzdGVyTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKGNoYW5nZUhhbmRs
ZXIpJyk7CiAKICAgICAgICAgYXdhaXQgY2hhbmdlUHJvbWlzZSgpOwotICAgICAgICAKLSAgICAg
ICAgdGVzdEV4cGVjdGVkKCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yJywgdW5k
ZWZpbmVkLCAnIT0nKTsKIAogICAgICAgICBbJ3BsYXknLCAncGF1c2UnLCAnc2Vla3RvJ10uZm9y
RWFjaChhY3Rpb24gPT4gewogICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5zZXRB
Y3Rpb25IYW5kbGVyKGFjdGlvbiwgYWN0aW9uRGV0YWlscyA9PiB7CkBAIC0xMjAsNyArMTE4LDcg
QEAKIAogICAgICAgICAvLyBCZWZvcmUgam9pbmluZwogICAgICAgICBjb25zb2xlV3JpdGUoJycp
OwotICAgICAgICBjb25zb2xlV3JpdGUoJyoqIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRp
bmF0b3Iuc3RhdGUgc2hvdWxkIGJlICJ3YWl0aW5nIiBpbnRpdGlhbGx5JykKKyAgICAgICAgY29u
c29sZVdyaXRlKCcqKiBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIHNo
b3VsZCBiZSAid2FpdGluZyIgaW5pdGlhbGx5JykKICAgICAgICAgdGVzdEV4cGVjdGVkKCduYXZp
Z2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlJywgJ3dhaXRpbmcnKTsKIAogICAg
ICAgICBjb25zb2xlV3JpdGUoJycpOwpAQCAtMTU5LDkgKzE1Nyw5IEBACiAgICAgICAgIGNvbnNv
bGVXcml0ZSgnJyk7CiAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNldE1vY2tNZWRpYVNlc3Npb25D
b29yZGluYXRvckNvbW1hbmRzU2hvdWxkRmFpbChmYWxzZSknKTsKICAgICAgICAgcnVuKCdwcm9t
aXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5qb2luKCknKTsKKyAgICAg
ICAgYXdhaXQgY2hhbmdlUHJvbWlzZSgpOwogICAgICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHBy
b21pc2UpLnRoZW4oKCkgPT4geyB9KS5jYXRjaCgoKSA9PiB7IH0pOwogICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ25hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUnLCAnam9pbmVk
Jyk7Ci0gICAgICAgIHRlc3RFeHBlY3RlZCgnbGF0ZXN0Q2hhbmdlJywgJ2Nvb3JkaW5hdG9yU3Rh
dGVDaGFuZ2VkJyk7CiAKICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKICAgICAgICAgY29uc29s
ZVdyaXRlKCcqKiBUZXN0IHRoYXQgd2hlbiBjb29yZGluYXRvciBtZXRob2RzIHN1Y2NlZWQsIHBy
b21pc2VzIHJlc29sdmUgYW5kIG1lZGlhU2Vzc2lvbiBhY3Rpb24gaGFuZGxlcnMgYXJlIGNhbGxl
ZC4nKQpAQCAtMTg5LDggKzE4Nyw5IEBACiAgICAgICAgIGNvbnNvbGVXcml0ZSgnPGJyPicpOwog
ICAgICAgICBjb25zb2xlV3JpdGUoJyoqIExlYXZlIHRoZSBzZXNzaW9uJykKICAgICAgICAgcnVu
KCduYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmxlYXZlKCknKTsKKyAgICAgICAg
YXdhaXQgY2hhbmdlUHJvbWlzZSgpOwogICAgICAgICB0ZXN0RXhwZWN0ZWQoJ25hdmlnYXRvci5t
ZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUnLCAnY2xvc2VkJyk7Ci0gICAgICAgIGF3YWl0
IHRlc3RFeHBlY3RlZEV2ZW50dWFsbHkoJ2xhdGVzdENoYW5nZScsICdjb29yZGluYXRvclN0YXRl
Q2hhbmdlZCcsICc9PScsIDEwMCk7CisKICAgICAgICAgbGF0ZXN0Q2hhbmdlID0gJyc7CiAKICAg
ICAgICAgY29uc29sZVdyaXRlKCcnKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>