<?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>213794</bug_id>
          
          <creation_ts>2020-06-30 07:08:42 -0700</creation_ts>
          <short_desc>[Cocoa] Update Launch Services database in the WebContent process from the Network process</short_desc>
          <delta_ts>2020-07-10 14:50:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214200</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>214108</dependson>
    
    <dependson>214136</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1667561</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-06-30 07:08:42 -0700</bug_when>
    <thetext>In order to be able to close the connection to the Launch Services database mapping service, we should update the Launch Services database in the WebContent process from the Network process. The Network process is chosen as the source, since the UI process does not always have access to the database mapping service.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667577</commentid>
    <comment_count>1</comment_count>
      <attachid>403200</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-06-30 08:04:06 -0700</bug_when>
    <thetext>Created attachment 403200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667602</commentid>
    <comment_count>2</comment_count>
      <attachid>403205</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-06-30 10:04:08 -0700</bug_when>
    <thetext>Created attachment 403205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667633</commentid>
    <comment_count>3</comment_count>
      <attachid>403210</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-06-30 11:21:00 -0700</bug_when>
    <thetext>Created attachment 403210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667641</commentid>
    <comment_count>4</comment_count>
      <attachid>403211</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-06-30 11:38:09 -0700</bug_when>
    <thetext>Created attachment 403211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667647</commentid>
    <comment_count>5</comment_count>
      <attachid>403214</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-06-30 11:47:57 -0700</bug_when>
    <thetext>Created attachment 403214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667663</commentid>
    <comment_count>6</comment_count>
      <attachid>403220</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-06-30 12:11:20 -0700</bug_when>
    <thetext>Created attachment 403220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667681</commentid>
    <comment_count>7</comment_count>
      <attachid>403227</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-06-30 12:39:55 -0700</bug_when>
    <thetext>Created attachment 403227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667700</commentid>
    <comment_count>8</comment_count>
      <attachid>403232</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-06-30 13:11:01 -0700</bug_when>
    <thetext>Created attachment 403232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667707</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-06-30 13:26:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/64168895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668365</commentid>
    <comment_count>10</comment_count>
      <attachid>403397</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-02 14:35:00 -0700</bug_when>
    <thetext>Created attachment 403397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668368</commentid>
    <comment_count>11</comment_count>
      <attachid>403399</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-02 14:46:26 -0700</bug_when>
    <thetext>Created attachment 403399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668380</commentid>
    <comment_count>12</comment_count>
      <attachid>403405</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-02 15:12:21 -0700</bug_when>
    <thetext>Created attachment 403405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668410</commentid>
    <comment_count>13</comment_count>
      <attachid>403414</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-02 16:06:08 -0700</bug_when>
    <thetext>Created attachment 403414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669027</commentid>
    <comment_count>14</comment_count>
      <attachid>403589</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-06 06:39:21 -0700</bug_when>
    <thetext>Created attachment 403589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669030</commentid>
    <comment_count>15</comment_count>
      <attachid>403592</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-06 07:25:37 -0700</bug_when>
    <thetext>Created attachment 403592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669031</commentid>
    <comment_count>16</comment_count>
      <attachid>403593</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-06 07:35:25 -0700</bug_when>
    <thetext>Created attachment 403593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669036</commentid>
    <comment_count>17</comment_count>
      <attachid>403595</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-06 07:59:15 -0700</bug_when>
    <thetext>Created attachment 403595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669079</commentid>
    <comment_count>18</comment_count>
      <attachid>403603</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-06 11:55:50 -0700</bug_when>
    <thetext>Created attachment 403603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669136</commentid>
    <comment_count>19</comment_count>
      <attachid>403614</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-06 13:22:39 -0700</bug_when>
    <thetext>Created attachment 403614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669210</commentid>
    <comment_count>20</comment_count>
      <attachid>403614</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-07-06 16:02:19 -0700</bug_when>
    <thetext>Comment on attachment 403614
Patch

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

I think this looks fine, but I had a few questions. I also think it would be good for Jiewen or someone else with XPC experience to take a look at the implementation.

&gt; Source/WebKit/ChangeLog:9
&gt; +        sent from the Networking process to the WebContent process, represented by a xpc object. The Networking process is chosen instead of the UI

&quot;represented by AN xpc object.&quot; (and elsewhere in the summary).

&gt; Source/WebKit/ChangeLog:22
&gt; +        No new tests, since there already exist tests for this. UTI to MIME type mapping is being used in WebKit and underlying framework, and many

underlying frameworks, ...

&gt; Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:44
&gt; +    auto context = [NSClassFromString(@&quot;LSDatabaseContext&quot;) sharedDatabaseContext];

We seem to construct this Class from string in numerous places. Would it make sense to do this work once and store the value for later use?

&gt; Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:46
&gt; +        return;

We check this selector in many places. I wonder if we could have a static or never-destroyed Class where we check this stuff once for the run of the application?

&gt; Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:83
&gt; +    auto context = [NSClassFromString(@&quot;LSDatabaseContext&quot;) sharedDatabaseContext];

This is the third time we&apos;ve done this. Could this be stored?

&gt; Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:48
&gt; +                // Uncomment before landing; this is commented out because the bots does not seem to rebuild the entitlements

I don&apos;t understand this -- does this mean it will start failing as soon as you land the change? Or is this just an EWS issue?

&gt; Source/WebKit/Shared/Cocoa/XPCEndpointClient.mm:64
&gt; +                // return;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669221</commentid>
    <comment_count>21</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-06 16:23:08 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #20)
&gt; Comment on attachment 403614 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403614&amp;action=review
&gt; 
&gt; I think this looks fine, but I had a few questions. I also think it would be
&gt; good for Jiewen or someone else with XPC experience to take a look at the
&gt; implementation.
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:9
&gt; &gt; +        sent from the Networking process to the WebContent process, represented by a xpc object. The Networking process is chosen instead of the UI
&gt; 
&gt; &quot;represented by AN xpc object.&quot; (and elsewhere in the summary).
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:22
&gt; &gt; +        No new tests, since there already exist tests for this. UTI to MIME type mapping is being used in WebKit and underlying framework, and many
&gt; 
&gt; underlying frameworks, ...
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:44
&gt; &gt; +    auto context = [NSClassFromString(@&quot;LSDatabaseContext&quot;) sharedDatabaseContext];
&gt; 
&gt; We seem to construct this Class from string in numerous places. Would it
&gt; make sense to do this work once and store the value for later use?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:46
&gt; &gt; +        return;
&gt; 
&gt; We check this selector in many places. I wonder if we could have a static or
&gt; never-destroyed Class where we check this stuff once for the run of the
&gt; application?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:83
&gt; &gt; +    auto context = [NSClassFromString(@&quot;LSDatabaseContext&quot;) sharedDatabaseContext];
&gt; 
&gt; This is the third time we&apos;ve done this. Could this be stored?
&gt; 

That is a good point. I will look into storing this.

&gt; &gt; Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:48
&gt; &gt; +                // Uncomment before landing; this is commented out because the bots does not seem to rebuild the entitlements
&gt; 
&gt; I don&apos;t understand this -- does this mean it will start failing as soon as
&gt; you land the change? Or is this just an EWS issue?
&gt; 

It seems the entitlements are not updated in an incremental build, so after landing we will have to start a clean build on the bots.

&gt; &gt; Source/WebKit/Shared/Cocoa/XPCEndpointClient.mm:64
&gt; &gt; +                // return;
&gt; 
&gt; Ditto.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669331</commentid>
    <comment_count>22</comment_count>
      <attachid>403614</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-06 22:03:51 -0700</bug_when>
    <thetext>Comment on attachment 403614
Patch

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

Thanks for making an effort to normalize XPC connections among different WebKit processes. The patch is a bit hard to review. I think the patch actually can be divided into two parts. It contains an effort to make a generic interface to do XPC after process bootstrap. And use that mechanism to do XPC for launch service database. A safer approach will be first make a patch about the generic interface and have it unit tested. Optionally, you could modify a well established XPC related functionality to adopt this generic interface. Then make the launch service database.

&gt; Source/WebKit/ChangeLog:14
&gt; +        each WebContent process with this endpoint by sending it over the bootstrap xpc connection between the UI process and the WebContent process.

Is it possible to not do the roundtrip to the UI Process? If it is not possible, I think we should explain why here.

&gt; Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:56
&gt; +            xpc_connection_resume(message);

I guess it should be:
    xpc_connection_resume(connection);

&gt; Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:74
&gt; +XPCEndpoint::~XPCEndpoint()

XPCEndpoint::~XPCEndpoint() = default;

You could do it in the header.

&gt; Source/WebKit/Shared/Cocoa/XPCEndpointClient.mm:36
&gt; +        LockHolder locker(m_lock);

Why do we need a lock here? I don&apos;t see any variables that can be shared among different threads.

&gt; Source/WebKit/UIProcess/Launcher/ProcessLauncher.h:65
&gt; +        virtual RefPtr&lt;XPCEventHandler&gt; xpcEventHandler() const { return nullptr; }

I&apos;m a little bit confused about the design here. Maybe you could illustrate it a bit more on the change log. I think you want to maintain a 1 to many mapping here. Can we have a similar design as the WebProcessPool such that we don&apos;t lose track of the owner/lifetime of the event handlers?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:342
&gt; +        virtual ~XPCEventHandler();

Why do we need the destructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669521</commentid>
    <comment_count>23</comment_count>
      <attachid>403721</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-07 14:00:33 -0700</bug_when>
    <thetext>Created attachment 403721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669526</commentid>
    <comment_count>24</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-07 14:14:22 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #22)
&gt; Comment on attachment 403614 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403614&amp;action=review
&gt; 
&gt; Thanks for making an effort to normalize XPC connections among different
&gt; WebKit processes. The patch is a bit hard to review. I think the patch
&gt; actually can be divided into two parts. It contains an effort to make a
&gt; generic interface to do XPC after process bootstrap. And use that mechanism
&gt; to do XPC for launch service database. A safer approach will be first make a
&gt; patch about the generic interface and have it unit tested. Optionally, you
&gt; could modify a well established XPC related functionality to adopt this
&gt; generic interface. Then make the launch service database.
&gt; 

That is a very good point. In the latest patch, I added a unit test of the generic interfaces. I did not split this into two patches because of the extra overhead, but I moved the generic interfaces to WebCore to make the distinction clearer and allow them to be unit-tested. Are you OK with this approach, Jiewen?

&gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; +        each WebContent process with this endpoint by sending it over the bootstrap xpc connection between the UI process and the WebContent process.
&gt; 
&gt; Is it possible to not do the roundtrip to the UI Process? If it is not
&gt; possible, I think we should explain why here.
&gt; 

No, this is not possible, because the direct connection between the Networking process and the WebContent process is a lower level CoreIPC connection, which cannot be used to send xpc objects. I added an explanation of this in the change log.

&gt; &gt; Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:56
&gt; &gt; +            xpc_connection_resume(message);
&gt; 
&gt; I guess it should be:
&gt;     xpc_connection_resume(connection);
&gt; 

Fixed.

&gt; &gt; Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:74
&gt; &gt; +XPCEndpoint::~XPCEndpoint()
&gt; 
&gt; XPCEndpoint::~XPCEndpoint() = default;
&gt; 
&gt; You could do it in the header.
&gt; 

Done!

&gt; &gt; Source/WebKit/Shared/Cocoa/XPCEndpointClient.mm:36
&gt; &gt; +        LockHolder locker(m_lock);
&gt; 
&gt; Why do we need a lock here? I don&apos;t see any variables that can be shared
&gt; among different threads.
&gt; 

The m_connections member can be set to nullptr on a non-main thread.

&gt; &gt; Source/WebKit/UIProcess/Launcher/ProcessLauncher.h:65
&gt; &gt; +        virtual RefPtr&lt;XPCEventHandler&gt; xpcEventHandler() const { return nullptr; }
&gt; 
&gt; I&apos;m a little bit confused about the design here. Maybe you could illustrate
&gt; it a bit more on the change log. I think you want to maintain a 1 to many
&gt; mapping here. Can we have a similar design as the WebProcessPool such that
&gt; we don&apos;t lose track of the owner/lifetime of the event handlers?
&gt; 

Good point, I added a paragraph in the change log to describe this more detailed. The event handler on the bootstrap xpc connection is capturing this RefPtr to the XPCEventHandler, making sure that it is not destroyed while the event handler is active. The XPCEventHandler will in this case have a weak pointer to the NetworkProcessProxy, making sure we don&apos;t call into a deleted proxy.

&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:342
&gt; &gt; +        virtual ~XPCEventHandler();
&gt; 
&gt; Why do we need the destructor?

Removed.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669546</commentid>
    <comment_count>25</comment_count>
      <attachid>403731</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-07 14:53:11 -0700</bug_when>
    <thetext>Created attachment 403731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669559</commentid>
    <comment_count>26</comment_count>
      <attachid>403733</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-07 15:32:05 -0700</bug_when>
    <thetext>Created attachment 403733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669821</commentid>
    <comment_count>27</comment_count>
      <attachid>403733</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-07-08 11:24:38 -0700</bug_when>
    <thetext>Comment on attachment 403733
Patch

This patch appears to include the changes in Bug 214079.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669868</commentid>
    <comment_count>28</comment_count>
      <attachid>403804</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-08 13:21:23 -0700</bug_when>
    <thetext>Created attachment 403804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669879</commentid>
    <comment_count>29</comment_count>
      <attachid>403804</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-07-08 14:05:04 -0700</bug_when>
    <thetext>Comment on attachment 403804
Patch

LGTM. r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669881</commentid>
    <comment_count>30</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-08 14:07:22 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #29)
&gt; Comment on attachment 403804 [details]
&gt; Patch
&gt; 
&gt; LGTM. r+

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669885</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-08 14:13:59 -0700</bug_when>
    <thetext>Committed r264132: &lt;https://trac.webkit.org/changeset/264132&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403804.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669910</commentid>
    <comment_count>32</comment_count>
    <who name="">mitz</who>
    <bug_when>2020-07-08 15:28:17 -0700</bug_when>
    <thetext>(In reply to EWS from comment #31)
&gt; Committed r264132: &lt;https://trac.webkit.org/changeset/264132&gt;

This seems to have broken building against the Apple internal SDK, because LSDatabaseContext is being redeclared outside of an #if !USE(APPLE_INTERNAL_SDK) block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669911</commentid>
    <comment_count>33</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-08 15:30:19 -0700</bug_when>
    <thetext>(In reply to mitz from comment #32)
&gt; (In reply to EWS from comment #31)
&gt; &gt; Committed r264132: &lt;https://trac.webkit.org/changeset/264132&gt;
&gt; 
&gt; This seems to have broken building against the Apple internal SDK, because
&gt; LSDatabaseContext is being redeclared outside of an #if
&gt; !USE(APPLE_INTERNAL_SDK) block.

Ah, will fix, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669938</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-08 16:45:20 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 214108</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669992</commentid>
    <comment_count>35</comment_count>
      <attachid>403836</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-08 19:30:23 -0700</bug_when>
    <thetext>Created attachment 403836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670014</commentid>
    <comment_count>36</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-08 22:24:41 -0700</bug_when>
    <thetext>Committed r264148: &lt;https://trac.webkit.org/changeset/264148&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403836.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670085</commentid>
    <comment_count>37</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-09 06:59:02 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 214136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670092</commentid>
    <comment_count>38</comment_count>
      <attachid>403862</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-07-09 07:15:38 -0700</bug_when>
    <thetext>Created attachment 403862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670158</commentid>
    <comment_count>39</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-09 10:06:19 -0700</bug_when>
    <thetext>Committed r264178: &lt;https://trac.webkit.org/changeset/264178&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403862.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403200</attachid>
            <date>2020-06-30 08:04:06 -0700</date>
            <delta_ts>2020-06-30 10:04:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200630080405.patch</filename>
            <type>text/plain</type>
            <size>33466</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAkocmV2aXNpb24gMjYzNDIxKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDYgKzQzMCw3IEBAICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGUKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2VieHIvV2ViWFJGcmFtZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZUFycmF5LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9XZWJYUkxheWVyLmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuaWRsCiAkKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjYzNDIx
KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdv
cmtpbmcgY29weSkKQEAgLTIxMjQsNiArMjEyNCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViWFJJbnB1dFNvdXJjZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViWFJJbnB1dFNvdXJjZUFycmF5
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViWFJM
YXllci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViWFJMYXllci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYlhSUG9zZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViWFJQb3NlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwkocmV2aXNpb24gMjYzNzQ2KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTMwICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vy
dmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3Jr
IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA2LTMwICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIEVuYWJsZSB0aGUg
Ik15IE1hYyAoTWFjIENhdGFseXN0KSIgZGVzdGluYXRpb24gaW4gV2ViS2l0IFhjb2RlIHByb2pl
Y3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNl
c1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xh
dW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2MzQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxDb3JlU2VydmljZXMvQ29y
ZVNlcnZpY2VzUHJpdi5oPgogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPENv
cmVTZXJ2aWNlcy9MU0RhdGFiYXNlQ29udGV4dFByaXYuaD4KICNpbXBvcnQgPE1vYmlsZUNvcmVT
ZXJ2aWNlcy9MU0FwcExpbmtQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxN
b2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzUHJpdi5oPgpAQCAtODMsMTMgKzg0
LDE2IEBAIGVudW0gTFNTZXNzaW9uSUQgewogfTsKICNlbmRpZgogCi0jZW5kaWYgLy8gIVVTRShB
UFBMRV9JTlRFUk5BTF9TREspCi0KLUBpbnRlcmZhY2UgX0xTRFNlcnZpY2UgOiBOU09iamVjdCA8
TlNYUENMaXN0ZW5lckRlbGVnYXRlPgotKyAoTlNYUENDb25uZWN0aW9uICopWFBDQ29ubmVjdGlv
blRvU2VydmljZTsKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgOiBOU09iamVjdAorQHBy
b3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0ICpzaGFyZWREYXRhYmFz
ZUNvbnRleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgX0xTRFJlYWRTZXJ2aWNlIDogX0xTRFNlcnZp
Y2UKKyNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworQGludGVyZmFjZSBMU0Rh
dGFiYXNlQ29udGV4dCAoV2ViS2l0Q2hhbmdlVHJhY2tpbmcpCistIChpZCA8TlNPYmplY3Q+KWFk
ZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Oih2b2lkICheKSh4cGNfb2JqZWN0X3QgY2hh
bmdlKSlvYnNlcnZlcjsKKy0gKHZvaWQpcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJL
aXQ6KGlkIDxOU09iamVjdD4pdG9rZW47CistICh2b2lkKW9ic2VydmVEYXRhYmFzZUNoYW5nZTRX
ZWJLaXQ6KHhwY19vYmplY3RfdCljaGFuZ2U7CiBAZW5kCiAKICNpZiBQTEFURk9STShNQUMpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNDIxKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAyMC0wNi0zMCAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNo
IFNlcnZpY2VzIGRhdGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0
d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTM3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAq
IFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1h
aW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgorICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmxhdW5jaFNlcnZpY2VzRGF0YWJhc2UgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9YUENFdmVudEhhbmRsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlhQQ0V2ZW50SGFu
ZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1By
b2Nlc3NMYXVuY2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6flBy
b2Nlc3NMYXVuY2hlcik6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OkNsaWVudDo6eHBjRXZl
bnRIYW5kbGVyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nl
c3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFuZGxlWFBD
RXZlbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNF
dmVudEhhbmRsZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5Ojp4cGNFdmVudEhhbmRsZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpYUENFdmVu
dEhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVu
dEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0
aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmhhbmRsZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VDaGFuZ2VzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2Vzcyk6CisKIDIwMjAtMDYtMjMgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlA
c29ueS5jb20+CiAKICAgICAgICAgW2N1cmxdIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciByMjYz
NDA3CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNjM0MjEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQxNiw2ICs0MTYs
OCBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94CiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvSW5z
cGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmlldy5tbQogCitVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KKwogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBs
YXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29u
dHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1t
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkocmV2aXNpb24gMjYzNDIxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw2ICszODYsMTAgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3RpbwogewogICAgIEF1eGlsaWFyeVBy
b2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgbV9sYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuc3RhcnRPYnNlcnZp
bmcocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSk7CisjZW5kaWYKKwogICAgIC8vIFdlIGdpdmUg
YSBjaGFuY2UgZm9yIGRpZENsb3NlKCkgdG8gZ2V0IGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQg
YnV0IGZvcmNlZnVsbHkgY2FsbCBfZXhpdCgpIGFmdGVyIGEgZGVsYXkKICAgICAvLyBpbiBjYXNl
IHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUgb3IgZGlkQ2xvc2UoKSB0YWtlcyB0b28g
bG9uZy4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNh
bGxiYWNrKGNhbGxFeGl0U29vbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjM0MjEpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDggQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgiCisKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRU
UENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwogI2VuZGlmCiAKQEAgLTU5
Niw2ICs1OTgsMTAgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1
bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0OwogICAgIFNlY29uZHMgbV9zZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0IHsgZGVmYXVsdFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQgfTsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlciBtX2xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1Nl
cnZpY2VNYWluLm1tCShyZXZpc2lvbiAyNjM0MjEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24v
Q29yZUZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaD4K
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHd0
Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L3NwaS9kYXJ3aW4vWFBDU1BJLmg+CkBAIC03NSw2ICs3NiwxNyBAQCBzdGF0aWMgdm9pZCBYUENT
ZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jCiAKICAgICAgICAgICAgICAgICBhdXRvIHJlcGx5ID0g
YWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkoZXZlbnQpKTsKICAgICAg
ICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKHJlcGx5LmdldCgpLCAibWVzc2Fn
ZS1uYW1lIiwgInByb2Nlc3MtZmluaXNoZWQtbGF1bmNoaW5nIik7CisKKyAgICAgICAgICAgICAg
ICBpZiAoIXN0cmNtcChzZXJ2aWNlTmFtZSwgImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyIp
KSB7CisgICAgICAgICAgICAgICAgICAgIF9fYmxvY2sgT1NPYmplY3RQdHI8eHBjX29iamVjdF90
PiBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlOworICAgICAgICAgICAgICAgICAgICBhdXRvIG9ic2Vy
dmVyID0gW1tOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0
YWJhc2VDb250ZXh0XSBhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpeKHhwY19vYmpl
Y3RfdCBjaGFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaFNlcnZpY2VzRGF0
YWJhc2UgPSBjaGFuZ2U7CisgICAgICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICAg
ICAgICBbW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRh
YmFzZUNvbnRleHRdIHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Om9ic2VydmVy
XTsKKworICAgICAgICAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUocmVwbHku
Z2V0KCksICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIiwgbGF1bmNoU2VydmljZXNEYXRhYmFzZS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgeHBjX2Nvbm5lY3Rp
b25fc2VuZF9tZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihldmVu
dCksIHJlcGx5LmdldCgpKTsKIAogICAgICAgICAgICAgICAgIGludCBmZCA9IHhwY19kaWN0aW9u
YXJ5X2R1cF9mZChldmVudCwgInN0ZG91dCIpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjM0MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcg
QEAgcHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3
aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHIpOwotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkq
IG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQorICAg
IE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9u
ZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5l
dHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKQEAgLTU0Miw2ICs1NDIsMTEgQEAg
cHVibGljOgogICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyByZXR1cm4gbV91c2VySWQ7IH0K
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCB1cGRhdGVMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlKHhwY19vYmplY3RfdCBldmVudCk7CisgICAgT1NPYmplY3RQdHI8eHBjX29i
amVjdF90PiBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC04MjYsNiArODMxLDEwIEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPU09iamVjdFB0cjx4cGNf
b2JqZWN0X3Q+IG1fbGF1bmNoU2VydmljZXNEYXRhYmFzZTsKKyNlbmRpZgogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAkocmV2aXNpb24gMjYzNDIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUzLDYgKzk1MywxMiBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIGxhdW5jaFNlcnZpY2VzRGF0
YWJhc2UgPSBwcm9jZXNzUG9vbCgpLmxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoKTsKKyAgICBpZiAo
bGF1bmNoU2VydmljZXNEYXRhYmFzZSkKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlKGNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
LmdldCgpKTsKKyNlbmRpZgorCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fd2ViQ29ubmVjdGlvbik7
CiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
KHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI2MzQyMSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTkzMiw0ICs5MzIsMjUgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdoRHlu
YW1pYwogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZUxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2UoeHBjX29iamVjdF90IGRhdGFiYXNlKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBtX2xhdW5jaFNlcnZpY2VzRGF0YWJhc2UgPSBkYXRhYmFzZTsKKwor
ICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHByb2Nl
c3MtPmlzTGF1bmNoaW5nKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFw
cm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0
byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCk7Cisg
ICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBkYXRhYmFzZSk7
CisgICAgfQorfQorCitPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IFdlYlByb2Nlc3NQb29sOjps
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgWFBDRXZlbnRIYW5kbGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFhQQ0V2ZW50SGFuZGxlcj4geworcHVibGljOgorICAgIHZpcnR1YWwgflhQQ0V2ZW50SGFu
ZGxlcigpIHsgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3Rf
dCkgY29uc3QgPSAwOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlzaW9uIDI2MzQyMSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJYUENFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvUHJvY2Vzc0lELmg+CkBAIC01Nyw2ICs1OCw5IEBAIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENvbmZp
Z3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2
ZW50SGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgogICAgIH07CiAg
ICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMu
bW0JKHJldmlzaW9uIDI2MzQyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxOCArMjM4
LDMxIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgcHJv
Y2Vzc0xhdW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzKDAsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcigpKTsKICAgICB9OwogCi0gICAgYXV0byBlcnJvckhhbmRsZXIgPSBbZXJy
b3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCldICh4cGNfb2JqZWN0X3Qg
ZXZlbnQpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Vycm9y
SGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudF0gewotICAgICAg
ICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7Ci0gICAgICAgIH0pOworICAgIGF1dG8gZXZl
bnRIYW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwp
LCBldmVudEhhbmRsZXIgPSBtX2NsaWVudC0+eHBjRXZlbnRIYW5kbGVyKCldICh4cGNfb2JqZWN0
X3QgZXZlbnQpIG11dGFibGUgeworICAgICAgICB4cGNfcmV0YWluKGV2ZW50KTsKKworICAgICAg
ICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpIHsK
KyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXJyb3JIYW5kbGVySW1wbCA9
IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50XSB7CisgICAgICAgICAgICAgICAgZXJy
b3JIYW5kbGVySW1wbChldmVudCk7CisgICAgICAgICAgICAgICAgeHBjX3JlbGVhc2UoZXZlbnQp
OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoZXZlbnRIYW5kbGVyKSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2V2ZW50SGFuZGxlciA9IGV2ZW50SGFuZGxlciwgZXZlbnRdIHsKKyAgICAgICAgICAg
ICAgICBldmVudEhhbmRsZXItPmhhbmRsZVhQQ0V2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAg
ICB4cGNfcmVsZWFzZShldmVudCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH07
CiAKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24u
Z2V0KCksIGVycm9ySGFuZGxlcik7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRs
ZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBldmVudEhhbmRsZXIpOwogCiAgICAgeHBjX2Nvbm5l
Y3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoVU5MSUtFTFko
bV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcpKSB7
Ci0gICAgICAgIGVycm9ySGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyKG51
bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjIsNiArMjc1LDggQEAgdm9p
ZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICAgICAgQVNTRVJUKHhw
Y19nZXRfdHlwZShyZXBseSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7CiAgICAgICAgICAgICBB
U1NFUlQoIXN0cmNtcCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKHJlcGx5LCAibWVzc2FnZS1u
YW1lIiksICJwcm9jZXNzLWZpbmlzaGVkLWxhdW5jaGluZyIpKTsKIAorICAgICAgICAgICAgYXV0
byB2ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKHJlcGx5LCAibGF1bmNoLXNlcnZpY2VzLWRh
dGFiYXNlIik7CisgICAgICAgICAgICBOU0xvZyhAIiVAIiwgdik7CiAjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgICAgIG1hY2hfcG9ydF91cmVmc190IHNlbmRSaWdodENvdW50ID0gMDsKICAg
ICAgICAgICAgIG1hY2hfcG9ydF9nZXRfcmVmcyhtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQ
b3J0LCBNQUNIX1BPUlRfUklHSFRfU0VORCwgJnNlbmRSaWdodENvdW50KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCShyZXZpc2lvbiAyNjM0MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTAgQEAK
ICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJYUENFdmVudEhhbmRsZXIuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpAQCAtMjk3
LDYgKzMwMSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAog
ICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmVm
UHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBjRXZlbnRIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7Cisj
ZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vz
c2lvbklELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKQEAgLTMyNyw2
ICszMzQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NBc3NlcnRpb24+PiB3ZWJQcm9jZXNzQXNz
ZXJ0aW9uczsKICAgICB9OwogICAgIE9wdGlvbmFsPFVwbG9hZEFjdGl2aXR5PiBtX3VwbG9hZEFj
dGl2aXR5OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2xhc3MgWFBDRXZlbnRIYW5kbGVy
IDogcHVibGljIFdlYktpdDo6WFBDRXZlbnRIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IFhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CisgICAgICAgIHZp
cnR1YWwgflhQQ0V2ZW50SGFuZGxlcigpOworCisgICAgICAgIGJvb2wgaGFuZGxlWFBDRXZlbnQo
eHBjX29iamVjdF90KSBjb25zdCBvdmVycmlkZTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdl
YWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICB9OworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29h
Lm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNz
UHJveHkuaCIKKworI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1JlZlB0cjxYUENFdmVudEhhbmRsZXI+IE5ldHdvcmtQcm9jZXNzUHJveHk6OnhwY0V2
ZW50SGFuZGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXIoKnRoaXMpKTsKK30KKworYm9vbCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCBl
dmVudCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENf
VFlQRV9FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBtZXNzYWdlTmFt
ZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsICJtZXNzYWdlLW5hbWUiKTsKKyAg
ICBpZiAoIW1lc3NhZ2VOYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3Ry
Y21wKG1lc3NhZ2VOYW1lLCAidXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGRhdGFiYXNlID0geHBjX2RpY3Rpb25hcnlf
Z2V0X3ZhbHVlKGV2ZW50LCAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIik7CisgICAgaWYgKCFk
YXRhYmFzZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS51cGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKGV2ZW50KTsKKworICAg
IHJldHVybiB0cnVlOworfQorCisKK05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxl
cjo6WFBDRXZlbnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9j
ZXNzKQorICAgIDogbV9uZXR3b3JrUHJvY2VzcyhtYWtlV2Vha1B0cihuZXR3b3JrUHJvY2Vzcykp
Cit7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50
SGFuZGxlcigpCit7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYzNDIxKQorKysgU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY4
Nyw2ICsxNjg3LDcgQEAKIAkJQzE0OTM4MDkyMjM0NzEwNDAwMENENzA3IC8qIFdlYlNwZWVjaFN5
bnRoZXNpc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5oICovOyB9OwogCQlDMTVDQkIzNjIzRjM3NzcxMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1
Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE1Q0JCMzcyM0YzN0VDQjAw
MzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJl
bmNlT2JzZXJ2ZXIubW0gKi87IH07CisJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICovOyB9OwogCQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRB
NjUgLyogRGlzcGxheUxpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovOyB9
OwogCQlDMUUxMjNCQTIwQTExNTczMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRTEyM0I5MjBBMTE1NzIw
MDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oICovOyB9OwogCQlDNTE3Mzg4MTEyREY4RjRGMDBF
RTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29u
dHJvbGxlckFjdGlvbi5oICovOyB9OwpAQCAtNTAyMywxMiArNTAyNCwxNiBAQAogCQlDMTQ5Mzgw
MzIyMzQxREY3MDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMxNDkzODBBMjIzODUzQkUwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50
aGVzaXNWb2ljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyog
UHJlZmVyZW5jZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlZmVyZW5jZU9i
c2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTcxMENGMjI0QTdCRDAz
MDBEN0MxMTIgLyogWFBDRXZlbnRIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ0V2ZW50SGFu
ZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTcxMENGNTI0QUE2MzQ1MDBE
N0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM1RTIwNTgz
OUY2MDBERkRBNjUgLyogRHJhd2luZ0FyZWFNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHJh
d2luZ0FyZWFNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MDIw
NTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxp
bmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4MTczNjIyMDU4NDRBOTAwREZE
QTY1IC8qIERpc3BsYXlMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaW5rLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUQyNDJGOUY3NjAwN0U5ODc1
IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMxOEZCNTFFMjQyRjlGNzcwMDdFOTg3NSAvKiBXZWJTbGVlcERpc2FibGVy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNsZWVwRGlzYWJs
ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFFMTIzQjkyMEExMTU3
MjAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBERkNvbnRleHRNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMx
RUQ3MjM3MjRBNTY5MEUwMDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29u
dHJvbGxlckFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQ29u
dHJvbGxlckFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTIzN0Y1RjEy
NDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRWRpdG9yQ2xpZW50TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGlt
ZUlucHV0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0RhdGVU
aW1lSW5wdXRDb250cm9sLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJv
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjM4OCw2ICs2MzkzLDcgQEAKIAkJ
CQkyRDdBQUZEMjE4Qzg2NDA2MDBBN0FDRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgg
Ki8sCiAJCQkJMkRDNkQ5QzExOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92
aWRlclJlZ2lzdHJ5LmggKi8sCiAJCQkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2Vi
Vmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tICovLAorCQkJCUMxNzEwQ0YyMjRBN0JEMDMw
MEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzg1MSw2ICs3ODU3LDcgQEAKIAkJNTEw
Q0M3RTcxNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMxRUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAvKiBjb2Nv
YSAqLywKIAkJCQkyOUFEMzA5MTE2NEI0QzEwMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xzICov
LAogCQkJCTUxNjMxOTkzMTYyODk4MEUwMEUyMkYwMCAvKiBtYWMgKi8sCiAJCQkJNTEwQ0M3RUEx
NjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwICovLApAQCAtODQzMSw2
ICs4NDM4LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEMEM1NkZCMjI5RjFERUEwMEJEMzNF
NyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCAqLywKIAkJCQkyRDBDNTZGQzIyOUYxREVB
MDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tICovLAorCQkJCUMxNzEwQ0Y1
MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLywK
KwkJCQlDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLm1tICovLAogCQkJCTUzMTU4NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0
aXZpdHlUcmFja2VyQ29jb2EubW0gKi8sCiAJCQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTNDIC8q
IE5ldHdvcmtEYXRhVGFza0NvY29hLmggKi8sCiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENG
IC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovLApAQCAtMTAyNTksNiArMTAyNjgsMTQgQEAK
IAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzFFRDcyMzYyNEE1
NjhGNTAwM0Y2Q0QzIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQ
cm94eUNvY29hLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCUM1NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMjczMyw2ICsx
Mjc1MCw3IEBACiAJCQkJMjc0OUY2NDUyMTQ2NTYxRTAwODM4MEJGIC8qIEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MTM0NDEyMTJDRjlGMDAwMTI4
QUZEIC8qIEpTTlBNZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MTM0NDIyMTJDRjlG
MDAwMTI4QUZEIC8qIEpTTlBPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzE3MTBDRjcy
NEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4
NEY1N0MxNjRCOTE1RjAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUw
MEYzMjgxQyAvKiBMaWJXZWJSVENOZXR3b3JrTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjYzNDIxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTAsNiArMjkwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb24oSVAKIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFsaXplQ29u
bmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGhhbmRsZUxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VDaGFuZ2VzKCk7CisjZW5kaWYKKwogICAgIC8vIFdlIGNhbGwg
X2V4aXQoKSBkaXJlY3RseSBmcm9tIHRoZSBiYWNrZ3JvdW5kIHF1ZXVlIGluIGNhc2UgdGhlIG1h
aW4gdGhyZWFkIGlzIHVucmVzcG9uc2l2ZQogICAgIC8vIGFuZCBBdXhpbGlhcnlQcm9jZXNzOjpk
aWRDbG9zZSgpIGRvZXMgbm90IGdldCBjYWxsZWQuCiAgICAgY29ubmVjdGlvbi0+c2V0RGlkQ2xv
c2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhjYWxsRXhpdCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI2MzQyMSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw2ICs1
MTAsMTAgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkg
eyByZXR1cm4gbV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCkgOiB0cnVlOyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGhhbmRsZUxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VDaGFuZ2VzKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFJlZlB0
cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAogICAgIEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjYzNDIxKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
NiwxMiArNTYsMjIgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPE1v
YmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogeworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgTlNMb2coQCJMU0RCICVkIHBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzIiwgZ2V0cGlkKCkpOworICAgIGF1dG8gdXRpID0gYWRv
cHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlN
RVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIEFTU0VSVCghU3RyaW5nKHV0aS5n
ZXQoKSkuaXNFbXB0eSgpKTsKKyNlbmRpZgorCiAgICAgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dCA9
IHBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CiAKICAgICBpZiAocGFyYW1ldGVycy5u
ZUhlbHBlckV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjYzNDIxKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTYxLDI1ICsxNjEsMjQgQEAgc3RhdGljIGlkIE5TQXBwbGljYXRpb25BY2Nlc3Np
YmlsaXR5Rm9jdQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQor
dm9pZCBXZWJQcm9jZXNzOjpoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdlcygpIGNv
bnN0CiB7Ci0gICAgLy8gTWFwIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZS4gVGhpcyBzaG91bGQg
YmUgZG9uZSBhcyBlYXJseSBhcyBwb3NzaWJsZSwgYXMgdGhlIG1hcHBpbmcgd2lsbCBmYWlsCi0g
ICAgLy8gaWYgJ2NvbS5hcHBsZS5sc2QubWFwZGInIGlzIGJlaW5nIGFjY2Vzc2VkIGJlZm9yZSB0
aGlzLgotICAgIGlmIChwYXJhbWV0ZXJzLm1hcERCRXh0ZW5zaW9uSGFuZGxlKSB7Ci0gICAgICAg
IGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoKnBhcmFt
ZXRlcnMubWFwREJFeHRlbnNpb25IYW5kbGUpKTsKLSAgICAgICAgYm9vbCBvayA9IGV4dGVuc2lv
bi0+Y29uc3VtZSgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0gICAgICAgIC8v
IFBlcmZvcm0gQVBJIGNhbGxzIHdoaWNoIHdpbGwgY29tbXVuaWNhdGUgd2l0aCB0aGUgZGF0YWJh
c2UgbWFwcGluZyBzZXJ2aWNlLCBhbmQgbWFwIHRoZSBkYXRhYmFzZS4KLSAgICAgICAgYXV0byB1
dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFn
Q2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSk7Ci0KLSAgICAgICAgW1tvYmpj
X2dldENsYXNzKCJfTFNEUmVhZFNlcnZpY2UiKSBYUENDb25uZWN0aW9uVG9TZXJ2aWNlXSBpbnZh
bGlkYXRlXTsKKyAgICBOU0xvZyhAIkxTREIgJWQgaGFuZGxlTGF1bmNoU2VydmljZXNEYXRhYmFz
ZUNoYW5nZXMiLCBnZXRwaWQoKSk7CiAKLSAgICAgICAgb2sgPSBleHRlbnNpb24tPnJldm9rZSgp
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0KLSAgICAgICAgQVNTRVJUKFN0cmlu
Zyh1dGkuZ2V0KCkpID09IFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSku
Z2V0KCkpKTsKLSAgICB9CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIocGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCBeKHhwY19vYmplY3RfdCBl
dmVudCkgeworICAgICAgICBhdXRvIGRhdGFiYXNlID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVl
KGV2ZW50LCAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIik7CisgICAgICAgIEFTU0VSVChkYXRh
YmFzZSk7CisgICAgICAgIGF1dG8gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJ
ZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwg
MCkpOworICAgICAgICBBU1NFUlQoU3RyaW5nKHV0aS5nZXQoKSkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgW1tMU0RhdGFiYXNlQ29udGV4dCBzaGFyZWREYXRhYmFzZUNvbnRleHRdIG9ic2VydmVEYXRh
YmFzZUNoYW5nZTRXZWJLaXQ6ZGF0YWJhc2VdOworICAgICAgICB1dGkgPSBhZG9wdENGKFVUVHlw
ZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZT
VFIoInRleHQvaHRtbCIpLCAwKSk7CisgICAgICAgIEFTU0VSVCghU3RyaW5nKHV0aS5nZXQoKSku
aXNFbXB0eSgpKTsKKyAgICAgICAgTlNMb2coQCJMU0RCICVkIGhhbmRsZUxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VDaGFuZ2VzIGhhbmRsZXIiLCBnZXRwaWQoKSk7CisgICAgfSk7Cit9CiAKK3ZvaWQg
V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorewogICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcihwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwog
ICAgIHNldEFwcGxpY2F0aW9uU0RLVmVyc2lvbihwYXJhbWV0ZXJzLnVpUHJvY2Vzc1NES1ZlcnNp
b24pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403205</attachid>
            <date>2020-06-30 10:04:08 -0700</date>
            <delta_ts>2020-06-30 11:20:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200630100408.patch</filename>
            <type>text/plain</type>
            <size>32027</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNzU2KQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
OgorCiAyMDIwLTA2LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbWGNvZGVdIEVuYWJsZSB0aGUgIk15IE1hYyAoTWFjIENhdGFseXN0KSIgZGVzdGluYXRpb24g
aW4gV2ViS2l0IFhjb2RlIHByb2plY3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2Mzc1NikK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAjaW1w
b3J0IDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgogI2VsaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyNpbXBvcnQgPENvcmVTZXJ2aWNlcy9MU0RhdGFiYXNlQ29udGV4dFByaXYuaD4K
ICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9MU0FwcExpbmtQcml2Lmg+CiAjZWxpZiBQTEFU
Rk9STShJT1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
UHJpdi5oPgpAQCAtODMsMTMgKzg0LDE2IEBAIGVudW0gTFNTZXNzaW9uSUQgewogfTsKICNlbmRp
ZgogCi0jZW5kaWYgLy8gIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0KLUBpbnRlcmZhY2UgX0xT
RFNlcnZpY2UgOiBOU09iamVjdCA8TlNYUENMaXN0ZW5lckRlbGVnYXRlPgotKyAoTlNYUENDb25u
ZWN0aW9uICopWFBDQ29ubmVjdGlvblRvU2VydmljZTsKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNv
bnRleHQgOiBOU09iamVjdAorQHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VD
b250ZXh0ICpzaGFyZWREYXRhYmFzZUNvbnRleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgX0xTRFJl
YWRTZXJ2aWNlIDogX0xTRFNlcnZpY2UKKyNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKworQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4dCAoV2ViS2l0Q2hhbmdlVHJhY2tpbmcp
CistIChpZCA8TlNPYmplY3Q+KWFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Oih2b2lk
ICheKSh4cGNfb2JqZWN0X3QgY2hhbmdlKSlvYnNlcnZlcjsKKy0gKHZvaWQpcmVtb3ZlRGF0YWJh
c2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KGlkIDxOU09iamVjdD4pdG9rZW47CistICh2b2lkKW9i
c2VydmVEYXRhYmFzZUNoYW5nZTRXZWJLaXQ6KHhwY19vYmplY3RfdCljaGFuZ2U7CiBAZW5kCiAK
ICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNzU2KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAy
MC0wNi0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlIGluIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5l
Y3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjp1cGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxhdW5jaFNlcnZpY2VzRGF0YWJhc2UgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICog
VUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NMYXVuY2hlcjo6flByb2Nlc3NMYXVuY2hlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1
bmNoZXI6OkNsaWVudDo6eHBjRXZlbnRIYW5kbGVyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQ
Q0V2ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBD
RXZlbnRIYW5kbGVyOjpYUENFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZyk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0
ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmhhbmRsZUxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VDaGFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMjAtMDYtMzAgIEFudG9pbmUgUXVp
bnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2lPU10gQ3Jhc2ggdW5kZXIgV2Vi
S2l0OjpXZWJQYWdlOjpnZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2Mzc1NikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDE2LDYgKzQxNiw4IEBAIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3gKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5z
cGVjdG9yV0tXZWJWaWV3Lm1tCiAKK1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHlDb2NvYS5tbQorCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1t
CiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAy
NjM3NTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDYgKzM4NiwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplQ29ubmVjdGlvCiB7CiAgICAgQXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlhbGl6
ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX2xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5zdGFydE9ic2VydmluZyhwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgZ2l2ZSBhIGNoYW5jZSBmb3IgZGlk
Q2xvc2UoKSB0byBnZXQgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBidXQgZm9yY2VmdWxseSBj
YWxsIF9leGl0KCkgYWZ0ZXIgYSBkZWxheQogICAgIC8vIGluIGNhc2UgdGhlIG1haW4gdGhyZWFk
IGlzIHVucmVzcG9uc2l2ZSBvciBkaWRDbG9zZSgpIHRha2VzIHRvbyBsb25nLgogICAgIGNvbm5l
Y3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soY2FsbEV4aXRT
b29uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHJldmlzaW9uIDI2Mzc1NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsOCBAQAogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIuaCIKKwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZSog
IENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CiAjZW5kaWYKIApAQCAtNTk3LDYgKzU5OSwxMCBAQCBw
cml2YXRlOgogCiAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgZGVmYXVsdFNlcnZpY2VXb3JrZXJG
ZXRjaFRpbWVvdXQ7CiAgICAgU2Vjb25kcyBtX3NlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQgeyBk
ZWZhdWx0U2VydmljZVdvcmtlckZldGNoVGltZW91dCB9OworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyIG1fbGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHJl
dmlzaW9uIDI2Mzc1NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRlV0aWxpdGllc1NQSS5oPgorI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENT
UEkuaD4KQEAgLTc5LDYgKzgwLDE3IEBAIHN0YXRpYyB2b2lkIFhQQ1NlcnZpY2VFdmVudEhhbmRs
ZXIoeHBjX2MKIAogICAgICAgICAgICAgICAgIGF1dG8gcmVwbHkgPSBhZG9wdE9TT2JqZWN0KHhw
Y19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShldmVudCkpOwogICAgICAgICAgICAgICAgIHhwY19k
aWN0aW9uYXJ5X3NldF9zdHJpbmcocmVwbHkuZ2V0KCksICJtZXNzYWdlLW5hbWUiLCAicHJvY2Vz
cy1maW5pc2hlZC1sYXVuY2hpbmciKTsKKworICAgICAgICAgICAgICAgIGlmICghc3RyY21wKHNl
cnZpY2VOYW1lLCAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nIikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgX19ibG9jayBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2U7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gb2JzZXJ2ZXIgPSBbW05TQ2xhc3NG
cm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdIGFk
ZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNoYW5nZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoU2VydmljZXNEYXRhYmFzZSA9IGNoYW5nZTsK
KyAgICAgICAgICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgICAgIFtbTlNDbGFzc0Zy
b21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIpIHNoYXJlZERhdGFiYXNlQ29udGV4dF0gcmVt
b3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6b2JzZXJ2ZXJdOworCisgICAgICAgICAg
ICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShyZXBseS5nZXQoKSwgIkxhdW5jaFNl
cnZpY2VzRGF0YWJhc2UiLCBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
eHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKGV2ZW50KSwgcmVwbHkuZ2V0KCkp
OwogCiAgICAgICAgICAgICAgICAgaW50IGZkID0geHBjX2RpY3Rpb25hcnlfZHVwX2ZkKGV2ZW50
LCAic3Rkb3V0Iik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgJKHJldmlzaW9uIDI2Mzc1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkm
IGVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGhXZWJzaXRlRGF0YVN0
b3JlID0gbnVsbHB0cik7Ci0gICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3Mo
KSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9CisgICAgTmV0d29ya1Byb2Nlc3NQ
cm94eSogbmV0d29ya1Byb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdl
dCgpOyB9CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94
eSYpOwogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1By
b3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uRGVsYXllZFJlcGx5JiYpOwpAQCAtNTQyLDYgKzU0MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50
MzJfdCB1c2VySWQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJJZDsgfQogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICB2b2lkIHVwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoeHBj
X29iamVjdF90IGV2ZW50KTsKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGxhdW5jaFNl
cnZpY2VzRGF0YWJhc2UoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgyNiw2ICs4MzEsMTAgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gbV9sYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZp
c2lvbiAyNjM3NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTMsNiArOTUzLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIGF1dG8gbGF1bmNoU2VydmljZXNEYXRhYmFzZSA9IHByb2Nlc3NQ
b29sKCkubGF1bmNoU2VydmljZXNEYXRhYmFzZSgpOworICAgIGlmIChsYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlKQorICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbigp
LT54cGNDb25uZWN0aW9uKCksIGxhdW5jaFNlcnZpY2VzRGF0YWJhc2UuZ2V0KCkpOworI2VuZGlm
CisKICAgICBSRUxFQVNFX0FTU0VSVCghbV93ZWJDb25uZWN0aW9uKTsKICAgICBtX3dlYkNvbm5l
Y3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQkocmV2aXNpb24gMjYzNzU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTM0LDQgKzkzNCwy
NSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlckhpZ2hEeW5hbWljCiB9CiAjZW5kaWYK
IAordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZSh4cGNf
b2JqZWN0X3QgZGF0YWJhc2UpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IG1fbGF1bmNoU2VydmljZXNEYXRhYmFzZSA9IGRhdGFiYXNlOworCisgICAgZm9yIChhdXRvIHBy
b2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy0+aXNMYXVuY2hpbmco
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXByb2Nlc3MtPmNvbm5lY3Rp
b24oKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBw
cm9jZXNzLT5jb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKTsKKyAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24sIGRhdGFiYXNlKTsKKyAgICB9Cit9CisKK09T
T2JqZWN0UHRyPHhwY19vYmplY3RfdD4gV2ViUHJvY2Vzc1Bvb2w6OmxhdW5jaFNlcnZpY2VzRGF0
YWJhc2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2xhdW5jaFNlcnZpY2VzRGF0YWJhc2U7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvWFBDRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBY
UENFdmVudEhhbmRsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8WFBDRXZlbnRIYW5k
bGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+WFBDRXZlbnRIYW5kbGVyKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBjb25zdCA9IDA7Cit9
OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Q
cm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24gMjYzNzU2KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQu
aD4KQEAgLTU3LDYgKzU4LDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pJVEVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
ICAgIHZpcnR1YWwgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBjRXZlbnRIYW5kbGVyKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAgICAgfTsKICAgICAKICAgICBlbnVtIGNs
YXNzIFByb2Nlc3NUeXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24gMjYz
NzU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVu
Y2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDE4ICsyMzgsMzEgQEAgdm9pZCBQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBwcm9jZXNzTGF1bmNoZXItPmRp
ZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MoMCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKCkp
OwogICAgIH07CiAKLSAgICBhdXRvIGVycm9ySGFuZGxlciA9IFtlcnJvckhhbmRsZXJJbXBsID0g
V1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKV0gKHhwY19vYmplY3RfdCBldmVudCkgbXV0YWJsZSB7
Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXJyb3JIYW5kbGVySW1wbCA9IFdU
Rk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50XSB7Ci0gICAgICAgICAgICBlcnJvckhhbmRs
ZXJJbXBsKGV2ZW50KTsKLSAgICAgICAgfSk7CisgICAgYXV0byBldmVudEhhbmRsZXIgPSBbZXJy
b3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50SGFuZGxlciA9
IG1fY2xpZW50LT54cGNFdmVudEhhbmRsZXIoKV0gKHhwY19vYmplY3RfdCBldmVudCkgbXV0YWJs
ZSB7CisgICAgICAgIHhwY19yZXRhaW4oZXZlbnQpOworCisgICAgICAgIGlmICghZXZlbnQgfHwg
eHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhh
bmRsZXJJbXBsKSwgZXZlbnRdIHsKKyAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2
ZW50KTsKKyAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShldmVudCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChldmVudEhh
bmRsZXIpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXZlbnRIYW5k
bGVyID0gZXZlbnRIYW5kbGVyLCBldmVudF0geworICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxl
ci0+aGFuZGxlWFBDRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAgIHhwY19yZWxlYXNlKGV2
ZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAgfTsKIAotICAgIHhwY19jb25u
ZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1feHBjQ29ubmVjdGlvbi5nZXQoKSwgZXJyb3JIYW5k
bGVyKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rp
b24uZ2V0KCksIGV2ZW50SGFuZGxlcik7CiAKICAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV94
cGNDb25uZWN0aW9uLmdldCgpKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2xhdW5jaE9wdGlvbnMu
c2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZykpIHsKLSAgICAgICAgZXJyb3JI
YW5kbGVyKG51bGxwdHIpOworICAgICAgICBldmVudEhhbmRsZXIobnVsbHB0cik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTI2Miw2ICsyNzUsOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hl
cjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICBBU1NFUlQoeHBjX2dldF90eXBlKHJlcGx5
KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcocmVwbHksICJtZXNzYWdlLW5hbWUiKSwgInByb2Nlc3Mt
ZmluaXNoZWQtbGF1bmNoaW5nIikpOwogCisgICAgICAgICAgICBhdXRvIHYgPSB4cGNfZGljdGlv
bmFyeV9nZXRfdmFsdWUocmVwbHksICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICAg
ICAgICAgIE5TTG9nKEAiJUAiLCB2KTsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAg
bWFjaF9wb3J0X3VyZWZzX3Qgc2VuZFJpZ2h0Q291bnQgPSAwOwogICAgICAgICAgICAgbWFjaF9w
b3J0X2dldF9yZWZzKG1hY2hfdGFza19zZWxmKCksIGxpc3RlbmluZ1BvcnQsIE1BQ0hfUE9SVF9S
SUdIVF9TRU5ELCAmc2VuZFJpZ2h0Q291bnQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2
Mzc1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgIkxlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0yOTcsNiArMzAxLDkgQEAgcHJp
dmF0ZToKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5p
c2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZWZQdHI8WFBDRXZlbnRIYW5k
bGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgdm9p
ZCBwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQsIFJlZjxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKIApAQCAtMzI3LDYgKzMzNCwxOSBAQCBwcml2
YXRlOgogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlByb2Nlc3NBc3NlcnRpb25zOwogICAgIH07
CiAgICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1fdXBsb2FkQWN0aXZpdHk7CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0
OjpYUENFdmVudEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgWFBDRXZlbnRIYW5kbGVy
KGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKKyAgICAgICAgdmlydHVhbCB+WFBDRXZlbnRI
YW5kbGVyKCk7CisKKyAgICAgICAgYm9vbCBoYW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QpIGNv
bnN0IG92ZXJyaWRlOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vha1B0cjxOZXR3b3JrUHJv
Y2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOworICAgIH07CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorCisjaW1w
b3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmUHRyPFhQ
Q0V2ZW50SGFuZGxlcj4gTmV0d29ya1Byb2Nlc3NQcm94eTo6eHBjRXZlbnRIYW5kbGVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2
ZW50SGFuZGxlcigqdGhpcykpOworfQorCitib29sIE5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2
ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90IGV2ZW50KSBjb25zdAorewor
ICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25h
cnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpOworICAgIGlmICghbWVzc2FnZU5h
bWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdHJjbXAobWVzc2FnZU5hbWUs
ICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUoZXZlbnQs
ICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnVw
ZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoZXZlbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpYUENFdmVudEhhbmRs
ZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3MpCisgICAgOiBtX25l
dHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNzKSkKK3sKK30KKworTmV0d29y
a1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRIYW5kbGVyKCkKK3sKK30K
KworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyNjM3NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg4LDYgKzE2ODgsNyBAQAog
CQlDMTQ5MzgwOTIyMzQ3MTA0MDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ5MzgwMjIy
MzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggKi87IH07CiAJCUMx
NUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDVDQzBFMjNEQ0E0MjcwMDNB
NUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTVDQkIzNzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVy
ZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAq
LzsgfTsKKwkJQzE3MTBDRjcyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIubW0gKi87IH07CiAJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE4MTcz
NjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87IH07CiAJCUMxRTEyM0JBMjBB
MTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMTIzQjkyMEExMTU3MjAwMjY0NkY0IC8qIFBERkNv
bnRleHRNZW51LmggKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29u
dHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmgg
Ki87IH07CkBAIC01MDI1LDEyICs1MDI2LDE2IEBACiAJCUMxNDkzODAzMjIzNDFERjcwMDBDRDcw
NyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNlT2JzZXJ2ZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBYUENF
dmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRIYW5kbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y2
MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzVFMjA1ODM5RjYwMERGREE2NSAvKiBE
cmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAv
KiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGluay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBERkRBNjUgLyogRGlzcGxheUxp
bmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpbmsuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNh
YmxlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
bGVlcERpc2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4
RkI1MUUyNDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERG
Q29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGQ29udGV4
dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFFRDcyMzcyNEE1NjkwRTAw
M0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdDb250cm9sbGVyQWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAv
KiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wu
aDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02MzkwLDYgKzYzOTUsNyBAQAogCQkJCTJEN0FBRkQyMThDODY0
MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCAqLywKIAkJCQkyREM2RDlD
MTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCAq
LywKIAkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyUmVnaXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2
ZW50SGFuZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC03ODUzLDYgKzc4NTksNyBAQAogCQk1MTBDQzdFNzE2MTM4RTcyMDBE
MDNFRDMgLyogTmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29hICovLAogCQkJCTI5QUQz
MDkxMTY0QjRDMTAwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbHMgKi8sCiAJCQkJNTE2MzE5OTMx
NjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywKIAkJCQk1MTBDQzdFQTE2MTM4RTcyMDBEMDNFRDMg
LyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi8sCkBAIC04NDM0LDYgKzg0NDEsOCBAQAogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJMkQwQzU2RkIyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFn
ZW1lbnRTb2Z0TGluay5oICovLAogCQkJCTJEMEM1NkZDMjI5RjFERUEwMEJEMzNFNyAvKiBEZXZp
Y2VNYW5hZ2VtZW50U29mdExpbmsubW0gKi8sCisJCQkJQzE3MTBDRjUyNEFBNjM0NTAwRDdDMTEy
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICovLAorCQkJCUMxNzEwQ0Y2MjRB
QTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8sCiAJ
CQkJNTMxNTg3NkIyMDc2QjcxMzAwNEJGOUYzIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXJDb2Nv
YS5tbSAqLywKIAkJCQk1MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNr
Q29jb2EuaCAqLywKIAkJCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0gKi8sCkBAIC0xMDI2Miw2ICsxMDI3MSwxNCBAQAogCQkJdGFiV2lkdGggPSA4
OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMUVENzIzNjI0QTU2OEY1MDAzRjZDRDMgLyog
Y29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMx
RUQ3MjM3MjRBNTY5MEUwMDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0gKi8s
CisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJQzU0MjU2QUUxOEJFQzE2MTAwREU0MTc5IC8qIGZvcm1zICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEyNzM3LDYgKzEyNzU0LDcgQEAKIAkJCQky
NzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE1ldGhv
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MjIxMkNGOUYwMDAxMjhBRkQgLyogSlNO
UE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIg
LyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Mjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0
QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIExpYldl
YlJUQ05ldHdvcmtNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM3NTYpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5MCw2ICsyOTAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJ
UAogewogICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rp
b24pOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFuZGxlTGF1bmNoU2VydmljZXNEYXRh
YmFzZUNoYW5nZXMoKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgY2FsbCBfZXhpdCgpIGRpcmVjdGx5
IGZyb20gdGhlIGJhY2tncm91bmQgcXVldWUgaW4gY2FzZSB0aGUgbWFpbiB0aHJlYWQgaXMgdW5y
ZXNwb25zaXZlCiAgICAgLy8gYW5kIEF1eGlsaWFyeVByb2Nlc3M6OmRpZENsb3NlKCkgZG9lcyBu
b3QgZ2V0IGNhbGxlZC4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9zZU9uQ29ubmVjdGlvbldv
cmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAkocmV2aXNpb24gMjYzNzU2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYgKzUxMCwxMCBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7IHJldHVybiBtX3Nlc3Np
b25JRCA/IG1fc2Vzc2lvbklELT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSA6IHRydWU7IH0K
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaGFuZGxlTGF1bmNoU2VydmljZXNEYXRh
YmFzZUNoYW5nZXMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
CShyZXZpc2lvbiAyNjM3NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDEyICs1NiwyMiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oPgogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2Vz
L01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9h
ZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisjaWYgQVNT
RVJUX0VOQUJMRUQKKyAgICBOU0xvZyhAIkxTREIgJWQgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBh
cmFtZXRlcnMiLCBnZXRwaWQoKSk7CisgICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0
ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRl
eHQvaHRtbCIpLCAwKSk7CisgICAgQVNTRVJUKCFTdHJpbmcodXRpLmdldCgpKS5pc0VtcHR5KCkp
OworI2VuZGlmCisKICAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0ID0gcGFyYW1ldGVycy5kYXRh
RGV0ZWN0aW9uQ29udGV4dDsKIAogICAgIGlmIChwYXJhbWV0ZXJzLm5lSGVscGVyRXh0ZW5zaW9u
SGFuZGxlKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjM3NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsMjUg
KzE2MSwyNCBAQCBzdGF0aWMgaWQgTlNBcHBsaWNhdGlvbkFjY2Vzc2liaWxpdHlGb2N1CiB9CiAj
ZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6
OmhhbmRsZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VDaGFuZ2VzKCkgY29uc3QKIHsKLSAgICAvLyBN
YXAgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBiZSBkb25lIGFzIGVhcmx5
IGFzIHBvc3NpYmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAgICAvLyBpZiAnY29tLmFw
cGxlLmxzZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMuCi0gICAgaWYgKHBh
cmFtZXRlcnMubWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAgYXV0byBleHRlbnNpb24g
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1ldGVycy5tYXBEQkV4dGVu
c2lvbkhhbmRsZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0g
ICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8gUGVyZm9ybSBBUEkgY2Fs
bHMgd2hpY2ggd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZSBtYXBwaW5nIHNlcnZp
Y2UsIGFuZCBtYXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRU
eXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBD
RlNUUigidGV4dC9odG1sIiksIDApKTsKLQotICAgICAgICBbW29iamNfZ2V0Q2xhc3MoIl9MU0RS
ZWFkU2VydmljZSIpIFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFsaWRhdGVdOworICAgIE5T
TG9nKEAiTFNEQiAlZCBoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdlcyIsIGdldHBp
ZCgpKTsKIAotICAgICAgICBvayA9IGV4dGVuc2lvbi0+cmV2b2tlKCk7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQob2ssIG9rKTsKLQotICAgICAgICBBU1NFUlQoU3RyaW5nKHV0aS5nZXQoKSkgPT0g
U3RyaW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKS5nZXQoKSkpOwotICAgIH0K
KyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT54cGNDb25uZWN0aW9uKCksIF4oeHBjX29iamVjdF90IGV2ZW50KSB7CisgICAgICAg
IGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUoZXZlbnQsICJsYXVuY2gt
c2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICAgICAgQVNTRVJUKGRhdGFiYXNlKTsKKyAgICAgICAg
YXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWco
a1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSk7CisgICAgICAgIEFT
U0VSVChTdHJpbmcodXRpLmdldCgpKS5pc0VtcHR5KCkpOworICAgICAgICBbW0xTRGF0YWJhc2VD
b250ZXh0IHNoYXJlZERhdGFiYXNlQ29udGV4dF0gb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktp
dDpkYXRhYmFzZV07CisgICAgICAgIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVk
SWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiks
IDApKTsKKyAgICAgICAgQVNTRVJUKCFTdHJpbmcodXRpLmdldCgpKS5pc0VtcHR5KCkpOworICAg
ICAgICBOU0xvZyhAIkxTREIgJWQgaGFuZGxlTGF1bmNoU2VydmljZXNEYXRhYmFzZUNoYW5nZXMg
aGFuZGxlciIsIGdldHBpZCgpKTsKKyAgICB9KTsKK30KIAordm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCit7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShwYXJhbWV0ZXJz
LndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6aW5pdGlhbGl6ZUxvZ0NoYW5u
ZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5nQ2hhbm5lbHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403210</attachid>
            <date>2020-06-30 11:21:00 -0700</date>
            <delta_ts>2020-06-30 11:38:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200630112059.patch</filename>
            <type>text/plain</type>
            <size>32156</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
OgorCiAyMDIwLTA2LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbWGNvZGVdIEVuYWJsZSB0aGUgIk15IE1hYyAoTWFjIENhdGFseXN0KSIgZGVzdGluYXRpb24g
aW4gV2ViS2l0IFhjb2RlIHByb2plY3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2Mzc2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxNCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0xTRGF0YWJhc2VDb250ZXh0UHJpdi5oPgogI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbGlmIFBMQVRGT1JN
KElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXNQcml2
Lmg+CkBAIC04MywxMyArODYsMTYgQEAgZW51bSBMU1Nlc3Npb25JRCB7CiB9OwogI2VuZGlmCiAK
LSNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotQGludGVyZmFjZSBfTFNEU2Vy
dmljZSA6IE5TT2JqZWN0IDxOU1hQQ0xpc3RlbmVyRGVsZWdhdGU+Ci0rIChOU1hQQ0Nvbm5lY3Rp
b24gKilYUENDb25uZWN0aW9uVG9TZXJ2aWNlOworQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4
dCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgTFNEYXRhYmFzZUNvbnRl
eHQgKnNoYXJlZERhdGFiYXNlQ29udGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBfTFNEUmVhZFNl
cnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChXZWJLaXRDaGFuZ2VUcmFja2luZykKKy0g
KGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4p
KHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOworLSAodm9pZClyZW1vdmVEYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2
ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVjdF90KWNoYW5nZTsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlv
bik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3ND
b2NvYSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUV2ZW50
SGFuZGxlcik6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnVwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bGF1bmNoU2VydmljZXNEYXRhYmFzZSBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJv
Y2Vzc0xhdW5jaGVyOjp+UHJvY2Vzc0xhdW5jaGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hl
cjo6Q2xpZW50Ojp4cGNFdmVudEhhbmRsZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpoYW5kbGVYUENFdmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZl
bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVu
dEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNo
TGF1bmNoaW5nKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aGFuZGxlTGF1bmNoU2VydmljZXNE
YXRhYmFzZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMC0wNi0zMCAgUGVuZyBMaXUgIDxwZW5n
LmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFNjcnVuY2hpbmcgYSB2aWRlbyB0byBQaVAgY2Fu
IHJlc3VsdCBpbiBicm9rZW4gYW5pbWF0aW9uIGFuZCBsZWF2ZSBTYWZhcmkgaW4gYSBiYWQgc3Rh
dGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDE2LDYgKzQxNiw4
IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3gKIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dLSW5zcGVjdG9yV0tXZWJWaWV3Lm1tCiAKK1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQorCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxh
eVJvdXRlUGlja2VyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250
cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDYgKzM4NiwxMCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvCiB7CiAgICAgQXV4aWxpYXJ5UHJv
Y2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBtX2xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5zdGFydE9ic2Vydmlu
ZyhwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgZ2l2ZSBh
IGNoYW5jZSBmb3IgZGlkQ2xvc2UoKSB0byBnZXQgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBi
dXQgZm9yY2VmdWxseSBjYWxsIF9leGl0KCkgYWZ0ZXIgYSBkZWxheQogICAgIC8vIGluIGNhc2Ug
dGhlIG1haW4gdGhyZWFkIGlzIHVucmVzcG9uc2l2ZSBvciBkaWRDbG9zZSgpIHRha2VzIHRvbyBs
b25nLgogICAgIGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2Fs
bGJhY2soY2FsbEV4aXRTb29uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiAr
NjMsOCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCIKKwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQ
Q29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CiAjZW5kaWYKIApAQCAtNTk3
LDYgKzU5OSwxMCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgZGVmYXVs
dFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQ7CiAgICAgU2Vjb25kcyBtX3NlcnZpY2VXb3JrZXJG
ZXRjaFRpbWVvdXQgeyBkZWZhdWx0U2VydmljZVdvcmtlckZldGNoVGltZW91dCB9OworCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyIG1fbGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
Q29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW0JKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9D
b3JlRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRlV0aWxpdGllc1NQSS5oPgor
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3Rm
L09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYv
c3BpL2Rhcndpbi9YUENTUEkuaD4KQEAgLTc5LDYgKzgwLDE3IEBAIHN0YXRpYyB2b2lkIFhQQ1Nl
cnZpY2VFdmVudEhhbmRsZXIoeHBjX2MKIAogICAgICAgICAgICAgICAgIGF1dG8gcmVwbHkgPSBh
ZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShldmVudCkpOwogICAgICAg
ICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcocmVwbHkuZ2V0KCksICJtZXNzYWdl
LW5hbWUiLCAicHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKTsKKworICAgICAgICAgICAgICAg
IGlmICghc3RyY21wKHNlcnZpY2VOYW1lLCAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nIikp
IHsKKyAgICAgICAgICAgICAgICAgICAgX19ibG9jayBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+
IGxhdW5jaFNlcnZpY2VzRGF0YWJhc2U7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gb2JzZXJ2
ZXIgPSBbW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRh
YmFzZUNvbnRleHRdIGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVj
dF90IGNoYW5nZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoU2VydmljZXNEYXRh
YmFzZSA9IGNoYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAg
ICAgIFtbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIpIHNoYXJlZERhdGFi
YXNlQ29udGV4dF0gcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6b2JzZXJ2ZXJd
OworCisgICAgICAgICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShyZXBseS5n
ZXQoKSwgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2UiLCBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICB4cGNfY29ubmVjdGlv
bl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKGV2ZW50
KSwgcmVwbHkuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgaW50IGZkID0geHBjX2RpY3Rpb25h
cnlfZHVwX2ZkKGV2ZW50LCAic3Rkb3V0Iik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw3ICszODgsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogICAgIE5ldHdv
cmtQcm9jZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdp
dGhXZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cik7Ci0gICAgTmV0d29ya1Byb2Nlc3NQcm94eSog
bmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9CisgICAg
TmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX25l
dHdvcmtQcm9jZXNzLmdldCgpOyB9CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0
d29ya1Byb2Nlc3NQcm94eSYpOwogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwpAQCAtNTQyLDYgKzU0MiwxMSBAQCBw
dWJsaWM6CiAgICAgaW50MzJfdCB1c2VySWQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJJZDsgfQog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHVwZGF0ZUxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2UoeHBjX29iamVjdF90IGV2ZW50KTsKKyAgICBPU09iamVjdFB0cjx4cGNfb2Jq
ZWN0X3Q+IGxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgyNiw2ICs4MzEsMTAgQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rp
b247CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19v
YmplY3RfdD4gbV9sYXVuY2hTZXJ2aWNlc0RhdGFiYXNlOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTMsNiArOTUzLDEyIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gbGF1bmNoU2VydmljZXNEYXRh
YmFzZSA9IHByb2Nlc3NQb29sKCkubGF1bmNoU2VydmljZXNEYXRhYmFzZSgpOworICAgIGlmIChs
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlKQorICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3Nh
Z2UoY29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksIGxhdW5jaFNlcnZpY2VzRGF0YWJhc2Uu
Z2V0KCkpOworI2VuZGlmCisKICAgICBSRUxFQVNFX0FTU0VSVCghbV93ZWJDb25uZWN0aW9uKTsK
ICAgICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUo
dGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtOTM0LDQgKzkzNCwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlckhpZ2hEeW5h
bWljCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZSh4cGNfb2JqZWN0X3QgZGF0YWJhc2UpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIG1fbGF1bmNoU2VydmljZXNEYXRhYmFzZSA9IGRhdGFiYXNlOworCisg
ICAgZm9yIChhdXRvIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vz
cy0+aXNMYXVuY2hpbmcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXBy
b2Nlc3MtPmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRv
IGNvbm5lY3Rpb24gPSBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKTsKKyAg
ICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24sIGRhdGFiYXNlKTsK
KyAgICB9Cit9CisKK09TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gV2ViUHJvY2Vzc1Bvb2w6Omxh
dW5jaFNlcnZpY2VzRGF0YWJhc2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8WFBDRXZlbnRIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+WFBDRXZlbnRIYW5k
bGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90
KSBjb25zdCA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
UHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTU3LDYgKzU4LDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29uZmln
dXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgIHZpcnR1YWwgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBjRXZl
bnRIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAgICAgfTsKICAg
ICAKICAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5t
bQkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDE4ICsyMzgs
MzEgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBwcm9j
ZXNzTGF1bmNoZXItPmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MoMCwgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKCkpOwogICAgIH07CiAKLSAgICBhdXRvIGVycm9ySGFuZGxlciA9IFtlcnJv
ckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKV0gKHhwY19vYmplY3RfdCBl
dmVudCkgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXJyb3JI
YW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50XSB7Ci0gICAgICAg
ICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50KTsKLSAgICAgICAgfSk7CisgICAgYXV0byBldmVu
dEhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCks
IGV2ZW50SGFuZGxlciA9IG1fY2xpZW50LT54cGNFdmVudEhhbmRsZXIoKV0gKHhwY19vYmplY3Rf
dCBldmVudCkgbXV0YWJsZSB7CisgICAgICAgIHhwY19yZXRhaW4oZXZlbnQpOworCisgICAgICAg
IGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikgewor
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0g
V1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRdIHsKKyAgICAgICAgICAgICAgICBlcnJv
ckhhbmRsZXJJbXBsKGV2ZW50KTsKKyAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShldmVudCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChldmVudEhhbmRsZXIpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyLCBldmVudF0geworICAgICAgICAgICAg
ICAgIGV2ZW50SGFuZGxlci0+aGFuZGxlWFBDRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAg
IHhwY19yZWxlYXNlKGV2ZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAgfTsK
IAotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1feHBjQ29ubmVjdGlvbi5n
ZXQoKSwgZXJyb3JIYW5kbGVyKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxl
cihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGV2ZW50SGFuZGxlcik7CiAKICAgICB4cGNfY29ubmVj
dGlvbl9yZXN1bWUobV94cGNDb25uZWN0aW9uLmdldCgpKTsKIAogICAgIGlmIChVTkxJS0VMWSht
X2xhdW5jaE9wdGlvbnMuc2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZykpIHsK
LSAgICAgICAgZXJyb3JIYW5kbGVyKG51bGxwdHIpOworICAgICAgICBldmVudEhhbmRsZXIobnVs
bHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2Miw2ICsyNzUsOCBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICBBU1NFUlQoeHBj
X2dldF90eXBlKHJlcGx5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKICAgICAgICAgICAgIEFT
U0VSVCghc3RyY21wKHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcocmVwbHksICJtZXNzYWdlLW5h
bWUiKSwgInByb2Nlc3MtZmluaXNoZWQtbGF1bmNoaW5nIikpOwogCisgICAgICAgICAgICBhdXRv
IHYgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUocmVwbHksICJsYXVuY2gtc2VydmljZXMtZGF0
YWJhc2UiKTsKKyAgICAgICAgICAgIE5TTG9nKEAiJUAiLCB2KTsKICNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICAgICAgbWFjaF9wb3J0X3VyZWZzX3Qgc2VuZFJpZ2h0Q291bnQgPSAwOwogICAg
ICAgICAgICAgbWFjaF9wb3J0X2dldF9yZWZzKG1hY2hfdGFza19zZWxmKCksIGxpc3RlbmluZ1Bv
cnQsIE1BQ0hfUE9SVF9SSUdIVF9TRU5ELCAmc2VuZFJpZ2h0Q291bnQpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMCBAQAog
I2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0yOTcs
NiArMzAxLDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAg
ICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZWZQ
dHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKKyNl
bmRpZgogCiAgICAgdm9pZCBwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNz
aW9uSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKIApAQCAtMzI3LDYg
KzMzNCwxOSBAQCBwcml2YXRlOgogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlByb2Nlc3NBc3Nl
cnRpb25zOwogICAgIH07CiAgICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1fdXBsb2FkQWN0
aXZpdHk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGFzcyBYUENFdmVudEhhbmRsZXIg
OiBwdWJsaWMgV2ViS2l0OjpYUENFdmVudEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
WFBDRXZlbnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKKyAgICAgICAgdmly
dHVhbCB+WFBDRXZlbnRIYW5kbGVyKCk7CisKKyAgICAgICAgYm9vbCBoYW5kbGVYUENFdmVudCh4
cGNfb2JqZWN0X3QpIGNvbnN0IG92ZXJyaWRlOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vh
a1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOworICAgIH07CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIgorCisjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4gTmV0d29ya1Byb2Nlc3NQcm94eTo6eHBjRXZl
bnRIYW5kbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdvcmtQcm9j
ZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcigqdGhpcykpOworfQorCitib29sIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90IGV2
ZW50KSBjb25zdAoreworICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19U
WVBFX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIG1lc3NhZ2VOYW1l
ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpOworICAg
IGlmICghbWVzc2FnZU5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdHJj
bXAobWVzc2FnZU5hbWUsICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9n
ZXRfdmFsdWUoZXZlbnQsICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICBpZiAoIWRh
dGFiYXNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLnVwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoZXZlbnQpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVy
OjpYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nl
c3MpCisgICAgOiBtX25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNzKSkK
K3sKK30KKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRI
YW5kbGVyKCkKK3sKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg4
LDYgKzE2ODgsNyBAQAogCQlDMTQ5MzgwOTIyMzQ3MTA0MDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3lu
dGhlc2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50
LmggKi87IH07CiAJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDVD
QzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTVDQkIzNzIzRjM3RUNCMDAz
MDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3IC8qIFByZWZlcmVu
Y2VPYnNlcnZlci5tbSAqLzsgfTsKKwkJQzE3MTBDRjcyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi87IH07CiAJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2
NSAvKiBEaXNwbGF5TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87IH07
CiAJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMTIzQjkyMEExMTU3MjAw
MjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYwMEVF
M0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250
cm9sbGVyQWN0aW9uLmggKi87IH07CkBAIC01MDI1LDEyICs1MDI2LDE2IEBACiAJCUMxNDkzODAz
MjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQ
cmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNlT2Jz
ZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMw
MEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3
QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzVFMjA1ODM5
RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3
aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYwMjA1
ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlu
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBERkRB
NjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpbmsuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUg
LyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzE4RkI1MUUyNDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxl
ckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNCOTIwQTExNTcy
MDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUERGQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFF
RDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250
cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdDb250
cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0
NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1l
SW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGF0ZVRp
bWVJbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9s
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzkwLDYgKzYzOTUsNyBAQAogCQkJ
CTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCAq
LywKIAkJCQkyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyUmVnaXN0cnkuaCAqLywKIAkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIyNEE3QkQwMzAw
RDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03ODUzLDYgKzc4NTksNyBAQAogCQk1MTBD
QzdFNzE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29h
ICovLAogCQkJCTI5QUQzMDkxMTY0QjRDMTAwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbHMgKi8s
CiAJCQkJNTE2MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywKIAkJCQk1MTBDQzdFQTE2
MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi8sCkBAIC04NDM0LDYg
Kzg0NDEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMkQwQzU2RkIyMjlGMURFQTAwQkQzM0U3
IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5oICovLAogCQkJCTJEMEM1NkZDMjI5RjFERUEw
MEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsubW0gKi8sCisJCQkJQzE3MTBDRjUy
NEFBNjM0NTAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICovLAor
CQkJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIubW0gKi8sCiAJCQkJNTMxNTg3NkIyMDc2QjcxMzAwNEJGOUYzIC8qIE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXJDb2NvYS5tbSAqLywKIAkJCQk1MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0MgLyog
TmV0d29ya0RhdGFUYXNrQ29jb2EuaCAqLywKIAkJCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0Yg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8sCkBAIC0xMDI2Miw2ICsxMDI3MSwxNCBAQAog
CQkJdGFiV2lkdGggPSA4OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMUVENzIzNjI0QTU2
OEY1MDAzRjZDRDMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCUMxRUQ3MjM3MjRBNTY5MEUwMDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vzc1By
b3h5Q29jb2EubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQzU0MjU2QUUxOEJFQzE2MTAwREU0MTc5IC8qIGZvcm1zICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEyNzM3LDYgKzEy
NzU0LDcgQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAxMjhB
RkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MjIxMkNGOUYw
MDAxMjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTcxMENGNzI0
QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTg0
RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAw
RjMyODFDIC8qIExpYldlYlJUQ05ldHdvcmtNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lv
biAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdGlvbihJUAogewogICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25u
ZWN0aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFuZGxlTGF1
bmNoU2VydmljZXNEYXRhYmFzZUNoYW5nZXMoKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgY2FsbCBf
ZXhpdCgpIGRpcmVjdGx5IGZyb20gdGhlIGJhY2tncm91bmQgcXVldWUgaW4gY2FzZSB0aGUgbWFp
biB0aHJlYWQgaXMgdW5yZXNwb25zaXZlCiAgICAgLy8gYW5kIEF1eGlsaWFyeVByb2Nlc3M6OmRp
ZENsb3NlKCkgZG9lcyBub3QgZ2V0IGNhbGxlZC4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9z
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYgKzUx
MCwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7
IHJldHVybiBtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSA6IHRydWU7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaGFuZGxlTGF1
bmNoU2VydmljZXNEYXRhYmFzZUNoYW5nZXMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgUmVmUHRy
PFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCiAgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2
LDEyICs1NiwyMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8TW9i
aWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKICNpZiBQTEFU
Rk9STShDT0NPQSkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiB7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBOU0xvZyhAIkxTREIgJWQgcGxhdGZvcm1E
aWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMiLCBnZXRwaWQoKSk7CisgICAgYXV0byB1dGkgPSBhZG9w
dENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1F
VHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSk7CisgICAgQVNTRVJUKCFTdHJpbmcodXRpLmdl
dCgpKS5pc0VtcHR5KCkpOworI2VuZGlmCisKICAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0ID0g
cGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dDsKIAogICAgIGlmIChwYXJhbWV0ZXJzLm5l
SGVscGVyRXh0ZW5zaW9uSGFuZGxlKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjEsMjUgKzE2MSwyNCBAQCBzdGF0aWMgaWQgTlNBcHBsaWNhdGlvbkFjY2Vzc2li
aWxpdHlGb2N1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2
b2lkIFdlYlByb2Nlc3M6OmhhbmRsZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VDaGFuZ2VzKCkgY29u
c3QKIHsKLSAgICAvLyBNYXAgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBi
ZSBkb25lIGFzIGVhcmx5IGFzIHBvc3NpYmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAg
ICAvLyBpZiAnY29tLmFwcGxlLmxzZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRo
aXMuCi0gICAgaWYgKHBhcmFtZXRlcnMubWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAg
YXV0byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1l
dGVycy5tYXBEQkV4dGVuc2lvbkhhbmRsZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9u
LT5jb25zdW1lKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8g
UGVyZm9ybSBBUEkgY2FsbHMgd2hpY2ggd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFz
ZSBtYXBwaW5nIHNlcnZpY2UsIGFuZCBtYXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0
aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdD
bGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKLQotICAgICAgICBbW29iamNf
Z2V0Q2xhc3MoIl9MU0RSZWFkU2VydmljZSIpIFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFs
aWRhdGVdOworICAgIE5TTG9nKEAiTFNEQiAlZCBoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
Q2hhbmdlcyIsIGdldHBpZCgpKTsKIAotICAgICAgICBvayA9IGV4dGVuc2lvbi0+cmV2b2tlKCk7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLQotICAgICAgICBBU1NFUlQoU3RyaW5n
KHV0aS5nZXQoKSkgPT0gU3RyaW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRp
ZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKS5n
ZXQoKSkpOwotICAgIH0KKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksIF4oeHBjX29iamVjdF90IGV2
ZW50KSB7CisgICAgICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUo
ZXZlbnQsICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICAgICAgQVNTRVJUKGRhdGFi
YXNlKTsKKyAgICAgICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElk
ZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAw
KSk7CisgICAgICAgIEFTU0VSVChTdHJpbmcodXRpLmdldCgpKS5pc0VtcHR5KCkpOworICAgICAg
ICBbW0xTRGF0YWJhc2VDb250ZXh0IHNoYXJlZERhdGFiYXNlQ29udGV4dF0gb2JzZXJ2ZURhdGFi
YXNlQ2hhbmdlNFdlYktpdDpkYXRhYmFzZV07CisgICAgICAgIHV0aSA9IGFkb3B0Q0YoVVRUeXBl
Q3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNU
UigidGV4dC9odG1sIiksIDApKTsKKyAgICAgICAgQVNTRVJUKCFTdHJpbmcodXRpLmdldCgpKS5p
c0VtcHR5KCkpOworICAgICAgICBOU0xvZyhAIkxTREIgJWQgaGFuZGxlTGF1bmNoU2VydmljZXNE
YXRhYmFzZUNoYW5nZXMgaGFuZGxlciIsIGdldHBpZCgpKTsKKyAgICB9KTsKK30KIAordm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vz
c2FyeShwYXJhbWV0ZXJzLndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6aW5p
dGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5nQ2hh
bm5lbHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403211</attachid>
            <date>2020-06-30 11:38:09 -0700</date>
            <delta_ts>2020-06-30 11:47:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200630113809.patch</filename>
            <type>text/plain</type>
            <size>37950</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
OgorCiAyMDIwLTA2LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbWGNvZGVdIEVuYWJsZSB0aGUgIk15IE1hYyAoTWFjIENhdGFseXN0KSIgZGVzdGluYXRpb24g
aW4gV2ViS2l0IFhjb2RlIHByb2plY3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2Mzc2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxNCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0xTRGF0YWJhc2VDb250ZXh0UHJpdi5oPgogI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbGlmIFBMQVRGT1JN
KElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXNQcml2
Lmg+CkBAIC04MywxMyArODYsMTYgQEAgZW51bSBMU1Nlc3Npb25JRCB7CiB9OwogI2VuZGlmCiAK
LSNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotQGludGVyZmFjZSBfTFNEU2Vy
dmljZSA6IE5TT2JqZWN0IDxOU1hQQ0xpc3RlbmVyRGVsZWdhdGU+Ci0rIChOU1hQQ0Nvbm5lY3Rp
b24gKilYUENDb25uZWN0aW9uVG9TZXJ2aWNlOworQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4
dCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgTFNEYXRhYmFzZUNvbnRl
eHQgKnNoYXJlZERhdGFiYXNlQ29udGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBfTFNEUmVhZFNl
cnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChXZWJLaXRDaGFuZ2VUcmFja2luZykKKy0g
KGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4p
KHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOworLSAodm9pZClyZW1vdmVEYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2
ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVjdF90KWNoYW5nZTsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM3NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyk6
CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2VuZE1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6
On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAg
ICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VNYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvWFBDRXZlbnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVu
dEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQ6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHlDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQ
Q0V2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQ
Q0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdl
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA2LTMwICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5j
b20+CiAKICAgICAgICAgU2NydW5jaGluZyBhIHZpZGVvIHRvIFBpUCBjYW4gcmVzdWx0IGluIGJy
b2tlbiBhbmltYXRpb24gYW5kIGxlYXZlIFNhZmFyaSBpbiBhIGJhZCBzdGF0ZQpJbmRleDogU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNiArNDE2LDggQEAgVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveAogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJ
bnNwZWN0b3JXS1dlYlZpZXcubW0KIAorVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eUNvY29hLm1tCisKIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODYsNiArMzg2LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVDb25uZWN0aW8KIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1f
bGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLnN0YXJ0T2JzZXJ2aW5nKHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCkpOworI2VuZGlmCisKICAgICAvLyBXZSBnaXZlIGEgY2hhbmNlIGZvciBk
aWRDbG9zZSgpIHRvIGdldCBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJ1dCBmb3JjZWZ1bGx5
IGNhbGwgX2V4aXQoKSBhZnRlciBhIGRlbGF5CiAgICAgLy8gaW4gY2FzZSB0aGUgbWFpbiB0aHJl
YWQgaXMgdW5yZXNwb25zaXZlIG9yIGRpZENsb3NlKCkgdGFrZXMgdG9vIGxvbmcuCiAgICAgY29u
bmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhjYWxsRXhp
dFNvb24pOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBACiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5oIgorCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdl
KiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCkBAIC01OTcsNiArNTk5LDEwIEBA
IHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dDsKICAgICBTZWNvbmRzIG1fc2VydmljZVdvcmtlckZldGNoVGltZW91dCB7
IGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IH07CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgbV9sYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9P
U09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlciB7CitwdWJsaWM6
CisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCk7CisgICAgfkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlcigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKCk7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPGlkPiBtX29ic2VydmVyOworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+
IG1fY29ubmVjdGlvbjsKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fbWVzc2FnZTsK
K307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7Cit9CisKK3Zv
aWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgbV9jb25uZWN0aW9uID0gY29ubmVjdGlvbi0+
eHBjQ29ubmVjdGlvbigpOworCisgICAgbV9vYnNlcnZlciA9IFtbTFNEYXRhYmFzZUNvbnRleHQg
c2hhcmVkRGF0YWJhc2VDb250ZXh0XSBhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpe
KHhwY19vYmplY3RfdCBjaGFuZ2UpIHsKKyAgICAgICAgbV9tZXNzYWdlID0gYWRvcHRPU09iamVj
dCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4
cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1fbWVzc2FnZS5nZXQoKSwgIm1lc3NhZ2UtbmFtZSIs
ICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIik7CisgICAgICAgIGF1dG8gcyA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9tZXNzYWdlLmdldCgpLCAibWVzc2FnZS1uYW1lIik7
CisgICAgICAgIEFTU0VSVChzKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1f
bWVzc2FnZS5nZXQoKSwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIsIGNoYW5nZSk7CisKKyAg
ICAgICAgYXV0byBkID0geHBjX2NvcHlfZGVzY3JpcHRpb24obV9tZXNzYWdlLmdldCgpKTsKKyAg
ICAgICAgQVNTRVJUKGQpOworCisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSht
X2Nvbm5lY3Rpb24uZ2V0KCksIG1fbWVzc2FnZS5nZXQoKSk7CisgICAgfV07Cit9CisKK3ZvaWQg
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzZW5kTWVzc2FnZSgpCit7CisgICAgaWYg
KG1fY29ubmVjdGlvbiAmJiBtX21lc3NhZ2UpCisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRf
bWVzc2FnZShtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fbWVzc2FnZS5nZXQoKSk7Cit9CisKK0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6fkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cigpCit7CisgICAgW1tMU0RhdGFiYXNlQ29udGV4dCBzaGFyZWREYXRhYmFzZUNvbnRleHRdIHJl
bW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Om1fb2JzZXJ2ZXIuZ2V0KCldOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5zYgkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJv
eFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJKHdvcmtpbmcgY29w
eSkKQEAgLTU4OCw3ICs1ODgsNyBAQAogKGFsbG93IGlwYy1wb3NpeC1zaG0tcmVhZCoKICAgICAg
ICAoaXBjLXBvc2l4LW5hbWUtcHJlZml4ICJhcHBsZS5jZnByZWZzLiIpKQogIAotKGFsbG93IG1h
Y2gtbG9va3VwCisoZGVueSBtYWNoLWxvb2t1cAogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxl
LmxzZC5tYXBkYiIpKQogCiA7OyA8cmRhcjovL3Byb2JsZW0vMTI0MTM5NDI+CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBD
U2VydmljZU1haW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCShyZXZpc2lv
biAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKIAogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNp
bXBvcnQgPHBhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+
CkBAIC03OSw2ICs4MCwxNyBAQCBzdGF0aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhw
Y19jCiAKICAgICAgICAgICAgICAgICBhdXRvIHJlcGx5ID0gYWRvcHRPU09iamVjdCh4cGNfZGlj
dGlvbmFyeV9jcmVhdGVfcmVwbHkoZXZlbnQpKTsKICAgICAgICAgICAgICAgICB4cGNfZGljdGlv
bmFyeV9zZXRfc3RyaW5nKHJlcGx5LmdldCgpLCAibWVzc2FnZS1uYW1lIiwgInByb2Nlc3MtZmlu
aXNoZWQtbGF1bmNoaW5nIik7CisKKyAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcChzZXJ2aWNl
TmFtZSwgImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyIpKSB7CisgICAgICAgICAgICAgICAg
ICAgIF9fYmxvY2sgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBsYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlOworICAgICAgICAgICAgICAgICAgICBhdXRvIG9ic2VydmVyID0gW1tOU0NsYXNzRnJvbVN0
cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XSBhZGREYXRh
YmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpeKHhwY19vYmplY3RfdCBjaGFuZ2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxhdW5jaFNlcnZpY2VzRGF0YWJhc2UgPSBjaGFuZ2U7CisgICAg
ICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICAgICAgICBbW05TQ2xhc3NGcm9tU3Ry
aW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdIHJlbW92ZURh
dGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Om9ic2VydmVyXTsKKworICAgICAgICAgICAgICAg
ICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUocmVwbHkuZ2V0KCksICJMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlIiwgbGF1bmNoU2VydmljZXNEYXRhYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgfQorCiAgICAgICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKHhwY19k
aWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihldmVudCksIHJlcGx5LmdldCgpKTsKIAog
ICAgICAgICAgICAgICAgIGludCBmZCA9IHhwY19kaWN0aW9uYXJ5X2R1cF9mZChldmVudCwgInN0
ZG91dCIpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShy
ZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogCiAgICAgLy8g
TmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1
cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9
IG51bGxwdHIpOwotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgeyBy
ZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQorICAgIE5ldHdvcmtQcm9jZXNzUHJveHkq
IG5ldHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsg
fQogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsK
IAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYs
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRl
bGF5ZWRSZXBseSYmKTsKQEAgLTU0Miw2ICs1NDIsMTEgQEAgcHVibGljOgogICAgIGludDMyX3Qg
dXNlcklkKCkgY29uc3QgeyByZXR1cm4gbV91c2VySWQ7IH0KICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCB1cGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKHhwY19vYmpl
Y3RfdCBldmVudCk7CisgICAgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBsYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogCkBAIC04MjYsNiArODMxLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogI2VuZGlmCisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fbGF1bmNoU2Vy
dmljZXNEYXRhYmFzZTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTUzLDYgKzk1MywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlkRmluaXNoTGF1bmNoaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBhdXRvIGxhdW5jaFNlcnZpY2VzRGF0YWJhc2UgPSBwcm9jZXNzUG9vbCgp
LmxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoKTsKKyAgICBpZiAobGF1bmNoU2VydmljZXNEYXRhYmFz
ZSkKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24oKS0+eHBj
Q29ubmVjdGlvbigpLCBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlLmdldCgpKTsKKyNlbmRpZgorCiAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fd2ViQ29ubmVjdGlvbik7CiAgICAgbV93ZWJDb25uZWN0aW9u
ID0gV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKHRoaXMpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0JKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNCw0ICs5MzQsMjUgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdoRHluYW1pYwogfQogI2VuZGlmCiAKK3Zv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoeHBjX29iamVj
dF90IGRhdGFiYXNlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2xh
dW5jaFNlcnZpY2VzRGF0YWJhc2UgPSBkYXRhYmFzZTsKKworICAgIGZvciAoYXV0byBwcm9jZXNz
IDogbV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MtPmlzTGF1bmNoaW5nKCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFwcm9jZXNzLT5jb25uZWN0aW9uKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gcHJvY2Vz
cy0+Y29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCk7CisgICAgICAgIHhwY19jb25uZWN0aW9u
X3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBkYXRhYmFzZSk7CisgICAgfQorfQorCitPU09iamVj
dFB0cjx4cGNfb2JqZWN0X3Q+IFdlYlByb2Nlc3NQb29sOjpsYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXVuY2hTZXJ2aWNlc0RhdGFiYXNlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1hQQ0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRXZl
bnRIYW5kbGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFhQQ0V2ZW50SGFuZGxlcj4g
eworcHVibGljOgorICAgIHZpcnR1YWwgflhQQ0V2ZW50SGFuZGxlcigpIHsgfQorCisgICAgdmly
dHVhbCBib29sIGhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCkgY29uc3QgPSAwOworfTsKKwor
fQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vz
c0xhdW5jaGVyLmgJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJY
UENFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBA
IC01Nyw2ICs1OCw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExh
dW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpID0g
MDsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICB2
aXJ0dWFsIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgogICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQ
cm9jZXNzVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDI2Mzc2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxOCArMjM4LDMxIEBAIHZvaWQgUHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgcHJvY2Vzc0xhdW5jaGVyLT5kaWRGaW5p
c2hMYXVuY2hpbmdQcm9jZXNzKDAsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKICAg
ICB9OwogCi0gICAgYXV0byBlcnJvckhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1v
dmUoZXJyb3JIYW5kbGVySW1wbCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3Zl
KGVycm9ySGFuZGxlckltcGwpLCBldmVudF0gewotICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1w
bChldmVudCk7Ci0gICAgICAgIH0pOworICAgIGF1dG8gZXZlbnRIYW5kbGVyID0gW2Vycm9ySGFu
ZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudEhhbmRsZXIgPSBtX2Ns
aWVudC0+eHBjRXZlbnRIYW5kbGVyKCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewor
ICAgICAgICB4cGNfcmV0YWluKGV2ZW50KTsKKworICAgICAgICBpZiAoIWV2ZW50IHx8IHhwY19n
ZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVy
SW1wbCksIGV2ZW50XSB7CisgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7
CisgICAgICAgICAgICAgICAgeHBjX3JlbGVhc2UoZXZlbnQpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXZlbnRIYW5kbGVy
KSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2V2ZW50SGFuZGxlciA9
IGV2ZW50SGFuZGxlciwgZXZlbnRdIHsKKyAgICAgICAgICAgICAgICBldmVudEhhbmRsZXItPmhh
bmRsZVhQQ0V2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShldmVudCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH07CiAKLSAgICB4cGNfY29ubmVjdGlv
bl9zZXRfZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGVycm9ySGFuZGxlcik7
CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdl
dCgpLCBldmVudEhhbmRsZXIpOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29u
bmVjdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3Vs
ZE1ha2VQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcpKSB7Ci0gICAgICAgIGVycm9ySGFuZGxl
cihudWxscHRyKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyKG51bGxwdHIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yNjIsNiArMjc1LDggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6Omxh
dW5jaFByb2Nlc3MoKQogICAgICAgICAgICAgQVNTRVJUKHhwY19nZXRfdHlwZShyZXBseSkgPT0g
WFBDX1RZUEVfRElDVElPTkFSWSk7CiAgICAgICAgICAgICBBU1NFUlQoIXN0cmNtcCh4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKHJlcGx5LCAibWVzc2FnZS1uYW1lIiksICJwcm9jZXNzLWZpbmlz
aGVkLWxhdW5jaGluZyIpKTsKIAorICAgICAgICAgICAgYXV0byB2ID0geHBjX2RpY3Rpb25hcnlf
Z2V0X3ZhbHVlKHJlcGx5LCAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIik7CisgICAgICAgICAg
ICBOU0xvZyhAIiVAIiwgdik7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1hY2hf
cG9ydF91cmVmc190IHNlbmRSaWdodENvdW50ID0gMDsKICAgICAgICAgICAgIG1hY2hfcG9ydF9n
ZXRfcmVmcyhtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0LCBNQUNIX1BPUlRfUklHSFRf
U0VORCwgJnNlbmRSaWdodENvdW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjM3NjAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlICJMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlICJYUENFdmVudEhhbmRsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpAQCAtMjk3LDYgKzMwMSw5IEBAIHByaXZhdGU6
CiAKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1
bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3Zl
cnJpZGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4g
eHBjRXZlbnRIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIHZvaWQgcHJv
Y2Vzc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBSZWY8QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKQEAgLTMyNyw2ICszMzQsMTkgQEAgcHJpdmF0ZToK
ICAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFByb2Nlc3NBc3NlcnRpb24+PiB3ZWJQcm9jZXNzQXNzZXJ0aW9uczsKICAgICB9OwogICAg
IE9wdGlvbmFsPFVwbG9hZEFjdGl2aXR5PiBtX3VwbG9hZEFjdGl2aXR5OworCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgY2xhc3MgWFBDRXZlbnRIYW5kbGVyIDogcHVibGljIFdlYktpdDo6WFBD
RXZlbnRIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFhQQ0V2ZW50SGFuZGxlcihjb25z
dCBOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CisgICAgICAgIHZpcnR1YWwgflhQQ0V2ZW50SGFuZGxl
cigpOworCisgICAgICAgIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBjb25zdCBv
dmVycmlkZTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQ
cm94eT4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKworI2ltcG9ydCAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZlB0cjxYUENFdmVu
dEhhbmRsZXI+IE5ldHdvcmtQcm9jZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhh
bmRsZXIoKnRoaXMpKTsKK30KKworYm9vbCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhh
bmRsZXI6OmhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCBldmVudCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
ZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcoZXZlbnQsICJtZXNzYWdlLW5hbWUiKTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1lKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyY21wKG1lc3NhZ2VOYW1lLCAidXBk
YXRlLWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhdXRvIGRhdGFiYXNlID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKGV2ZW50LCAibGF1
bmNoLXNlcnZpY2VzLWRhdGFiYXNlIik7CisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS51cGRhdGVM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlKGV2ZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQorCisK
K05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6WFBDRXZlbnRIYW5kbGVyKGNv
bnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzKQorICAgIDogbV9uZXR3b3Jr
UHJvY2VzcyhtYWtlV2Vha1B0cihuZXR3b3JrUHJvY2VzcykpCit7Cit9CisKK05ldHdvcmtQcm9j
ZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcigpCit7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY4OCw2ICsxNjg4LDcgQEAKIAkJQzE0
OTM4MDkyMjM0NzEwNDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0OTM4MDIyMjM0MUM2
MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovOyB9OwogCQlDMTVDQkIz
NjIzRjM3NzcxMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MwRTIzRENBNDI3MDAzQTVFRUIg
LyogUHJlZmVyZW5jZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZlcmVuY2VP
YnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi87IH07
CisJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
Lm1tICovOyB9OwogCQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxODE3MzYwMjA1
ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovOyB9OwogCQlDMUUxMjNCQTIwQTExNTcz
MDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0
TWVudS5oICovOyB9OwogCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICovOyB9
OwpAQCAtNTAyNSwxMiArNTAyNiwxNiBAQAogCQlDMTQ5MzgwMzIyMzQxREY3MDAwQ0Q3MDcgLyog
V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkz
ODBBMjIzODUzQkUwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlZmVyZW5jZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMTcxMENGMjI0QTdCRDAzMDBEN0MxMTIgLyogWFBDRXZlbnRI
YW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ0V2ZW50SGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMTcxMENGNTI0QUE2MzQ1MDBEN0MxMTIgLyogTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTcxMENGNjI0QUE2
NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM1RTIwNTgzOUY2MDBERkRBNjUgLyogRHJhd2lu
Z0FyZWFNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHJhd2luZ0FyZWFNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlz
cGxheUxpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpbmsuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzE4MTczNjIyMDU4NDRBOTAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzE4RkI1MUQyNDJGOUY3NjAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2xlZXBE
aXNhYmxlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTFF
MjQyRjlGNzcwMDdFOTg3NSAvKiBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFFMTIzQjkyMEExMTU3MjAwMjY0NkY0IC8qIFBERkNvbnRl
eHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERkNvbnRleHRNZW51
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxRUQ3MjM3MjRBNTY5MEUwMDNGNkNE
MyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQ29udHJvbGxlckFjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTIzN0Y1RjEyNDQxQ0EzMDA3ODA0NzIgLyogV2Vi
RWRpdG9yQ2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViRWRpdG9yQ2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHBh
dGggPSBpb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjM5MCw2ICs2Mzk1LDcgQEAKIAkJCQkyRDdBQUZEMjE4Qzg2NDA2MDBB
N0FDRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmggKi8sCiAJCQkJMkRDNkQ5QzExOEM0
NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi8sCiAJ
CQkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJl
Z2lzdHJ5Lm1tICovLAorCQkJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBYUENFdmVudEhh
bmRsZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtNzg1Myw2ICs3ODU5LDcgQEAKIAkJNTEwQ0M3RTcxNjEzOEU3MjAwRDAzRUQz
IC8qIE5ldHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCUMxRUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAvKiBjb2NvYSAqLywKIAkJCQkyOUFEMzA5MTE2
NEI0QzEwMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xzICovLAogCQkJCTUxNjMxOTkzMTYyODk4
MEUwMEUyMkYwMCAvKiBtYWMgKi8sCiAJCQkJNTEwQ0M3RUExNjEzOEU3MjAwRDAzRUQzIC8qIE5l
dHdvcmtQcm9jZXNzUHJveHkuY3BwICovLApAQCAtODQzNCw2ICs4NDQxLDggQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTJEMEM1NkZCMjI5RjFERUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50
U29mdExpbmsuaCAqLywKIAkJCQkyRDBDNTZGQzIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFu
YWdlbWVudFNvZnRMaW5rLm1tICovLAorCQkJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlDMTcxMENGNjI0QUE2NDMy
MDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICovLAogCQkJCTUz
MTU4NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2EubW0g
Ki8sCiAJCQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0NvY29h
LmggKi8sCiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tICovLApAQCAtMTAyNjIsNiArMTAyNzEsMTQgQEAKIAkJCXRhYldpZHRoID0gODsKIAkJ
CXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29h
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIz
NzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CUM1NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMjczNyw2ICsxMjc1NCw3IEBACiAJCQkJMjc0OUY2
NDUyMTQ2NTYxRTAwODM4MEJGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5MTM0NDEyMTJDRjlGMDAwMTI4QUZEIC8qIEpTTlBNZXRob2QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MTM0NDIyMTJDRjlGMDAwMTI4QUZEIC8qIEpTTlBPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzE3MTBDRjcyNEFBNjQzMjAwRDdDMTEyIC8qIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRG
NTg4MTY0QkEwOTUwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1N0MxNjRCOTE1RjAwNEJDMEM2
IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxQyAvKiBMaWJXZWJSVENO
ZXR3b3JrTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAs
NiArMjkwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVAKIHsK
ICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGhhbmRsZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VD
aGFuZ2VzKCk7CisjZW5kaWYKKwogICAgIC8vIFdlIGNhbGwgX2V4aXQoKSBkaXJlY3RseSBmcm9t
IHRoZSBiYWNrZ3JvdW5kIHF1ZXVlIGluIGNhc2UgdGhlIG1haW4gdGhyZWFkIGlzIHVucmVzcG9u
c2l2ZQogICAgIC8vIGFuZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRDbG9zZSgpIGRvZXMgbm90IGdl
dCBjYWxsZWQuCiAgICAgY29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWVDYWxsYmFjayhjYWxsRXhpdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw2ICs1MTAsMTAgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgeyByZXR1cm4gbV9zZXNzaW9uSUQg
PyBtX3Nlc3Npb25JRC0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgOiB0cnVlOyB9CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGhhbmRsZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VD
aGFuZ2VzKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2
aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMiArNTYsMjIgQEAKICNpbXBv
cnQgPFdlYkNvcmUvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaD4KICNlbmRpZgogCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2Jp
bGVDb3JlU2VydmljZXMuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJh
bWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworI2lmIEFTU0VSVF9F
TkFCTEVECisgICAgTlNMb2coQCJMU0RCICVkIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0
ZXJzIiwgZ2V0cGlkKCkpOworICAgIGF1dG8gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVm
ZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0
bWwiKSwgMCkpOworICAgIEFTU0VSVCghU3RyaW5nKHV0aS5nZXQoKSkuaXNFbXB0eSgpKTsKKyNl
bmRpZgorCiAgICAgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dCA9IHBhcmFtZXRlcnMuZGF0YURldGVj
dGlvbkNvbnRleHQ7CiAKICAgICBpZiAocGFyYW1ldGVycy5uZUhlbHBlckV4dGVuc2lvbkhhbmRs
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTYxLDI1ICsxNjEs
MjQgQEAgc3RhdGljIGlkIE5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdQogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJQcm9jZXNzOjpoYW5k
bGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdlcygpIGNvbnN0CiB7Ci0gICAgLy8gTWFwIExh
dW5jaCBTZXJ2aWNlcyBkYXRhYmFzZS4gVGhpcyBzaG91bGQgYmUgZG9uZSBhcyBlYXJseSBhcyBw
b3NzaWJsZSwgYXMgdGhlIG1hcHBpbmcgd2lsbCBmYWlsCi0gICAgLy8gaWYgJ2NvbS5hcHBsZS5s
c2QubWFwZGInIGlzIGJlaW5nIGFjY2Vzc2VkIGJlZm9yZSB0aGlzLgotICAgIGlmIChwYXJhbWV0
ZXJzLm1hcERCRXh0ZW5zaW9uSGFuZGxlKSB7Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoKnBhcmFtZXRlcnMubWFwREJFeHRlbnNpb25I
YW5kbGUpKTsKLSAgICAgICAgYm9vbCBvayA9IGV4dGVuc2lvbi0+Y29uc3VtZSgpOwotICAgICAg
ICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0gICAgICAgIC8vIFBlcmZvcm0gQVBJIGNhbGxzIHdo
aWNoIHdpbGwgY29tbXVuaWNhdGUgd2l0aCB0aGUgZGF0YWJhc2UgbWFwcGluZyBzZXJ2aWNlLCBh
bmQgbWFwIHRoZSBkYXRhYmFzZS4KLSAgICAgICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNy
ZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIo
InRleHQvaHRtbCIpLCAwKSk7Ci0KLSAgICAgICAgW1tvYmpjX2dldENsYXNzKCJfTFNEUmVhZFNl
cnZpY2UiKSBYUENDb25uZWN0aW9uVG9TZXJ2aWNlXSBpbnZhbGlkYXRlXTsKKyAgICBOU0xvZyhA
IkxTREIgJWQgaGFuZGxlTGF1bmNoU2VydmljZXNEYXRhYmFzZUNoYW5nZXMiLCBnZXRwaWQoKSk7
CiAKLSAgICAgICAgb2sgPSBleHRlbnNpb24tPnJldm9rZSgpOwotICAgICAgICBBU1NFUlRfVU5V
U0VEKG9rLCBvayk7Ci0KLSAgICAgICAgQVNTRVJUKFN0cmluZyh1dGkuZ2V0KCkpID09IFN0cmlu
ZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSkuZ2V0KCkpKTsKLSAgICB9CisgICAg
eHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+eHBjQ29ubmVjdGlvbigpLCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICBhdXRv
IGRhdGFiYXNlID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKGV2ZW50LCAibGF1bmNoLXNlcnZp
Y2VzLWRhdGFiYXNlIik7CisgICAgICAgIEFTU0VSVChkYXRhYmFzZSk7CisgICAgICAgIGF1dG8g
dXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgICAgICBBU1NFUlQo
U3RyaW5nKHV0aS5nZXQoKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgW1tMU0RhdGFiYXNlQ29udGV4
dCBzaGFyZWREYXRhYmFzZUNvbnRleHRdIG9ic2VydmVEYXRhYmFzZUNoYW5nZTRXZWJLaXQ6ZGF0
YWJhc2VdOworICAgICAgICB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSk7
CisgICAgICAgIEFTU0VSVCghU3RyaW5nKHV0aS5nZXQoKSkuaXNFbXB0eSgpKTsKKyAgICAgICAg
TlNMb2coQCJMU0RCICVkIGhhbmRsZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VDaGFuZ2VzIGhhbmRs
ZXIiLCBnZXRwaWQoKSk7CisgICAgfSk7Cit9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQorewogI2lmICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
V2ViQ29yZTo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJD
b3JlTG9nZ2luZ0NoYW5uZWxzKTsKICAgICBXZWJLaXQ6OmluaXRpYWxpemVMb2dDaGFubmVsc0lm
TmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViS2l0TG9nZ2luZ0NoYW5uZWxzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403214</attachid>
            <date>2020-06-30 11:47:57 -0700</date>
            <delta_ts>2020-06-30 12:11:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200630114756.patch</filename>
            <type>text/plain</type>
            <size>37870</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
OgorCiAyMDIwLTA2LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbWGNvZGVdIEVuYWJsZSB0aGUgIk15IE1hYyAoTWFjIENhdGFseXN0KSIgZGVzdGluYXRpb24g
aW4gV2ViS2l0IFhjb2RlIHByb2plY3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2Mzc2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxNCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0xTRGF0YWJhc2VDb250ZXh0UHJpdi5oPgogI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbGlmIFBMQVRGT1JN
KElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXNQcml2
Lmg+CkBAIC04MywxMyArODYsMTYgQEAgZW51bSBMU1Nlc3Npb25JRCB7CiB9OwogI2VuZGlmCiAK
LSNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotQGludGVyZmFjZSBfTFNEU2Vy
dmljZSA6IE5TT2JqZWN0IDxOU1hQQ0xpc3RlbmVyRGVsZWdhdGU+Ci0rIChOU1hQQ0Nvbm5lY3Rp
b24gKilYUENDb25uZWN0aW9uVG9TZXJ2aWNlOworQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4
dCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgTFNEYXRhYmFzZUNvbnRl
eHQgKnNoYXJlZERhdGFiYXNlQ29udGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBfTFNEUmVhZFNl
cnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChXZWJLaXRDaGFuZ2VUcmFja2luZykKKy0g
KGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4p
KHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOworLSAodm9pZClyZW1vdmVEYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2
ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVjdF90KWNoYW5nZTsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM3NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyk6
CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2VuZE1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6
On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAg
ICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VNYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvWFBDRXZlbnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVu
dEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQ6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHlDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQ
Q0V2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQ
Q0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdl
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA2LTMwICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5j
b20+CiAKICAgICAgICAgU2NydW5jaGluZyBhIHZpZGVvIHRvIFBpUCBjYW4gcmVzdWx0IGluIGJy
b2tlbiBhbmltYXRpb24gYW5kIGxlYXZlIFNhZmFyaSBpbiBhIGJhZCBzdGF0ZQpJbmRleDogU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNiArNDE2LDggQEAgVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveAogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJ
bnNwZWN0b3JXS1dlYlZpZXcubW0KIAorVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eUNvY29hLm1tCisKIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODYsNiArMzg2LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVDb25uZWN0aW8KIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1f
bGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLnN0YXJ0T2JzZXJ2aW5nKHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCkpOworI2VuZGlmCisKICAgICAvLyBXZSBnaXZlIGEgY2hhbmNlIGZvciBk
aWRDbG9zZSgpIHRvIGdldCBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJ1dCBmb3JjZWZ1bGx5
IGNhbGwgX2V4aXQoKSBhZnRlciBhIGRlbGF5CiAgICAgLy8gaW4gY2FzZSB0aGUgbWFpbiB0aHJl
YWQgaXMgdW5yZXNwb25zaXZlIG9yIGRpZENsb3NlKCkgdGFrZXMgdG9vIGxvbmcuCiAgICAgY29u
bmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhjYWxsRXhp
dFNvb24pOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBACiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5oIgorCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdl
KiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCkBAIC01OTcsNiArNTk5LDEwIEBA
IHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dDsKICAgICBTZWNvbmRzIG1fc2VydmljZVdvcmtlckZldGNoVGltZW91dCB7
IGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IH07CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgbV9sYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9P
U09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlciB7CitwdWJsaWM6
CisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCk7CisgICAgfkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlcigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKCk7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPGlkPiBtX29ic2VydmVyOworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+
IG1fY29ubmVjdGlvbjsKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fbWVzc2FnZTsK
K307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7Cit9CisKK3Zv
aWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgbV9jb25uZWN0aW9uID0gY29ubmVjdGlvbi0+
eHBjQ29ubmVjdGlvbigpOworCisgICAgbV9vYnNlcnZlciA9IFtbTFNEYXRhYmFzZUNvbnRleHQg
c2hhcmVkRGF0YWJhc2VDb250ZXh0XSBhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpe
KHhwY19vYmplY3RfdCBjaGFuZ2UpIHsKKyAgICAgICAgbV9tZXNzYWdlID0gYWRvcHRPU09iamVj
dCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4
cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1fbWVzc2FnZS5nZXQoKSwgIm1lc3NhZ2UtbmFtZSIs
ICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIik7CisgICAgICAgIGF1dG8gcyA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9tZXNzYWdlLmdldCgpLCAibWVzc2FnZS1uYW1lIik7
CisgICAgICAgIEFTU0VSVChzKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1f
bWVzc2FnZS5nZXQoKSwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIsIGNoYW5nZSk7CisKKyAg
ICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9t
ZXNzYWdlLmdldCgpKTsKKyAgICB9XTsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OnNlbmRNZXNzYWdlKCkKK3sKKyAgICBpZiAobV9jb25uZWN0aW9uICYmIG1fbWVz
c2FnZSkKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5n
ZXQoKSwgbV9tZXNzYWdlLmdldCgpKTsKK30KKworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyOjp+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCkKK3sKKyAgICBbW0xTRGF0YWJh
c2VDb250ZXh0IHNoYXJlZERhdGFiYXNlQ29udGV4dF0gcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNl
cnZlcjRXZWJLaXQ6bV9vYnNlcnZlci5nZXQoKV07Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9m
aWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShyZXZpc2lvbiAyNjM3NjAp
CisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAtNTg4LDcgKzU4OCw3IEBA
CiAoYWxsb3cgaXBjLXBvc2l4LXNobS1yZWFkKgogICAgICAgIChpcGMtcG9zaXgtbmFtZS1wcmVm
aXggImFwcGxlLmNmcHJlZnMuIikpCiAgCi0oYWxsb3cgbWFjaC1sb29rdXAKKyhkZW55IG1hY2gt
bG9va3VwCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUubHNkLm1hcGRiIikpCiAKIDs7IDxy
ZGFyOi8vcHJvYmxlbS8xMjQxMzk0Mj4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2
aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxD
b3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRlV0
aWxpdGllc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
PgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KQEAgLTc5LDYgKzgwLDE3IEBAIHN0
YXRpYyB2b2lkIFhQQ1NlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2MKIAogICAgICAgICAgICAgICAg
IGF1dG8gcmVwbHkgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShl
dmVudCkpOwogICAgICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcocmVwbHku
Z2V0KCksICJtZXNzYWdlLW5hbWUiLCAicHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKTsKKwor
ICAgICAgICAgICAgICAgIGlmICghc3RyY21wKHNlcnZpY2VOYW1lLCAiY29tLmFwcGxlLldlYktp
dC5OZXR3b3JraW5nIikpIHsKKyAgICAgICAgICAgICAgICAgICAgX19ibG9jayBPU09iamVjdFB0
cjx4cGNfb2JqZWN0X3Q+IGxhdW5jaFNlcnZpY2VzRGF0YWJhc2U7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gb2JzZXJ2ZXIgPSBbW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRl
eHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdIGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2Vi
S2l0Ol4oeHBjX29iamVjdF90IGNoYW5nZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGF1
bmNoU2VydmljZXNEYXRhYmFzZSA9IGNoYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgfV07Cisg
ICAgICAgICAgICAgICAgICAgIFtbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4
dCIpIHNoYXJlZERhdGFiYXNlQ29udGV4dF0gcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRX
ZWJLaXQ6b2JzZXJ2ZXJdOworCisgICAgICAgICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF92YWx1ZShyZXBseS5nZXQoKSwgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2UiLCBsYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAg
ICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9j
b25uZWN0aW9uKGV2ZW50KSwgcmVwbHkuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgaW50IGZk
ID0geHBjX2RpY3Rpb25hcnlfZHVwX2ZkKGV2ZW50LCAic3Rkb3V0Iik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdl
bWVudAogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNp
dGVEYXRhU3RvcmUqIHdpdGhXZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cik7Ci0gICAgTmV0d29y
a1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNz
LmdldCgpOyB9CisgICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9CiAgICAgdm9pZCBuZXR3b3JrUHJv
Y2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogCiAgICAgdm9pZCBnZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwpAQCAtNTQy
LDYgKzU0MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50MzJfdCB1c2VySWQoKSBjb25zdCB7IHJldHVy
biBtX3VzZXJJZDsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHVw
ZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoeHBjX29iamVjdF90IGV2ZW50KTsKKyAgICBPU09i
amVjdFB0cjx4cGNfb2JqZWN0X3Q+IGxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoKSBjb25zdDsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgy
Niw2ICs4MzEsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dp
dGhVc2VySW50ZXJhY3Rpb247CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9T
T2JqZWN0UHRyPHhwY19vYmplY3RfdD4gbV9sYXVuY2hTZXJ2aWNlc0RhdGFiYXNlOworI2VuZGlm
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTMs
NiArOTUzLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gbGF1
bmNoU2VydmljZXNEYXRhYmFzZSA9IHByb2Nlc3NQb29sKCkubGF1bmNoU2VydmljZXNEYXRhYmFz
ZSgpOworICAgIGlmIChsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKQorICAgICAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksIGxhdW5jaFNl
cnZpY2VzRGF0YWJhc2UuZ2V0KCkpOworI2VuZGlmCisKICAgICBSRUxFQVNFX0FTU0VSVCghbV93
ZWJDb25uZWN0aW9uKTsKICAgICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjYzNzYwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtOTM0LDQgKzkzNCwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpy
ZWdpc3RlckhpZ2hEeW5hbWljCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZSh4cGNfb2JqZWN0X3QgZGF0YWJhc2UpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIG1fbGF1bmNoU2VydmljZXNEYXRhYmFzZSA9
IGRhdGFiYXNlOworCisgICAgZm9yIChhdXRvIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAg
ICAgICBpZiAocHJvY2Vzcy0+aXNMYXVuY2hpbmcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAoIXByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnhwY0Nv
bm5lY3Rpb24oKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rp
b24sIGRhdGFiYXNlKTsKKyAgICB9Cit9CisKK09TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gV2Vi
UHJvY2Vzc1Bvb2w6OmxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoKSBjb25zdAoreworICAgIHJldHVy
biBtX2xhdW5jaFNlcnZpY2VzRGF0YWJhc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVy
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZl
bnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8WFBDRXZlbnRIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+WFBDRXZlbnRIYW5kbGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlWFBDRXZl
bnQoeHBjX29iamVjdF90KSBjb25zdCA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24g
MjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dp
bi9XaW4zMkhhbmRsZS5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
ICJYUENFdmVudEhhbmRsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQpAQCAtNTcsNiArNjEsOSBAQCBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDb25maWd1cmVKU0NGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGlzSklURW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8WFBDRXZlbnRI
YW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisjZW5k
aWYKICAgICB9OwogICAgIAogICAgIGVudW0gY2xhc3MgUHJvY2Vzc1R5cGUgewpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vz
c0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzgsMTggKzIzOCwzMSBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgICAgIHByb2Nlc3NMYXVuY2hlci0+ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcygwLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoKSk7CiAgICAgfTsKIAotICAgIGF1dG8gZXJyb3JI
YW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpXSAo
eHBjX29iamVjdF90IGV2ZW50KSBtdXRhYmxlIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZl
bnRdIHsKLSAgICAgICAgICAgIGVycm9ySGFuZGxlckltcGwoZXZlbnQpOwotICAgICAgICB9KTsK
KyAgICBhdXRvIGV2ZW50SGFuZGxlciA9IFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJv
ckhhbmRsZXJJbXBsKSwgZXZlbnRIYW5kbGVyID0gbV9jbGllbnQtPnhwY0V2ZW50SGFuZGxlcigp
XSAoeHBjX29iamVjdF90IGV2ZW50KSBtdXRhYmxlIHsKKyAgICAgICAgeHBjX3JldGFpbihldmVu
dCk7CisKKyAgICAgICAgaWYgKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19U
WVBFX0VSUk9SKSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Vycm9y
SGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudF0geworICAgICAg
ICAgICAgICAgIGVycm9ySGFuZGxlckltcGwoZXZlbnQpOworICAgICAgICAgICAgICAgIHhwY19y
ZWxlYXNlKGV2ZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGV2ZW50SGFuZGxlcikgeworICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXIsIGV2ZW50XSB7
CisgICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVyLT5oYW5kbGVYUENFdmVudChldmVudCk7Cisg
ICAgICAgICAgICAgICAgeHBjX3JlbGVhc2UoZXZlbnQpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KICAgICB9OwogCi0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94
cGNDb25uZWN0aW9uLmdldCgpLCBlcnJvckhhbmRsZXIpOworICAgIHhwY19jb25uZWN0aW9uX3Nl
dF9ldmVudF9oYW5kbGVyKG1feHBjQ29ubmVjdGlvbi5nZXQoKSwgZXZlbnRIYW5kbGVyKTsKIAog
ICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpOwogCiAgICAg
aWYgKFVOTElLRUxZKG1fbGF1bmNoT3B0aW9ucy5zaG91bGRNYWtlUHJvY2Vzc0xhdW5jaEZhaWxG
b3JUZXN0aW5nKSkgewotICAgICAgICBlcnJvckhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIGV2
ZW50SGFuZGxlcihudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjYyLDYg
KzI3NSw4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAg
ICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUocmVwbHkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOwog
ICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhyZXBs
eSwgIm1lc3NhZ2UtbmFtZSIpLCAicHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKSk7CiAKKyAg
ICAgICAgICAgIGF1dG8gdiA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShyZXBseSwgImxhdW5j
aC1zZXJ2aWNlcy1kYXRhYmFzZSIpOworICAgICAgICAgICAgTlNMb2coQCIlQCIsIHYpOwogI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICBtYWNoX3BvcnRfdXJlZnNfdCBzZW5kUmlnaHRD
b3VudCA9IDA7CiAgICAgICAgICAgICBtYWNoX3BvcnRfZ2V0X3JlZnMobWFjaF90YXNrX3NlbGYo
KSwgbGlzdGVuaW5nUG9ydCwgTUFDSF9QT1JUX1JJR0hUX1NFTkQsICZzZW5kUmlnaHRDb3VudCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRIYW5k
bGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKIH0KQEAgLTI5Nyw2ICszMDEsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUHJvY2Vzc0xhdW5j
aGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIq
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0
IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYp
OwogCkBAIC0zMjcsNiArMzM0LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPj4g
d2ViUHJvY2Vzc0Fzc2VydGlvbnM7CiAgICAgfTsKICAgICBPcHRpb25hbDxVcGxvYWRBY3Rpdml0
eT4gbV91cGxvYWRBY3Rpdml0eTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNsYXNzIFhQ
Q0V2ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7CisgICAgcHVi
bGljOgorICAgICAgICBYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYp
OworICAgICAgICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKTsKKworICAgICAgICBib29sIGhh
bmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBwcml2YXRl
OgorICAgICAgICBXZWFrUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7
CisgICAgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHlDb2NvYS5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJO
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisKKyNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyKCp0aGlzKSk7Cit9CisKK2Jv
b2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCh4
cGNfb2JqZWN0X3QgZXZlbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShl
dmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1
dG8gbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAibWVzc2Fn
ZS1uYW1lIik7CisgICAgaWYgKCFtZXNzYWdlTmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKHN0cmNtcChtZXNzYWdlTmFtZSwgInVwZGF0ZS1sYXVuY2gtc2VydmljZXMtZGF0
YWJhc2UiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBkYXRhYmFzZSA9IHhw
Y19kaWN0aW9uYXJ5X2dldF92YWx1ZShldmVudCwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIp
OworICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fbmV0
d29ya1Byb2Nlc3MtPnByb2Nlc3NQb29sKCkudXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZShl
dmVudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpY
UENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobWFrZVdlYWtQdHIobmV0
d29ya1Byb2Nlc3MpKQoreworfQorCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRs
ZXI6On5YUENFdmVudEhhbmRsZXIoKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2Mzc2MCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE2ODgsNiArMTY4OCw3IEBACiAJCUMxNDkzODA5MjIzNDcxMDQwMDBDRDcwNyAv
KiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAyMjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hT
eW50aGVzaXNDbGllbnQuaCAqLzsgfTsKIAkJQzE1Q0JCMzYyM0YzNzc3MTAwMzAwQ0M3IC8qIFBy
ZWZlcmVuY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzE0NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNUNC
QjM3MjNGMzdFQ0IwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTVDQkIzMzIzRjM0QzM4MDAzMDBD
QzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICovOyB9OworCQlDMTcxMENGNzI0QUE2NDMyMDBE
N0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEy
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLzsgfTsKIAkJQzE4MTczNjEy
MDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxh
eUxpbmsuaCAqLzsgfTsKIAkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRN
ZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUx
MjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4
ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNG
NDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKQEAgLTUwMjUsMTIgKzUwMjYsMTYg
QEAKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyog
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE1Q0JCMzMyM0YzNEMz
ODAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFByZWZlcmVuY2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3
MTBDRjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBYUENFdmVudEhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBD
RjUyNEFBNjM0NTAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzE4MTczNUUyMDU4MzlGNjAwREZEQTY1IC8qIERyYXdpbmdBcmVhTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERyYXdpbmdBcmVhTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpc3BsYXlMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYy
MjA1ODQ0QTkwMERGREE2NSAvKiBEaXNwbGF5TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aXNwbGF5TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTFEMjQy
RjlGNzYwMDdFOTg3NSAvKiBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRTI0MkY5Rjc3MDA3RTk4NzUgLyogV2Vi
U2xlZXBEaXNhYmxlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTbGVlcERpc2FibGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
RTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQREZDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94
eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NQcm94eUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNG
NDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzUyMzdGNUYxMjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5
IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRGF0ZVRp
bWVJbnB1dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzOTAsNiAr
NjM5NSw3IEBACiAJCQkJMkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbnRl
bnRQcm92aWRlci5oICovLAogCQkJCTJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZp
ZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovLAogCQkJCTJEQzZEOUMyMThDNDRBNjEwMDQz
QkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLywKKwkJCQlDMTcx
MENGMjI0QTdCRDAzMDBEN0MxMTIgLyogWFBDRXZlbnRIYW5kbGVyLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IENvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc4NTMsNiArNzg1
OSw3IEBACiAJCTUxMENDN0U3MTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNjI0QTU2OEY1MDAz
RjZDRDMgLyogY29jb2EgKi8sCiAJCQkJMjlBRDMwOTExNjRCNEMxMDAwNzJERUE5IC8qIEN1c3Rv
bVByb3RvY29scyAqLywKIAkJCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyogbWFjICovLAog
CQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAq
LywKQEAgLTg0MzQsNiArODQ0MSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDBDNTZGQjIy
OUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmggKi8sCiAJCQkJMkQw
QzU2RkMyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5tbSAqLywK
KwkJCQlDMTcxMENGNTI0QUE2MzQ1MDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLmggKi8sCisJCQkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLywKIAkJCQk1MzE1ODc2QjIwNzZCNzEzMDA0QkY5RjMg
LyogTmV0d29ya0FjdGl2aXR5VHJhY2tlckNvY29hLm1tICovLAogCQkJCTUzMjE1OTRGMURCQUU2
RDcwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oICovLAogCQkJCTVDQkM5QjhCMUM2
NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLywKQEAgLTEwMjYyLDYg
KzEwMjcxLDE0IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJ
CUMxRUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5l
dHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gY29jb2E7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDNTQyNTZBRTE4QkVDMTYxMDBERTQx
NzkgLyogZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMTI3MzcsNiArMTI3NTQsNyBAQAogCQkJCTI3NDlGNjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQx
MjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QTWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
OTEzNDQyMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyog
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTI5ODRGNTdDMTY0QjkxNUYwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYw
NjBFMTE2NTQzMTg1MDBGMzI4MUMgLyogTGliV2ViUlRDTmV0d29ya01lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxMCBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKElQCiB7CiAgICAgQXV4aWxpYXJ5UHJvY2Vzczo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdlcygpOworI2VuZGlmCisKICAg
ICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dyb3VuZCBxdWV1ZSBp
biBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAvLyBhbmQgQXV4aWxp
YXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgogICAgIGNvbm5lY3Rp
b24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soY2FsbEV4aXQpOwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjM3NjAp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MTAsNiArNTEwLDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
dm9pZCBoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdlcygpIGNvbnN0OworI2VuZGlm
CisKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247
CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+
IG1fcGFnZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsMTIgKzU2LDIyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBX
ZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIE5TTG9nKEAiTFNE
QiAlZCBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyIsIGdldHBpZCgpKTsKKyAgICBh
dXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhr
VVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKKyAgICBBU1NFUlQo
IVN0cmluZyh1dGkuZ2V0KCkpLmlzRW1wdHkoKSk7CisjZW5kaWYKKwogICAgIG1fZGF0YURldGVj
dGlvbkNvbnRleHQgPSBwYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0OwogCiAgICAgaWYg
KHBhcmFtZXRlcnMubmVIZWxwZXJFeHRlbnNpb25IYW5kbGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2
Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MSwyNSArMTYxLDI0IEBAIHN0YXRpYyBpZCBOU0FwcGxp
Y2F0aW9uQWNjZXNzaWJpbGl0eUZvY3UKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKK3ZvaWQgV2ViUHJvY2Vzczo6aGFuZGxlTGF1bmNoU2VydmljZXNEYXRhYmFz
ZUNoYW5nZXMoKSBjb25zdAogewotICAgIC8vIE1hcCBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2Uu
IFRoaXMgc2hvdWxkIGJlIGRvbmUgYXMgZWFybHkgYXMgcG9zc2libGUsIGFzIHRoZSBtYXBwaW5n
IHdpbGwgZmFpbAotICAgIC8vIGlmICdjb20uYXBwbGUubHNkLm1hcGRiJyBpcyBiZWluZyBhY2Nl
c3NlZCBiZWZvcmUgdGhpcy4KLSAgICBpZiAocGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRs
ZSkgewotICAgICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShX
VEZNb3ZlKCpwYXJhbWV0ZXJzLm1hcERCRXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgICAgIGJvb2wg
b2sgPSBleHRlbnNpb24tPmNvbnN1bWUoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2sp
OwotICAgICAgICAvLyBQZXJmb3JtIEFQSSBjYWxscyB3aGljaCB3aWxsIGNvbW11bmljYXRlIHdp
dGggdGhlIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZSwgYW5kIG1hcCB0aGUgZGF0YWJhc2UuCi0g
ICAgICAgIGF1dG8gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVy
Rm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOwotCi0g
ICAgICAgIFtbb2JqY19nZXRDbGFzcygiX0xTRFJlYWRTZXJ2aWNlIikgWFBDQ29ubmVjdGlvblRv
U2VydmljZV0gaW52YWxpZGF0ZV07CisgICAgTlNMb2coQCJMU0RCICVkIGhhbmRsZUxhdW5jaFNl
cnZpY2VzRGF0YWJhc2VDaGFuZ2VzIiwgZ2V0cGlkKCkpOwogCi0gICAgICAgIG9rID0gZXh0ZW5z
aW9uLT5yZXZva2UoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotCi0gICAgICAg
IEFTU0VSVChTdHJpbmcodXRpLmdldCgpKSA9PSBTdHJpbmcoYWRvcHRDRihVVFR5cGVDcmVhdGVQ
cmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0
L2h0bWwiKSwgMCkpLmdldCgpKSk7Ci0gICAgfQorICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVu
dF9oYW5kbGVyKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgXih4
cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgYXV0byBkYXRhYmFzZSA9IHhwY19kaWN0aW9u
YXJ5X2dldF92YWx1ZShldmVudCwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIpOworICAgICAg
ICBBU1NFUlQoZGF0YWJhc2UpOworICAgICAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigi
dGV4dC9odG1sIiksIDApKTsKKyAgICAgICAgQVNTRVJUKFN0cmluZyh1dGkuZ2V0KCkpLmlzRW1w
dHkoKSk7CisgICAgICAgIFtbTFNEYXRhYmFzZUNvbnRleHQgc2hhcmVkRGF0YWJhc2VDb250ZXh0
XSBvYnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0OmRhdGFiYXNlXTsKKyAgICAgICAgdXRpID0g
YWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNz
TUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgICAgICBBU1NFUlQoIVN0cmlu
Zyh1dGkuZ2V0KCkpLmlzRW1wdHkoKSk7CisgICAgICAgIE5TTG9nKEAiTFNEQiAlZCBoYW5kbGVM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdlcyBoYW5kbGVyIiwgZ2V0cGlkKCkpOworICAgIH0p
OworfQogCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKICNpZiAhTE9HX0RJU0FC
TEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFdlYkNvcmU6OmluaXRpYWxpemVMb2dD
aGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViQ29yZUxvZ2dpbmdDaGFubmVscyk7CiAg
ICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShwYXJhbWV0ZXJzLndl
YktpdExvZ2dpbmdDaGFubmVscyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403220</attachid>
            <date>2020-06-30 12:11:20 -0700</date>
            <delta_ts>2020-06-30 12:39:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200630121119.patch</filename>
            <type>text/plain</type>
            <size>38185</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
OgorCiAyMDIwLTA2LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbWGNvZGVdIEVuYWJsZSB0aGUgIk15IE1hYyAoTWFjIENhdGFseXN0KSIgZGVzdGluYXRpb24g
aW4gV2ViS2l0IFhjb2RlIHByb2plY3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2Mzc2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxNCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0xTRGF0YWJhc2VDb250ZXh0UHJpdi5oPgogI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbGlmIFBMQVRGT1JN
KElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXNQcml2
Lmg+CkBAIC04MywxMyArODYsMTYgQEAgZW51bSBMU1Nlc3Npb25JRCB7CiB9OwogI2VuZGlmCiAK
LSNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotQGludGVyZmFjZSBfTFNEU2Vy
dmljZSA6IE5TT2JqZWN0IDxOU1hQQ0xpc3RlbmVyRGVsZWdhdGU+Ci0rIChOU1hQQ0Nvbm5lY3Rp
b24gKilYUENDb25uZWN0aW9uVG9TZXJ2aWNlOworQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4
dCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgTFNEYXRhYmFzZUNvbnRl
eHQgKnNoYXJlZERhdGFiYXNlQ29udGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBfTFNEUmVhZFNl
cnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChXZWJLaXRDaGFuZ2VUcmFja2luZykKKy0g
KGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4p
KHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOworLSAodm9pZClyZW1vdmVEYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2
ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVjdF90KWNoYW5nZTsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM3NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyk6
CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2VuZE1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6
On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAg
ICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VNYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvWFBDRXZlbnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVu
dEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQ6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHlDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQ
Q0V2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQ
Q0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdl
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA2LTMwICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5j
b20+CiAKICAgICAgICAgU2NydW5jaGluZyBhIHZpZGVvIHRvIFBpUCBjYW4gcmVzdWx0IGluIGJy
b2tlbiBhbmltYXRpb24gYW5kIGxlYXZlIFNhZmFyaSBpbiBhIGJhZCBzdGF0ZQpJbmRleDogU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNiArNDE2LDggQEAgVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveAogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJ
bnNwZWN0b3JXS1dlYlZpZXcubW0KIAorVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eUNvY29hLm1tCisKIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODYsNiArMzg2LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVDb25uZWN0aW8KIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1f
bGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLnN0YXJ0T2JzZXJ2aW5nKHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCkpOworI2VuZGlmCisKICAgICAvLyBXZSBnaXZlIGEgY2hhbmNlIGZvciBk
aWRDbG9zZSgpIHRvIGdldCBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJ1dCBmb3JjZWZ1bGx5
IGNhbGwgX2V4aXQoKSBhZnRlciBhIGRlbGF5CiAgICAgLy8gaW4gY2FzZSB0aGUgbWFpbiB0aHJl
YWQgaXMgdW5yZXNwb25zaXZlIG9yIGRpZENsb3NlKCkgdGFrZXMgdG9vIGxvbmcuCiAgICAgY29u
bmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhjYWxsRXhp
dFNvb24pOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBACiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5oIgorCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdl
KiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCkBAIC01OTcsNiArNTk5LDEwIEBA
IHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dDsKICAgICBTZWNvbmRzIG1fc2VydmljZVdvcmtlckZldGNoVGltZW91dCB7
IGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IH07CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgbV9sYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9P
U09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlciB7CitwdWJsaWM6
CisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCk7CisgICAgfkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlcigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKCk7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPGlkPiBtX29ic2VydmVyOworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+
IG1fY29ubmVjdGlvbjsKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fbWVzc2FnZTsK
K307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7Cit9CisKK3Zv
aWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9t
U3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAg
IGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0
aW9uID0gY29ubmVjdGlvbi0+eHBjQ29ubmVjdGlvbigpOworCisgICAgbV9vYnNlcnZlciA9IFtj
b250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNo
YW5nZSkgeworICAgICAgICBtX21lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5
X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF9zdHJpbmcobV9tZXNzYWdlLmdldCgpLCAibWVzc2FnZS1uYW1lIiwgInVwZGF0ZS1sYXVuY2gt
c2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICAgICAgYXV0byBzID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhtX21lc3NhZ2UuZ2V0KCksICJtZXNzYWdlLW5hbWUiKTsKKyAgICAgICAgQVNTRVJU
KHMpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobV9tZXNzYWdlLmdldCgpLCAi
bGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIiwgY2hhbmdlKTsKKworICAgICAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UobV9jb25uZWN0aW9uLmdldCgpLCBtX21lc3NhZ2UuZ2V0KCkpOwor
ICAgIH1dOworfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2VuZE1l
c3NhZ2UoKQoreworICAgIGlmIChtX2Nvbm5lY3Rpb24gJiYgbV9tZXNzYWdlKQorICAgICAgICB4
cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV9jb25uZWN0aW9uLmdldCgpLCBtX21lc3NhZ2Uu
Z2V0KCkpOworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKQoreworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNzRnJv
bVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsKKwor
ICAgIGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVEYXRh
YmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2Nv
bnRleHQgcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6bV9vYnNlcnZlci5nZXQo
KV07Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxl
cy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LnNiCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNl
cy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29y
a2luZyBjb3B5KQpAQCAtNTg4LDcgKzU4OCw3IEBACiAoYWxsb3cgaXBjLXBvc2l4LXNobS1yZWFk
KgogICAgICAgIChpcGMtcG9zaXgtbmFtZS1wcmVmaXggImFwcGxlLmNmcHJlZnMuIikpCiAgCi0o
YWxsb3cgbWFjaC1sb29rdXAKKyhkZW55IG1hY2gtbG9va3VwCiAgICAgKGdsb2JhbC1uYW1lICJj
b20uYXBwbGUubHNkLm1hcGRiIikpCiAKIDs7IDxyZGFyOi8vcHJvYmxlbS8xMjQxMzk0Mj4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0J
KHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlv
bi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRlV0aWxpdGllc1NQSS5oPgorI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9Y
UENTUEkuaD4KQEAgLTc5LDYgKzgwLDE3IEBAIHN0YXRpYyB2b2lkIFhQQ1NlcnZpY2VFdmVudEhh
bmRsZXIoeHBjX2MKIAogICAgICAgICAgICAgICAgIGF1dG8gcmVwbHkgPSBhZG9wdE9TT2JqZWN0
KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShldmVudCkpOwogICAgICAgICAgICAgICAgIHhw
Y19kaWN0aW9uYXJ5X3NldF9zdHJpbmcocmVwbHkuZ2V0KCksICJtZXNzYWdlLW5hbWUiLCAicHJv
Y2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKTsKKworICAgICAgICAgICAgICAgIGlmICghc3RyY21w
KHNlcnZpY2VOYW1lLCAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nIikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgX19ibG9jayBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2U7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gb2JzZXJ2ZXIgPSBbW05TQ2xh
c3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRd
IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNoYW5nZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoU2VydmljZXNEYXRhYmFzZSA9IGNoYW5n
ZTsKKyAgICAgICAgICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgICAgIFtbTlNDbGFz
c0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIpIHNoYXJlZERhdGFiYXNlQ29udGV4dF0g
cmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6b2JzZXJ2ZXJdOworCisgICAgICAg
ICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShyZXBseS5nZXQoKSwgIkxhdW5j
aFNlcnZpY2VzRGF0YWJhc2UiLCBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3Nh
Z2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKGV2ZW50KSwgcmVwbHkuZ2V0
KCkpOwogCiAgICAgICAgICAgICAgICAgaW50IGZkID0geHBjX2RpY3Rpb25hcnlfZHVwX2ZkKGV2
ZW50LCAic3Rkb3V0Iik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogICAgIE5ldHdvcmtQcm9jZXNzUHJv
eHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGhXZWJzaXRlRGF0
YVN0b3JlID0gbnVsbHB0cik7Ci0gICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nl
c3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9CisgICAgTmV0d29ya1Byb2Nl
c3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNz
LmdldCgpOyB9CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQ
cm94eSYpOwogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vz
c1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uRGVsYXllZFJlcGx5JiYpOwpAQCAtNTQyLDYgKzU0MiwxMSBAQCBwdWJsaWM6CiAgICAg
aW50MzJfdCB1c2VySWQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJJZDsgfQogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHVwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2Uo
eHBjX29iamVjdF90IGV2ZW50KTsKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGxhdW5j
aFNlcnZpY2VzRGF0YWJhc2UoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgyNiw2ICs4MzEsMTAgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAjZW5kaWYK
KworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gbV9s
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShy
ZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTMsNiArOTUzLDEyIEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gbGF1bmNoU2VydmljZXNEYXRhYmFzZSA9IHByb2Nl
c3NQb29sKCkubGF1bmNoU2VydmljZXNEYXRhYmFzZSgpOworICAgIGlmIChsYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlKQorICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlv
bigpLT54cGNDb25uZWN0aW9uKCksIGxhdW5jaFNlcnZpY2VzRGF0YWJhc2UuZ2V0KCkpOworI2Vu
ZGlmCisKICAgICBSRUxFQVNFX0FTU0VSVCghbV93ZWJDb25uZWN0aW9uKTsKICAgICBtX3dlYkNv
bm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTM0LDQgKzkz
NCwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlckhpZ2hEeW5hbWljCiB9CiAjZW5k
aWYKIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZSh4
cGNfb2JqZWN0X3QgZGF0YWJhc2UpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIG1fbGF1bmNoU2VydmljZXNEYXRhYmFzZSA9IGRhdGFiYXNlOworCisgICAgZm9yIChhdXRv
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy0+aXNMYXVuY2hp
bmcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXByb2Nlc3MtPmNvbm5l
Y3Rpb24oKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvIGNvbm5lY3Rpb24g
PSBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKTsKKyAgICAgICAgeHBjX2Nv
bm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24sIGRhdGFiYXNlKTsKKyAgICB9Cit9CisK
K09TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gV2ViUHJvY2Vzc1Bvb2w6OmxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2xhdW5jaFNlcnZpY2VzRGF0YWJhc2U7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8WFBDRXZlbnRI
YW5kbGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+WFBDRXZlbnRIYW5kbGVyKCkgeyB9CisK
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBjb25zdCA9IDA7
Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNz
TGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJYUENFdmVudEhhbmRsZXIuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V1BFKQpAQCAtNTcsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb25maWd1cmVKU0NGb3JUZXN0
aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzSklU
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICAgICAgdmlydHVhbCBSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKICAgICB9OwogICAgIAogICAgIGVudW0g
Y2xhc3MgUHJvY2Vzc1R5cGUgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAy
NjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xh
dW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTggKzIzOCwzMSBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIHByb2Nlc3NMYXVuY2hlci0+
ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcygwLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIo
KSk7CiAgICAgfTsKIAotICAgIGF1dG8gZXJyb3JIYW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwg
PSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpXSAoeHBjX29iamVjdF90IGV2ZW50KSBtdXRhYmxl
IHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0g
V1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRdIHsKLSAgICAgICAgICAgIGVycm9ySGFu
ZGxlckltcGwoZXZlbnQpOwotICAgICAgICB9KTsKKyAgICBhdXRvIGV2ZW50SGFuZGxlciA9IFtl
cnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRIYW5kbGVy
ID0gbV9jbGllbnQtPnhwY0V2ZW50SGFuZGxlcigpXSAoeHBjX29iamVjdF90IGV2ZW50KSBtdXRh
YmxlIHsKKyAgICAgICAgeHBjX3JldGFpbihldmVudCk7CisKKyAgICAgICAgaWYgKCFldmVudCB8
fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9y
SGFuZGxlckltcGwpLCBldmVudF0geworICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlckltcGwo
ZXZlbnQpOworICAgICAgICAgICAgICAgIHhwY19yZWxlYXNlKGV2ZW50KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV2ZW50
SGFuZGxlcikgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtldmVudEhh
bmRsZXIgPSBldmVudEhhbmRsZXIsIGV2ZW50XSB7CisgICAgICAgICAgICAgICAgZXZlbnRIYW5k
bGVyLT5oYW5kbGVYUENFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgeHBjX3JlbGVhc2Uo
ZXZlbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9OwogCi0gICAgeHBjX2Nv
bm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBlcnJvckhh
bmRsZXIpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1feHBjQ29ubmVj
dGlvbi5nZXQoKSwgZXZlbnRIYW5kbGVyKTsKIAogICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZSht
X3hwY0Nvbm5lY3Rpb24uZ2V0KCkpOwogCiAgICAgaWYgKFVOTElLRUxZKG1fbGF1bmNoT3B0aW9u
cy5zaG91bGRNYWtlUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nKSkgewotICAgICAgICBlcnJv
ckhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIGV2ZW50SGFuZGxlcihudWxscHRyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjYyLDYgKzI3NSw4IEBAIHZvaWQgUHJvY2Vzc0xhdW5j
aGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUocmVw
bHkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAo
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhyZXBseSwgIm1lc3NhZ2UtbmFtZSIpLCAicHJvY2Vz
cy1maW5pc2hlZC1sYXVuY2hpbmciKSk7CiAKKyAgICAgICAgICAgIGF1dG8gdiA9IHhwY19kaWN0
aW9uYXJ5X2dldF92YWx1ZShyZXBseSwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIpOworICAg
ICAgICAgICAgTlNMb2coQCIlQCIsIHYpOwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAg
ICBtYWNoX3BvcnRfdXJlZnNfdCBzZW5kUmlnaHRDb3VudCA9IDA7CiAgICAgICAgICAgICBtYWNo
X3BvcnRfZ2V0X3JlZnMobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgTUFDSF9QT1JU
X1JJR0hUX1NFTkQsICZzZW5kUmlnaHRDb3VudCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24g
MjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRIYW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTI5Nyw2ICszMDEsOSBAQCBw
cml2YXRlOgogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZp
bmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIpIG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlZlB0cjxYUENFdmVudEhh
bmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2
b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwogCkBAIC0zMjcsNiArMzM0LDE5IEBAIHBy
aXZhdGU6CiAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPj4gd2ViUHJvY2Vzc0Fzc2VydGlvbnM7CiAgICAg
fTsKICAgICBPcHRpb25hbDxVcGxvYWRBY3Rpdml0eT4gbV91cGxvYWRBY3Rpdml0eTsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIGNsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJL
aXQ6OlhQQ0V2ZW50SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBYUENFdmVudEhhbmRs
ZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYpOworICAgICAgICB2aXJ0dWFsIH5YUENFdmVu
dEhhbmRsZXIoKTsKKworICAgICAgICBib29sIGhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCkg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICBwcml2YXRlOgorICAgICAgICBXZWFrUHRyPE5ldHdvcmtQ
cm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgfTsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisKKyNp
bXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWZQdHI8
WFBDRXZlbnRIYW5kbGVyPiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIoKSBj
b25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBD
RXZlbnRIYW5kbGVyKCp0aGlzKSk7Cit9CisKK2Jvb2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBD
RXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QgZXZlbnQpIGNvbnN0Cit7
CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlv
bmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAibWVzc2FnZS1uYW1lIik7CisgICAgaWYgKCFtZXNzYWdl
TmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHN0cmNtcChtZXNzYWdlTmFt
ZSwgInVwZGF0ZS1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYXV0byBkYXRhYmFzZSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShldmVu
dCwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIpOworICAgIGlmICghZGF0YWJhc2UpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
dXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZShldmVudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFu
ZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1f
bmV0d29ya1Byb2Nlc3MobWFrZVdlYWtQdHIobmV0d29ya1Byb2Nlc3MpKQoreworfQorCitOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIoKQorewor
fQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2ODgsNiArMTY4OCw3IEBA
CiAJCUMxNDkzODA5MjIzNDcxMDQwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAy
MjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLzsgfTsKIAkJ
QzE1Q0JCMzYyM0YzNzc3MTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0NUNDMEUyM0RDQTQyNzAw
M0E1RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNUNCQjM3MjNGMzdFQ0IwMDMwMENDNyAvKiBQcmVm
ZXJlbmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1t
ICovOyB9OworCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlci5tbSAqLzsgfTsKIAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlM
aW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTgx
NzM2MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsKIAkJQzFFMTIzQkEy
MEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERG
Q29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdD
b250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24u
aCAqLzsgfTsKQEAgLTUwMjUsMTIgKzUwMjYsMTYgQEAKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENE
NzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNl
cnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcmVuY2VPYnNlcnZlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQ
Q0V2ZW50SGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENFdmVudEhhbmRsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjUyNEFBNjM0NTAwRDdDMTEyIC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBD
RjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4MTczNUUyMDU4MzlGNjAwREZEQTY1IC8q
IERyYXdpbmdBcmVhTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdpbmdBcmVhTWFjLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1
IC8qIERpc3BsYXlMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaW5rLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYyMjA1ODQ0QTkwMERGREE2NSAvKiBEaXNwbGF5
TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGluay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTFEMjQyRjlGNzYwMDdFOTg3NSAvKiBXZWJTbGVlcERp
c2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlNsZWVwRGlzYWJsZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MThGQjUxRTI0MkY5Rjc3MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQ
REZDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQREZDb250
ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMUVENzIzNzI0QTU2OTBF
MDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJBY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUyMzdGNUYxMjQ0MUNBMzAwNzgwNDcy
IC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tEYXRlVGltZUlucHV0Q29udHJv
bC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzOTAsNiArNjM5NSw3IEBACiAJCQkJMkQ3QUFGRDIxOEM4
NjQwNjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oICovLAogCQkJCTJEQzZE
OUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5o
ICovLAogCQkJCTJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJv
dmlkZXJSZWdpc3RyeS5tbSAqLywKKwkJCQlDMTcxMENGMjI0QTdCRDAzMDBEN0MxMTIgLyogWFBD
RXZlbnRIYW5kbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTc4NTMsNiArNzg1OSw3IEBACiAJCTUxMENDN0U3MTYxMzhFNzIw
MEQwM0VEMyAvKiBOZXR3b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlDMUVENzIzNjI0QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8sCiAJCQkJMjlB
RDMwOTExNjRCNEMxMDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1MTYzMTk5
MzE2Mjg5ODBFMDBFMjJGMDAgLyogbWFjICovLAogCQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VE
MyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAqLywKQEAgLTg0MzQsNiArODQ0MSw4IEBACiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQkyRDBDNTZGQjIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFu
YWdlbWVudFNvZnRMaW5rLmggKi8sCiAJCQkJMkQwQzU2RkMyMjlGMURFQTAwQkQzM0U3IC8qIERl
dmljZU1hbmFnZW1lbnRTb2Z0TGluay5tbSAqLywKKwkJCQlDMTcxMENGNTI0QUE2MzQ1MDBEN0Mx
MTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmggKi8sCisJCQkJQzE3MTBDRjYy
NEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLywK
IAkJCQk1MzE1ODc2QjIwNzZCNzEzMDA0QkY5RjMgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlckNv
Y29hLm1tICovLAogCQkJCTUzMjE1OTRGMURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRh
c2tDb2NvYS5oICovLAogCQkJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSAqLywKQEAgLTEwMjYyLDYgKzEwMjcxLDE0IEBACiAJCQl0YWJXaWR0aCA9
IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUMxRUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAv
KiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAq
LywKKwkJCSk7CisJCQluYW1lID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQlDNTQyNTZBRTE4QkVDMTYxMDBERTQxNzkgLyogZm9ybXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTI3MzcsNiArMTI3NTQsNyBAQAogCQkJ
CTI3NDlGNjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QTWV0
aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEyOEFGRCAvKiBK
U05QT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzEx
MiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTdDMTY0QjkxNUYw
MDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUMgLyogTGli
V2ViUlRDTmV0d29ya01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2Mzc2MCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkwLDYgKzI5MCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9u
KElQCiB7CiAgICAgQXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVj
dGlvbik7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBoYW5kbGVMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlQ2hhbmdlcygpOworI2VuZGlmCisKICAgICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0
bHkgZnJvbSB0aGUgYmFja2dyb3VuZCBxdWV1ZSBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1
bnJlc3BvbnNpdmUKICAgICAvLyBhbmQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2Vz
IG5vdCBnZXQgY2FsbGVkLgogICAgIGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9u
V29ya1F1ZXVlQ2FsbGJhY2soY2FsbEV4aXQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDEwIEBAIHByaXZh
dGU6CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vz
c2lvbklEID8gbV9zZXNzaW9uSUQtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsg
fQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBoYW5kbGVMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlQ2hhbmdlcygpIGNvbnN0OworI2VuZGlmCisKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0JKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsMTIgKzU2LDIyIEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg+CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxNb2JpbGVDb3JlU2Vydmlj
ZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVM
b2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyNpZiBB
U1NFUlRfRU5BQkxFRAorICAgIE5TTG9nKEAiTFNEQiAlZCBwbGF0Zm9ybURpZFJlY2VpdmVMb2Fk
UGFyYW1ldGVycyIsIGdldHBpZCgpKTsKKyAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigi
dGV4dC9odG1sIiksIDApKTsKKyAgICBBU1NFUlQoIVN0cmluZyh1dGkuZ2V0KCkpLmlzRW1wdHko
KSk7CisjZW5kaWYKKwogICAgIG1fZGF0YURldGVjdGlvbkNvbnRleHQgPSBwYXJhbWV0ZXJzLmRh
dGFEZXRlY3Rpb25Db250ZXh0OwogCiAgICAgaWYgKHBhcmFtZXRlcnMubmVIZWxwZXJFeHRlbnNp
b25IYW5kbGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MSwy
NSArMTYxLDI0IEBAIHN0YXRpYyBpZCBOU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUZvY3UKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mo
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3ZvaWQgV2ViUHJvY2Vz
czo6aGFuZGxlTGF1bmNoU2VydmljZXNEYXRhYmFzZUNoYW5nZXMoKSBjb25zdAogewotICAgIC8v
IE1hcCBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UuIFRoaXMgc2hvdWxkIGJlIGRvbmUgYXMgZWFy
bHkgYXMgcG9zc2libGUsIGFzIHRoZSBtYXBwaW5nIHdpbGwgZmFpbAotICAgIC8vIGlmICdjb20u
YXBwbGUubHNkLm1hcGRiJyBpcyBiZWluZyBhY2Nlc3NlZCBiZWZvcmUgdGhpcy4KLSAgICBpZiAo
cGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRsZSkgewotICAgICAgICBhdXRvIGV4dGVuc2lv
biA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKCpwYXJhbWV0ZXJzLm1hcERCRXh0
ZW5zaW9uSGFuZGxlKSk7Ci0gICAgICAgIGJvb2wgb2sgPSBleHRlbnNpb24tPmNvbnN1bWUoKTsK
LSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAgICAgICAvLyBQZXJmb3JtIEFQSSBj
YWxscyB3aGljaCB3aWxsIGNvbW11bmljYXRlIHdpdGggdGhlIGRhdGFiYXNlIG1hcHBpbmcgc2Vy
dmljZSwgYW5kIG1hcCB0aGUgZGF0YWJhc2UuCi0gICAgICAgIGF1dG8gdXRpID0gYWRvcHRDRihV
VFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUs
IENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOwotCi0gICAgICAgIFtbb2JqY19nZXRDbGFzcygiX0xT
RFJlYWRTZXJ2aWNlIikgWFBDQ29ubmVjdGlvblRvU2VydmljZV0gaW52YWxpZGF0ZV07CisgICAg
TlNMb2coQCJMU0RCICVkIGhhbmRsZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VDaGFuZ2VzIiwgZ2V0
cGlkKCkpOwogCi0gICAgICAgIG9rID0gZXh0ZW5zaW9uLT5yZXZva2UoKTsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChvaywgb2spOwotCi0gICAgICAgIEFTU0VSVChTdHJpbmcodXRpLmdldCgpKSA9
PSBTdHJpbmcoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtV
VFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpLmdldCgpKSk7Ci0gICAg
fQorICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAg
ICAgYXV0byBkYXRhYmFzZSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShldmVudCwgImxhdW5j
aC1zZXJ2aWNlcy1kYXRhYmFzZSIpOworICAgICAgICBBU1NFUlQoZGF0YWJhc2UpOworICAgICAg
ICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRh
ZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKKyAgICAgICAg
QVNTRVJUKFN0cmluZyh1dGkuZ2V0KCkpLmlzRW1wdHkoKSk7CisgICAgICAgIFtbTFNEYXRhYmFz
ZUNvbnRleHQgc2hhcmVkRGF0YWJhc2VDb250ZXh0XSBvYnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2Vi
S2l0OmRhdGFiYXNlXTsKKyAgICAgICAgdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJy
ZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwi
KSwgMCkpOworICAgICAgICBBU1NFUlQoIVN0cmluZyh1dGkuZ2V0KCkpLmlzRW1wdHkoKSk7Cisg
ICAgICAgIE5TTG9nKEAiTFNEQiAlZCBoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdl
cyBoYW5kbGVyIiwgZ2V0cGlkKCkpOworICAgIH0pOworfQogCit2b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKK3sKICNpZiAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgIFdlYkNvcmU6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRl
cnMud2ViQ29yZUxvZ2dpbmdDaGFubmVscyk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hh
bm5lbHNJZk5lY2Vzc2FyeShwYXJhbWV0ZXJzLndlYktpdExvZ2dpbmdDaGFubmVscyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403227</attachid>
            <date>2020-06-30 12:39:55 -0700</date>
            <delta_ts>2020-06-30 13:10:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200630123954.patch</filename>
            <type>text/plain</type>
            <size>38087</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
OgorCiAyMDIwLTA2LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbWGNvZGVdIEVuYWJsZSB0aGUgIk15IE1hYyAoTWFjIENhdGFseXN0KSIgZGVzdGluYXRpb24g
aW4gV2ViS2l0IFhjb2RlIHByb2plY3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2Mzc2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxNCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0xTRGF0YWJhc2VDb250ZXh0UHJpdi5oPgogI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbGlmIFBMQVRGT1JN
KElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXNQcml2
Lmg+CkBAIC04MywxMyArODYsMTYgQEAgZW51bSBMU1Nlc3Npb25JRCB7CiB9OwogI2VuZGlmCiAK
LSNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotQGludGVyZmFjZSBfTFNEU2Vy
dmljZSA6IE5TT2JqZWN0IDxOU1hQQ0xpc3RlbmVyRGVsZWdhdGU+Ci0rIChOU1hQQ0Nvbm5lY3Rp
b24gKilYUENDb25uZWN0aW9uVG9TZXJ2aWNlOworQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4
dCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgTFNEYXRhYmFzZUNvbnRl
eHQgKnNoYXJlZERhdGFiYXNlQ29udGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBfTFNEUmVhZFNl
cnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChXZWJLaXRDaGFuZ2VUcmFja2luZykKKy0g
KGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4p
KHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOworLSAodm9pZClyZW1vdmVEYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2
ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVjdF90KWNoYW5nZTsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM3NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyk6
CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2VuZE1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6
On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAg
ICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VNYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvWFBDRXZlbnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVu
dEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQ6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHlDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQ
Q0V2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQ
Q0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdl
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA2LTMwICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5j
b20+CiAKICAgICAgICAgU2NydW5jaGluZyBhIHZpZGVvIHRvIFBpUCBjYW4gcmVzdWx0IGluIGJy
b2tlbiBhbmltYXRpb24gYW5kIGxlYXZlIFNhZmFyaSBpbiBhIGJhZCBzdGF0ZQpJbmRleDogU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNiArNDE2LDggQEAgVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveAogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJ
bnNwZWN0b3JXS1dlYlZpZXcubW0KIAorVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eUNvY29hLm1tCisKIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODYsNiArMzg2LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVDb25uZWN0aW8KIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1f
bGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLnN0YXJ0T2JzZXJ2aW5nKHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCkpOworI2VuZGlmCisKICAgICAvLyBXZSBnaXZlIGEgY2hhbmNlIGZvciBk
aWRDbG9zZSgpIHRvIGdldCBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJ1dCBmb3JjZWZ1bGx5
IGNhbGwgX2V4aXQoKSBhZnRlciBhIGRlbGF5CiAgICAgLy8gaW4gY2FzZSB0aGUgbWFpbiB0aHJl
YWQgaXMgdW5yZXNwb25zaXZlIG9yIGRpZENsb3NlKCkgdGFrZXMgdG9vIGxvbmcuCiAgICAgY29u
bmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhjYWxsRXhp
dFNvb24pOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBACiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5oIgorCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdl
KiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCkBAIC01OTcsNiArNTk5LDEwIEBA
IHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dDsKICAgICBTZWNvbmRzIG1fc2VydmljZVdvcmtlckZldGNoVGltZW91dCB7
IGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IH07CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgbV9sYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9P
U09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlciB7CitwdWJsaWM6
CisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCk7CisgICAgfkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlcigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKCk7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPGlkPiBtX29ic2VydmVyOworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+
IG1fY29ubmVjdGlvbjsKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fbWVzc2FnZTsK
K307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7Cit9CisKK3Zv
aWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9t
U3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAg
IGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0
aW9uID0gY29ubmVjdGlvbi0+eHBjQ29ubmVjdGlvbigpOworCisgICAgbV9vYnNlcnZlciA9IFtj
b250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNo
YW5nZSkgeworICAgICAgICBtX21lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5
X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF9zdHJpbmcobV9tZXNzYWdlLmdldCgpLCAibWVzc2FnZS1uYW1lIiwgInVwZGF0ZS1sYXVuY2gt
c2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1f
bWVzc2FnZS5nZXQoKSwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIsIGNoYW5nZSk7CisKKyAg
ICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9t
ZXNzYWdlLmdldCgpKTsKKyAgICB9XTsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OnNlbmRNZXNzYWdlKCkKK3sKKyAgICBpZiAobV9jb25uZWN0aW9uICYmIG1fbWVz
c2FnZSkKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5n
ZXQoKSwgbV9tZXNzYWdlLmdldCgpKTsKK30KKworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyOjp+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCkKK3sKKyAgICBhdXRvIGNvbnRl
eHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIpIHNoYXJlZERhdGFi
YXNlQ29udGV4dF07CisKKyAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pCisgICAgICAgIHJl
dHVybjsKKworICAgIFtjb250ZXh0IHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0
Om1fb2JzZXJ2ZXIuZ2V0KCldOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNl
cy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNl
L1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2IJKHdvcmtpbmcgY29weSkKQEAgLTU4OCw3ICs1ODgsNyBAQAogKGFsbG93IGlw
Yy1wb3NpeC1zaG0tcmVhZCoKICAgICAgICAoaXBjLXBvc2l4LW5hbWUtcHJlZml4ICJhcHBsZS5j
ZnByZWZzLiIpKQogIAotKGFsbG93IG1hY2gtbG9va3VwCisoZGVueSBtYWNoLWxvb2t1cAogICAg
IChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmxzZC5tYXBkYiIpKQogCiA7OyA8cmRhcjovL3Byb2Js
ZW0vMTI0MTM5NDI+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQ
Q1NlcnZpY2VNYWluLm1tCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEku
aD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNpbXBvcnQg
PHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CkBAIC03OSw2ICs4MCwxNyBAQCBzdGF0aWMgdm9pZCBY
UENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jCiAKICAgICAgICAgICAgICAgICBhdXRvIHJlcGx5
ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkoZXZlbnQpKTsKICAg
ICAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKHJlcGx5LmdldCgpLCAibWVz
c2FnZS1uYW1lIiwgInByb2Nlc3MtZmluaXNoZWQtbGF1bmNoaW5nIik7CisKKyAgICAgICAgICAg
ICAgICBpZiAoIXN0cmNtcChzZXJ2aWNlTmFtZSwgImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2lu
ZyIpKSB7CisgICAgICAgICAgICAgICAgICAgIF9fYmxvY2sgT1NPYmplY3RQdHI8eHBjX29iamVj
dF90PiBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlOworICAgICAgICAgICAgICAgICAgICBhdXRvIG9i
c2VydmVyID0gW1tOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVk
RGF0YWJhc2VDb250ZXh0XSBhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpeKHhwY19v
YmplY3RfdCBjaGFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2UgPSBjaGFuZ2U7CisgICAgICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAg
ICAgICAgICBbW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWRE
YXRhYmFzZUNvbnRleHRdIHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Om9ic2Vy
dmVyXTsKKworICAgICAgICAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUocmVw
bHkuZ2V0KCksICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIiwgbGF1bmNoU2VydmljZXNEYXRhYmFz
ZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihl
dmVudCksIHJlcGx5LmdldCgpKTsKIAogICAgICAgICAgICAgICAgIGludCBmZCA9IHhwY19kaWN0
aW9uYXJ5X2R1cF9mZChldmVudCwgInN0ZG91dCIpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsNyArMzg4
LDcgQEAgcHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3Jl
KiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHIpOwotICAgIE5ldHdvcmtQcm9jZXNzUHJv
eHkqIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQor
ICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVk
KE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKQEAgLTU0Miw2ICs1NDIsMTEg
QEAgcHVibGljOgogICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyByZXR1cm4gbV91c2VySWQ7
IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCB1cGRhdGVMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlKHhwY19vYmplY3RfdCBldmVudCk7CisgICAgT1NPYmplY3RQdHI8eHBj
X29iamVjdF90PiBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKCkgY29uc3Q7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC04MjYsNiArODMxLDEw
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPU09iamVjdFB0cjx4
cGNfb2JqZWN0X3Q+IG1fbGF1bmNoU2VydmljZXNEYXRhYmFzZTsKKyNlbmRpZgogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUzLDYgKzk1MywxMiBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIGxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2UgPSBwcm9jZXNzUG9vbCgpLmxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoKTsKKyAgICBp
ZiAobGF1bmNoU2VydmljZXNEYXRhYmFzZSkKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9t
ZXNzYWdlKGNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCBsYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlLmdldCgpKTsKKyNlbmRpZgorCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fd2ViQ29ubmVjdGlv
bik7CiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3Jl
YXRlKHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTkzNCw0ICs5MzQsMjUgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdo
RHluYW1pYwogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZUxhdW5jaFNl
cnZpY2VzRGF0YWJhc2UoeHBjX29iamVjdF90IGRhdGFiYXNlKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKKyAgICBtX2xhdW5jaFNlcnZpY2VzRGF0YWJhc2UgPSBkYXRhYmFzZTsK
KworICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHBy
b2Nlc3MtPmlzTGF1bmNoaW5nKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KCFwcm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCk7
CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBkYXRhYmFz
ZSk7CisgICAgfQorfQorCitPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IFdlYlByb2Nlc3NQb29s
OjpsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgWFBDRXZlbnRIYW5kbGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFhQQ0V2ZW50SGFuZGxlcj4geworcHVibGljOgorICAgIHZpcnR1YWwgflhQQ0V2ZW50
SGFuZGxlcigpIHsgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZVhQQ0V2ZW50KHhwY19vYmpl
Y3RfdCkgY29uc3QgPSAwOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlzaW9uIDI2Mzc2MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi93aW4vV2luMzJIYW5k
bGUuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRI
YW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKQEAgLTU3LDYgKzYxLDkgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29u
ZmlndXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgICAgIHZpcnR1YWwgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBj
RXZlbnRIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAgICAgfTsK
ICAgICAKICAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbQkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDE4ICsy
MzgsMzEgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBw
cm9jZXNzTGF1bmNoZXItPmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MoMCwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKCkpOwogICAgIH07CiAKLSAgICBhdXRvIGVycm9ySGFuZGxlciA9IFtl
cnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKV0gKHhwY19vYmplY3Rf
dCBldmVudCkgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXJy
b3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50XSB7Ci0gICAg
ICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50KTsKLSAgICAgICAgfSk7CisgICAgYXV0byBl
dmVudEhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1w
bCksIGV2ZW50SGFuZGxlciA9IG1fY2xpZW50LT54cGNFdmVudEhhbmRsZXIoKV0gKHhwY19vYmpl
Y3RfdCBldmVudCkgbXV0YWJsZSB7CisgICAgICAgIHhwY19yZXRhaW4oZXZlbnQpOworCisgICAg
ICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikg
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBs
ID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRdIHsKKyAgICAgICAgICAgICAgICBl
cnJvckhhbmRsZXJJbXBsKGV2ZW50KTsKKyAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShldmVu
dCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChldmVudEhhbmRsZXIpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyLCBldmVudF0geworICAgICAgICAg
ICAgICAgIGV2ZW50SGFuZGxlci0+aGFuZGxlWFBDRXZlbnQoZXZlbnQpOworICAgICAgICAgICAg
ICAgIHhwY19yZWxlYXNlKGV2ZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAg
fTsKIAotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1feHBjQ29ubmVjdGlv
bi5nZXQoKSwgZXJyb3JIYW5kbGVyKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFu
ZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGV2ZW50SGFuZGxlcik7CiAKICAgICB4cGNfY29u
bmVjdGlvbl9yZXN1bWUobV94cGNDb25uZWN0aW9uLmdldCgpKTsKIAogICAgIGlmIChVTkxJS0VM
WShtX2xhdW5jaE9wdGlvbnMuc2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZykp
IHsKLSAgICAgICAgZXJyb3JIYW5kbGVyKG51bGxwdHIpOworICAgICAgICBldmVudEhhbmRsZXIo
bnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2Miw2ICsyNzUsOCBAQCB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICBBU1NFUlQo
eHBjX2dldF90eXBlKHJlcGx5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKICAgICAgICAgICAg
IEFTU0VSVCghc3RyY21wKHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcocmVwbHksICJtZXNzYWdl
LW5hbWUiKSwgInByb2Nlc3MtZmluaXNoZWQtbGF1bmNoaW5nIikpOwogCisgICAgICAgICAgICBh
dXRvIHYgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUocmVwbHksICJsYXVuY2gtc2VydmljZXMt
ZGF0YWJhc2UiKTsKKyAgICAgICAgICAgIE5TTG9nKEAiJUAiLCB2KTsKICNpZiBBU1NFUlRfRU5B
QkxFRAogICAgICAgICAgICAgbWFjaF9wb3J0X3VyZWZzX3Qgc2VuZFJpZ2h0Q291bnQgPSAwOwog
ICAgICAgICAgICAgbWFjaF9wb3J0X2dldF9yZWZzKG1hY2hfdGFza19zZWxmKCksIGxpc3Rlbmlu
Z1BvcnQsIE1BQ0hfUE9SVF9SSUdIVF9TRU5ELCAmc2VuZFJpZ2h0Q291bnQpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMCBA
QAogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0y
OTcsNiArMzAxLDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50
CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBS
ZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsK
KyNlbmRpZgogCiAgICAgdm9pZCBwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpT
ZXNzaW9uSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKIApAQCAtMzI3
LDYgKzMzNCwxOSBAQCBwcml2YXRlOgogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlByb2Nlc3NB
c3NlcnRpb25zOwogICAgIH07CiAgICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1fdXBsb2Fk
QWN0aXZpdHk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGFzcyBYUENFdmVudEhhbmRs
ZXIgOiBwdWJsaWMgV2ViS2l0OjpYUENFdmVudEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgWFBDRXZlbnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKKyAgICAgICAg
dmlydHVhbCB+WFBDRXZlbnRIYW5kbGVyKCk7CisKKyAgICAgICAgYm9vbCBoYW5kbGVYUENFdmVu
dCh4cGNfb2JqZWN0X3QpIGNvbnN0IG92ZXJyaWRlOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
V2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOworICAgIH07Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29j
b2EubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nl
c3NQcm94eS5oIgorCisjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4gTmV0d29ya1Byb2Nlc3NQcm94eTo6eHBj
RXZlbnRIYW5kbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdvcmtQ
cm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcigqdGhpcykpOworfQorCitib29sIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90
IGV2ZW50KSBjb25zdAoreworICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQ
Q19UWVBFX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIG1lc3NhZ2VO
YW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpOwor
ICAgIGlmICghbWVzc2FnZU5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChz
dHJjbXAobWVzc2FnZU5hbWUsICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFy
eV9nZXRfdmFsdWUoZXZlbnQsICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICBpZiAo
IWRhdGFiYXNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX25ldHdvcmtQcm9jZXNz
LT5wcm9jZXNzUG9vbCgpLnVwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoZXZlbnQpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5k
bGVyOjpYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1By
b2Nlc3MpCisgICAgOiBtX25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNz
KSkKK3sKK30KKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZl
bnRIYW5kbGVyKCkKK3sKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
Njg4LDYgKzE2ODgsNyBAQAogCQlDMTQ5MzgwOTIyMzQ3MTA0MDAwQ0Q3MDcgLyogV2ViU3BlZWNo
U3ludGhlc2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xp
ZW50LmggKi87IH07CiAJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2Jz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMx
NDVDQzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTVDQkIzNzIzRjM3RUNC
MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3IC8qIFByZWZl
cmVuY2VPYnNlcnZlci5tbSAqLzsgfTsKKwkJQzE3MTBDRjcyNEFBNjQzMjAwRDdDMTEyIC8qIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi87IH07CiAJCUMxODE3MzYxMjA1ODQyNDcwMERG
REE2NSAvKiBEaXNwbGF5TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87
IH07CiAJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMTIzQjkyMEExMTU3
MjAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYw
MEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdD
b250cm9sbGVyQWN0aW9uLmggKi87IH07CkBAIC01MDI1LDEyICs1MDI2LDE2IEBACiAJCUMxNDkz
ODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8qIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAv
KiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNl
T2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0YyMjRBN0JE
MDMwMEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRI
YW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUw
MEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzVFMjA1
ODM5RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
cmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYw
MjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5
TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBE
RkRBNjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpbmsu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4
NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUUyNDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJs
ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xlZXBEaXNh
YmxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNCOTIwQTEx
NTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUERGQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdD
b250cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdD
b250cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVG
MTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVU
aW1lSW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGF0
ZVRpbWVJbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250
cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzkwLDYgKzYzOTUsNyBAQAog
CQkJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIu
aCAqLywKIAkJCQkyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFBy
b3ZpZGVyUmVnaXN0cnkuaCAqLywKIAkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIyNEE3QkQw
MzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2Nv
YTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03ODUzLDYgKzc4NTksNyBAQAogCQk1
MTBDQzdFNzE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNv
Y29hICovLAogCQkJCTI5QUQzMDkxMTY0QjRDMTAwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbHMg
Ki8sCiAJCQkJNTE2MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywKIAkJCQk1MTBDQzdF
QTE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi8sCkBAIC04NDM0
LDYgKzg0NDEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMkQwQzU2RkIyMjlGMURFQTAwQkQz
M0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5oICovLAogCQkJCTJEMEM1NkZDMjI5RjFE
RUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsubW0gKi8sCisJCQkJQzE3MTBD
RjUyNEFBNjM0NTAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICov
LAorCQkJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW0gKi8sCiAJCQkJNTMxNTg3NkIyMDc2QjcxMzAwNEJGOUYzIC8qIE5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXJDb2NvYS5tbSAqLywKIAkJCQk1MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0Mg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCAqLywKIAkJCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZE
Q0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8sCkBAIC0xMDI2Miw2ICsxMDI3MSwxNCBA
QAogCQkJdGFiV2lkdGggPSA4OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMUVENzIzNjI0
QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUMxRUQ3MjM3MjRBNTY5MEUwMDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vz
c1Byb3h5Q29jb2EubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQzU0MjU2QUUxOEJFQzE2MTAwREU0MTc5IC8qIGZvcm1z
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEyNzM3LDYg
KzEyNzU0LDcgQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAx
MjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MjIxMkNG
OUYwMDAxMjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTcxMENG
NzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
OTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4
NTAwRjMyODFDIC8qIExpYldlYlJUQ05ldHdvcmtNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0
aWFsaXplQ29ubmVjdGlvbihJUAogewogICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVD
b25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFuZGxl
TGF1bmNoU2VydmljZXNEYXRhYmFzZUNoYW5nZXMoKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgY2Fs
bCBfZXhpdCgpIGRpcmVjdGx5IGZyb20gdGhlIGJhY2tncm91bmQgcXVldWUgaW4gY2FzZSB0aGUg
bWFpbiB0aHJlYWQgaXMgdW5yZXNwb25zaXZlCiAgICAgLy8gYW5kIEF1eGlsaWFyeVByb2Nlc3M6
OmRpZENsb3NlKCkgZG9lcyBub3QgZ2V0IGNhbGxlZC4KICAgICBjb25uZWN0aW9uLT5zZXREaWRD
bG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYg
KzUxMCwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSB7IHJldHVybiBtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSA6IHRydWU7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaGFuZGxl
TGF1bmNoU2VydmljZXNEYXRhYmFzZUNoYW5nZXMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgUmVm
UHRyPFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTU2LDEyICs1NiwyMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShDT0NPQSkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBOU0xvZyhAIkxTREIgJWQgcGxhdGZv
cm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMiLCBnZXRwaWQoKSk7CisgICAgYXV0byB1dGkgPSBh
ZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NN
SU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSk7CisgICAgQVNTRVJUKCFTdHJpbmcodXRp
LmdldCgpKS5pc0VtcHR5KCkpOworI2VuZGlmCisKICAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0
ID0gcGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dDsKIAogICAgIGlmIChwYXJhbWV0ZXJz
Lm5lSGVscGVyRXh0ZW5zaW9uSGFuZGxlKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjM3NjApCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjEsMjUgKzE2MSwyNCBAQCBzdGF0aWMgaWQgTlNBcHBsaWNhdGlvbkFjY2Vz
c2liaWxpdHlGb2N1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Cit2b2lkIFdlYlByb2Nlc3M6OmhhbmRsZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VDaGFuZ2VzKCkg
Y29uc3QKIHsKLSAgICAvLyBNYXAgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3Vs
ZCBiZSBkb25lIGFzIGVhcmx5IGFzIHBvc3NpYmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwK
LSAgICAvLyBpZiAnY29tLmFwcGxlLmxzZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3Jl
IHRoaXMuCi0gICAgaWYgKHBhcmFtZXRlcnMubWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAg
ICAgYXV0byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFy
YW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRsZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5z
aW9uLT5jb25zdW1lKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAg
Ly8gUGVyZm9ybSBBUEkgY2FsbHMgd2hpY2ggd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRh
YmFzZSBtYXBwaW5nIHNlcnZpY2UsIGFuZCBtYXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRv
IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKLQotICAgICAgICBbW29i
amNfZ2V0Q2xhc3MoIl9MU0RSZWFkU2VydmljZSIpIFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGlu
dmFsaWRhdGVdOworICAgIE5TTG9nKEAiTFNEQiAlZCBoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlQ2hhbmdlcyIsIGdldHBpZCgpKTsKIAotICAgICAgICBvayA9IGV4dGVuc2lvbi0+cmV2b2tl
KCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLQotICAgICAgICBBU1NFUlQoU3Ry
aW5nKHV0aS5nZXQoKSkgPT0gU3RyaW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRl
bnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDAp
KS5nZXQoKSkpOwotICAgIH0KKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksIF4oeHBjX29iamVjdF90
IGV2ZW50KSB7CisgICAgICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFs
dWUoZXZlbnQsICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICAgICAgQVNTRVJUKGRh
dGFiYXNlKTsKKyAgICAgICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIp
LCAwKSk7CisgICAgICAgIEFTU0VSVChTdHJpbmcodXRpLmdldCgpKS5pc0VtcHR5KCkpOworICAg
ICAgICBbW0xTRGF0YWJhc2VDb250ZXh0IHNoYXJlZERhdGFiYXNlQ29udGV4dF0gb2JzZXJ2ZURh
dGFiYXNlQ2hhbmdlNFdlYktpdDpkYXRhYmFzZV07CisgICAgICAgIHV0aSA9IGFkb3B0Q0YoVVRU
eXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBD
RlNUUigidGV4dC9odG1sIiksIDApKTsKKyAgICAgICAgQVNTRVJUKCFTdHJpbmcodXRpLmdldCgp
KS5pc0VtcHR5KCkpOworICAgICAgICBOU0xvZyhAIkxTREIgJWQgaGFuZGxlTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZUNoYW5nZXMgaGFuZGxlciIsIGdldHBpZCgpKTsKKyAgICB9KTsKK30KIAordm9p
ZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5l
Y2Vzc2FyeShwYXJhbWV0ZXJzLndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6
aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5n
Q2hhbm5lbHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403232</attachid>
            <date>2020-06-30 13:11:01 -0700</date>
            <delta_ts>2020-07-07 14:00:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200630131100.patch</filename>
            <type>text/plain</type>
            <size>38142</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
OgorCiAyMDIwLTA2LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbWGNvZGVdIEVuYWJsZSB0aGUgIk15IE1hYyAoTWFjIENhdGFseXN0KSIgZGVzdGluYXRpb24g
aW4gV2ViS2l0IFhjb2RlIHByb2plY3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2Mzc2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxNCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0xTRGF0YWJhc2VDb250ZXh0UHJpdi5oPgogI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbGlmIFBMQVRGT1JN
KElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXNQcml2
Lmg+CkBAIC04MywxMyArODYsMTYgQEAgZW51bSBMU1Nlc3Npb25JRCB7CiB9OwogI2VuZGlmCiAK
LSNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotQGludGVyZmFjZSBfTFNEU2Vy
dmljZSA6IE5TT2JqZWN0IDxOU1hQQ0xpc3RlbmVyRGVsZWdhdGU+Ci0rIChOU1hQQ0Nvbm5lY3Rp
b24gKilYUENDb25uZWN0aW9uVG9TZXJ2aWNlOworQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4
dCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgTFNEYXRhYmFzZUNvbnRl
eHQgKnNoYXJlZERhdGFiYXNlQ29udGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBfTFNEUmVhZFNl
cnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChXZWJLaXRDaGFuZ2VUcmFja2luZykKKy0g
KGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4p
KHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOworLSAodm9pZClyZW1vdmVEYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2
ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVjdF90KWNoYW5nZTsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM3NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyk6
CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2VuZE1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6
On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAg
ICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VNYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvWFBDRXZlbnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVu
dEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQ6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHlDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQ
Q0V2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQ
Q0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlQ2hhbmdl
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA2LTMwICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5j
b20+CiAKICAgICAgICAgU2NydW5jaGluZyBhIHZpZGVvIHRvIFBpUCBjYW4gcmVzdWx0IGluIGJy
b2tlbiBhbmltYXRpb24gYW5kIGxlYXZlIFNhZmFyaSBpbiBhIGJhZCBzdGF0ZQpJbmRleDogU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNiArNDE2LDggQEAgVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveAogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJ
bnNwZWN0b3JXS1dlYlZpZXcubW0KIAorVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eUNvY29hLm1tCisKIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODYsNiArMzg2LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVDb25uZWN0aW8KIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1f
bGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLnN0YXJ0T2JzZXJ2aW5nKHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCkpOworI2VuZGlmCisKICAgICAvLyBXZSBnaXZlIGEgY2hhbmNlIGZvciBk
aWRDbG9zZSgpIHRvIGdldCBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJ1dCBmb3JjZWZ1bGx5
IGNhbGwgX2V4aXQoKSBhZnRlciBhIGRlbGF5CiAgICAgLy8gaW4gY2FzZSB0aGUgbWFpbiB0aHJl
YWQgaXMgdW5yZXNwb25zaXZlIG9yIGRpZENsb3NlKCkgdGFrZXMgdG9vIGxvbmcuCiAgICAgY29u
bmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhjYWxsRXhp
dFNvb24pOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBACiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlci5oIgorCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdl
KiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCkBAIC01OTcsNiArNTk5LDEwIEBA
IHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dDsKICAgICBTZWNvbmRzIG1fc2VydmljZVdvcmtlckZldGNoVGltZW91dCB7
IGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IH07CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgbV9sYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9P
U09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlciB7CitwdWJsaWM6
CisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCk7CisgICAgfkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlcigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKCk7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPGlkPiBtX29ic2VydmVyOworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+
IG1fY29ubmVjdGlvbjsKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fbWVzc2FnZTsK
K307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7Cit9CisKK3Zv
aWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyhJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9t
U3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAg
IGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0
aW9uID0gY29ubmVjdGlvbi0+eHBjQ29ubmVjdGlvbigpOworCisgICAgbV9vYnNlcnZlciA9IFtj
b250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNo
YW5nZSkgeworICAgICAgICBtX21lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5
X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF9zdHJpbmcobV9tZXNzYWdlLmdldCgpLCAibWVzc2FnZS1uYW1lIiwgInVwZGF0ZS1sYXVuY2gt
c2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1f
bWVzc2FnZS5nZXQoKSwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIsIGNoYW5nZSk7CisKKyAg
ICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9t
ZXNzYWdlLmdldCgpKTsKKyAgICB9XTsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OnNlbmRNZXNzYWdlKCkKK3sKKyAgICBpZiAobV9jb25uZWN0aW9uICYmIG1fbWVz
c2FnZSkKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5n
ZXQoKSwgbV9tZXNzYWdlLmdldCgpKTsKK30KKworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyOjp+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCkKK3sKKyAgICBhdXRvIGNvbnRl
eHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIpIHNoYXJlZERhdGFi
YXNlQ29udGV4dF07CisKKyAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pCisgICAgICAgIHJl
dHVybjsKKworICAgIFtjb250ZXh0IHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0
Om1fb2JzZXJ2ZXIuZ2V0KCldOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNl
cy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNl
L1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2IJKHdvcmtpbmcgY29weSkKQEAgLTU4OCw3ICs1ODgsNyBAQAogKGFsbG93IGlw
Yy1wb3NpeC1zaG0tcmVhZCoKICAgICAgICAoaXBjLXBvc2l4LW5hbWUtcHJlZml4ICJhcHBsZS5j
ZnByZWZzLiIpKQogIAotKGFsbG93IG1hY2gtbG9va3VwCisoZGVueSBtYWNoLWxvb2t1cAogICAg
IChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmxzZC5tYXBkYiIpKQogCiA7OyA8cmRhcjovL3Byb2Js
ZW0vMTI0MTM5NDI+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQ
Q1NlcnZpY2VNYWluLm1tCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEku
aD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNpbXBvcnQg
PHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CkBAIC03OSw2ICs4MCwxNyBAQCBzdGF0aWMgdm9pZCBY
UENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jCiAKICAgICAgICAgICAgICAgICBhdXRvIHJlcGx5
ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkoZXZlbnQpKTsKICAg
ICAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKHJlcGx5LmdldCgpLCAibWVz
c2FnZS1uYW1lIiwgInByb2Nlc3MtZmluaXNoZWQtbGF1bmNoaW5nIik7CisKKyAgICAgICAgICAg
ICAgICBpZiAoIXN0cmNtcChzZXJ2aWNlTmFtZSwgImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2lu
ZyIpKSB7CisgICAgICAgICAgICAgICAgICAgIF9fYmxvY2sgT1NPYmplY3RQdHI8eHBjX29iamVj
dF90PiBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlOworICAgICAgICAgICAgICAgICAgICBhdXRvIG9i
c2VydmVyID0gW1tOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVk
RGF0YWJhc2VDb250ZXh0XSBhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpeKHhwY19v
YmplY3RfdCBjaGFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2UgPSBjaGFuZ2U7CisgICAgICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAg
ICAgICAgICBbW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWRE
YXRhYmFzZUNvbnRleHRdIHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Om9ic2Vy
dmVyXTsKKworICAgICAgICAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUocmVw
bHkuZ2V0KCksICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIiwgbGF1bmNoU2VydmljZXNEYXRhYmFz
ZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihl
dmVudCksIHJlcGx5LmdldCgpKTsKIAogICAgICAgICAgICAgICAgIGludCBmZCA9IHhwY19kaWN0
aW9uYXJ5X2R1cF9mZChldmVudCwgInN0ZG91dCIpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsNyArMzg4
LDcgQEAgcHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3Jl
KiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHIpOwotICAgIE5ldHdvcmtQcm9jZXNzUHJv
eHkqIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQor
ICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVk
KE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKQEAgLTU0Miw2ICs1NDIsMTEg
QEAgcHVibGljOgogICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyByZXR1cm4gbV91c2VySWQ7
IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCB1cGRhdGVMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlKHhwY19vYmplY3RfdCBldmVudCk7CisgICAgT1NPYmplY3RQdHI8eHBj
X29iamVjdF90PiBsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKCkgY29uc3Q7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC04MjYsNiArODMxLDEw
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPU09iamVjdFB0cjx4
cGNfb2JqZWN0X3Q+IG1fbGF1bmNoU2VydmljZXNEYXRhYmFzZTsKKyNlbmRpZgogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUzLDYgKzk1MywxMiBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIGxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2UgPSBwcm9jZXNzUG9vbCgpLmxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoKTsKKyAgICBp
ZiAobGF1bmNoU2VydmljZXNEYXRhYmFzZSkKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9t
ZXNzYWdlKGNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCBsYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlLmdldCgpKTsKKyNlbmRpZgorCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fd2ViQ29ubmVjdGlv
bik7CiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3Jl
YXRlKHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTkzNCw0ICs5MzQsMjUgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdo
RHluYW1pYwogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZUxhdW5jaFNl
cnZpY2VzRGF0YWJhc2UoeHBjX29iamVjdF90IGRhdGFiYXNlKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKKyAgICBtX2xhdW5jaFNlcnZpY2VzRGF0YWJhc2UgPSBkYXRhYmFzZTsK
KworICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHBy
b2Nlc3MtPmlzTGF1bmNoaW5nKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KCFwcm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCk7
CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBkYXRhYmFz
ZSk7CisgICAgfQorfQorCitPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IFdlYlByb2Nlc3NQb29s
OjpsYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgWFBDRXZlbnRIYW5kbGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFhQQ0V2ZW50SGFuZGxlcj4geworcHVibGljOgorICAgIHZpcnR1YWwgflhQQ0V2ZW50
SGFuZGxlcigpIHsgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZVhQQ0V2ZW50KHhwY19vYmpl
Y3RfdCkgY29uc3QgPSAwOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlzaW9uIDI2Mzc2MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi93aW4vV2luMzJIYW5k
bGUuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRI
YW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKQEAgLTU3LDYgKzYxLDkgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29u
ZmlndXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgICAgIHZpcnR1YWwgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBj
RXZlbnRIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAgICAgfTsK
ICAgICAKICAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbQkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDE4ICsy
MzgsMzEgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBw
cm9jZXNzTGF1bmNoZXItPmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MoMCwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKCkpOwogICAgIH07CiAKLSAgICBhdXRvIGVycm9ySGFuZGxlciA9IFtl
cnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKV0gKHhwY19vYmplY3Rf
dCBldmVudCkgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXJy
b3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50XSB7Ci0gICAg
ICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50KTsKLSAgICAgICAgfSk7CisgICAgYXV0byBl
dmVudEhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1w
bCksIGV2ZW50SGFuZGxlciA9IG1fY2xpZW50LT54cGNFdmVudEhhbmRsZXIoKV0gKHhwY19vYmpl
Y3RfdCBldmVudCkgbXV0YWJsZSB7CisgICAgICAgIHhwY19yZXRhaW4oZXZlbnQpOworCisgICAg
ICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikg
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBs
ID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRdIHsKKyAgICAgICAgICAgICAgICBl
cnJvckhhbmRsZXJJbXBsKGV2ZW50KTsKKyAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShldmVu
dCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChldmVudEhhbmRsZXIpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyLCBldmVudF0geworICAgICAgICAg
ICAgICAgIGV2ZW50SGFuZGxlci0+aGFuZGxlWFBDRXZlbnQoZXZlbnQpOworICAgICAgICAgICAg
ICAgIHhwY19yZWxlYXNlKGV2ZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAg
fTsKIAotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1feHBjQ29ubmVjdGlv
bi5nZXQoKSwgZXJyb3JIYW5kbGVyKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFu
ZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGV2ZW50SGFuZGxlcik7CiAKICAgICB4cGNfY29u
bmVjdGlvbl9yZXN1bWUobV94cGNDb25uZWN0aW9uLmdldCgpKTsKIAogICAgIGlmIChVTkxJS0VM
WShtX2xhdW5jaE9wdGlvbnMuc2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZykp
IHsKLSAgICAgICAgZXJyb3JIYW5kbGVyKG51bGxwdHIpOworICAgICAgICBldmVudEhhbmRsZXIo
bnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2Miw2ICsyNzUsOCBAQCB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICBBU1NFUlQo
eHBjX2dldF90eXBlKHJlcGx5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKICAgICAgICAgICAg
IEFTU0VSVCghc3RyY21wKHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcocmVwbHksICJtZXNzYWdl
LW5hbWUiKSwgInByb2Nlc3MtZmluaXNoZWQtbGF1bmNoaW5nIikpOwogCisgICAgICAgICAgICBh
dXRvIHYgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUocmVwbHksICJsYXVuY2gtc2VydmljZXMt
ZGF0YWJhc2UiKTsKKyAgICAgICAgICAgIE5TTG9nKEAiJUAiLCB2KTsKICNpZiBBU1NFUlRfRU5B
QkxFRAogICAgICAgICAgICAgbWFjaF9wb3J0X3VyZWZzX3Qgc2VuZFJpZ2h0Q291bnQgPSAwOwog
ICAgICAgICAgICAgbWFjaF9wb3J0X2dldF9yZWZzKG1hY2hfdGFza19zZWxmKCksIGxpc3Rlbmlu
Z1BvcnQsIE1BQ0hfUE9SVF9SSUdIVF9TRU5ELCAmc2VuZFJpZ2h0Q291bnQpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMCBA
QAogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0y
OTcsNiArMzAxLDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50
CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBS
ZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsK
KyNlbmRpZgogCiAgICAgdm9pZCBwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpT
ZXNzaW9uSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKIApAQCAtMzI3
LDYgKzMzNCwxOSBAQCBwcml2YXRlOgogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlByb2Nlc3NB
c3NlcnRpb25zOwogICAgIH07CiAgICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1fdXBsb2Fk
QWN0aXZpdHk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGFzcyBYUENFdmVudEhhbmRs
ZXIgOiBwdWJsaWMgV2ViS2l0OjpYUENFdmVudEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgWFBDRXZlbnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKKyAgICAgICAg
dmlydHVhbCB+WFBDRXZlbnRIYW5kbGVyKCk7CisKKyAgICAgICAgYm9vbCBoYW5kbGVYUENFdmVu
dCh4cGNfb2JqZWN0X3QpIGNvbnN0IG92ZXJyaWRlOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
V2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOworICAgIH07Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29j
b2EubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nl
c3NQcm94eS5oIgorCisjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4gTmV0d29ya1Byb2Nlc3NQcm94eTo6eHBj
RXZlbnRIYW5kbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdvcmtQ
cm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcigqdGhpcykpOworfQorCitib29sIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90
IGV2ZW50KSBjb25zdAoreworICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQ
Q19UWVBFX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIG1lc3NhZ2VO
YW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpOwor
ICAgIGlmICghbWVzc2FnZU5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChz
dHJjbXAobWVzc2FnZU5hbWUsICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFy
eV9nZXRfdmFsdWUoZXZlbnQsICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICBpZiAo
IWRhdGFiYXNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX25ldHdvcmtQcm9jZXNz
LT5wcm9jZXNzUG9vbCgpLnVwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2UoZXZlbnQpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5k
bGVyOjpYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1By
b2Nlc3MpCisgICAgOiBtX25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNz
KSkKK3sKK30KKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZl
bnRIYW5kbGVyKCkKK3sKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
Njg4LDYgKzE2ODgsNyBAQAogCQlDMTQ5MzgwOTIyMzQ3MTA0MDAwQ0Q3MDcgLyogV2ViU3BlZWNo
U3ludGhlc2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xp
ZW50LmggKi87IH07CiAJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2Jz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMx
NDVDQzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTVDQkIzNzIzRjM3RUNC
MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3IC8qIFByZWZl
cmVuY2VPYnNlcnZlci5tbSAqLzsgfTsKKwkJQzE3MTBDRjcyNEFBNjQzMjAwRDdDMTEyIC8qIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi87IH07CiAJCUMxODE3MzYxMjA1ODQyNDcwMERG
REE2NSAvKiBEaXNwbGF5TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87
IH07CiAJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMTIzQjkyMEExMTU3
MjAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYw
MEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdD
b250cm9sbGVyQWN0aW9uLmggKi87IH07CkBAIC01MDI1LDEyICs1MDI2LDE2IEBACiAJCUMxNDkz
ODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8qIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAv
KiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNl
T2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0YyMjRBN0JE
MDMwMEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRI
YW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUw
MEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzVFMjA1
ODM5RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
cmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYw
MjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5
TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBE
RkRBNjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpbmsu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4
NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUUyNDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJs
ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xlZXBEaXNh
YmxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNCOTIwQTEx
NTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUERGQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdD
b250cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdD
b250cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVG
MTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVU
aW1lSW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGF0
ZVRpbWVJbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250
cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzkwLDYgKzYzOTUsNyBAQAog
CQkJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIu
aCAqLywKIAkJCQkyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFBy
b3ZpZGVyUmVnaXN0cnkuaCAqLywKIAkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIyNEE3QkQw
MzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2Nv
YTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03ODUzLDYgKzc4NTksNyBAQAogCQk1
MTBDQzdFNzE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNv
Y29hICovLAogCQkJCTI5QUQzMDkxMTY0QjRDMTAwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbHMg
Ki8sCiAJCQkJNTE2MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywKIAkJCQk1MTBDQzdF
QTE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi8sCkBAIC04NDM0
LDYgKzg0NDEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMkQwQzU2RkIyMjlGMURFQTAwQkQz
M0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5oICovLAogCQkJCTJEMEM1NkZDMjI5RjFE
RUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsubW0gKi8sCisJCQkJQzE3MTBD
RjUyNEFBNjM0NTAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICov
LAorCQkJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW0gKi8sCiAJCQkJNTMxNTg3NkIyMDc2QjcxMzAwNEJGOUYzIC8qIE5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXJDb2NvYS5tbSAqLywKIAkJCQk1MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0Mg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCAqLywKIAkJCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZE
Q0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8sCkBAIC0xMDI2Miw2ICsxMDI3MSwxNCBA
QAogCQkJdGFiV2lkdGggPSA4OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMUVENzIzNjI0
QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUMxRUQ3MjM3MjRBNTY5MEUwMDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vz
c1Byb3h5Q29jb2EubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQzU0MjU2QUUxOEJFQzE2MTAwREU0MTc5IC8qIGZvcm1z
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEyNzM3LDYg
KzEyNzU0LDcgQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAx
MjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MjIxMkNG
OUYwMDAxMjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTcxMENG
NzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
OTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4
NTAwRjMyODFDIC8qIExpYldlYlJUQ05ldHdvcmtNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0
aWFsaXplQ29ubmVjdGlvbihJUAogewogICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVD
b25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFuZGxl
TGF1bmNoU2VydmljZXNEYXRhYmFzZUNoYW5nZXMoKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgY2Fs
bCBfZXhpdCgpIGRpcmVjdGx5IGZyb20gdGhlIGJhY2tncm91bmQgcXVldWUgaW4gY2FzZSB0aGUg
bWFpbiB0aHJlYWQgaXMgdW5yZXNwb25zaXZlCiAgICAgLy8gYW5kIEF1eGlsaWFyeVByb2Nlc3M6
OmRpZENsb3NlKCkgZG9lcyBub3QgZ2V0IGNhbGxlZC4KICAgICBjb25uZWN0aW9uLT5zZXREaWRD
bG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYzNzYwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYg
KzUxMCwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSB7IHJldHVybiBtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSA6IHRydWU7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaGFuZGxl
TGF1bmNoU2VydmljZXNEYXRhYmFzZUNoYW5nZXMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgUmVm
UHRyPFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCShyZXZpc2lvbiAyNjM3NjApCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTU2LDEyICs1NiwyMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShDT0NPQSkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBOU0xvZyhAIkxTREIgJWQgcGxhdGZv
cm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMiLCBnZXRwaWQoKSk7CisgICAgYXV0byB1dGkgPSBh
ZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NN
SU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSk7CisgICAgQVNTRVJUKCFTdHJpbmcodXRp
LmdldCgpKS5pc0VtcHR5KCkpOworI2VuZGlmCisKICAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0
ID0gcGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dDsKIAogICAgIGlmIChwYXJhbWV0ZXJz
Lm5lSGVscGVyRXh0ZW5zaW9uSGFuZGxlKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjM3NjApCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjEsMjUgKzE2MSwyNSBAQCBzdGF0aWMgaWQgTlNBcHBsaWNhdGlvbkFjY2Vz
c2liaWxpdHlGb2N1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Cit2b2lkIFdlYlByb2Nlc3M6OmhhbmRsZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VDaGFuZ2VzKCkg
Y29uc3QKIHsKLSAgICAvLyBNYXAgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3Vs
ZCBiZSBkb25lIGFzIGVhcmx5IGFzIHBvc3NpYmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwK
LSAgICAvLyBpZiAnY29tLmFwcGxlLmxzZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3Jl
IHRoaXMuCi0gICAgaWYgKHBhcmFtZXRlcnMubWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAg
ICAgYXV0byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFy
YW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRsZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5z
aW9uLT5jb25zdW1lKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAg
Ly8gUGVyZm9ybSBBUEkgY2FsbHMgd2hpY2ggd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRh
YmFzZSBtYXBwaW5nIHNlcnZpY2UsIGFuZCBtYXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRv
IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKLQotICAgICAgICBbW29i
amNfZ2V0Q2xhc3MoIl9MU0RSZWFkU2VydmljZSIpIFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGlu
dmFsaWRhdGVdOworICAgIE5TTG9nKEAiTFNEQiAlZCBoYW5kbGVMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlQ2hhbmdlcyIsIGdldHBpZCgpKTsKIAotICAgICAgICBvayA9IGV4dGVuc2lvbi0+cmV2b2tl
KCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLQotICAgICAgICBBU1NFUlQoU3Ry
aW5nKHV0aS5nZXQoKSkgPT0gU3RyaW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRl
bnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDAp
KS5nZXQoKSkpOwotICAgIH0KKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksIF4oeHBjX29iamVjdF90
IGV2ZW50KSB7CisgICAgICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFs
dWUoZXZlbnQsICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICAgICAgQVNTRVJUKGRh
dGFiYXNlKTsKKyAgICAgICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIp
LCAwKSk7CisgICAgICAgIEFTU0VSVChTdHJpbmcodXRpLmdldCgpKS5pc0VtcHR5KCkpOworICAg
ICAgICBhdXRvIGNvbnRleHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4
dCIpIHNoYXJlZERhdGFiYXNlQ29udGV4dF07CisgICAgICAgIFtjb250ZXh0IG9ic2VydmVEYXRh
YmFzZUNoYW5nZTRXZWJLaXQ6ZGF0YWJhc2VdOworICAgICAgICB1dGkgPSBhZG9wdENGKFVUVHlw
ZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZT
VFIoInRleHQvaHRtbCIpLCAwKSk7CisgICAgICAgIEFTU0VSVCghU3RyaW5nKHV0aS5nZXQoKSku
aXNFbXB0eSgpKTsKKyAgICAgICAgTlNMb2coQCJMU0RCICVkIGhhbmRsZUxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VDaGFuZ2VzIGhhbmRsZXIiLCBnZXRwaWQoKSk7CisgICAgfSk7Cit9CiAKK3ZvaWQg
V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorewogI2lmICFMT0dfRElTQUJMRUQgfHwgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNl
c3NhcnkocGFyYW1ldGVycy53ZWJDb3JlTG9nZ2luZ0NoYW5uZWxzKTsKICAgICBXZWJLaXQ6Omlu
aXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViS2l0TG9nZ2luZ0No
YW5uZWxzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403397</attachid>
            <date>2020-07-02 14:35:00 -0700</date>
            <delta_ts>2020-07-02 14:44:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200702143500.patch</filename>
            <type>text/plain</type>
            <size>45799</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24gYWNj
ZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSw3IEBAIHZvaWQgeHBjX2FycmF5X3NldF9zdHJpbmco
eHBjX29iamVjdF90LCAKIGJvb2wgeHBjX2Jvb2xfZ2V0X3ZhbHVlKHhwY19vYmplY3RfdCk7CiB2
b2lkIHhwY19jb25uZWN0aW9uX2NhbmNlbCh4cGNfY29ubmVjdGlvbl90KTsKIHhwY19jb25uZWN0
aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIGRpc3BhdGNoX3F1
ZXVlX3QpOworeHBjX2Nvbm5lY3Rpb25fdCB4cGNfY29ubmVjdGlvbl9jcmVhdGVfZnJvbV9lbmRw
b2ludCh4cGNfZW5kcG9pbnRfdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZV9tYWNoX3NlcnZpY2UoY29uc3QgY2hhciogbmFtZSwgZGlzcGF0Y2hfcXVldWVfdCwgdWlu
dDY0X3QgZmxhZ3MpOwogcGlkX3QgeHBjX2Nvbm5lY3Rpb25fZ2V0X3BpZCh4cGNfY29ubmVjdGlv
bl90KTsKIHZvaWQgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKHhwY19jb25uZWN0aW9uX3QpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDYtMzAg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
VXBkYXRlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNz
IGZyb20gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg6CisK
IDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24gYWNjZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNT
UEkuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29j
b2EvTGF1bmNoU2VydmljZXNTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDE0IEBA
CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCisjaW5jbHVkZSA8d3RmL3Nw
aS9kYXJ3aW4vWFBDU1BJLmg+CisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaWYg
UExBVEZPUk0oTUFDKQogI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlc1ByaXYuaD4K
ICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxDb3JlU2VydmljZXMvTFNEYXRh
YmFzZUNvbnRleHRQcml2Lmg+CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTFNBcHBMaW5r
UHJpdi5oPgogI2VsaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2Vz
L01vYmlsZUNvcmVTZXJ2aWNlc1ByaXYuaD4KQEAgLTgzLDEzICs4NiwxNiBAQCBlbnVtIExTU2Vz
c2lvbklEIHsKIH07CiAjZW5kaWYKIAotI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotCi1AaW50ZXJmYWNlIF9MU0RTZXJ2aWNlIDogTlNPYmplY3QgPE5TWFBDTGlzdGVuZXJEZWxl
Z2F0ZT4KLSsgKE5TWFBDQ29ubmVjdGlvbiAqKVhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2U7CitAaW50
ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAoY2xhc3MsIHJl
YWRvbmx5KSBMU0RhdGFiYXNlQ29udGV4dCAqc2hhcmVkRGF0YWJhc2VDb250ZXh0OwogQGVuZAog
Ci1AaW50ZXJmYWNlIF9MU0RSZWFkU2VydmljZSA6IF9MU0RTZXJ2aWNlCisjZW5kaWYgLy8gIVVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgKFdl
YktpdENoYW5nZVRyYWNraW5nKQorLSAoaWQgPE5TT2JqZWN0PilhZGREYXRhYmFzZUNoYW5nZU9i
c2VydmVyNFdlYktpdDoodm9pZCAoXikoeHBjX29iamVjdF90IGNoYW5nZSkpb2JzZXJ2ZXI7Cist
ICh2b2lkKXJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OihpZCA8TlNPYmplY3Q+
KXRva2VuOworLSAodm9pZClvYnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0Oih4cGNfb2JqZWN0
X3QpY2hhbmdlOwogQGVuZAogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMjAtMDctMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXBkYXRlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFz
ZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhlIE5ldHdvcmsgcHJvY2VzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzk0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZp
bmcpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5M
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9TYW5k
Ym94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAgICAg
KiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VN
YWluLm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6eHBjRW5k
cG9pbnRNZXNzYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNl
bmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpY
UENFdmVudEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5j
aGVyOjpDbGllbnQ6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRs
ZXI6OlhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNo
aW5nKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmhhbmRsZVhQQ01lc3NhZ2VzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMjAt
MDctMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQ6OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKSBpcyBub3QgY2Fs
bGVkIGZvciBtYWNPUyBDYXRhbHlzdCBhcHBzIG9uIEFwcGxlIFNpbGljb24KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSw4IEBAIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3gKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5z
cGVjdG9yV0tXZWJWaWV3Lm1tCiAKK1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHlDb2NvYS5tbQorCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1t
CiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAy
NjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNo
ZUNvZGVycy5oIgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgog
I2VuZGlmCiAKQEAgLTM4Niw2ICszODcsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlh
bGl6ZUNvbm5lY3RpbwogewogICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0
aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpzaW5nbGV0b24oKS5zZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24o
Y29ubmVjdGlvbik7CisjZW5kaWYKKwogICAgIC8vIFdlIGdpdmUgYSBjaGFuY2UgZm9yIGRpZENs
b3NlKCkgdG8gZ2V0IGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IGZvcmNlZnVsbHkgY2Fs
bCBfZXhpdCgpIGFmdGVyIGEgZGVsYXkKICAgICAvLyBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBp
cyB1bnJlc3BvbnNpdmUgb3IgZGlkQ2xvc2UoKSB0YWtlcyB0b28gbG9uZy4KICAgICBjb25uZWN0
aW9uLT5zZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0U29v
bik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyIHsKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQg
c2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworCitwcml2YXRlOgor
ICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpOworICAgIH5MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIoKTsKKworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoT1NPYmplY3RQ
dHI8eHBjX2Nvbm5lY3Rpb25fdD4pOworCisgICAgUmV0YWluUHRyPGlkPiBtX29ic2VydmVyOwor
ICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyAgICBPU09i
amVjdFB0cjx4cGNfZW5kcG9pbnRfdD4gbV9lbmRwb2ludDsKK307CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5o
IgorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXImIExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyPiBvYnNlcnZlcjsKKyAgICBy
ZXR1cm4gb2JzZXJ2ZXI7Cit9CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6TGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24gPSBhZG9w
dE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZShudWxscHRyLCBudWxscHRyKSk7CisgICAg
bV9lbmRwb2ludCA9IGFkb3B0T1NPYmplY3QoeHBjX2VuZHBvaW50X2NyZWF0ZShtX2Nvbm5lY3Rp
b24uZ2V0KCkpKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25u
ZWN0aW9uLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICB4cGNfY29ubmVj
dGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0KCksIF4oeHBjX29iamVjdF90
IG1lc3NhZ2UpIHsKKyAgICAgICAgeHBjX3R5cGVfdCB0eXBlID0geHBjX2dldF90eXBlKG1lc3Nh
Z2UpOworICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9DT05ORUNUSU9OKSB7CisgICAgICAg
ICAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSBtZXNzYWdlOworICAgICAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpKTsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5k
bGVyKGNvbm5lY3Rpb24sIF4oeHBjX29iamVjdF90IGV2ZW50KSB7CisgICAgICAgICAgICAgICAg
c3RhcnRPYnNlcnZpbmcoY29ubmVjdGlvbik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IHhwY19jb25uZWN0aW9uX3Jlc3VtZShtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0pOworICAg
IHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24uZ2V0KCkpOworCit9CisKK3ZvaWQg
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24o
SVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQoreworICAgIGlmICghY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGlj
dGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgIm1lc3NhZ2UtbmFtZSIsICJ4cGMtZW5kcG9pbnQt
bWVzc2FnZSIpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtZXNzYWdlLmdldCgpLCAi
eHBjLWVuZHBvaW50IiwgbV9lbmRwb2ludC5nZXQoKSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9z
ZW5kX21lc3NhZ2UoY29ubmVjdGlvbi0+eHBjQ29ubmVjdGlvbigpLCBtZXNzYWdlLmdldCgpKTsK
K30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5n
KE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBj
b250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWRE
YXRhYmFzZUNvbnRleHRdOworICAgIGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9vYnNlcnZlciA9IFtjb250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2
ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNoYW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2Ug
PSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAw
KSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgIm1l
c3NhZ2UtbmFtZSIsICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIik7CisgICAgICAg
IHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtZXNzYWdlLmdldCgpLCAibGF1bmNoLXNlcnZpY2Vz
LWRhdGFiYXNlIiwgY2hhbmdlKTsKKworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3Nh
Z2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisgICAgfV07Cit9CisKK0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6fkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cigpCit7CisgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFz
ZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworCisgICAgaWYgKCFbY29udGV4dCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0
V2ViS2l0OildKQorICAgICAgICByZXR1cm47CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFz
ZUNoYW5nZU9ic2VydmVyNFdlYktpdDptX29ic2VydmVyLmdldCgpXTsKK30KKworfQpJbmRleDog
U291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9SZXNvdXJjZXMv
U2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJKHJldmlz
aW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9p
b3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCSh3b3JraW5nIGNvcHkpCkBAIC01ODgs
NyArNTg4LDcgQEAKIChhbGxvdyBpcGMtcG9zaXgtc2htLXJlYWQqCiAgICAgICAgKGlwYy1wb3Np
eC1uYW1lLXByZWZpeCAiYXBwbGUuY2ZwcmVmcy4iKSkKICAKLShhbGxvdyBtYWNoLWxvb2t1cAor
KGRlbnkgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5sc2QubWFwZGIi
KSkKIAogOzsgPHJkYXI6Ly9wcm9ibGVtLzEyNDEzOTQyPgpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWlu
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkocmV2aXNpb24gMjYzODYxKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjM4NjEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1h
bmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhX
ZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHIpOwotICAgIE5l
dHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJv
Y2Vzcy5nZXQoKTsgfQorICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKQEAg
LTU0Miw2ICs1NDIsMTEgQEAgcHVibGljOgogICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VySWQ7IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgT1NP
YmplY3RQdHI8eHBjX29iamVjdF90PiB4cGNFbmRwb2ludE1lc3NhZ2UoKSBjb25zdDsKKyAgICB2
b2lkIHNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKE9TT2JqZWN0UHRy
PHhwY19vYmplY3RfdD4gZW5kcG9pbnRNZXNzYWdlKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgyNiw2ICs4MzEsMTAgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3Rf
dD4gbV9lbmRwb2ludE1lc3NhZ2U7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1Myw2ICs5NTMsMTIgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBlbmRwb2ludE1lc3NhZ2UgPSBwcm9jZXNzUG9vbCgp
LnhwY0VuZHBvaW50TWVzc2FnZSgpOworICAgIGlmIChlbmRwb2ludE1lc3NhZ2UpCisgICAgICAg
IHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24o
KSwgZW5kcG9pbnRNZXNzYWdlLmdldCgpKTsKKyNlbmRpZgorCiAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fd2ViQ29ubmVjdGlvbik7CiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI2Mzg2
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNCw0ICs5MzQsMjMgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJIaWdoRHluYW1pYwogfQogI2VuZGlmCiAKK09TT2JqZWN0UHRyPHhwY19vYmpl
Y3RfdD4gV2ViUHJvY2Vzc1Bvb2w6OnhwY0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fZW5kcG9pbnRNZXNzYWdlOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5k
TmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2VzcyhPU09iamVjdFB0cjx4cGNfb2Jq
ZWN0X3Q+IGVuZHBvaW50TWVzc2FnZSkKK3sKKyAgICBtX2VuZHBvaW50TWVzc2FnZSA9IGVuZHBv
aW50TWVzc2FnZTsKKworICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAg
ICAgICAgaWYgKHByb2Nlc3MtPmlzTGF1bmNoaW5nKCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKCFwcm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGND
b25uZWN0aW9uKCk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0
aW9uLCBlbmRwb2ludE1lc3NhZ2UuZ2V0KCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVu
dEhhbmRsZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9YUENFdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxYUENFdmVudEhhbmRsZXI+IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVYUENFdmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0ID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShy
ZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRl
IDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCkBAIC01Nyw2ICs2MSw5IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmly
dHVhbCBib29sIHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxY
UENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KKyNlbmRpZgogICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIzOCwxOCArMjM4LDMxIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICAgICAgcHJvY2Vzc0xhdW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9j
ZXNzKDAsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKICAgICB9OwogCi0gICAgYXV0
byBlcnJvckhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVy
SW1wbCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlcklt
cGwpLCBldmVudF0gewotICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7Ci0gICAg
ICAgIH0pOworICAgIGF1dG8gZXZlbnRIYW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZN
b3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudEhhbmRsZXIgPSBtX2NsaWVudC0+eHBjRXZlbnRI
YW5kbGVyKCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgeworICAgICAgICB4cGNfcmV0
YWluKGV2ZW50KTsKKworICAgICAgICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkg
PT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50XSB7
CisgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7CisgICAgICAgICAgICAg
ICAgeHBjX3JlbGVhc2UoZXZlbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXZlbnRIYW5kbGVyKSB7CisgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2V2ZW50SGFuZGxlciA9IGV2ZW50SGFuZGxlciwg
ZXZlbnRdIHsKKyAgICAgICAgICAgICAgICBldmVudEhhbmRsZXItPmhhbmRsZVhQQ0V2ZW50KGV2
ZW50KTsKKyAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShldmVudCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQogICAgIH07CiAKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFu
ZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGVycm9ySGFuZGxlcik7CisgICAgeHBjX2Nvbm5l
Y3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBldmVudEhhbmRs
ZXIpOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlvbi5nZXQoKSk7
CiAKICAgICBpZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1
bmNoRmFpbEZvclRlc3RpbmcpKSB7Ci0gICAgICAgIGVycm9ySGFuZGxlcihudWxscHRyKTsKKyAg
ICAgICAgZXZlbnRIYW5kbGVyKG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDEwIEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRIYW5kbGVy
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsK
IH0KQEAgLTI5Nyw2ICszMDEsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVy
OjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IG92
ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwog
CkBAIC0zMjcsNiArMzM0LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPj4gd2Vi
UHJvY2Vzc0Fzc2VydGlvbnM7CiAgICAgfTsKICAgICBPcHRpb25hbDxVcGxvYWRBY3Rpdml0eT4g
bV91cGxvYWRBY3Rpdml0eTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNsYXNzIFhQQ0V2
ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7CisgICAgcHVibGlj
OgorICAgICAgICBYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYpOwor
ICAgICAgICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKTsKKworICAgICAgICBib29sIGhhbmRs
ZVhQQ0V2ZW50KHhwY19vYmplY3RfdCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBXZWFrUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7Cisg
ICAgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHlDb2NvYS5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZXR3
b3JrUHJvY2Vzc1Byb3h5LmgiCisKKyNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojp4cGNFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyKCp0aGlzKSk7Cit9CisKK2Jvb2wg
TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCh4cGNf
b2JqZWN0X3QgZXZlbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVu
dCkgPT0gWFBDX1RZUEVfRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8g
bWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAibWVzc2FnZS1u
YW1lIik7CisgICAgaWYgKCFtZXNzYWdlTmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFzdHJjbXAobWVzc2FnZU5hbWUsICJ4cGMtZW5kcG9pbnQtbWVzc2FnZSIpKQorICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmROZXR3b3JrUHJvY2Vzc1hQ
Q0VuZHBvaW50VG9XZWJQcm9jZXNzKGV2ZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxlcihjb25z
dCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1By
b2Nlc3MobWFrZVdlYWtQdHIobmV0d29ya1Byb2Nlc3MpKQoreworfQorCitOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpYUENFdmVudEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIoKQoreworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2ODQsOCArMTY4NCwxMCBAQAogCQlDMTFB
OUVDQzIxNDAzNUY4MDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFBOUVDQjIxNDAzNUY4MDBD
RkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggKi87IH07CiAJCUMxMUUxNjk0MjEyQjg3
QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFFMTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlz
cGxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMxNDkzODA5MjIzNDcxMDQwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAyMjIz
NDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLzsgfTsKKwkJQzE0
RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0RDM3RkQy
NEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovOyB9
OwogCQlDMTVDQkIzNjIzRjM3NzcxMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MwRTIzRENB
NDI3MDAzQTVFRUIgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8q
IFByZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2
ZXIubW0gKi87IH07CisJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLm1tICovOyB9OwogCQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRBNjUgLyogRGlz
cGxheUxpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovOyB9OwogCQlDMUUx
MjNCQTIwQTExNTczMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAv
KiBQREZDb250ZXh0TWVudS5oICovOyB9OwogCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyog
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFj
dGlvbi5oICovOyB9OwpAQCAtNTAxOCwxMyArNTAyMCwxOSBAQAogCQlDMTQ5MzgwMjIyMzQxQzYw
MDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MTQ5MzgwMzIyMzQxREY3MDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkzODBBMjIzODUzQkUwMDBDRDcwNyAvKiBXZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNWb2lj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTREMzdGQzI0QUNERjQ1MDA3RkYw
MTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNUNCQjMzMjNGMzRDMzgwMDMw
MENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVm
ZXJlbmNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Yy
MjRBN0JEMDMwMEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBD
RXZlbnRIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRB
QTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3
MzVFMjA1ODM5RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
ODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXNwbGF5TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0
NEE5MDBERkRBNjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxh
eUxpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2
MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUUyNDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVw
RGlzYWJsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xl
ZXBEaXNhYmxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNC
OTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUERGQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8q
IERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBX
S0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5w
dXRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Mzg0LDYgKzYzOTIs
NyBAQAogCQkJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJv
dmlkZXIuaCAqLywKIAkJCQkyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29u
dGVudFByb3ZpZGVyUmVnaXN0cnkuaCAqLywKIAkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQg
LyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIy
NEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03ODQ0LDYgKzc4NTMsNyBA
QAogCQk1MTBDQzdFNzE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29yayAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0Qz
IC8qIGNvY29hICovLAogCQkJCTI5QUQzMDkxMTY0QjRDMTAwMDcyREVBOSAvKiBDdXN0b21Qcm90
b2NvbHMgKi8sCiAJCQkJNTE2MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywKIAkJCQk1
MTBDQzdFQTE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi8sCkBA
IC04Mzc0LDYgKzgzODQsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQ0Q0NTcwQ0IyNDQwRkIy
QTAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLywKIAkJCQlD
RDQ1NzBDQTI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3Iu
aCAqLywKKwkJCQlDMTREMzdGQzI0QUNERjQ1MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXIuaCAqLywKKwkJCQlDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNo
U2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gKi8sCiAJCQkJNDQ2REM2NEIyNEEyRDhBRDAwNjFG
MzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmggKi8sCiAJCQkJQ0RBMjlB
MTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlD
REEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdl
cy5pbiAqLywKQEAgLTg0MjUsNiArODQzNyw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDBD
NTZGQjIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmggKi8sCiAJ
CQkJMkQwQzU2RkMyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5t
bSAqLywKKwkJCQlDMTcxMENGNTI0QUE2MzQ1MDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLmggKi8sCisJCQkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLywKIAkJCQk1MzE1ODc2QjIwNzZCNzEzMDA0
QkY5RjMgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlckNvY29hLm1tICovLAogCQkJCTUzMjE1OTRG
MURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oICovLAogCQkJCTVDQkM5
QjhCMUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLywKQEAgLTEw
MjUyLDYgKzEwMjY2LDE0IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJ
CX07CisJCUMxRUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0Qz
IC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gY29j
b2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDNTQyNTZBRTE4QkVDMTYx
MDBERTQxNzkgLyogZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMTI3MjYsNiArMTI3NDgsOCBAQAogCQkJCTI3NDlGNjQ1MjE0NjU2MUUwMDgzODBC
RiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
OTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QTWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUMxNEQzN0ZFMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzEx
MiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTdDMTY0QjkxNUYw
MDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUMgLyogTGli
V2ViUlRDTmV0d29ya01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2Mzg2MSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkwLDYgKzI5MCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9u
KElQCiB7CiAgICAgQXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVj
dGlvbik7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBoYW5kbGVYUENNZXNzYWdlcygpOwor
I2VuZGlmCisKICAgICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dy
b3VuZCBxdWV1ZSBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAv
LyBhbmQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgog
ICAgIGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2so
Y2FsbEV4aXQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZp
c2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9u
SUQtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgdm9pZCBoYW5kbGVYUENNZXNzYWdlcygpIGNvbnN0OworI2VuZGlmCisKICAg
ICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFn
ZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTYsMTIgKzU2LDIxIEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1w
b3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGF1dG8gdXRpID0gYWRvcHRD
RihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5
cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIEFTU0VSVCghU3RyaW5nKHV0aS5nZXQo
KSkuaXNFbXB0eSgpKTsKKyNlbmRpZgorCiAgICAgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dCA9IHBh
cmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CiAKICAgICBpZiAocGFyYW1ldGVycy5uZUhl
bHBlckV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyJiBz
aW5nbGV0b24oKTsKKworICAgIHZvaWQgc2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCh4cGNfZW5k
cG9pbnRfdCk7CisKK3ByaXZhdGU6CisgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4g
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgiCisKKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciYgTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdl
dCgpOworfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzZXROZXR3b3Jr
UHJvY2Vzc0VuZHBvaW50KHhwY19lbmRwb2ludF90IGVuZHBvaW50KQoreworICAgIGlmIChtX2Nv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVh
dGVfZnJvbV9lbmRwb2ludChlbmRwb2ludCkpOworICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NP
YmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4
cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksICJtZXNzYWdlLW5hbWUiLCAi
cmVxdWVzdC1kYXRhYmFzZS11cGRhdGUtbWVzc2FnZSIpOworCisgICAgeHBjX2Nvbm5lY3Rpb25f
c2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy5nZXQoKSwgXih4
cGNfb2JqZWN0X3QgbWVzc2FnZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2VOYW1lID0geHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCAibWVzc2FnZS1uYW1lIik7CisgICAgICAgIGlm
ICghbWVzc2FnZU5hbWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghc3RyY21w
KG1lc3NhZ2VOYW1lLCAidXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIpKSB7CisgICAg
ICAgICAgICBhdXRvIGRhdGFiYXNlID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG1lc3NhZ2Us
ICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsKKyAgICAgICAgICAgIGlmICghZGF0YWJhc2Up
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXV0byBjb250ZXh0ID0gW05T
Q2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRl
eHRdOworICAgICAgICAgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKG9ic2VydmVEYXRhYmFzZUNoYW5nZTRXZWJLaXQ6KV0pCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgW2NvbnRleHQgb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDpk
YXRhYmFzZV07CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHhwY19jb25uZWN0aW9uX3Jlc3Vt
ZShtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLmdldCgpKTsKKworICAgIHhwY19jb25uZWN0
aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLmdldCgpLCBtZXNz
YWdlLmdldCgpKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzQ29jb2EuaCIKIAorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIgogI2ltcG9ydCAiTG9n
SW5pdGlhbGl6YXRpb24uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTE2MSwyNSArMTYyLDI2
IEBAIHN0YXRpYyBpZCBOU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUZvY3UKIH0KICNlbmRpZgog
Ci12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3ZvaWQgV2ViUHJvY2Vzczo6aGFuZGxl
WFBDTWVzc2FnZXMoKSBjb25zdAogewotICAgIC8vIE1hcCBMYXVuY2ggU2VydmljZXMgZGF0YWJh
c2UuIFRoaXMgc2hvdWxkIGJlIGRvbmUgYXMgZWFybHkgYXMgcG9zc2libGUsIGFzIHRoZSBtYXBw
aW5nIHdpbGwgZmFpbAotICAgIC8vIGlmICdjb20uYXBwbGUubHNkLm1hcGRiJyBpcyBiZWluZyBh
Y2Nlc3NlZCBiZWZvcmUgdGhpcy4KLSAgICBpZiAocGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhh
bmRsZSkgewotICAgICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZShXVEZNb3ZlKCpwYXJhbWV0ZXJzLm1hcERCRXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgICAgIGJv
b2wgb2sgPSBleHRlbnNpb24tPmNvbnN1bWUoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywg
b2spOwotICAgICAgICAvLyBQZXJmb3JtIEFQSSBjYWxscyB3aGljaCB3aWxsIGNvbW11bmljYXRl
IHdpdGggdGhlIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZSwgYW5kIG1hcCB0aGUgZGF0YWJhc2Uu
Ci0gICAgICAgIGF1dG8gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlm
aWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOwot
Ci0gICAgICAgIFtbb2JqY19nZXRDbGFzcygiX0xTRFJlYWRTZXJ2aWNlIikgWFBDQ29ubmVjdGlv
blRvU2VydmljZV0gaW52YWxpZGF0ZV07CisgICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgb2sgPSBleHRlbnNpb24tPnJldm9rZSgp
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0
X2V2ZW50X2hhbmRsZXIocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigp
LCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICBhdXRvIG1lc3NhZ2VOYW1lID0geHBj
X2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpOworICAgICAgICBp
ZiAoIW1lc3NhZ2VOYW1lKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEFTU0VSVChT
dHJpbmcodXRpLmdldCgpKSA9PSBTdHJpbmcoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJ
ZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwg
MCkpLmdldCgpKSk7Ci0gICAgfQorICAgICAgICBpZiAoIXN0cmNtcChtZXNzYWdlTmFtZSwgInhw
Yy1lbmRwb2ludC1tZXNzYWdlIikpIHsKKyAgICAgICAgICAgIGF1dG8gZW5kcG9pbnQgPSB4cGNf
ZGljdGlvbmFyeV9nZXRfdmFsdWUoZXZlbnQsICJ4cGMtZW5kcG9pbnQiKTsKKyAgICAgICAgICAg
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXROZXR3b3JrUHJv
Y2Vzc0VuZHBvaW50KGVuZHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0pOworfQogCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nl
c3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKICNpZiAhTE9H
X0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFdlYkNvcmU6OmluaXRpYWxp
emVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViQ29yZUxvZ2dpbmdDaGFubmVs
cyk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShwYXJhbWV0
ZXJzLndlYktpdExvZ2dpbmdDaGFubmVscyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403399</attachid>
            <date>2020-07-02 14:46:26 -0700</date>
            <delta_ts>2020-07-02 15:09:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200702144624.patch</filename>
            <type>text/plain</type>
            <size>46004</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24gYWNj
ZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIF94
cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2b2lk
KiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAogI2Rl
ZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2ICsx
MjIsNyBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29sIHhw
Y19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9jYW5j
ZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19jb25uZWN0aW9u
X3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX2Zyb21fZW5kcG9pbnQoeHBjX2VuZHBvaW50X3QpOwog
eHBjX2Nvbm5lY3Rpb25fdCB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKGNvbnN0
IGNoYXIqIG5hbWUsIGRpc3BhdGNoX3F1ZXVlX3QsIHVpbnQ2NF90IGZsYWdzKTsKIHBpZF90IHhw
Y19jb25uZWN0aW9uX2dldF9waWQoeHBjX2Nvbm5lY3Rpb25fdCk7CiB2b2lkIHhwY19jb25uZWN0
aW9uX3Jlc3VtZSh4cGNfY29ubmVjdGlvbl90KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMg
ZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA3LTAxICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIGFwcGxpY2F0
aW9uIGFjY2VudCBjb2xvciBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2Mzg2MSkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxNCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0xTRGF0YWJhc2VDb250ZXh0UHJpdi5oPgogI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbGlmIFBMQVRGT1JN
KElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXNQcml2
Lmg+CkBAIC04MywxMyArODYsMTYgQEAgZW51bSBMU1Nlc3Npb25JRCB7CiB9OwogI2VuZGlmCiAK
LSNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotQGludGVyZmFjZSBfTFNEU2Vy
dmljZSA6IE5TT2JqZWN0IDxOU1hQQ0xpc3RlbmVyRGVsZWdhdGU+Ci0rIChOU1hQQ0Nvbm5lY3Rp
b24gKilYUENDb25uZWN0aW9uVG9TZXJ2aWNlOworQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4
dCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgTFNEYXRhYmFzZUNvbnRl
eHQgKnNoYXJlZERhdGFiYXNlQ29udGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBfTFNEUmVhZFNl
cnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChXZWJLaXRDaGFuZ2VUcmFja2luZykKKy0g
KGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4p
KHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOworLSAodm9pZClyZW1vdmVEYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2
ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVjdF90KWNoYW5nZTsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA3
LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6
OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
OjpzZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyKToKKyAgICAgICAgKiBSZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2I6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKFdlYktp
dDo6WFBDU2VydmljZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnhwY0VuZHBvaW50TWVzc2FnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRw
b2ludFRvV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFu
ZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVy
Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ojp4cGNFdmVudEhh
bmRsZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xh
dW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVu
dEhhbmRsZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpY
UENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpYUENFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6On5Y
UENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZv
cm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6
c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXI6OnNldE5ldHdvcmtQcm9jZXNzRW5kcG9pbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpoYW5k
bGVYUENNZXNzYWdlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA3LTAyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzYXZl
TWFpblRocmVhZEVudmlyb25tZW50KCkgaXMgbm90IGNhbGxlZCBmb3IgbWFjT1MgQ2F0YWx5c3Qg
YXBwcyBvbiBBcHBsZSBTaWxpY29uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lv
biAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQxNSw2ICs0MTUsOCBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0
b3JQcm94CiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVy
Lm1tCiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmlldy5tbQogCitV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KKwogVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVU
aW1lSW5wdXRDb250cm9sLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3
LDYgKzk3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVDb2RlcnMuaCIKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNlbmRpZgogCkBAIC0zODYsNiArMzg3
LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW8KIHsKICAgICBB
dXhpbGlhcnlQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2lu
Z2xldG9uKCkuc2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKGNvbm5lY3Rpb24pOworI2VuZGlmCisK
ICAgICAvLyBXZSBnaXZlIGEgY2hhbmNlIGZvciBkaWRDbG9zZSgpIHRvIGdldCBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkIGJ1dCBmb3JjZWZ1bGx5IGNhbGwgX2V4aXQoKSBhZnRlciBhIGRlbGF5
CiAgICAgLy8gaW4gY2FzZSB0aGUgbWFpbiB0aHJlYWQgaXMgdW5yZXNwb25zaXZlIG9yIGRpZENs
b3NlKCkgdGFrZXMgdG9vIGxvbmcuCiAgICAgY29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWVDYWxsYmFjayhjYWxsRXhpdFNvb24pOwpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlciB7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlcj47CitwdWJsaWM6CisgICAgc3RhdGljIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHNlbmRFbmRwb2ludFRvQ29ubmVjdGlv
bihJUEM6OkNvbm5lY3Rpb24qKTsKKworcHJpdmF0ZToKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIoKTsKKyAgICB+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCk7CisK
KyAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+KTsK
KworICAgIFJldGFpblB0cjxpZD4gbV9vYnNlcnZlcjsKKyAgICBPU09iamVjdFB0cjx4cGNfY29u
bmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisgICAgT1NPYmplY3RQdHI8eHBjX2VuZHBvaW50X3Q+
IG1fZW5kcG9pbnQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlci5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCIKKworI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6
OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlcj4gb2JzZXJ2ZXI7CisgICAgcmV0dXJuIG9ic2VydmVyOworfQorCitM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlcigpCit7CisgICAgbV9jb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlv
bl9jcmVhdGUobnVsbHB0ciwgbnVsbHB0cikpOworICAgIG1fZW5kcG9pbnQgPSBhZG9wdE9TT2Jq
ZWN0KHhwY19lbmRwb2ludF9jcmVhdGUobV9jb25uZWN0aW9uLmdldCgpKSk7CisKKyAgICB4cGNf
Y29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIo
bV9jb25uZWN0aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBtZXNzYWdlKSB7CisgICAgICAgIHhw
Y190eXBlX3QgdHlwZSA9IHhwY19nZXRfdHlwZShtZXNzYWdlKTsKKyAgICAgICAgaWYgKHR5cGUg
PT0gWFBDX1RZUEVfQ09OTkVDVElPTikgeworICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fdCBj
b25uZWN0aW9uID0gbWVzc2FnZTsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJn
ZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgICAg
ICAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihjb25uZWN0aW9uLCBeKHhwY19v
YmplY3RfdCBldmVudCkgeworICAgICAgICAgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rp
b24pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUo
bWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUo
bV9jb25uZWN0aW9uLmdldCgpKTsKKworfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlcjo6c2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVj
dGlvbikKK3sKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIs
IG51bGxwdHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0
KCksICJtZXNzYWdlLW5hbWUiLCAieHBjLWVuZHBvaW50LW1lc3NhZ2UiKTsKKyAgICB4cGNfZGlj
dGlvbmFyeV9zZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgInhwYy1lbmRwb2ludCIsIG1fZW5kcG9p
bnQuZ2V0KCkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24t
PnhwY0Nvbm5lY3Rpb24oKSwgbWVzc2FnZS5nZXQoKSk7Cit9CisKK3ZvaWQgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVj
dGlvbl90PiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNzRnJvbVN0
cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsKKyAgICBp
ZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJhc2VDaGFu
Z2VPYnNlcnZlcjRXZWJLaXQ6KV0pCisgICAgICAgIHJldHVybjsKKworICAgIG1fb2JzZXJ2ZXIg
PSBbY29udGV4dCBhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpeKHhwY19vYmplY3Rf
dCBjaGFuZ2UpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGlj
dGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4cGNfZGljdGlv
bmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksICJtZXNzYWdlLW5hbWUiLCAidXBkYXRlLWxh
dW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUobWVzc2FnZS5nZXQoKSwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIsIGNoYW5nZSk7CisK
KyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1l
c3NhZ2UuZ2V0KCkpOworICAgIH1dOworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKQoreworICAgIGF1dG8gY29udGV4
dCA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJh
c2VDb250ZXh0XTsKKworICAgIGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihyZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgW2NvbnRleHQgcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6
bV9vYnNlcnZlci5nZXQoKV07Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2Vz
L1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2Vi
Q29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAtNTg4LDcgKzU4OCw3IEBACiAoYWxsb3cgaXBj
LXBvc2l4LXNobS1yZWFkKgogICAgICAgIChpcGMtcG9zaXgtbmFtZS1wcmVmaXggImFwcGxlLmNm
cHJlZnMuIikpCiAgCi0oYWxsb3cgbWFjaC1sb29rdXAKKyhkZW55IG1hY2gtbG9va3VwCiAgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUubHNkLm1hcGRiIikpCiAKIDs7IDxyZGFyOi8vcHJvYmxl
bS8xMjQxMzk0Mj4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBD
U2VydmljZU1haW4ubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlv
bi9Db3JlRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRlV0aWxpdGllc1NQSS5o
PgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8
d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzg4LDcgKzM4OCw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAgICAgTmV0d29ya1By
b2Nlc3NQcm94eSYgZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aFdl
YnNpdGVEYXRhU3RvcmUgPSBudWxscHRyKTsKLSAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3
b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KKyAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29y
a1Byb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3Jr
UHJvY2Vzc1Byb3h5Jik7CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihX
ZWJQcm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CkBAIC01NDIsNiArNTQyLDExIEBAIHB1Ymxp
YzoKICAgICBpbnQzMl90IHVzZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlcklkOyB9CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4g
eHBjRW5kcG9pbnRNZXNzYWdlKCkgY29uc3Q7CisgICAgdm9pZCBzZW5kTmV0d29ya1Byb2Nlc3NY
UENFbmRwb2ludFRvV2ViUHJvY2VzcyhPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGVuZHBvaW50
TWVzc2FnZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZSgpOwogCkBAIC04MjYsNiArODMxLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fZW5kcG9pbnRNZXNzYWdlOwor
I2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NTMsNiArOTUzLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hp
bmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1
dG8gZW5kcG9pbnRNZXNzYWdlID0gcHJvY2Vzc1Bvb2woKS54cGNFbmRwb2ludE1lc3NhZ2UoKTsK
KyAgICBpZiAoZW5kcG9pbnRNZXNzYWdlKQorICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21l
c3NhZ2UoY29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksIGVuZHBvaW50TWVzc2FnZS5nZXQo
KSk7CisjZW5kaWYKKwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3dlYkNvbm5lY3Rpb24pOwogICAg
IG1fd2ViQ29ubmVjdGlvbiA9IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSh0aGlz
KTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05
MzQsNCArOTM0LDIzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVySGlnaER5bmFtaWMK
IH0KICNlbmRpZgogCitPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IFdlYlByb2Nlc3NQb29sOjp4
cGNFbmRwb2ludE1lc3NhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2VuZHBvaW50TWVzc2Fn
ZTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9p
bnRUb1dlYlByb2Nlc3MoT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBlbmRwb2ludE1lc3NhZ2Up
Cit7CisgICAgbV9lbmRwb2ludE1lc3NhZ2UgPSBlbmRwb2ludE1lc3NhZ2U7CisKKyAgICBmb3Ig
KGF1dG8gcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLT5pc0xh
dW5jaGluZygpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+
Y29ubmVjdGlvbigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8gY29ubmVj
dGlvbiA9IHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpOworICAgICAgICB4
cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbiwgZW5kcG9pbnRNZXNzYWdlLmdl
dCgpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8WFBDRXZlbnRIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+WFBDRXZlbnRIYW5k
bGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90
KSBjb25zdCA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5o
PgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJYUENFdmVudEhhbmRs
ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oV1BFKQpAQCAtNTcsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb25maWd1
cmVKU0NGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzSklURW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVu
dEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKICAgICB9OwogICAg
IAogICAgIGVudW0gY2xhc3MgUHJvY2Vzc1R5cGUgewpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
CShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9t
YWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTggKzIzOCwz
MSBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIHByb2Nl
c3NMYXVuY2hlci0+ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcygwLCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIoKSk7CiAgICAgfTsKIAotICAgIGF1dG8gZXJyb3JIYW5kbGVyID0gW2Vycm9y
SGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpXSAoeHBjX29iamVjdF90IGV2
ZW50KSBtdXRhYmxlIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhh
bmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRdIHsKLSAgICAgICAg
ICAgIGVycm9ySGFuZGxlckltcGwoZXZlbnQpOwotICAgICAgICB9KTsKKyAgICBhdXRvIGV2ZW50
SGFuZGxlciA9IFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwg
ZXZlbnRIYW5kbGVyID0gbV9jbGllbnQtPnhwY0V2ZW50SGFuZGxlcigpXSAoeHBjX29iamVjdF90
IGV2ZW50KSBtdXRhYmxlIHsKKyAgICAgICAgeHBjX3JldGFpbihldmVudCk7CisKKyAgICAgICAg
aWYgKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKSB7Cisg
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBX
VEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudF0geworICAgICAgICAgICAgICAgIGVycm9y
SGFuZGxlckltcGwoZXZlbnQpOworICAgICAgICAgICAgICAgIHhwY19yZWxlYXNlKGV2ZW50KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGV2ZW50SGFuZGxlcikgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXIsIGV2ZW50XSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRIYW5kbGVyLT5oYW5kbGVYUENFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAg
eHBjX3JlbGVhc2UoZXZlbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9Owog
Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdl
dCgpLCBlcnJvckhhbmRsZXIpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVy
KG1feHBjQ29ubmVjdGlvbi5nZXQoKSwgZXZlbnRIYW5kbGVyKTsKIAogICAgIHhwY19jb25uZWN0
aW9uX3Jlc3VtZShtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpOwogCiAgICAgaWYgKFVOTElLRUxZKG1f
bGF1bmNoT3B0aW9ucy5zaG91bGRNYWtlUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nKSkgewot
ICAgICAgICBlcnJvckhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIGV2ZW50SGFuZGxlcihudWxs
cHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9u
IDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgIkxl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0yOTcsNiArMzAxLDkgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRG
aW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZWZQdHI8WFBDRXZlbnRI
YW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQsIFJlZjxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKIApAQCAtMzI3LDYgKzMzNCwxOSBAQCBw
cml2YXRlOgogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlByb2Nlc3NBc3NlcnRpb25zOwogICAg
IH07CiAgICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1fdXBsb2FkQWN0aXZpdHk7CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMgV2Vi
S2l0OjpYUENFdmVudEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgWFBDRXZlbnRIYW5k
bGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKKyAgICAgICAgdmlydHVhbCB+WFBDRXZl
bnRIYW5kbGVyKCk7CisKKyAgICAgICAgYm9vbCBoYW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3Qp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vha1B0cjxOZXR3b3Jr
UHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOworICAgIH07CisjZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorCisj
aW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmUHRy
PFhQQ0V2ZW50SGFuZGxlcj4gTmV0d29ya1Byb2Nlc3NQcm94eTo6eHBjRXZlbnRIYW5kbGVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdvcmtQcm9jZXNzUHJveHk6OlhQ
Q0V2ZW50SGFuZGxlcigqdGhpcykpOworfQorCitib29sIE5ldHdvcmtQcm9jZXNzUHJveHk6OlhQ
Q0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90IGV2ZW50KSBjb25zdAor
eworICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rp
b25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpOworICAgIGlmICghbWVzc2Fn
ZU5hbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghc3RyY21wKG1lc3NhZ2VO
YW1lLCAieHBjLWVuZHBvaW50LW1lc3NhZ2UiKSkKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5zZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2Vzcyhl
dmVudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBD
RXZlbnRIYW5kbGVyOjpYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYg
bmV0d29ya1Byb2Nlc3MpCisgICAgOiBtX25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdv
cmtQcm9jZXNzKSkKK3sKK30KKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVy
Ojp+WFBDRXZlbnRIYW5kbGVyKCkKK3sKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjM4NjEpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjg0LDggKzE2ODQsMTAgQEAKIAkJQzExQTlFQ0MyMTQwMzVGODAwQ0ZCMjBBIC8q
IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzExQTlFQ0IyMTQwMzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQ
VUNsaWVudC5oICovOyB9OwogCQlDMTFFMTY5NDIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlz
cGxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEx
RTE2OTIyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTQ5MzgwOTIyMzQ3MTA0MDAwQ0Q3
MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50LmggKi87IH07CisJCUMxNEQzN0ZFMjRBQ0UwODYwMDdGRjAxNCAv
KiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLzsgfTsKIAkJQzE1Q0JCMzYyM0YzNzc3MTAw
MzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVu
Y2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUMxNUNCQjM3MjNGMzdFQ0IwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTVDQkIzMzIz
RjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICovOyB9OworCQlDMTcxMENG
NzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE3MTBDRjYyNEFB
NjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLzsgfTsK
IAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRB
NjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsKIAkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8q
IFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsg
fTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEy
REY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKQEAgLTUwMTgs
MTMgKzUwMjAsMTkgQEAKIAkJQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5
bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENENzA3
IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
cGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzN0ZEMjRBQ0UwODYwMDdG
RjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2Vy
dmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlZmVyZW5jZU9ic2VydmVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTcxMENGMjI0QTdCRDAzMDBEN0MxMTIgLyogWFBD
RXZlbnRIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ0V2ZW50SGFuZGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMTcxMENGNTI0QUE2MzQ1MDBEN0MxMTIgLyogTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTcxMENG
NjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM1RTIwNTgzOUY2MDBERkRBNjUgLyog
RHJhd2luZ0FyZWFNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHJhd2luZ0FyZWFNYWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MDIwNTg0MjQ3MDBERkRBNjUg
LyogRGlzcGxheUxpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpbmsuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4MTczNjIyMDU4NDRBOTAwREZEQTY1IC8qIERpc3BsYXlM
aW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaW5rLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUQyNDJGOUY3NjAwN0U5ODc1IC8qIFdlYlNsZWVwRGlz
YWJsZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U2xlZXBEaXNhYmxlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
OEZCNTFFMjQyRjlGNzcwMDdFOTg3NSAvKiBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFFMTIzQjkyMEExMTU3MjAwMjY0NkY0IC8qIFBE
RkNvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERkNvbnRl
eHRNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxRUQ3MjM3MjRBNTY5MEUw
MDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQ29udHJvbGxlckFjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTIzN0Y1RjEyNDQxQ0EzMDA3ODA0NzIg
LyogV2ViRWRpdG9yQ2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViRWRpdG9yQ2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0RhdGVUaW1lSW5wdXRDb250cm9s
Lmg7IHBhdGggPSBpb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjM4NCw2ICs2MzkyLDcgQEAKIAkJCQkyRDdBQUZEMjE4Qzg2
NDA2MDBBN0FDRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmggKi8sCiAJCQkJMkRDNkQ5
QzExOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmgg
Ki8sCiAJCQkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92
aWRlclJlZ2lzdHJ5Lm1tICovLAorCQkJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBYUENF
dmVudEhhbmRsZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtNzg0NCw2ICs3ODUzLDcgQEAKIAkJNTEwQ0M3RTcxNjEzOEU3MjAw
RDAzRUQzIC8qIE5ldHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUMxRUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAvKiBjb2NvYSAqLywKIAkJCQkyOUFE
MzA5MTE2NEI0QzEwMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xzICovLAogCQkJCTUxNjMxOTkz
MTYyODk4MEUwMEUyMkYwMCAvKiBtYWMgKi8sCiAJCQkJNTEwQ0M3RUExNjEzOEU3MjAwRDAzRUQz
IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwICovLApAQCAtODM3NCw2ICs4Mzg0LDggQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCUNENDU3MENCMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgKi8sCiAJCQkJQ0Q0NTcwQ0EyNDQwRkIyQTAwQTNEQ0VC
IC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmggKi8sCisJCQkJQzE0RDM3RkMyNEFD
REY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmggKi8sCisJCQkJ
QzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
Lm1tICovLAogCQkJCTQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC04NDI1LDYgKzg0
MzcsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMkQwQzU2RkIyMjlGMURFQTAwQkQzM0U3IC8q
IERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5oICovLAogCQkJCTJEMEM1NkZDMjI5RjFERUEwMEJE
MzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsubW0gKi8sCisJCQkJQzE3MTBDRjUyNEFB
NjM0NTAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICovLAorCQkJ
CUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXIubW0gKi8sCiAJCQkJNTMxNTg3NkIyMDc2QjcxMzAwNEJGOUYzIC8qIE5ldHdvcmtBY3Rpdml0
eVRyYWNrZXJDb2NvYS5tbSAqLywKIAkJCQk1MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0
d29ya0RhdGFUYXNrQ29jb2EuaCAqLywKIAkJCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyog
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8sCkBAIC0xMDI1Miw2ICsxMDI2NiwxNCBAQAogCQkJ
dGFiV2lkdGggPSA4OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMUVENzIzNjI0QTU2OEY1
MDAzRjZDRDMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCUMxRUQ3MjM3MjRBNTY5MEUwMDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5
Q29jb2EubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJQzU0MjU2QUUxOEJFQzE2MTAwREU0MTc5IC8qIGZvcm1zICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEyNzI2LDYgKzEyNzQ4
LDggQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAxMjhBRkQg
LyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MjIxMkNGOUYwMDAx
MjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzdGRTI0QUNF
MDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNl
cyAqLywKKwkJCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJD
MEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIExpYldlYlJUQ05ldHdvcmtNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogewogICAgIEF1eGlsaWFyeVBy
b2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgaGFuZGxlWFBDTWVzc2FnZXMoKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgY2Fs
bCBfZXhpdCgpIGRpcmVjdGx5IGZyb20gdGhlIGJhY2tncm91bmQgcXVldWUgaW4gY2FzZSB0aGUg
bWFpbiB0aHJlYWQgaXMgdW5yZXNwb25zaXZlCiAgICAgLy8gYW5kIEF1eGlsaWFyeVByb2Nlc3M6
OmRpZENsb3NlKCkgZG9lcyBub3QgZ2V0IGNhbGxlZC4KICAgICBjb25uZWN0aW9uLT5zZXREaWRD
bG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYg
KzUxMCwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSB7IHJldHVybiBtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSA6IHRydWU7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaGFuZGxl
WFBDTWVzc2FnZXMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
CShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDEyICs1NiwyMSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oPgogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2Vz
L01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9h
ZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisjaWYgQVNT
RVJUX0VOQUJMRUQKKyAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVk
SWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiks
IDApKTsKKyAgICBBU1NFUlQoIVN0cmluZyh1dGkuZ2V0KCkpLmlzRW1wdHkoKSk7CisjZW5kaWYK
KwogICAgIG1fZGF0YURldGVjdGlvbkNvbnRleHQgPSBwYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25D
b250ZXh0OwogCiAgICAgaWYgKHBhcmFtZXRlcnMubmVIZWxwZXJFeHRlbnNpb25IYW5kbGUpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRp
YyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lk
IHNldE5ldHdvcmtQcm9jZXNzRW5kcG9pbnQoeHBjX2VuZHBvaW50X3QpOworCitwcml2YXRlOgor
ICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3M7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5oIgorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJ
Lmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFy
d2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXImIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
cj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCh4cGNfZW5k
cG9pbnRfdCBlbmRwb2ludCkKK3sKKyAgICBpZiAobV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyA9
IGFkb3B0T1NPYmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX2Zyb21fZW5kcG9pbnQoZW5kcG9p
bnQpKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2Ny
ZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmlu
ZyhtZXNzYWdlLmdldCgpLCAibWVzc2FnZS1uYW1lIiwgInJlcXVlc3QtZGF0YWJhc2UtdXBkYXRl
LW1lc3NhZ2UiKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MuZ2V0KCksIF4oeHBjX29iamVjdF90IG1lc3NhZ2UpIHsK
KyAgICAgICAgYXV0byBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobWVz
c2FnZSwgIm1lc3NhZ2UtbmFtZSIpOworICAgICAgICBpZiAoIW1lc3NhZ2VOYW1lKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIXN0cmNtcChtZXNzYWdlTmFtZSwgInVwZGF0ZS1s
YXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKSkgeworICAgICAgICAgICAgYXV0byBkYXRhYmFzZSA9
IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShtZXNzYWdlLCAibGF1bmNoLXNlcnZpY2VzLWRhdGFi
YXNlIik7CisgICAgICAgICAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0
YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsKKyAgICAgICAgICAgIGlmICgh
W2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvYnNlcnZlRGF0YWJhc2VDaGFu
Z2U0V2ViS2l0OildKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFtjb250
ZXh0IG9ic2VydmVEYXRhYmFzZUNoYW5nZTRXZWJLaXQ6ZGF0YWJhc2VdOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcy5nZXQoKSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lt
cG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NvY29hLmgiCiAKKyNpbXBv
cnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ0luaXRpYWxpemF0aW9uLmgiCiAjaW1w
b3J0ICJMb2dnaW5nLmgiCkBAIC0xNjEsMjUgKzE2MiwyNiBAQCBzdGF0aWMgaWQgTlNBcHBsaWNh
dGlvbkFjY2Vzc2liaWxpdHlGb2N1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6OmhhbmRsZVhQQ01lc3NhZ2VzKCkgY29uc3QKIHsK
LSAgICAvLyBNYXAgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBiZSBkb25l
IGFzIGVhcmx5IGFzIHBvc3NpYmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAgICAvLyBp
ZiAnY29tLmFwcGxlLmxzZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMuCi0g
ICAgaWYgKHBhcmFtZXRlcnMubWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAgYXV0byBl
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1ldGVycy5t
YXBEQkV4dGVuc2lvbkhhbmRsZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5jb25z
dW1lKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8gUGVyZm9y
bSBBUEkgY2FsbHMgd2hpY2ggd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZSBtYXBw
aW5nIHNlcnZpY2UsIGFuZCBtYXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0aSA9IGFk
b3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01J
TUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKLQotICAgICAgICBbW29iamNfZ2V0Q2xh
c3MoIl9MU0RSZWFkU2VydmljZSIpIFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFsaWRhdGVd
OworICAgIGlmICghcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIG9rID0gZXh0ZW5zaW9uLT5yZXZva2UoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNF
RChvaywgb2spOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgXih4cGNfb2JqZWN0X3QgZXZlbnQp
IHsKKyAgICAgICAgYXV0byBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
ZXZlbnQsICJtZXNzYWdlLW5hbWUiKTsKKyAgICAgICAgaWYgKCFtZXNzYWdlTmFtZSkKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBBU1NFUlQoU3RyaW5nKHV0aS5nZXQoKSkgPT0gU3Ry
aW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdD
bGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKS5nZXQoKSkpOwotICAgIH0KKyAg
ICAgICAgaWYgKCFzdHJjbXAobWVzc2FnZU5hbWUsICJ4cGMtZW5kcG9pbnQtbWVzc2FnZSIpKSB7
CisgICAgICAgICAgICBhdXRvIGVuZHBvaW50ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKGV2
ZW50LCAieHBjLWVuZHBvaW50Iik7CisgICAgICAgICAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludChlbmRwb2ludCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9KTsKK30KIAordm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eShwYXJhbWV0ZXJzLndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6aW5pdGlh
bGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5nQ2hhbm5l
bHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403405</attachid>
            <date>2020-07-02 15:12:21 -0700</date>
            <delta_ts>2020-07-02 16:15:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200702151220.patch</filename>
            <type>text/plain</type>
            <size>48401</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24gYWNj
ZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIF94
cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2b2lk
KiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAogI2Rl
ZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2ICsx
MjIsNyBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29sIHhw
Y19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9jYW5j
ZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19jb25uZWN0aW9u
X3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX2Zyb21fZW5kcG9pbnQoeHBjX2VuZHBvaW50X3QpOwog
eHBjX2Nvbm5lY3Rpb25fdCB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKGNvbnN0
IGNoYXIqIG5hbWUsIGRpc3BhdGNoX3F1ZXVlX3QsIHVpbnQ2NF90IGZsYWdzKTsKIHBpZF90IHhw
Y19jb25uZWN0aW9uX2dldF9waWQoeHBjX2Nvbm5lY3Rpb25fdCk7CiB2b2lkIHhwY19jb25uZWN0
aW9uX3Jlc3VtZSh4cGNfY29ubmVjdGlvbl90KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMg
ZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA3LTAxICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIGFwcGxpY2F0
aW9uIGFjY2VudCBjb2xvciBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2Mzg2MSkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxNCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0xTRGF0YWJhc2VDb250ZXh0UHJpdi5oPgogI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbGlmIFBMQVRGT1JN
KElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXNQcml2
Lmg+CkBAIC04MywxMyArODYsMTYgQEAgZW51bSBMU1Nlc3Npb25JRCB7CiB9OwogI2VuZGlmCiAK
LSNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotQGludGVyZmFjZSBfTFNEU2Vy
dmljZSA6IE5TT2JqZWN0IDxOU1hQQ0xpc3RlbmVyRGVsZWdhdGU+Ci0rIChOU1hQQ0Nvbm5lY3Rp
b24gKilYUENDb25uZWN0aW9uVG9TZXJ2aWNlOworQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4
dCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgTFNEYXRhYmFzZUNvbnRl
eHQgKnNoYXJlZERhdGFiYXNlQ29udGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBfTFNEUmVhZFNl
cnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChXZWJLaXRDaGFuZ2VUcmFja2luZykKKy0g
KGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4p
KHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOworLSAodm9pZClyZW1vdmVEYXRhYmFzZUNo
YW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2
ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVjdF90KWNoYW5nZTsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA3
LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6
OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
OjpzZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyKToKKyAgICAgICAgKiBSZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2I6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKFdlYktp
dDo6WFBDU2VydmljZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnhwY0VuZHBvaW50TWVzc2FnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRw
b2ludFRvV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFu
ZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVy
Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ojp4cGNFdmVudEhh
bmRsZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xh
dW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVu
dEhhbmRsZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpY
UENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpYUENFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6On5Y
UENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZv
cm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6
c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXI6OnNldE5ldHdvcmtQcm9jZXNzRW5kcG9pbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpoYW5k
bGVYUENNZXNzYWdlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA3LTAyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzYXZl
TWFpblRocmVhZEVudmlyb25tZW50KCkgaXMgbm90IGNhbGxlZCBmb3IgbWFjT1MgQ2F0YWx5c3Qg
YXBwcyBvbiBBcHBsZSBTaWxpY29uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lv
biAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQxNSw2ICs0MTUsOCBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0
b3JQcm94CiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVy
Lm1tCiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmlldy5tbQogCitV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KKwogVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVU
aW1lSW5wdXRDb250cm9sLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3
LDYgKzk3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVDb2RlcnMuaCIKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNlbmRpZgogCkBAIC0zODYsNiArMzg3
LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW8KIHsKICAgICBB
dXhpbGlhcnlQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2lu
Z2xldG9uKCkuc2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKGNvbm5lY3Rpb24pOworI2VuZGlmCisK
ICAgICAvLyBXZSBnaXZlIGEgY2hhbmNlIGZvciBkaWRDbG9zZSgpIHRvIGdldCBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkIGJ1dCBmb3JjZWZ1bGx5IGNhbGwgX2V4aXQoKSBhZnRlciBhIGRlbGF5
CiAgICAgLy8gaW4gY2FzZSB0aGUgbWFpbiB0aHJlYWQgaXMgdW5yZXNwb25zaXZlIG9yIGRpZENs
b3NlKCkgdGFrZXMgdG9vIGxvbmcuCiAgICAgY29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWVDYWxsYmFjayhjYWxsRXhpdFNvb24pOwpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlciB7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlcj47CitwdWJsaWM6CisgICAgc3RhdGljIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHNlbmRFbmRwb2ludFRvQ29ubmVjdGlv
bihJUEM6OkNvbm5lY3Rpb24qKTsKKworcHJpdmF0ZToKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIoKTsKKyAgICB+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKCk7CisK
KyAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+KTsK
KworICAgIFJldGFpblB0cjxpZD4gbV9vYnNlcnZlcjsKKyAgICBPU09iamVjdFB0cjx4cGNfY29u
bmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisgICAgT1NPYmplY3RQdHI8eHBjX2VuZHBvaW50X3Q+
IG1fZW5kcG9pbnQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlci5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgiCisKKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVu
dHMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlciYgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI+IG9ic2VydmVyOworICAgIHJldHVy
biBvYnNlcnZlcjsKK30KKworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKQoreworICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NP
YmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlKG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBtX2Vu
ZHBvaW50ID0gYWRvcHRPU09iamVjdCh4cGNfZW5kcG9pbnRfY3JlYXRlKG1fY29ubmVjdGlvbi5n
ZXQoKSkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rp
b24uZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgIHhwY19jb25uZWN0aW9u
X3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVz
c2FnZSkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7
CisgICAgICAgIGlmICh0eXBlID09IFhQQ19UWVBFX0NPTk5FQ1RJT04pIHsKKyAgICAgICAgICAg
IHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IG1lc3NhZ2U7CisgICAgICAgICAgICBhdWRp
dF90b2tlbl90IGF1ZGl0VG9rZW47CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVk
aXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOworICAgICAgICAgICAgaWYgKFdURjo6
aGFzRW50aXRsZW1lbnQoYXVkaXRUb2tlbiwgImNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC5sYXVu
Y2gtc2VydmljZXMtZGItc2hhcmluZyIpKSB7CisgICAgICAgICAgICAgICAgeHBjX2Nvbm5lY3Rp
b25fc2V0X3RhcmdldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKKyAgICAgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihjb25u
ZWN0aW9uLCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICAgICAgICAgICAgICBzdGFy
dE9ic2VydmluZyhjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobWVzc2FnZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdl
dCgpKTsKKworfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2VuZEVu
ZHBvaW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICBp
ZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVzc2FnZSA9IGFk
b3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsK
KyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksICJtZXNzYWdlLW5h
bWUiLCAieHBjLWVuZHBvaW50LW1lc3NhZ2UiKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUobWVzc2FnZS5nZXQoKSwgInhwYy1lbmRwb2ludCIsIG1fZW5kcG9pbnQuZ2V0KCkpOworCisg
ICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24tPnhwY0Nvbm5lY3Rpb24o
KSwgbWVzc2FnZS5nZXQoKSk7Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyOjpzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBjb25uZWN0
aW9uKQoreworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJh
c2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsKKyAgICBpZiAoIVtjb250ZXh0IHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJL
aXQ6KV0pCisgICAgICAgIHJldHVybjsKKworICAgIG1fb2JzZXJ2ZXIgPSBbY29udGV4dCBhZGRE
YXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpeKHhwY19vYmplY3RfdCBjaGFuZ2UpIHsKKyAg
ICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUo
bnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5n
KG1lc3NhZ2UuZ2V0KCksICJtZXNzYWdlLW5hbWUiLCAidXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1k
YXRhYmFzZSIpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobWVzc2FnZS5nZXQo
KSwgImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSIsIGNoYW5nZSk7CisKKyAgICAgICAgeHBjX2Nv
bm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOwor
ICAgIH1dOworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKQoreworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNzRnJv
bVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsKKwor
ICAgIGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVEYXRh
YmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2Nv
bnRleHQgcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6bV9vYnNlcnZlci5nZXQo
KV07Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxl
cy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LnNiCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNl
cy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29y
a2luZyBjb3B5KQpAQCAtNTg4LDcgKzU4OCw3IEBACiAoYWxsb3cgaXBjLXBvc2l4LXNobS1yZWFk
KgogICAgICAgIChpcGMtcG9zaXgtbmFtZS1wcmVmaXggImFwcGxlLmNmcHJlZnMuIikpCiAgCi0o
YWxsb3cgbWFjaC1sb29rdXAKKyhkZW55IG1hY2gtbG9va3VwCiAgICAgKGdsb2JhbC1uYW1lICJj
b20uYXBwbGUubHNkLm1hcGRiIikpCiAKIDs7IDxyZGFyOi8vcHJvYmxlbS8xMjQxMzk0Mj4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVt
ZW50cy5zaAkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsNyBAQCBmdW5jdGlvbiBtYWNfcHJv
Y2Vzc193ZWJjb250ZW50X2VudGl0bGVtCiAKICAgICBpZiBbWyAiJHtXS19VU0VfUkVTVFJJQ1RF
RF9FTlRJVExFTUVOVFN9IiA9PSBZRVMgXV0KICAgICB0aGVuCisgICAgICAgIHBsaXN0YnVkZHkg
QWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQubGF1bmNoLXNlcnZpY2VzLWRiLXNoYXJpbmcg
Ym9vbCBZRVMKICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5zdG9y
YWdlLldlYktpdFdlYkNvbnRlbnRTYW5kYm94IGJvb2wgWUVTCiAgICAgZmkKIApAQCAtNDksNiAr
NTAsNyBAQCBmdW5jdGlvbiBtYWNfcHJvY2Vzc19uZXR3b3JrX2VudGl0bGVtZW50CiAgICAgICAg
IHRoZW4KICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2Mu
bWFuYWdlci5jaGVjay1ieS1hdWRpdC10b2tlbiBhcnJheQogICAgICAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnRjYy5tYW5hZ2VyLmNoZWNrLWJ5LWF1ZGl0LXRva2Vu
OjAgc3RyaW5nIGtUQ0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb24K
KyAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQubGF1
bmNoLXNlcnZpY2VzLWRiLXNoYXJpbmcgYm9vbCBZRVMKICAgICAgICAgZmkKIAogICAgICAgICBw
bGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJvb3RsZXNzLnN0b3JhZ2UuV2ViS2l0TmV0d29ya2lu
Z1NhbmRib3ggYm9vbCBZRVMKQEAgLTE0NCw2ICsxNDYsNyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5
X3Byb2Nlc3Nfd2ViY29udGVudF9lCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2
YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQg
OmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlvbiBi
b29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0
b3IucHJveHktYXBwbGljYXRpb24gYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFw
cGxlLnByaXZhdGUud2Via2l0LmxhdW5jaC1zZXJ2aWNlcy1kYi1zaGFyaW5nIGJvb2wgWUVTCiAg
ICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJr
aXQgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6ZHluYW1pYy1jb2Rlc2lnbmluZyBib29s
IFlFUwogCkBAIC0xODQsNiArMTg3LDcgQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX25l
dHdvcmtfZW50aQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5kbWQucG9s
aWN5IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLm1lbW9y
eXN0YXR1cyBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5u
ZXR3b3JrLnNvY2tldC1kZWxlZ2F0ZSBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS53ZWJraXQubGF1bmNoLXNlcnZpY2VzLWRiLXNoYXJpbmcgYm9vbCBZRVMK
ICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJ1bm5pbmdib2FyZC5hc3NlcnRpb25zLndl
YmtpdCBib29sIFlFUwogCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnRj
Yy5tYW5hZ2VyLmNoZWNrLWJ5LWF1ZGl0LXRva2VuIGFycmF5CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1h
aW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCShyZXZpc2lvbiAyNjM4NjEp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBh
bC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNo
U2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2Mzg2MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOZXR3b3JrIFByb2Nlc3Mg
TWFuYWdlbWVudAogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNz
KFdlYnNpdGVEYXRhU3RvcmUqIHdpdGhXZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cik7Ci0gICAg
TmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQ
cm9jZXNzLmdldCgpOyB9CisgICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9CiAgICAgdm9pZCBuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogCiAgICAgdm9pZCBnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwpA
QCAtNTQyLDYgKzU0MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50MzJfdCB1c2VySWQoKSBjb25zdCB7
IHJldHVybiBtX3VzZXJJZDsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBP
U09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IHhwY0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0OworICAg
IHZvaWQgc2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoT1NPYmplY3RQ
dHI8eHBjX29iamVjdF90PiBlbmRwb2ludE1lc3NhZ2UpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApAQCAtODI2LDYgKzgzMSwxMCBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsK
ICNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgT1NPYmplY3RQdHI8eHBjX29iamVj
dF90PiBtX2VuZHBvaW50TWVzc2FnZTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUzLDYgKzk1MywxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIGVuZHBvaW50TWVzc2FnZSA9IHByb2Nlc3NQb29s
KCkueHBjRW5kcG9pbnRNZXNzYWdlKCk7CisgICAgaWYgKGVuZHBvaW50TWVzc2FnZSkKKyAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlv
bigpLCBlbmRwb2ludE1lc3NhZ2UuZ2V0KCkpOworI2VuZGlmCisKICAgICBSRUxFQVNFX0FTU0VS
VCghbV93ZWJDb25uZWN0aW9uKTsKICAgICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjYz
ODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTM0LDQgKzkzNCwyMyBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZWdpc3RlckhpZ2hEeW5hbWljCiB9CiAjZW5kaWYKIAorT1NPYmplY3RQdHI8eHBjX29i
amVjdF90PiBXZWJQcm9jZXNzUG9vbDo6eHBjRW5kcG9pbnRNZXNzYWdlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9lbmRwb2ludE1lc3NhZ2U7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
bmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKE9TT2JqZWN0UHRyPHhwY19v
YmplY3RfdD4gZW5kcG9pbnRNZXNzYWdlKQoreworICAgIG1fZW5kcG9pbnRNZXNzYWdlID0gZW5k
cG9pbnRNZXNzYWdlOworCisgICAgZm9yIChhdXRvIHByb2Nlc3MgOiBtX3Byb2Nlc3Nlcykgewor
ICAgICAgICBpZiAocHJvY2Vzcy0+aXNMYXVuY2hpbmcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoIXByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnhw
Y0Nvbm5lY3Rpb24oKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5l
Y3Rpb24sIGVuZHBvaW50TWVzc2FnZS5nZXQoKSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFu
ZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2
ZW50SGFuZGxlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1hQQ0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRXZlbnRIYW5kbGVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFhQQ0V2ZW50SGFuZGxlcj4geworcHVibGljOgor
ICAgIHZpcnR1YWwgflhQQ0V2ZW50SGFuZGxlcigpIHsgfQorCisgICAgdmlydHVhbCBib29sIGhh
bmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCkgY29uc3QgPSAwOworfTsKKworfQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJ
KHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1By
b2Nlc3NMYXVuY2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi93aW4vV2luMzJIYW5kbGUuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisjaW5jbHVkZSAiWFBDRXZlbnRIYW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKQEAgLTU3LDYgKzYxLDkg
QEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgPSAwOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIHZpcnR1YWwgUmVmUHRy
PFhQQ0V2ZW50SGFuZGxlcj4geHBjRXZlbnRIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQorI2VuZGlmCiAgICAgfTsKICAgICAKICAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNo
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjM4LDE4ICsyMzgsMzEgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5j
aFByb2Nlc3MoKQogICAgICAgICBwcm9jZXNzTGF1bmNoZXItPmRpZEZpbmlzaExhdW5jaGluZ1By
b2Nlc3MoMCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKCkpOwogICAgIH07CiAKLSAgICBh
dXRvIGVycm9ySGFuZGxlciA9IFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRs
ZXJJbXBsKV0gKHhwY19vYmplY3RfdCBldmVudCkgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVy
SW1wbCksIGV2ZW50XSB7Ci0gICAgICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50KTsKLSAg
ICAgICAgfSk7CisgICAgYXV0byBldmVudEhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdU
Rk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50SGFuZGxlciA9IG1fY2xpZW50LT54cGNFdmVu
dEhhbmRsZXIoKV0gKHhwY19vYmplY3RfdCBldmVudCkgbXV0YWJsZSB7CisgICAgICAgIHhwY19y
ZXRhaW4oZXZlbnQpOworCisgICAgICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50
KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRd
IHsKKyAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50KTsKKyAgICAgICAgICAg
ICAgICB4cGNfcmVsZWFzZShldmVudCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChldmVudEhhbmRsZXIpIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVy
LCBldmVudF0geworICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlci0+aGFuZGxlWFBDRXZlbnQo
ZXZlbnQpOworICAgICAgICAgICAgICAgIHhwY19yZWxlYXNlKGV2ZW50KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CiAgICAgfTsKIAotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9o
YW5kbGVyKG1feHBjQ29ubmVjdGlvbi5nZXQoKSwgZXJyb3JIYW5kbGVyKTsKKyAgICB4cGNfY29u
bmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGV2ZW50SGFu
ZGxlcik7CiAKICAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV94cGNDb25uZWN0aW9uLmdldCgp
KTsKIAogICAgIGlmIChVTkxJS0VMWShtX2xhdW5jaE9wdGlvbnMuc2hvdWxkTWFrZVByb2Nlc3NM
YXVuY2hGYWlsRm9yVGVzdGluZykpIHsKLSAgICAgICAgZXJyb3JIYW5kbGVyKG51bGxwdHIpOwor
ICAgICAgICBldmVudEhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NiArNDQsMTAgQEAKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5o
IgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJYUENFdmVudEhhbmRs
ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNl
OwogfQpAQCAtMjk3LDYgKzMwMSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBQcm9jZXNzTGF1bmNo
ZXI6OkNsaWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlcios
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBjRXZlbnRIYW5kbGVyKCkgY29uc3Qg
b3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFBBTDo6U2Vzc2lvbklELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7
CiAKQEAgLTMyNyw2ICszMzQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzaE1hcDxXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NBc3NlcnRpb24+PiB3
ZWJQcm9jZXNzQXNzZXJ0aW9uczsKICAgICB9OwogICAgIE9wdGlvbmFsPFVwbG9hZEFjdGl2aXR5
PiBtX3VwbG9hZEFjdGl2aXR5OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2xhc3MgWFBD
RXZlbnRIYW5kbGVyIDogcHVibGljIFdlYktpdDo6WFBDRXZlbnRIYW5kbGVyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7
CisgICAgICAgIHZpcnR1YWwgflhQQ0V2ZW50SGFuZGxlcigpOworCisgICAgICAgIGJvb2wgaGFu
ZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBjb25zdCBvdmVycmlkZTsKKworICAgIHByaXZhdGU6
CisgICAgICAgIFdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsK
KyAgICB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eUNvY29hLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKKworI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1JlZlB0cjxYUENFdmVudEhhbmRsZXI+IE5ldHdvcmtQcm9jZXNz
UHJveHk6OnhwY0V2ZW50SGFuZGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXIoKnRoaXMpKTsKK30KKworYm9v
bCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50KHhw
Y19vYmplY3RfdCBldmVudCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2
ZW50KSA9PSBYUENfVFlQRV9FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsICJtZXNzYWdl
LW5hbWUiKTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIXN0cmNtcChtZXNzYWdlTmFtZSwgInhwYy1lbmRwb2ludC1tZXNzYWdlIikpCisg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2VuZE5ldHdvcmtQcm9jZXNz
WFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoZXZlbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6WFBDRXZlbnRIYW5kbGVyKGNv
bnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzKQorICAgIDogbV9uZXR3b3Jr
UHJvY2VzcyhtYWtlV2Vha1B0cihuZXR3b3JrUHJvY2VzcykpCit7Cit9CisKK05ldHdvcmtQcm9j
ZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcigpCit7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY4NCw4ICsxNjg0LDEwIEBACiAJCUMx
MUE5RUNDMjE0MDM1RjgwMENGQjIwQSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUE5RUNCMjE0MDM1Rjgw
MENGQjIwQSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLzsgfTsKIAkJQzExRTE2OTQyMTJC
ODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tE
aXNwbGF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzE0OTM4MDkyMjM0NzEwNDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0OTM4MDIy
MjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovOyB9OworCQlD
MTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTREMzdG
RDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gKi87
IH07CiAJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDVDQzBFMjNE
Q0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTVDQkIzNzIzRjM3RUNCMDAzMDBDQzcg
LyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNl
cnZlci5tbSAqLzsgfTsKKwkJQzE3MTBDRjcyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXIubW0gKi87IH07CiAJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2NSAvKiBE
aXNwbGF5TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87IH07CiAJCUMx
RTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMTIzQjkyMEExMTU3MjAwMjY0NkY0
IC8qIFBERkNvbnRleHRNZW51LmggKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYwMEVFM0Y0NyAv
KiBEcmFnQ29udHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVy
QWN0aW9uLmggKi87IH07CkBAIC01MDE4LDEzICs1MDIwLDE5IEBACiAJCUMxNDkzODAyMjIzNDFD
NjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMxNDkzODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8qIFdlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdG
RjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFu
YWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE1Q0JCMzMyM0YzNEMzODAw
MzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBy
ZWZlcmVuY2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBD
RjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
UENFdmVudEhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjUy
NEFBNjM0NTAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4
MTczNUUyMDU4MzlGNjAwREZEQTY1IC8qIERyYXdpbmdBcmVhTWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERyYXdpbmdBcmVhTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpc3BsYXlMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYyMjA1
ODQ0QTkwMERGREE2NSAvKiBEaXNwbGF5TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNw
bGF5TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTFEMjQyRjlG
NzYwMDdFOTg3NSAvKiBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRTI0MkY5Rjc3MDA3RTk4NzUgLyogV2ViU2xl
ZXBEaXNhYmxlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
bGVlcERpc2FibGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRTEy
M0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQREZDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcg
LyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzUyMzdGNUYxMjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8q
IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJ
bnB1dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzODQsNiArNjM5
Miw3IEBACiAJCQkJMkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbnRlbnRQ
cm92aWRlci5oICovLAogCQkJCTJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdD
b250ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovLAogCQkJCTJEQzZEOUMyMThDNDRBNjEwMDQzQkFE
NCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLywKKwkJCQlDMTcxMENG
MjI0QTdCRDAzMDBEN0MxMTIgLyogWFBDRXZlbnRIYW5kbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IENvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc4NDQsNiArNzg1Myw3
IEBACiAJCTUxMENDN0U3MTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNjI0QTU2OEY1MDAzRjZD
RDMgLyogY29jb2EgKi8sCiAJCQkJMjlBRDMwOTExNjRCNEMxMDAwNzJERUE5IC8qIEN1c3RvbVBy
b3RvY29scyAqLywKIAkJCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyogbWFjICovLAogCQkJ
CTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAqLywK
QEAgLTgzNzQsNiArODM4NCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDRDQ1NzBDQjI0NDBG
QjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJ
CUNENDU3MENBMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
ci5oICovLAorCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlTWFuYWdlci5oICovLAorCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKIAkJCQk0NDZEQzY0QjI0QTJEOEFEMDA2
MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAqLywKIAkJCQlDREEy
OUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oICovLAogCQkJ
CUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluICovLApAQCAtODQyNSw2ICs4NDM3LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJE
MEM1NkZCMjI5RjFERUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCAqLywK
IAkJCQkyRDBDNTZGQzIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5r
Lm1tICovLAorCQkJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICovLAogCQkJCTUzMTU4NzZCMjA3NkI3MTMw
MDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2EubW0gKi8sCiAJCQkJNTMyMTU5
NEYxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLmggKi8sCiAJCQkJNUNC
QzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovLApAQCAt
MTAyNTIsNiArMTAyNjYsMTQgQEAKIAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsK
IAkJfTsKKwkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29hICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZD
RDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBj
b2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUM1NDI1NkFFMThCRUMx
NjEwMERFNDE3OSAvKiBmb3JtcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0xMjcyNiw2ICsxMjc0OCw4IEBACiAJCQkJMjc0OUY2NDUyMTQ2NTYxRTAwODM4
MEJGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQ5MTM0NDEyMTJDRjlGMDAwMTI4QUZEIC8qIEpTTlBNZXRob2QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ5MTM0NDIyMTJDRjlGMDAwMTI4QUZEIC8qIEpTTlBPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzE3MTBDRjcyNEFBNjQzMjAwRDdD
MTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1N0MxNjRCOTE1
RjAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxQyAvKiBM
aWJXZWJSVENOZXR3b3JrTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYzODYxKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTAsNiArMjkwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rp
b24oSVAKIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihjb25u
ZWN0aW9uKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGhhbmRsZVhQQ01lc3NhZ2VzKCk7
CisjZW5kaWYKKwogICAgIC8vIFdlIGNhbGwgX2V4aXQoKSBkaXJlY3RseSBmcm9tIHRoZSBiYWNr
Z3JvdW5kIHF1ZXVlIGluIGNhc2UgdGhlIG1haW4gdGhyZWFkIGlzIHVucmVzcG9uc2l2ZQogICAg
IC8vIGFuZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRDbG9zZSgpIGRvZXMgbm90IGdldCBjYWxsZWQu
CiAgICAgY29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFj
ayhjYWxsRXhpdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxMCw2ICs1MTAsMTAgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgeyByZXR1cm4gbV9zZXNzaW9uSUQgPyBtX3Nlc3Np
b25JRC0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgOiB0cnVlOyB9CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICB2b2lkIGhhbmRsZVhQQ01lc3NhZ2VzKCkgY29uc3Q7CisjZW5kaWYKKwog
ICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAog
ICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9w
YWdlTWFwOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMiArNTYsMjEgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNp
bXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogeworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgYXV0byB1dGkgPSBhZG9w
dENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1F
VHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSk7CisgICAgQVNTRVJUKCFTdHJpbmcodXRpLmdl
dCgpKS5pc0VtcHR5KCkpOworI2VuZGlmCisKICAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0ID0g
cGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dDsKIAogICAgIGlmIChwYXJhbWV0ZXJzLm5l
SGVscGVyRXh0ZW5zaW9uSGFuZGxlKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICB2
b2lkIHNldE5ldHdvcmtQcm9jZXNzRW5kcG9pbnQoeHBjX2VuZHBvaW50X3QpOworCitwcml2YXRl
OgorICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3M7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlTWFuYWdlci5oIgorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2Vz
U1BJLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9zcGkv
ZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXImIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24o
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFu
YWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCh4cGNf
ZW5kcG9pbnRfdCBlbmRwb2ludCkKK3sKKyAgICBpZiAobV9jb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyA9IGFkb3B0T1NPYmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX2Zyb21fZW5kcG9pbnQoZW5k
cG9pbnQpKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5
X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0
cmluZyhtZXNzYWdlLmdldCgpLCAibWVzc2FnZS1uYW1lIiwgInJlcXVlc3QtZGF0YWJhc2UtdXBk
YXRlLW1lc3NhZ2UiKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MuZ2V0KCksIF4oeHBjX29iamVjdF90IG1lc3NhZ2Up
IHsKKyAgICAgICAgYXV0byBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
bWVzc2FnZSwgIm1lc3NhZ2UtbmFtZSIpOworICAgICAgICBpZiAoIW1lc3NhZ2VOYW1lKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIXN0cmNtcChtZXNzYWdlTmFtZSwgInVwZGF0
ZS1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKSkgeworICAgICAgICAgICAgYXV0byBkYXRhYmFz
ZSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShtZXNzYWdlLCAibGF1bmNoLXNlcnZpY2VzLWRh
dGFiYXNlIik7CisgICAgICAgICAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIkxT
RGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsKKyAgICAgICAgICAgIGlm
ICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvYnNlcnZlRGF0YWJhc2VD
aGFuZ2U0V2ViS2l0OildKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFtj
b250ZXh0IG9ic2VydmVEYXRhYmFzZUNoYW5nZTRXZWJLaXQ6ZGF0YWJhc2VdOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcy5nZXQoKSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NvY29hLmgiCiAKKyNp
bXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ0luaXRpYWxpemF0aW9uLmgiCiAj
aW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0xNjEsMjUgKzE2MiwyNiBAQCBzdGF0aWMgaWQgTlNBcHBs
aWNhdGlvbkFjY2Vzc2liaWxpdHlGb2N1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6OmhhbmRsZVhQQ01lc3NhZ2VzKCkgY29uc3QK
IHsKLSAgICAvLyBNYXAgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBiZSBk
b25lIGFzIGVhcmx5IGFzIHBvc3NpYmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAgICAv
LyBpZiAnY29tLmFwcGxlLmxzZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMu
Ci0gICAgaWYgKHBhcmFtZXRlcnMubWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAgYXV0
byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1ldGVy
cy5tYXBEQkV4dGVuc2lvbkhhbmRsZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5j
b25zdW1lKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8gUGVy
Zm9ybSBBUEkgY2FsbHMgd2hpY2ggd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZSBt
YXBwaW5nIHNlcnZpY2UsIGFuZCBtYXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0aSA9
IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFz
c01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKLQotICAgICAgICBbW29iamNfZ2V0
Q2xhc3MoIl9MU0RSZWFkU2VydmljZSIpIFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFsaWRh
dGVdOworICAgIGlmICghcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIG9rID0gZXh0ZW5zaW9uLT5yZXZva2UoKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChvaywgb2spOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgXih4cGNfb2JqZWN0X3QgZXZl
bnQpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcoZXZlbnQsICJtZXNzYWdlLW5hbWUiKTsKKyAgICAgICAgaWYgKCFtZXNzYWdlTmFtZSkKKyAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBBU1NFUlQoU3RyaW5nKHV0aS5nZXQoKSkgPT0g
U3RyaW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKS5nZXQoKSkpOwotICAgIH0K
KyAgICAgICAgaWYgKCFzdHJjbXAobWVzc2FnZU5hbWUsICJ4cGMtZW5kcG9pbnQtbWVzc2FnZSIp
KSB7CisgICAgICAgICAgICBhdXRvIGVuZHBvaW50ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVl
KGV2ZW50LCAieHBjLWVuZHBvaW50Iik7CisgICAgICAgICAgICBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludChlbmRwb2lu
dCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9KTsKK30KIAordm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vz
c2FyeShwYXJhbWV0ZXJzLndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6aW5p
dGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5nQ2hh
bm5lbHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403414</attachid>
            <date>2020-07-02 16:06:08 -0700</date>
            <delta_ts>2020-07-06 06:39:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200702160602.patch</filename>
            <type>text/plain</type>
            <size>48790</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24gYWNj
ZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIF94
cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2b2lk
KiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAogI2Rl
ZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2ICsx
MjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29sIHhw
Y19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9jYW5j
ZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19lbmRwb2ludF90
IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29ubmVjdGlvbl90
IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2ludF90KTsKIHhw
Y19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25zdCBj
aGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBwaWRfdCB4cGNf
Y29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNfY29ubmVjdGlv
bl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNi0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRh
dGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaDoKKwogMjAyMC0wNy0wMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBhcHBsaWNhdGlv
biBhY2NlbnQgY29sb3Igc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvTGF1bmNoU2VydmljZXNTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCShyZXZpc2lvbiAyNjM4NjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTQgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CiAKKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKwogI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxD
b3JlU2VydmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbXBvcnQgPENvcmVTZXJ2aWNlcy9MU0RhdGFiYXNlQ29udGV4dFByaXYuaD4KICNpbXBv
cnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9MU0FwcExpbmtQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzUHJpdi5o
PgpAQCAtODMsMTMgKzg2LDE2IEBAIGVudW0gTFNTZXNzaW9uSUQgewogfTsKICNlbmRpZgogCi0j
ZW5kaWYgLy8gIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0KLUBpbnRlcmZhY2UgX0xTRFNlcnZp
Y2UgOiBOU09iamVjdCA8TlNYUENMaXN0ZW5lckRlbGVnYXRlPgotKyAoTlNYUENDb25uZWN0aW9u
ICopWFBDQ29ubmVjdGlvblRvU2VydmljZTsKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQg
OiBOU09iamVjdAorQHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0
ICpzaGFyZWREYXRhYmFzZUNvbnRleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgX0xTRFJlYWRTZXJ2
aWNlIDogX0xTRFNlcnZpY2UKKyNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwor
QGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4dCAoV2ViS2l0Q2hhbmdlVHJhY2tpbmcpCistIChp
ZCA8TlNPYmplY3Q+KWFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Oih2b2lkICheKSh4
cGNfb2JqZWN0X3QgY2hhbmdlKSlvYnNlcnZlcjsKKy0gKHZvaWQpcmVtb3ZlRGF0YWJhc2VDaGFu
Z2VPYnNlcnZlcjRXZWJLaXQ6KGlkIDxOU09iamVjdD4pdG9rZW47CistICh2b2lkKW9ic2VydmVE
YXRhYmFzZUNoYW5nZTRXZWJLaXQ6KHhwY19vYmplY3RfdCljaGFuZ2U7CiBAZW5kCiAKICNpZiBQ
TEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NSBAQAorMjAyMC0wNy0w
MiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29h
XSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nl
c3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU9ic2VydmVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlcik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6
c2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyk6CisgICAgICAgIChXZWJLaXQ6Okxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6fkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlcik6CisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LnNiOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp4cGNFbmRwb2ludE1lc3NhZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9p
bnRUb1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRs
ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50
SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5o
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OkNsaWVudDo6eHBjRXZlbnRIYW5k
bGVyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVu
Y2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9j
ZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6eHBjRXZlbnRI
YW5kbGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBD
RXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6WFBDRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjp+WFBD
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNp
bmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
OjpzZXROZXR3b3JrUHJvY2Vzc0VuZHBvaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aGFuZGxl
WFBDTWVzc2FnZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMC0wNy0wMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6c2F2ZU1h
aW5UaHJlYWRFbnZpcm9ubWVudCgpIGlzIG5vdCBjYWxsZWQgZm9yIG1hY09TIENhdGFseXN0IGFw
cHMgb24gQXBwbGUgU2lsaWNvbgpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24g
MjYzODYxKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC00MTUsNiArNDE1LDggQEAgVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9y
UHJveAogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5t
bQogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JXS1dlYlZpZXcubW0KIAorVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCisKIFVJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tE
YXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGlt
ZUlucHV0Q29udHJvbC5tbQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2
ICs5Nyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlQ29kZXJzLmgiCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKKyNpbmNsdWRlICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjZW5kaWYKIApAQCAtMzg2LDYgKzM4Nywx
MCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvCiB7CiAgICAgQXV4
aWxpYXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiAKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnNpbmds
ZXRvbigpLnNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyNlbmRpZgorCiAg
ICAgLy8gV2UgZ2l2ZSBhIGNoYW5jZSBmb3IgZGlkQ2xvc2UoKSB0byBnZXQgY2FsbGVkIG9uIHRo
ZSBtYWluIHRocmVhZCBidXQgZm9yY2VmdWxseSBjYWxsIF9leGl0KCkgYWZ0ZXIgYSBkZWxheQog
ICAgIC8vIGluIGNhc2UgdGhlIG1haW4gdGhyZWFkIGlzIHVucmVzcG9uc2l2ZSBvciBkaWRDbG9z
ZSgpIHRha2VzIHRvbyBsb25nLgogICAgIGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0
aW9uV29ya1F1ZXVlQ2FsbGJhY2soY2FsbEV4aXRTb29uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIgeworICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI+OworcHVibGljOgorICAgIHN0YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24o
SVBDOjpDb25uZWN0aW9uKik7CisKK3ByaXZhdGU6CisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyKCk7CisgICAgfkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpOworCisg
ICAgdm9pZCBzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pik7CisK
KyAgICBSZXRhaW5QdHI8aWQ+IG1fb2JzZXJ2ZXI7CisgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5l
Y3Rpb25fdD4gbV9jb25uZWN0aW9uOworICAgIE9TT2JqZWN0UHRyPHhwY19lbmRwb2ludF90PiBt
X2VuZHBvaW50OworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRz
Lmg+CisjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXImIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyPiBvYnNlcnZlcjsKKyAgICByZXR1cm4g
b2JzZXJ2ZXI7Cit9CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU9ic2VydmVyKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24gPSBhZG9wdE9TT2Jq
ZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZShudWxscHRyLCBudWxscHRyKSk7CisgICAgbV9lbmRw
b2ludCA9IGFkb3B0T1NPYmplY3QoeHBjX2VuZHBvaW50X2NyZWF0ZShtX2Nvbm5lY3Rpb24uZ2V0
KCkpKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25uZWN0aW9u
LmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9z
ZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0KCksIF4oeHBjX29iamVjdF90IG1lc3Nh
Z2UpIHsKKyAgICAgICAgeHBjX3R5cGVfdCB0eXBlID0geHBjX2dldF90eXBlKG1lc3NhZ2UpOwor
ICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9DT05ORUNUSU9OKSB7CisgICAgICAgICAgICB4
cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSBtZXNzYWdlOworICAgICAgICAgICAgYXVkaXRf
dG9rZW5fdCBhdWRpdFRva2VuOworICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0
X3Rva2VuKGNvbm5lY3Rpb24sICZhdWRpdFRva2VuKTsKKyAgICAgICAgICAgIGlmIChXVEY6Omhh
c0VudGl0bGVtZW50KGF1ZGl0VG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQubGF1bmNo
LXNlcnZpY2VzLWRiLXNoYXJpbmciKSkgeworICAgICAgICAgICAgICAgIHhwY19jb25uZWN0aW9u
X3NldF90YXJnZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7
CisgICAgICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVj
dGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRP
YnNlcnZpbmcoY29ubmVjdGlvbik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbi5nZXQo
KSk7CisKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnNlbmRFbmRw
b2ludFRvQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgaWYg
KCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1lc3NhZ2UgPSBhZG9w
dE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Cisg
ICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgpLCAibWVzc2FnZS1uYW1l
IiwgInhwYy1lbmRwb2ludC1tZXNzYWdlIik7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVl
KG1lc3NhZ2UuZ2V0KCksICJ4cGMtZW5kcG9pbnQiLCBtX2VuZHBvaW50LmdldCgpKTsKKworICAg
IHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLT54cGNDb25uZWN0aW9uKCks
IG1lc3NhZ2UuZ2V0KCkpOworfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cjo6c3RhcnRPYnNlcnZpbmcoT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlv
bikKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNl
Q29udGV4dCIpIHNoYXJlZERhdGFiYXNlQ29udGV4dF07CisgICAgaWYgKCFbY29udGV4dCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0
OildKQorICAgICAgICByZXR1cm47CisKKyAgICBtX29ic2VydmVyID0gW2NvbnRleHQgYWRkRGF0
YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6Xih4cGNfb2JqZWN0X3QgY2hhbmdlKSB7CisgICAg
ICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51
bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyht
ZXNzYWdlLmdldCgpLCAibWVzc2FnZS1uYW1lIiwgInVwZGF0ZS1sYXVuY2gtc2VydmljZXMtZGF0
YWJhc2UiKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1lc3NhZ2UuZ2V0KCks
ICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiLCBjaGFuZ2UpOworCisgICAgICAgIHhwY19jb25u
ZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKKyAg
ICB9XTsKK30KKworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp+TGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyKCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBbTlNDbGFzc0Zyb21T
dHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIpIHNoYXJlZERhdGFiYXNlQ29udGV4dF07CisKKyAg
ICBpZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlRGF0YWJh
c2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pCisgICAgICAgIHJldHVybjsKKworICAgIFtjb250
ZXh0IHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Om1fb2JzZXJ2ZXIuZ2V0KCld
OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2Vi
Q29udGVudC5zYgkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9SZXNvdXJjZXMv
U2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJKHdvcmtp
bmcgY29weSkKQEAgLTU4OCw3ICs1ODgsNyBAQAogKGFsbG93IGlwYy1wb3NpeC1zaG0tcmVhZCoK
ICAgICAgICAoaXBjLXBvc2l4LW5hbWUtcHJlZml4ICJhcHBsZS5jZnByZWZzLiIpKQogIAotKGFs
bG93IG1hY2gtbG9va3VwCisoZGVueSBtYWNoLWxvb2t1cAogICAgIChnbG9iYWwtbmFtZSAiY29t
LmFwcGxlLmxzZC5tYXBkYiIpKQogCiA7OyA8cmRhcjovL3Byb2JsZW0vMTI0MTM5NDI+CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCShyZXZp
c2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVu
dHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDcgQEAgZnVuY3Rpb24gbWFjX3Byb2Nl
c3Nfd2ViY29udGVudF9lbnRpdGxlbQogCiAgICAgaWYgW1sgIiR7V0tfVVNFX1JFU1RSSUNURURf
RU5USVRMRU1FTlRTfSIgPT0gWUVTIF1dCiAgICAgdGhlbgorICAgICAgICBwbGlzdGJ1ZGR5IEFk
ZCA6Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LmxhdW5jaC1zZXJ2aWNlcy1kYi1zaGFyaW5nIGJv
b2wgWUVTCiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucm9vdGxlc3Muc3RvcmFn
ZS5XZWJLaXRXZWJDb250ZW50U2FuZGJveCBib29sIFlFUwogICAgIGZpCiAKQEAgLTQ5LDYgKzUw
LDcgQEAgZnVuY3Rpb24gbWFjX3Byb2Nlc3NfbmV0d29ya19lbnRpdGxlbWVudAogICAgICAgICB0
aGVuCiAgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUudGNjLm1h
bmFnZXIuY2hlY2stYnktYXVkaXQtdG9rZW4gYXJyYXkKICAgICAgICAgICAgIHBsaXN0YnVkZHkg
QWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1ieS1hdWRpdC10b2tlbjow
IHN0cmluZyBrVENDU2VydmljZVdlYktpdEludGVsbGlnZW50VHJhY2tpbmdQcmV2ZW50aW9uCisg
ICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LmxhdW5j
aC1zZXJ2aWNlcy1kYi1zaGFyaW5nIGJvb2wgWUVTCiAgICAgICAgIGZpCiAKICAgICAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5zdG9yYWdlLldlYktpdE5ldHdvcmtpbmdT
YW5kYm94IGJvb2wgWUVTCkBAIC0xNDQsNiArMTQ2LDcgQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9w
cm9jZXNzX3dlYmNvbnRlbnRfZQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS5zZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9y
LnByb3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5wcml2YXRlLndlYmtpdC5sYXVuY2gtc2VydmljZXMtZGItc2hhcmluZyBib29sIFlFUwogICAg
IHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucnVubmluZ2JvYXJkLmFzc2VydGlvbnMud2Via2l0
IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmR5bmFtaWMtY29kZXNpZ25pbmcgYm9vbCBZ
RVMKIApAQCAtMTg0LDYgKzE4Nyw3IEBAIGZ1bmN0aW9uIGlvc19mYW1pbHlfcHJvY2Vzc19uZXR3
b3JrX2VudGkKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuZG1kLnBvbGlj
eSBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5tZW1vcnlz
dGF0dXMgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUubmV0
d29yay5zb2NrZXQtZGVsZWdhdGUgYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFw
cGxlLnByaXZhdGUud2Via2l0LmxhdW5jaC1zZXJ2aWNlcy1kYi1zaGFyaW5nIGJvb2wgWUVTCiAg
ICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJr
aXQgYm9vbCBZRVMKIAogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2Mu
bWFuYWdlci5jaGVjay1ieS1hdWRpdC10b2tlbiBhcnJheQpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWlu
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkocmV2aXNpb24gMjYzODYxKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjM4NjEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1h
bmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhX
ZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHIpOwotICAgIE5l
dHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJv
Y2Vzcy5nZXQoKTsgfQorICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKQEAg
LTU0Miw2ICs1NDIsMTEgQEAgcHVibGljOgogICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VySWQ7IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgT1NP
YmplY3RQdHI8eHBjX29iamVjdF90PiB4cGNFbmRwb2ludE1lc3NhZ2UoKSBjb25zdDsKKyAgICB2
b2lkIHNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKE9TT2JqZWN0UHRy
PHhwY19vYmplY3RfdD4gZW5kcG9pbnRNZXNzYWdlKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgyNiw2ICs4MzEsMTAgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3Rf
dD4gbV9lbmRwb2ludE1lc3NhZ2U7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1Myw2ICs5NTMsMTIgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBlbmRwb2ludE1lc3NhZ2UgPSBwcm9jZXNzUG9vbCgp
LnhwY0VuZHBvaW50TWVzc2FnZSgpOworICAgIGlmIChlbmRwb2ludE1lc3NhZ2UpCisgICAgICAg
IHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24o
KSwgZW5kcG9pbnRNZXNzYWdlLmdldCgpKTsKKyNlbmRpZgorCiAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fd2ViQ29ubmVjdGlvbik7CiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI2Mzg2
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNCw0ICs5MzQsMjMgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJIaWdoRHluYW1pYwogfQogI2VuZGlmCiAKK09TT2JqZWN0UHRyPHhwY19vYmpl
Y3RfdD4gV2ViUHJvY2Vzc1Bvb2w6OnhwY0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fZW5kcG9pbnRNZXNzYWdlOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5k
TmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2VzcyhPU09iamVjdFB0cjx4cGNfb2Jq
ZWN0X3Q+IGVuZHBvaW50TWVzc2FnZSkKK3sKKyAgICBtX2VuZHBvaW50TWVzc2FnZSA9IGVuZHBv
aW50TWVzc2FnZTsKKworICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAg
ICAgICAgaWYgKHByb2Nlc3MtPmlzTGF1bmNoaW5nKCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKCFwcm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGND
b25uZWN0aW9uKCk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0
aW9uLCBlbmRwb2ludE1lc3NhZ2UuZ2V0KCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVu
dEhhbmRsZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9YUENFdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxYUENFdmVudEhhbmRsZXI+IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVYUENFdmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0ID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShy
ZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRl
IDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCkBAIC01Nyw2ICs2MSw5IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmly
dHVhbCBib29sIHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxY
UENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KKyNlbmRpZgogICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIzOCwxOCArMjM4LDMxIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICAgICAgcHJvY2Vzc0xhdW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9j
ZXNzKDAsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKICAgICB9OwogCi0gICAgYXV0
byBlcnJvckhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVy
SW1wbCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlcklt
cGwpLCBldmVudF0gewotICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7Ci0gICAg
ICAgIH0pOworICAgIGF1dG8gZXZlbnRIYW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZN
b3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudEhhbmRsZXIgPSBtX2NsaWVudC0+eHBjRXZlbnRI
YW5kbGVyKCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgeworICAgICAgICB4cGNfcmV0
YWluKGV2ZW50KTsKKworICAgICAgICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkg
PT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50XSB7
CisgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7CisgICAgICAgICAgICAg
ICAgeHBjX3JlbGVhc2UoZXZlbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXZlbnRIYW5kbGVyKSB7CisgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2V2ZW50SGFuZGxlciA9IGV2ZW50SGFuZGxlciwg
ZXZlbnRdIHsKKyAgICAgICAgICAgICAgICBldmVudEhhbmRsZXItPmhhbmRsZVhQQ0V2ZW50KGV2
ZW50KTsKKyAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShldmVudCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQogICAgIH07CiAKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFu
ZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGVycm9ySGFuZGxlcik7CisgICAgeHBjX2Nvbm5l
Y3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBldmVudEhhbmRs
ZXIpOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlvbi5nZXQoKSk7
CiAKICAgICBpZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1
bmNoRmFpbEZvclRlc3RpbmcpKSB7Ci0gICAgICAgIGVycm9ySGFuZGxlcihudWxscHRyKTsKKyAg
ICAgICAgZXZlbnRIYW5kbGVyKG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDEwIEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRIYW5kbGVy
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsK
IH0KQEAgLTI5Nyw2ICszMDEsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVy
OjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IG92
ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwog
CkBAIC0zMjcsNiArMzM0LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPj4gd2Vi
UHJvY2Vzc0Fzc2VydGlvbnM7CiAgICAgfTsKICAgICBPcHRpb25hbDxVcGxvYWRBY3Rpdml0eT4g
bV91cGxvYWRBY3Rpdml0eTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNsYXNzIFhQQ0V2
ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7CisgICAgcHVibGlj
OgorICAgICAgICBYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYpOwor
ICAgICAgICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKTsKKworICAgICAgICBib29sIGhhbmRs
ZVhQQ0V2ZW50KHhwY19vYmplY3RfdCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBXZWFrUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7Cisg
ICAgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHlDb2NvYS5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZXR3
b3JrUHJvY2Vzc1Byb3h5LmgiCisKKyNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojp4cGNFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyKCp0aGlzKSk7Cit9CisKK2Jvb2wg
TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCh4cGNf
b2JqZWN0X3QgZXZlbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVu
dCkgPT0gWFBDX1RZUEVfRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8g
bWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAibWVzc2FnZS1u
YW1lIik7CisgICAgaWYgKCFtZXNzYWdlTmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFzdHJjbXAobWVzc2FnZU5hbWUsICJ4cGMtZW5kcG9pbnQtbWVzc2FnZSIpKQorICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmROZXR3b3JrUHJvY2Vzc1hQ
Q0VuZHBvaW50VG9XZWJQcm9jZXNzKGV2ZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxlcihjb25z
dCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1By
b2Nlc3MobWFrZVdlYWtQdHIobmV0d29ya1Byb2Nlc3MpKQoreworfQorCitOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpYUENFdmVudEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIoKQoreworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2ODQsOCArMTY4NCwxMCBAQAogCQlDMTFB
OUVDQzIxNDAzNUY4MDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFBOUVDQjIxNDAzNUY4MDBD
RkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggKi87IH07CiAJCUMxMUUxNjk0MjEyQjg3
QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFFMTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlz
cGxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMxNDkzODA5MjIzNDcxMDQwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAyMjIz
NDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLzsgfTsKKwkJQzE0
RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0RDM3RkQy
NEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovOyB9
OwogCQlDMTVDQkIzNjIzRjM3NzcxMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MwRTIzRENB
NDI3MDAzQTVFRUIgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8q
IFByZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2
ZXIubW0gKi87IH07CisJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLm1tICovOyB9OwogCQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRBNjUgLyogRGlz
cGxheUxpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovOyB9OwogCQlDMUUx
MjNCQTIwQTExNTczMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAv
KiBQREZDb250ZXh0TWVudS5oICovOyB9OwogCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyog
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFj
dGlvbi5oICovOyB9OwpAQCAtNTAxOCwxMyArNTAyMCwxOSBAQAogCQlDMTQ5MzgwMjIyMzQxQzYw
MDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MTQ5MzgwMzIyMzQxREY3MDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkzODBBMjIzODUzQkUwMDBDRDcwNyAvKiBXZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNWb2lj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTREMzdGQzI0QUNERjQ1MDA3RkYw
MTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNUNCQjMzMjNGMzRDMzgwMDMw
MENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVm
ZXJlbmNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Yy
MjRBN0JEMDMwMEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBD
RXZlbnRIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRB
QTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3
MzVFMjA1ODM5RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
ODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXNwbGF5TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0
NEE5MDBERkRBNjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxh
eUxpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2
MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUUyNDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVw
RGlzYWJsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xl
ZXBEaXNhYmxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNC
OTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUERGQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8q
IERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBX
S0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5w
dXRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Mzg0LDYgKzYzOTIs
NyBAQAogCQkJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJv
dmlkZXIuaCAqLywKIAkJCQkyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29u
dGVudFByb3ZpZGVyUmVnaXN0cnkuaCAqLywKIAkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQg
LyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIy
NEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03ODQ0LDYgKzc4NTMsNyBA
QAogCQk1MTBDQzdFNzE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29yayAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0Qz
IC8qIGNvY29hICovLAogCQkJCTI5QUQzMDkxMTY0QjRDMTAwMDcyREVBOSAvKiBDdXN0b21Qcm90
b2NvbHMgKi8sCiAJCQkJNTE2MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywKIAkJCQk1
MTBDQzdFQTE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi8sCkBA
IC04Mzc0LDYgKzgzODQsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQ0Q0NTcwQ0IyNDQwRkIy
QTAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLywKIAkJCQlD
RDQ1NzBDQTI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3Iu
aCAqLywKKwkJCQlDMTREMzdGQzI0QUNERjQ1MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXIuaCAqLywKKwkJCQlDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNo
U2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gKi8sCiAJCQkJNDQ2REM2NEIyNEEyRDhBRDAwNjFG
MzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmggKi8sCiAJCQkJQ0RBMjlB
MTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlD
REEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdl
cy5pbiAqLywKQEAgLTg0MjUsNiArODQzNyw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDBD
NTZGQjIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmggKi8sCiAJ
CQkJMkQwQzU2RkMyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5t
bSAqLywKKwkJCQlDMTcxMENGNTI0QUE2MzQ1MDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLmggKi8sCisJCQkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLywKIAkJCQk1MzE1ODc2QjIwNzZCNzEzMDA0
QkY5RjMgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlckNvY29hLm1tICovLAogCQkJCTUzMjE1OTRG
MURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oICovLAogCQkJCTVDQkM5
QjhCMUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLywKQEAgLTEw
MjUyLDYgKzEwMjY2LDE0IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJ
CX07CisJCUMxRUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0Qz
IC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gY29j
b2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDNTQyNTZBRTE4QkVDMTYx
MDBERTQxNzkgLyogZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMTI3MjYsNiArMTI3NDgsOCBAQAogCQkJCTI3NDlGNjQ1MjE0NjU2MUUwMDgzODBC
RiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
OTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QTWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUMxNEQzN0ZFMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzEx
MiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTdDMTY0QjkxNUYw
MDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUMgLyogTGli
V2ViUlRDTmV0d29ya01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2Mzg2MSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkwLDYgKzI5MCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9u
KElQCiB7CiAgICAgQXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVj
dGlvbik7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBoYW5kbGVYUENNZXNzYWdlcygpOwor
I2VuZGlmCisKICAgICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dy
b3VuZCBxdWV1ZSBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAv
LyBhbmQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgog
ICAgIGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2so
Y2FsbEV4aXQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZp
c2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9u
SUQtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgdm9pZCBoYW5kbGVYUENNZXNzYWdlcygpIGNvbnN0OworI2VuZGlmCisKICAg
ICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFn
ZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTYsMTIgKzU2LDIxIEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1w
b3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGF1dG8gdXRpID0gYWRvcHRD
RihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5
cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIEFTU0VSVCghU3RyaW5nKHV0aS5nZXQo
KSkuaXNFbXB0eSgpKTsKKyNlbmRpZgorCiAgICAgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dCA9IHBh
cmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CiAKICAgICBpZiAocGFyYW1ldGVycy5uZUhl
bHBlckV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgdm9p
ZCBzZXROZXR3b3JrUHJvY2Vzc0VuZHBvaW50KHhwY19lbmRwb2ludF90KTsKKworcHJpdmF0ZToK
KyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXIuaCIKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQ
SS5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvY29jb2Ev
RW50aXRsZW1lbnRzLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyJiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0
dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXI6OnNldE5ldHdvcmtQcm9jZXNzRW5kcG9pbnQoeHBjX2VuZHBvaW50X3QgZW5kcG9pbnQpCit7
CisgICAgaWYgKG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgPSBhZG9wdE9TT2JqZWN0KHhwY19j
b25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KGVuZHBvaW50KSk7CisgICAgYXV0byBtZXNz
YWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0
ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgIm1l
c3NhZ2UtbmFtZSIsICJyZXF1ZXN0LWRhdGFiYXNlLXVwZGF0ZS1tZXNzYWdlIik7CisKKyAgICB4
cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzLmdldCgpLCBeKHhwY19vYmplY3RfdCBtZXNzYWdlKSB7CisgICAgICAgIGF1dG8gY29ubmVj
dGlvbiA9IHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihtZXNzYWdlKTsKKyAg
ICAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOworICAgICAgICB4cGNfY29ubmVjdGlvbl9n
ZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOworICAgICAgICBpZiAoIVdU
Rjo6aGFzRW50aXRsZW1lbnQoYXVkaXRUb2tlbiwgImNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC5s
YXVuY2gtc2VydmljZXMtZGItc2hhcmluZyIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBhdXRvIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCAi
bWVzc2FnZS1uYW1lIik7CisgICAgICAgIGlmICghbWVzc2FnZU5hbWUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmICghc3RyY21wKG1lc3NhZ2VOYW1lLCAidXBkYXRlLWxhdW5jaC1z
ZXJ2aWNlcy1kYXRhYmFzZSIpKSB7CisgICAgICAgICAgICBhdXRvIGRhdGFiYXNlID0geHBjX2Rp
Y3Rpb25hcnlfZ2V0X3ZhbHVlKG1lc3NhZ2UsICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiKTsK
KyAgICAgICAgICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNv
bnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgICAgICAgICAgaWYgKCFbY29udGV4
dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9ic2VydmVEYXRhYmFzZUNoYW5nZTRXZWJL
aXQ6KV0pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgW2NvbnRleHQgb2Jz
ZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDpkYXRhYmFzZV07CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LmdldCgpKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKK30KKworfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShy
ZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJX
ZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ29jb2EuaCIKIAorI2ltcG9ydCAiTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlci5oIgogI2ltcG9ydCAiTG9nSW5pdGlhbGl6YXRpb24uaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKQEAgLTE2MSwyNSArMTYyLDI2IEBAIHN0YXRpYyBpZCBOU0FwcGxpY2F0aW9uQWNj
ZXNzaWJpbGl0eUZvY3UKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3ZvaWQgV2ViUHJvY2Vzczo6aGFuZGxlWFBDTWVzc2FnZXMoKSBjb25zdAogewotICAgIC8v
IE1hcCBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UuIFRoaXMgc2hvdWxkIGJlIGRvbmUgYXMgZWFy
bHkgYXMgcG9zc2libGUsIGFzIHRoZSBtYXBwaW5nIHdpbGwgZmFpbAotICAgIC8vIGlmICdjb20u
YXBwbGUubHNkLm1hcGRiJyBpcyBiZWluZyBhY2Nlc3NlZCBiZWZvcmUgdGhpcy4KLSAgICBpZiAo
cGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRsZSkgewotICAgICAgICBhdXRvIGV4dGVuc2lv
biA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKCpwYXJhbWV0ZXJzLm1hcERCRXh0
ZW5zaW9uSGFuZGxlKSk7Ci0gICAgICAgIGJvb2wgb2sgPSBleHRlbnNpb24tPmNvbnN1bWUoKTsK
LSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAgICAgICAvLyBQZXJmb3JtIEFQSSBj
YWxscyB3aGljaCB3aWxsIGNvbW11bmljYXRlIHdpdGggdGhlIGRhdGFiYXNlIG1hcHBpbmcgc2Vy
dmljZSwgYW5kIG1hcCB0aGUgZGF0YWJhc2UuCi0gICAgICAgIGF1dG8gdXRpID0gYWRvcHRDRihV
VFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUs
IENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOwotCi0gICAgICAgIFtbb2JqY19nZXRDbGFzcygiX0xT
RFJlYWRTZXJ2aWNlIikgWFBDQ29ubmVjdGlvblRvU2VydmljZV0gaW52YWxpZGF0ZV07CisgICAg
aWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgb2sgPSBleHRlbnNpb24tPnJldm9rZSgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBv
ayk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIocGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAg
ICAgICBhdXRvIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwg
Im1lc3NhZ2UtbmFtZSIpOworICAgICAgICBpZiAoIW1lc3NhZ2VOYW1lKQorICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIEFTU0VSVChTdHJpbmcodXRpLmdldCgpKSA9PSBTdHJpbmcoYWRv
cHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlN
RVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpLmdldCgpKSk7Ci0gICAgfQorICAgICAgICBp
ZiAoIXN0cmNtcChtZXNzYWdlTmFtZSwgInhwYy1lbmRwb2ludC1tZXNzYWdlIikpIHsKKyAgICAg
ICAgICAgIGF1dG8gZW5kcG9pbnQgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUoZXZlbnQsICJ4
cGMtZW5kcG9pbnQiKTsKKyAgICAgICAgICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5zZXROZXR3b3JrUHJvY2Vzc0VuZHBvaW50KGVuZHBvaW50KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0pOworfQogCit2b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKK3sKICNpZiAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIFdlYkNvcmU6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFt
ZXRlcnMud2ViQ29yZUxvZ2dpbmdDaGFubmVscyk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9n
Q2hhbm5lbHNJZk5lY2Vzc2FyeShwYXJhbWV0ZXJzLndlYktpdExvZ2dpbmdDaGFubmVscyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403589</attachid>
            <date>2020-07-06 06:39:21 -0700</date>
            <delta_ts>2020-07-06 07:26:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200706063920.patch</filename>
            <type>text/plain</type>
            <size>63700</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24gYWNj
ZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIF94
cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2b2lk
KiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAogI2Rl
ZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2ICsx
MjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29sIHhw
Y19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9jYW5j
ZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19lbmRwb2ludF90
IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29ubmVjdGlvbl90
IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2ludF90KTsKIHhw
Y19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25zdCBj
aGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBwaWRfdCB4cGNf
Y29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNfY29ubmVjdGlv
bl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNi0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRh
dGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaDoKKwogMjAyMC0wNy0wMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBhcHBsaWNhdGlv
biBhY2NlbnQgY29sb3Igc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvTGF1bmNoU2VydmljZXNTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCShyZXZpc2lvbiAyNjM4NjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTQgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CiAKKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKwogI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxD
b3JlU2VydmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbXBvcnQgPENvcmVTZXJ2aWNlcy9MU0RhdGFiYXNlQ29udGV4dFByaXYuaD4KICNpbXBv
cnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9MU0FwcExpbmtQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzUHJpdi5o
PgpAQCAtODUsMTEgKzg4LDE0IEBAIGVudW0gTFNTZXNzaW9uSUQgewogCiAjZW5kaWYgLy8gIVVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAKLUBpbnRlcmZhY2UgX0xTRFNlcnZpY2UgOiBOU09iamVj
dCA8TlNYUENMaXN0ZW5lckRlbGVnYXRlPgotKyAoTlNYUENDb25uZWN0aW9uICopWFBDQ29ubmVj
dGlvblRvU2VydmljZTsKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgOiBOU09iamVjdAor
QHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0ICpzaGFyZWREYXRh
YmFzZUNvbnRleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgX0xTRFJlYWRTZXJ2aWNlIDogX0xTRFNl
cnZpY2UKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgKFdlYktpdENoYW5nZVRyYWNraW5n
KQorLSAoaWQgPE5TT2JqZWN0PilhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDoodm9p
ZCAoXikoeHBjX29iamVjdF90IGNoYW5nZSkpb2JzZXJ2ZXI7CistICh2b2lkKXJlbW92ZURhdGFi
YXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OihpZCA8TlNPYmplY3Q+KXRva2VuOworLSAodm9pZClv
YnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0Oih4cGNfb2JqZWN0X3QpY2hhbmdlOwogQGVuZAog
CiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIw
MjAtMDctMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gVXBkYXRlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIGZyb20gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVj
dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdl
YktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI6OnNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAo
V2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6eHBjRW5kcG9pbnRNZXNzYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmROZXR3b3JrUHJvY2Vzc1hQ
Q0VuZHBvaW50VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvWFBDRXZl
bnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVudEhhbmRsZXI6On5Y
UENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQ6OnhwY0V2
ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1
bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlD
b2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Onhw
Y0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxl
cjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpw
bGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNv
bm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlcjo6c2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmhhbmRsZVhQQ01lc3NhZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMjAtMDctMDIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6
OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKSBpcyBub3QgY2FsbGVkIGZvciBtYWNPUyBDYXRh
bHlzdCBhcHBzIG9uIEFwcGxlIFNpbGljb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSw4IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYklu
c3BlY3RvclByb3gKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yV0tXZWJWaWV3Lm1t
CiAKK1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQorCiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNiArOTcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUNvZGVycy5oIgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2VuZGlmCiAKQEAgLTM4Niw2
ICszODcsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpbwogewog
ICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
OjpzaW5nbGV0b24oKS5zZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24oY29ubmVjdGlvbik7CisjZW5k
aWYKKwogICAgIC8vIFdlIGdpdmUgYSBjaGFuY2UgZm9yIGRpZENsb3NlKCkgdG8gZ2V0IGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IGZvcmNlZnVsbHkgY2FsbCBfZXhpdCgpIGFmdGVyIGEg
ZGVsYXkKICAgICAvLyBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUgb3Ig
ZGlkQ2xvc2UoKSB0YWtlcyB0b28gbG9uZy4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0U29vbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiWFBDRW5kcG9pbnQuaCIK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgOiBwdWJsaWMgWFBDRW5kcG9p
bnQgeworICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI+OworcHVibGljOgorICAgIHN0YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXImIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlcigpOworICAgIHZpcnR1YWwgfkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigp
OworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
Pik7CisKKyAgICAvLyBYUENFbmRwb2ludAorICAgIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TWVz
c2FnZU5hbWVLZXkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiB4cGNFbmRwb2lu
dE1lc3NhZ2VOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9p
bnROYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfY29u
bmVjdGlvbl90LCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPGlkPiBt
X29ic2VydmVyOworICAgIFZlY3RvcjxPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pj4gbV9j
b25uZWN0aW9uczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCIKKworI2ltcG9ydCAiTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVu
Y2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorI2lt
cG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcj4gb2JzZXJ2ZXI7CisgICAgcmV0dXJuIG9ic2VydmVy
OworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5n
KEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgIGlmICgh
W2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNoYW5nZU9i
c2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vYnNlcnZlciA9IFtj
b250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNo
YW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9u
YXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5
LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBj
TGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKQorICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgIH1dOwor
fQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmco
T1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbikKK3sKKyAgICBtX2Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKKworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNz
RnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsK
KyAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJh
c2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRv
cHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwor
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPGlkPiBvYnNlcnZl
ciA9IFtjb250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVj
dF90IGNoYW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19k
aWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0
aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VO
YW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICB4cGNf
Y29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7
CisgICAgfV07CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdl
YktpdDpvYnNlcnZlci5nZXQoKV07Cit9CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cjo6fkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0
ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFz
ZUNvbnRleHRdOworCisgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OildKQorICAgICAgICByZXR1
cm47CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpt
X29ic2VydmVyLmdldCgpXTsKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4geHBjTWVzc2FnZU5hbWVLZXk7Cit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lOworfQorCitjb25zdCBjaGFyKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXk7Cit9CisKK3ZvaWQgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24sIHhwY19vYmplY3RfdCBldmVudCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9
PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICBpZiAoZXZlbnQgIT0gWFBDX0VSUk9SX0NPTk5F
Q1RJT05fSU5WQUxJRCAmJiBldmVudCAhPSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2Nvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9u
c1tpXS5nZXQoKSA9PSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9u
cy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50
KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAg
ICAgICAgaWYgKG1lc3NhZ2VOYW1lICE9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwor
ICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2Zp
bGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCSh3
b3JraW5nIGNvcHkpCkBAIC01ODgsNyArNTg4LDcgQEAKIChhbGxvdyBpcGMtcG9zaXgtc2htLXJl
YWQqCiAgICAgICAgKGlwYy1wb3NpeC1uYW1lLXByZWZpeCAiYXBwbGUuY2ZwcmVmcy4iKSkKICAK
LShhbGxvdyBtYWNoLWxvb2t1cAorKGRlbnkgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5sc2QubWFwZGIiKSkKIAogOzsgPHJkYXI6Ly9wcm9ibGVtLzEyNDEzOTQyPgpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRs
ZW1lbnRzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBAIGZ1bmN0aW9uIG1hY19w
cm9jZXNzX3dlYmNvbnRlbnRfZW50aXRsZW0KIAogICAgIGlmIFtbICIke1dLX1VTRV9SRVNUUklD
VEVEX0VOVElUTEVNRU5UU30iID09IFlFUyBdXQogICAgIHRoZW4KKyAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVT
CiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucm9vdGxlc3Muc3RvcmFnZS5XZWJL
aXRXZWJDb250ZW50U2FuZGJveCBib29sIFlFUwogICAgIGZpCiAKQEAgLTUxLDYgKzUyLDcgQEAg
ZnVuY3Rpb24gbWFjX3Byb2Nlc3NfbmV0d29ya19lbnRpdGxlbWVudAogICAgICAgICAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnRjYy5tYW5hZ2VyLmNoZWNrLWJ5LWF1ZGl0
LXRva2VuOjAgc3RyaW5nIGtUQ0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRUcmFja2luZ1ByZXZl
bnRpb24KICAgICAgICAgZmkKIAorICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5zdG9yYWdlLldlYktpdE5ldHdvcmtpbmdTYW5kYm94
IGJvb2wgWUVTCiAgICAgZmkKIH0KQEAgLTE0NCw2ICsxNDYsNyBAQCBmdW5jdGlvbiBpb3NfZmFt
aWx5X3Byb2Nlc3Nfd2ViY29udGVudF9lCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlv
biBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNw
ZWN0b3IucHJveHktYXBwbGljYXRpb24gYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJ1bm5pbmdib2FyZC5hc3NlcnRpb25zLndlYmtpdCBib29s
IFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpkeW5hbWljLWNvZGVzaWduaW5nIGJvb2wgWUVTCiAK
QEAgLTE4NCw2ICsxODcsNyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3NfbmV0d29ya19l
bnRpCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLmRtZC5wb2xpY3kgYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUubWVtb3J5c3RhdHVz
IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLm5ldHdvcmsu
c29ja2V0LWRlbGVnYXRlIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKIAog
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1i
eS1hdWRpdC10b2tlbiBhcnJheQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMgeworCitjb25zdGV4cHIgYXV0
byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRlLWxh
dW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0
ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5h
bWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiOwor
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtl
eSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0ZXhwciBh
dXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lID0gInhw
Yy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Cit9IC8vIG5hbWVz
cGFjZSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRW5kcG9pbnQgeworcHVibGljOgor
ICAgIFhQQ0VuZHBvaW50KCk7CisgICAgdmlydHVhbCB+WFBDRW5kcG9pbnQoKTsKKworICAgIHZv
aWQgc2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHhwY01lc3NhZ2VOYW1lS2V5ID0gIm1lc3NhZ2UtbmFtZSI7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1l
S2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNz
YWdlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50
TmFtZUtleSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoeHBjX2Nv
bm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSA9IDA7CisKKyAgICBPU09iamVjdFB0cjx4cGNfY29u
bmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisgICAgT1NPYmplY3RQdHI8eHBjX2VuZHBvaW50X3Q+
IG1fZW5kcG9pbnQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9YUENFbmRwb2ludC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgorCisjaW1w
b3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitY
UENFbmRwb2ludDo6WFBDRW5kcG9pbnQoKQoreworICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NP
YmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlKG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBtX2Vu
ZHBvaW50ID0gYWRvcHRPU09iamVjdCh4cGNfZW5kcG9pbnRfY3JlYXRlKG1fY29ubmVjdGlvbi5n
ZXQoKSkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rp
b24uZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgIHhwY19jb25uZWN0aW9u
X3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVz
c2FnZSkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7
CisKKyAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfQ09OTkVDVElPTikgeworICAgICAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0gbWVzc2FnZTsKKyAgICAgICAgICAgIGF1
ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9h
dWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisKKyAgICAgICAgICAgIGlmIChX
VEY6Omhhc0VudGl0bGVtZW50KGF1ZGl0VG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQu
dXNlLXhwYy1lbmRwb2ludCIpKSB7CisgICAgICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0
X3RhcmdldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAg
ICAgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihjb25uZWN0aW9u
LCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVFdmVu
dChjb25uZWN0aW9uLCBldmVudCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbi5nZXQo
KSk7Cit9CisKK3ZvaWQgWFBDRW5kcG9pbnQ6OnNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9u
YXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3N0cmluZyhtZXNzYWdlLmdldCgpLCB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCksIHhwY0Vu
ZHBvaW50TWVzc2FnZU5hbWUoKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1lc3Nh
Z2UuZ2V0KCksIHhwY0VuZHBvaW50TmFtZUtleSgpLCBtX2VuZHBvaW50LmdldCgpKTsKKworICAg
IHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLT54cGNDb25uZWN0aW9uKCks
IG1lc3NhZ2UuZ2V0KCkpOworfQorCitYUENFbmRwb2ludDo6flhQQ0VuZHBvaW50KCkKK3sKK30K
KworfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNl
TWFpbi5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVG
b3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg+CisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvT1NP
YmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkv
ZGFyd2luL1hQQ1NQSS5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgog
CiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURh
dGFTdG9yZSA9IG51bGxwdHIpOwotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9j
ZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQorICAgIE5ldHdvcmtQcm9j
ZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vz
cy5nZXQoKTsgfQogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNz
UHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nl
c3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKQEAgLTU0Miw2ICs1NDIsMTEgQEAgcHVibGljOgogICAg
IGludDMyX3QgdXNlcklkKCkgY29uc3QgeyByZXR1cm4gbV91c2VySWQ7IH0KICNlbmRpZgogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiB4cGNFbmRw
b2ludE1lc3NhZ2UoKSBjb25zdDsKKyAgICB2b2lkIHNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBv
aW50VG9XZWJQcm9jZXNzKE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gZW5kcG9pbnRNZXNzYWdl
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAK
QEAgLTgyNiw2ICs4MzEsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gbV9lbmRwb2ludE1lc3NhZ2U7CisjZW5kaWYK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1Myw2
ICs5NTMsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBlbmRw
b2ludE1lc3NhZ2UgPSBwcm9jZXNzUG9vbCgpLnhwY0VuZHBvaW50TWVzc2FnZSgpOworICAgIGlm
IChlbmRwb2ludE1lc3NhZ2UpCisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShj
b25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgZW5kcG9pbnRNZXNzYWdlLmdldCgpKTsKKyNl
bmRpZgorCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fd2ViQ29ubmVjdGlvbik7CiAgICAgbV93ZWJD
b25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKHRoaXMpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNCw0ICs5
MzQsMjMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdoRHluYW1pYwogfQogI2Vu
ZGlmCiAKK09TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gV2ViUHJvY2Vzc1Bvb2w6OnhwY0VuZHBv
aW50TWVzc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZW5kcG9pbnRNZXNzYWdlOworfQor
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2Vi
UHJvY2VzcyhPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGVuZHBvaW50TWVzc2FnZSkKK3sKKyAg
ICBtX2VuZHBvaW50TWVzc2FnZSA9IGVuZHBvaW50TWVzc2FnZTsKKworICAgIGZvciAoYXV0byBw
cm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MtPmlzTGF1bmNoaW5n
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFwcm9jZXNzLT5jb25uZWN0
aW9uKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0g
cHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCk7CisgICAgICAgIHhwY19jb25u
ZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBlbmRwb2ludE1lc3NhZ2UuZ2V0KCkpOwor
ICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxYUENF
dmVudEhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKSB7
IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0
ID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1By
b2Nlc3NMYXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRlIDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCkBAIC01Nyw2ICs2MSw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENvbmZpZ3VyZUpTQ0Zv
clRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxl
cigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgogICAgIH07CiAgICAgCiAgICAg
ZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
YXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlz
aW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxOCArMjM4LDI4IEBAIHZv
aWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgcHJvY2Vzc0xhdW5j
aGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzKDAsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllcigpKTsKICAgICB9OwogCi0gICAgYXV0byBlcnJvckhhbmRsZXIgPSBbZXJyb3JIYW5kbGVy
SW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11
dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlcklt
cGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudF0gewotICAgICAgICAgICAgZXJy
b3JIYW5kbGVySW1wbChldmVudCk7Ci0gICAgICAgIH0pOworICAgIGF1dG8gZXZlbnRIYW5kbGVy
ID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudEhh
bmRsZXIgPSBtX2NsaWVudC0+eHBjRXZlbnRIYW5kbGVyKCldICh4cGNfb2JqZWN0X3QgZXZlbnQp
IG11dGFibGUgeworCisgICAgICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9
PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnQgPSBP
U09iamVjdFB0cihldmVudCldIHsKKyAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2
ZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGV2ZW50SGFuZGxlcikgeworICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXIsIGV2ZW50ID0gT1NP
YmplY3RQdHIoZXZlbnQpXSB7CisgICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVyLT5oYW5kbGVY
UENFdmVudChldmVudC5nZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH07
CiAKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24u
Z2V0KCksIGVycm9ySGFuZGxlcik7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRs
ZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBldmVudEhhbmRsZXIpOwogCiAgICAgeHBjX2Nvbm5l
Y3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoVU5MSUtFTFko
bV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcpKSB7
Ci0gICAgICAgIGVycm9ySGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyKG51
bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNp
b24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAi
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRIYW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTI5Nyw2ICszMDEsOSBA
QCBwcml2YXRlOgogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRp
ZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIpIG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlZlB0cjxYUENFdmVu
dEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAKICAg
ICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCwgUmVm
PEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwogCkBAIC0zMjcsNiArMzM0LDE5IEBA
IHByaXZhdGU6CiAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPj4gd2ViUHJvY2Vzc0Fzc2VydGlvbnM7CiAg
ICAgfTsKICAgICBPcHRpb25hbDxVcGxvYWRBY3Rpdml0eT4gbV91cGxvYWRBY3Rpdml0eTsKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBX
ZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBYUENFdmVudEhh
bmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYpOworICAgICAgICB2aXJ0dWFsIH5YUENF
dmVudEhhbmRsZXIoKTsKKworICAgICAgICBib29sIGhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3Rf
dCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBwcml2YXRlOgorICAgICAgICBXZWFrUHRyPE5ldHdv
cmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgfTsKKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisK
KyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCIKKyNpbXBvcnQg
IldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4gTmV0d29ya1Byb2Nlc3NQcm94eTo6
eHBjRXZlbnRIYW5kbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdv
cmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcigqdGhpcykpOworfQorCitib29sIE5ldHdv
cmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQoeHBjX29iamVj
dF90IGV2ZW50KSBjb25zdAoreworICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09
IFhQQ19UWVBFX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgbWVz
c2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCBYUENFbmRwb2ludDo6
eHBjTWVzc2FnZU5hbWVLZXkpOworICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9p
bnRNZXNzYWdlTmFtZSkKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5z
ZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2VzcyhldmVudCk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpY
UENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3Mp
CisgICAgOiBtX25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNzKSkKK3sK
K30KKworTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRIYW5k
bGVyKCkKK3sKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg0LDgg
KzE2ODQsMTMgQEAKIAkJQzExQTlFQ0MyMTQwMzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQ
VUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzExQTlFQ0IyMTQwMzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oICovOyB9
OwogCQlDMTFFMTY5NDIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExRTE2OTIyMTJCODdDNTAw
OTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDMTQ5MzgwOTIyMzQ3MTA0MDAwQ0Q3MDcgLyogV2ViU3BlZWNo
U3ludGhlc2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xp
ZW50LmggKi87IH07CisJCUMxNEQzN0ZFMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5tbSAqLzsgfTsKIAkJQzE1Q0JCMzYyM0YzNzc3MTAwMzAwQ0M3IC8qIFByZWZl
cmVuY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE0NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNUNCQjM3
MjNGMzdFQ0IwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcg
LyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICovOyB9OworCQlDMTY2M0U1QjI0QUVBQTJGMDBDNkEz
QjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2NjNFNUEyNEFFQTc0MjAwQzZBM0Iy
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCAqLzsgfTsKKwkJQzE2NjNF
NUQyNEFGOTkzMDAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY2M0U1QzI0QUY5NjVEMDBDNkEzQjIgLyogWFBD
RW5kcG9pbnQuaCAqLzsgfTsKKwkJQzE2NjNFNUYyNEFGOUMxQzAwQzZBM0IyIC8qIFhQQ0VuZHBv
aW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2
NjNFNUUyNEFGOUMxQzAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50Lm1tICovOyB9OworCQlDMTcxMENG
NzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE3MTBDRjYyNEFB
NjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLzsgfTsK
IAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRB
NjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsKIAkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8q
IFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsg
fTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEy
REY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKQEAgLTUwMTgs
MTMgKzUwMjMsMjIgQEAKIAkJQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5
bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENENzA3
IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
cGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzN0ZEMjRBQ0UwODYwMDdG
RjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2Vy
dmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlZmVyZW5jZU9ic2VydmVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyogTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMxNjYzRTVDMjRBRjk2NUQwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYUENFbmRwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1
RTI0QUY5QzFDMDBDNkEzQjIgLyogWFBDRW5kcG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBYUENFbmRwb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjIy
NEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENF
dmVudEhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjUyNEFB
NjM0NTAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4MTcz
NUUyMDU4MzlGNjAwREZEQTY1IC8qIERyYXdpbmdBcmVhTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERyYXdpbmdBcmVhTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4
MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERp
c3BsYXlMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYyMjA1ODQ0
QTkwMERGREE2NSAvKiBEaXNwbGF5TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTFEMjQyRjlGNzYw
MDdFOTg3NSAvKiBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRTI0MkY5Rjc3MDA3RTk4NzUgLyogV2ViU2xlZXBE
aXNhYmxlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTbGVl
cERpc2FibGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRTEyM0I5
MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQREZDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyog
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUy
MzdGNUYxMjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdL
RGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1
dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzODQsNiArNjM5OCw3
IEBACiAJCQkJMkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92
aWRlci5oICovLAogCQkJCTJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250
ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovLAogCQkJCTJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAv
KiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLywKKwkJCQlDMTcxMENGMjI0
QTdCRDAzMDBEN0MxMTIgLyogWFBDRXZlbnRIYW5kbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IENvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc0ODEsNiArNzQ5Niw3IEBA
CiAJCQkJQzU1RjkxNkQxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0g
Ki8sCiAJCQkJQ0U1NTBFMTMyMjgzNzQ0NDAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmNw
cCAqLywKIAkJCQlDRTU1MEUxMjIyODM3M0M4MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMu
aCAqLywKKwkJCQlDMTY2M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZVhQQ0NvbnN0YW50cy5oICovLAogCQkJCTJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBM
b2FkUGFyYW1ldGVyc0NvY29hLm1tICovLAogCQkJCUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAv
KiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLywKIAkJCQlDRDI4NjVFRDIyNTU1NjIwMDA2
MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovLApAQCAtNzUxNCw2ICs3NTMw
LDggQEAKIAkJCQkzN0JGMkYwNTE5NDdERUI0MDA3MjNDNDggLyogV0tOU1VSTFJlcXVlc3QubW0g
Ki8sCiAJCQkJMzc4RTFBM0YxODFFREEwMTAwMzEwMDdBIC8qIFdLT2JqZWN0LmggKi8sCiAJCQkJ
Mzc0NDM2ODcxODIwRTcyNDAwNDk1NzlGIC8qIFdLT2JqZWN0Lm1tICovLAorCQkJCUMxNjYzRTVD
MjRBRjk2NUQwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5oICovLAorCQkJCUMxNjYzRTVFMjRBRjlD
MUMwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gY29jb2E7
CiAJCQlwYXRoID0gQ29jb2E7CkBAIC03ODQ0LDYgKzc4NjIsNyBAQAogCQk1MTBDQzdFNzE2MTM4
RTcyMDBEMDNFRDMgLyogTmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29hICovLAogCQkJ
CTI5QUQzMDkxMTY0QjRDMTAwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbHMgKi8sCiAJCQkJNTE2
MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywKIAkJCQk1MTBDQzdFQTE2MTM4RTcyMDBE
MDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi8sCkBAIC04Mzc0LDYgKzgzOTMsOCBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQ0Q0NTcwQ0IyNDQwRkIyQTAwQTNEQ0VCIC8qIEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLywKIAkJCQlDRDQ1NzBDQTI0NDBGQjJBMDBB
M0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaCAqLywKKwkJCQlDMTREMzdG
QzI0QUNERjQ1MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCAqLywK
KwkJCQlDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXIubW0gKi8sCiAJCQkJNDQ2REM2NEIyNEEyRDhBRDAwNjFGMzkwIC8qIFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyLmggKi8sCiAJCQkJQ0RBMjlBMTkxQ0JEQkY0MTAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlDREEyOUExQzFDQkRCRjVCMDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTg0MjUs
NiArODQ0Niw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDBDNTZGQjIyOUYxREVBMDBCRDMz
RTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmggKi8sCiAJCQkJMkQwQzU2RkMyMjlGMURF
QTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5tbSAqLywKKwkJCQlDMTcxMENG
NTI0QUE2MzQ1MDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmggKi8s
CisJCQkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlci5tbSAqLywKIAkJCQk1MzE1ODc2QjIwNzZCNzEzMDA0QkY5RjMgLyogTmV0d29ya0Fj
dGl2aXR5VHJhY2tlckNvY29hLm1tICovLAogCQkJCTUzMjE1OTRGMURCQUU2RDcwMDU0QUEzQyAv
KiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oICovLAogCQkJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRD
RiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLywKQEAgLTEwMjUyLDYgKzEwMjc1LDE0IEBA
CiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUMxRUQ3MjM2MjRB
NTY4RjUwMDNGNkNEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNz
UHJveHlDb2NvYS5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gY29jb2E7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogCQlDNTQyNTZBRTE4QkVDMTYxMDBERTQxNzkgLyogZm9ybXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTA4NTgsNiAr
MTA4ODksNyBAQAogCQkJCTJENEQyQzgxMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDlBNDkxMUZGQThDRTAw
NDhCNDY0IC8qIEpTTlBNZXRob2QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTQ5ODc4MTFGRjdG
QUEwMDQ4QjQ2NCAvKiBKU05QT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTY2M0U1QjI0
QUVBQTJGMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFMDkzNzgxNEZCMTI4QzAwMTEzOEQ5IC8qIExheWVySG9zdGlu
Z0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTJEQzExMTJGOEJBNDYwMDE3QUY2NSAv
KiBMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEU5MzZGRDI0NDdDMkQ4
MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTgzOSw2ICsxMTg3MSw3IEBACiAJCQkJMUFENjBGNjAxOEUyMEY3NDAwMjBDMDM0IC8qIFdLV2lu
ZG93RmVhdHVyZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkE1MDgwQkYxRjBFREFB
QTAwRTYxN0M1IC8qIFdLV2luZG93RmVhdHVyZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTdDMERGNzFCN0QxRjEwMDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJlc1JlZi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQzE2NjNFNUQyNEFGOTkzMDAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFQ0RFODE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2Vydmlj
ZUVudHJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTI3MjYsNiArMTI3NTksOCBAQAogCQkJCTI3NDlG
NjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJEOTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QTWV0aG9kLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMxNEQzN0ZFMjRBQ0UwODYwMDdGRjAxNCAvKiBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMxNzEw
Q0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI5ODRGNTdDMTY0QjkxNUYwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQz
MTg1MDBGMzI4MUMgLyogTGliV2ViUlRDTmV0d29ya01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTEzMDg2LDYgKzEzMTIxLDcgQEAKIAkJCQkxREIwMTk0NDIxMUNGMDA1MDA5
RkIzRTggLyogV0tTaGFyZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3OEZGMzMyMjQx
OTE5QjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJQzE2NjNFNUYyNEFGOUMxQzAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogewogICAgIEF1eGlsaWFyeVByb2Nlc3M6Omlu
aXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcygpOworI2VuZGlmCisKICAgICAvLyBXZSBjYWxs
IF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dyb3VuZCBxdWV1ZSBpbiBjYXNlIHRoZSBt
YWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAvLyBhbmQgQXV4aWxpYXJ5UHJvY2Vzczo6
ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgogICAgIGNvbm5lY3Rpb24tPnNldERpZENs
b3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soY2FsbEV4aXQpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiAr
NTEwLDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBoYW5kbGVY
UENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFJlZlB0cjxXZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAogICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VD
b2NvYS5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgi
CisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgogI2ltcG9ydCAiTG9h
ZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBsdWdpblZpZXcuaCIKICNpbXBvcnQgIldLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgiCkBAIC01NiwxMiArNTcsMjIgQEAKICNpbXBvcnQg
PFdlYkNvcmUvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaD4KICNlbmRpZgogCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVD
b3JlU2VydmljZXMuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0
ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS53YWl0Rm9yRGF0YWJhc2VVcGRhdGUoMTAw
MF9zKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGF1dG8gdXRpID0gYWRvcHRDRihVVFR5cGVD
cmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RS
KCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIEFTU0VSVCghU3RyaW5nKHV0aS5nZXQoKSkuaXNFbXB0
eSgpKTsKKyNlbmRpZgorCiAgICAgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dCA9IHBhcmFtZXRlcnMu
ZGF0YURldGVjdGlvbkNvbnRleHQ7CiAKICAgICBpZiAocGFyYW1ldGVycy5uZUhlbHBlckV4dGVu
c2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW1wb3J0IDx3dGYv
c3BpL2Rhcndpbi9YUENTUEkuaD4KKyNpbXBvcnQgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9y
ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFu
YWdlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHNldE5ldHdvcmtQcm9jZXNzRW5kcG9pbnQo
eHBjX2VuZHBvaW50X3QpOworCisgICAgYm9vbCB3YWl0Rm9yRGF0YWJhc2VVcGRhdGUoU2Vjb25k
cyk7CisKK3ByaXZhdGU6CisgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBib29sIG1faGFzUmVjZWl2ZWRMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlIHsgZmFsc2UgfTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7
CisgICAgTG9jayBtX2xvY2s7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9M
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTGF1bmNo
U2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCIKKworI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRh
YmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCAiWFBDRW5kcG9pbnQuaCIKKyNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRp
dGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXImIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4g
bWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6
c2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCh4cGNfZW5kcG9pbnRfdCBlbmRwb2ludCkKK3sKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKG1fY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MgPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBv
aW50KGVuZHBvaW50KSk7CisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGlj
dGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5
LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lKTsKKworICAgIHhwY19jb25uZWN0aW9uX3Nl
dF90YXJnZXRfcXVldWUobV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy5nZXQoKSwgZGlzcGF0
Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSk7
CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcy5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVzc2FnZSkgeworICAgICAgICB4cGNf
dHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7CisgICAgICAgIGlmICh0eXBlID09
IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgICAgICBpZiAobWVzc2FnZSA9PSBYUENfRVJST1Jf
Q09OTkVDVElPTl9JTlZBTElEIHx8IG1lc3NhZ2UgPT0gWFBDX0VSUk9SX1RFUk1JTkFUSU9OX0lN
TUlORU5UKSB7CisgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
dHlwZSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGF1dG8gY29ubmVjdGlvbiA9IHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlv
bihtZXNzYWdlKTsKKyAgICAgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW47CisgICAgICAgIHhwY19jb25uZWN0
aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisgICAgICAgIGlm
ICghV1RGOjpoYXNFbnRpdGxlbWVudChhdWRpdFRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2Vi
a2l0LnVzZS14cGMtZW5kcG9pbnQiKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgU3Ry
aW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENF
bmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOworICAgICAgICBpZiAobWVzc2FnZU5hbWUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobWVzc2FnZU5hbWUgPT0g
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAgICAgICAgICBhdXRvIGRhdGFiYXNlID0geHBj
X2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG1lc3NhZ2UsIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUEND
b25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXkpOworICAgICAgICAgICAgaWYg
KGRhdGFiYXNlKSB7CisgICAgICAgICAgICAgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9t
U3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAg
ICAgICAgICAgICAgIGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihv
YnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0OildKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgW2NvbnRleHQgb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktp
dDpkYXRhYmFzZV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3NlbWFwaG9yZS5zaWdu
YWwoKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvY2spOworICAgICAgICAgICAgICAgIG1faGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisgICAgeHBj
X2Nvbm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MuZ2V0KCkpOwor
CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MuZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworfQorCitib29sIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyOjp3YWl0Rm9yRGF0YWJhc2VVcGRhdGUoU2Vjb25kcyB0aW1lb3V0KQorewor
ICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKG1f
aGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBtX3NlbWFwaG9yZS53YWl0Rm9yKHRpbWVvdXQpOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDgg
QEAKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDb2NvYS5oIgog
CisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorI2ltcG9ydCAiTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dJbml0aWFsaXphdGlvbi5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgpAQCAtNDgsNiArNTAsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCIKICNpbXBvcnQg
IldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQ29uZmlnRmlsZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvT3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5o
PgpAQCAtMTYxLDI1ICsxNjQsMzIgQEAgc3RhdGljIGlkIE5TQXBwbGljYXRpb25BY2Nlc3NpYmls
aXR5Rm9jdQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9p
ZCBXZWJQcm9jZXNzOjpoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3QKIHsKLSAgICAv
LyBNYXAgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBiZSBkb25lIGFzIGVh
cmx5IGFzIHBvc3NpYmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAgICAvLyBpZiAnY29t
LmFwcGxlLmxzZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMuCi0gICAgaWYg
KHBhcmFtZXRlcnMubWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAgYXV0byBleHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1ldGVycy5tYXBEQkV4
dGVuc2lvbkhhbmRsZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5jb25zdW1lKCk7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8gUGVyZm9ybSBBUEkg
Y2FsbHMgd2hpY2ggd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZSBtYXBwaW5nIHNl
cnZpY2UsIGFuZCBtYXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0aSA9IGFkb3B0Q0Yo
VVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBl
LCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKKyAgICBpZiAoIXBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCkpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBbW29iamNfZ2V0Q2xhc3MoIl9MU0RS
ZWFkU2VydmljZSIpIFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFsaWRhdGVdOworICAgIGF1
dG8gY29ubmVjdGlvbiA9IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24o
KTsKIAotICAgICAgICBvayA9IGV4dGVuc2lvbi0+cmV2b2tlKCk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQob2ssIG9rKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKGNvbm5l
Y3Rpb24sIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlf
REVGQVVMVCwgMCkpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5l
Y3Rpb24sIF4oeHBjX29iamVjdF90IGV2ZW50KSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUo
ZXZlbnQpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgQVNTRVJUKFN0cmluZyh1dGkuZ2V0KCkpID09IFN0cmluZyhhZG9wdENGKFVUVHlwZUNy
ZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIo
InRleHQvaHRtbCIpLCAwKSkuZ2V0KCkpKTsKLSAgICB9CisgICAgICAgIFN0cmluZyBtZXNzYWdl
TmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNN
ZXNzYWdlTmFtZUtleSk7CisgICAgICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRw
b2ludE1lc3NhZ2VOYW1lKSB7CisgICAgICAgICAgICBhdXRvIGVuZHBvaW50ID0geHBjX2RpY3Rp
b25hcnlfZ2V0X3ZhbHVlKGV2ZW50LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRz
Ojp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5KTsKKyAgICAgICAg
ICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXROZXR3b3Jr
UHJvY2Vzc0VuZHBvaW50KGVuZHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0pOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKICNpZiAh
TE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFdlYkNvcmU6OmluaXRp
YWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViQ29yZUxvZ2dpbmdDaGFu
bmVscyk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShwYXJh
bWV0ZXJzLndlYktpdExvZ2dpbmdDaGFubmVscyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403592</attachid>
            <date>2020-07-06 07:25:37 -0700</date>
            <delta_ts>2020-07-06 07:35:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200706072536.patch</filename>
            <type>text/plain</type>
            <size>64714</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24gYWNj
ZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIF94
cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2b2lk
KiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAogI2Rl
ZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2ICsx
MjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29sIHhw
Y19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9jYW5j
ZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19lbmRwb2ludF90
IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29ubmVjdGlvbl90
IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2ludF90KTsKIHhw
Y19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25zdCBj
aGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBwaWRfdCB4cGNf
Y29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNfY29ubmVjdGlv
bl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNi0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRh
dGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaDoKKwogMjAyMC0wNy0wMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBhcHBsaWNhdGlv
biBhY2NlbnQgY29sb3Igc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvTGF1bmNoU2VydmljZXNTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCShyZXZpc2lvbiAyNjM4NjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTQgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CiAKKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKwogI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxD
b3JlU2VydmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbXBvcnQgPENvcmVTZXJ2aWNlcy9MU0RhdGFiYXNlQ29udGV4dFByaXYuaD4KICNpbXBv
cnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9MU0FwcExpbmtQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzUHJpdi5o
PgpAQCAtODUsMTEgKzg4LDE0IEBAIGVudW0gTFNTZXNzaW9uSUQgewogCiAjZW5kaWYgLy8gIVVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAKLUBpbnRlcmZhY2UgX0xTRFNlcnZpY2UgOiBOU09iamVj
dCA8TlNYUENMaXN0ZW5lckRlbGVnYXRlPgotKyAoTlNYUENDb25uZWN0aW9uICopWFBDQ29ubmVj
dGlvblRvU2VydmljZTsKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgOiBOU09iamVjdAor
QHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0ICpzaGFyZWREYXRh
YmFzZUNvbnRleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgX0xTRFJlYWRTZXJ2aWNlIDogX0xTRFNl
cnZpY2UKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgKFdlYktpdENoYW5nZVRyYWNraW5n
KQorLSAoaWQgPE5TT2JqZWN0PilhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDoodm9p
ZCAoXikoeHBjX29iamVjdF90IGNoYW5nZSkpb2JzZXJ2ZXI7CistICh2b2lkKXJlbW92ZURhdGFi
YXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OihpZCA8TlNPYmplY3Q+KXRva2VuOworLSAodm9pZClv
YnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0Oih4cGNfb2JqZWN0X3QpY2hhbmdlOwogQGVuZAog
CiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIw
MjAtMDctMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gVXBkYXRlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIGZyb20gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVj
dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdl
YktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI6OnNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAo
V2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6eHBjRW5kcG9pbnRNZXNzYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmROZXR3b3JrUHJvY2Vzc1hQ
Q0VuZHBvaW50VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvWFBDRXZl
bnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVudEhhbmRsZXI6On5Y
UENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQ6OnhwY0V2
ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1
bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlD
b2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Onhw
Y0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxl
cjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpw
bGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNv
bm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlcjo6c2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmhhbmRsZVhQQ01lc3NhZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMjAtMDctMDIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6
OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKSBpcyBub3QgY2FsbGVkIGZvciBtYWNPUyBDYXRh
bHlzdCBhcHBzIG9uIEFwcGxlIFNpbGljb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSw4IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYklu
c3BlY3RvclByb3gKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yV0tXZWJWaWV3Lm1t
CiAKK1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQorCiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNiArOTcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUNvZGVycy5oIgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2VuZGlmCiAKQEAgLTM4Niw2
ICszODcsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpbwogewog
ICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
OjpzaW5nbGV0b24oKS5zZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24oY29ubmVjdGlvbik7CisjZW5k
aWYKKwogICAgIC8vIFdlIGdpdmUgYSBjaGFuY2UgZm9yIGRpZENsb3NlKCkgdG8gZ2V0IGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IGZvcmNlZnVsbHkgY2FsbCBfZXhpdCgpIGFmdGVyIGEg
ZGVsYXkKICAgICAvLyBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUgb3Ig
ZGlkQ2xvc2UoKSB0YWtlcyB0b28gbG9uZy4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0U29vbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiWFBDRW5kcG9pbnQuaCIK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgOiBwdWJsaWMgWFBDRW5kcG9p
bnQgeworICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI+OworcHVibGljOgorICAgIHN0YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXImIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlcigpOworICAgIHZpcnR1YWwgfkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigp
OworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
Pik7CisKKyAgICAvLyBYUENFbmRwb2ludAorICAgIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TWVz
c2FnZU5hbWVLZXkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiB4cGNFbmRwb2lu
dE1lc3NhZ2VOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9p
bnROYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfY29u
bmVjdGlvbl90LCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPGlkPiBt
X29ic2VydmVyOworICAgIFZlY3RvcjxPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pj4gbV9j
b25uZWN0aW9uczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCIKKworI2ltcG9ydCAiTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVu
Y2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorI2lt
cG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcj4gb2JzZXJ2ZXI7CisgICAgcmV0dXJuIG9ic2VydmVy
OworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5n
KEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgIGlmICgh
W2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNoYW5nZU9i
c2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vYnNlcnZlciA9IFtj
b250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNo
YW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9u
YXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5
LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBj
TGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKQorICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgIH1dOwor
fQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmco
T1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbikKK3sKKyAgICBtX2Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKKworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNz
RnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsK
KyAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJh
c2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRv
cHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwor
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPGlkPiBvYnNlcnZl
ciA9IFtjb250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVj
dF90IGNoYW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19k
aWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0
aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VO
YW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICB4cGNf
Y29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7
CisgICAgfV07CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdl
YktpdDpvYnNlcnZlci5nZXQoKV07Cit9CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cjo6fkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0
ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFz
ZUNvbnRleHRdOworCisgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OildKQorICAgICAgICByZXR1
cm47CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpt
X29ic2VydmVyLmdldCgpXTsKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4geHBjTWVzc2FnZU5hbWVLZXk7Cit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lOworfQorCitjb25zdCBjaGFyKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXk7Cit9CisKK3ZvaWQgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24sIHhwY19vYmplY3RfdCBldmVudCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9
PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICBpZiAoZXZlbnQgIT0gWFBDX0VSUk9SX0NPTk5F
Q1RJT05fSU5WQUxJRCAmJiBldmVudCAhPSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2Nvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9u
c1tpXS5nZXQoKSA9PSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9u
cy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50
KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAg
ICAgICAgaWYgKG1lc3NhZ2VOYW1lICE9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwor
ICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2Zp
bGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCSh3
b3JraW5nIGNvcHkpCkBAIC01ODgsNyArNTg4LDcgQEAKIChhbGxvdyBpcGMtcG9zaXgtc2htLXJl
YWQqCiAgICAgICAgKGlwYy1wb3NpeC1uYW1lLXByZWZpeCAiYXBwbGUuY2ZwcmVmcy4iKSkKICAK
LShhbGxvdyBtYWNoLWxvb2t1cAorKGRlbnkgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5sc2QubWFwZGIiKSkKIAogOzsgPHJkYXI6Ly9wcm9ibGVtLzEyNDEzOTQyPgpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRs
ZW1lbnRzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBAIGZ1bmN0aW9uIG1hY19w
cm9jZXNzX3dlYmNvbnRlbnRfZW50aXRsZW0KIAogICAgIGlmIFtbICIke1dLX1VTRV9SRVNUUklD
VEVEX0VOVElUTEVNRU5UU30iID09IFlFUyBdXQogICAgIHRoZW4KKyAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVT
CiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucm9vdGxlc3Muc3RvcmFnZS5XZWJL
aXRXZWJDb250ZW50U2FuZGJveCBib29sIFlFUwogICAgIGZpCiAKQEAgLTUxLDYgKzUyLDcgQEAg
ZnVuY3Rpb24gbWFjX3Byb2Nlc3NfbmV0d29ya19lbnRpdGxlbWVudAogICAgICAgICAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnRjYy5tYW5hZ2VyLmNoZWNrLWJ5LWF1ZGl0
LXRva2VuOjAgc3RyaW5nIGtUQ0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRUcmFja2luZ1ByZXZl
bnRpb24KICAgICAgICAgZmkKIAorICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5zdG9yYWdlLldlYktpdE5ldHdvcmtpbmdTYW5kYm94
IGJvb2wgWUVTCiAgICAgZmkKIH0KQEAgLTE0NCw2ICsxNDYsNyBAQCBmdW5jdGlvbiBpb3NfZmFt
aWx5X3Byb2Nlc3Nfd2ViY29udGVudF9lCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlv
biBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNw
ZWN0b3IucHJveHktYXBwbGljYXRpb24gYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJ1bm5pbmdib2FyZC5hc3NlcnRpb25zLndlYmtpdCBib29s
IFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpkeW5hbWljLWNvZGVzaWduaW5nIGJvb2wgWUVTCiAK
QEAgLTE4NCw2ICsxODcsNyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3NfbmV0d29ya19l
bnRpCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLmRtZC5wb2xpY3kgYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUubWVtb3J5c3RhdHVz
IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLm5ldHdvcmsu
c29ja2V0LWRlbGVnYXRlIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKIAog
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1i
eS1hdWRpdC10b2tlbiBhcnJheQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMgeworCitjb25zdGV4cHIgYXV0
byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRlLWxh
dW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0
ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5h
bWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiOwor
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtl
eSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0ZXhwciBh
dXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lID0gInhw
Yy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Cit9IC8vIG5hbWVz
cGFjZSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRW5kcG9pbnQgeworcHVibGljOgor
ICAgIFhQQ0VuZHBvaW50KCk7CisgICAgdmlydHVhbCB+WFBDRW5kcG9pbnQoKTsKKworICAgIHZv
aWQgc2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHhwY01lc3NhZ2VOYW1lS2V5ID0gIm1lc3NhZ2UtbmFtZSI7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1l
S2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNz
YWdlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50
TmFtZUtleSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoeHBjX2Nv
bm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSA9IDA7CisKKyAgICBPU09iamVjdFB0cjx4cGNfY29u
bmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisgICAgT1NPYmplY3RQdHI8eHBjX2VuZHBvaW50X3Q+
IG1fZW5kcG9pbnQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9YUENFbmRwb2ludC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgorCisjaW1w
b3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitY
UENFbmRwb2ludDo6WFBDRW5kcG9pbnQoKQoreworICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NP
YmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlKG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBtX2Vu
ZHBvaW50ID0gYWRvcHRPU09iamVjdCh4cGNfZW5kcG9pbnRfY3JlYXRlKG1fY29ubmVjdGlvbi5n
ZXQoKSkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rp
b24uZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgIHhwY19jb25uZWN0aW9u
X3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVz
c2FnZSkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7
CisKKyAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfQ09OTkVDVElPTikgeworICAgICAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0gbWVzc2FnZTsKKyAgICAgICAgICAgIGF1
ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9h
dWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisKKyAgICAgICAgICAgIGlmIChX
VEY6Omhhc0VudGl0bGVtZW50KGF1ZGl0VG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQu
dXNlLXhwYy1lbmRwb2ludCIpKSB7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJEb2Vz
IG5vdCBoYXZlIHJlcXVpcmVkIGVudGl0bGVtZW50Iik7CisgICAgICAgICAgICAgICAgLy8gcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3Rhcmdl
dF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICAgICAg
ICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24sIF4oeHBjX29i
amVjdF90IGV2ZW50KSB7CisgICAgICAgICAgICAgICAgaGFuZGxlRXZlbnQoY29ubmVjdGlvbiwg
ZXZlbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9yZXN1
bWUobWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1
bWUobV9jb25uZWN0aW9uLmdldCgpKTsKK30KKwordm9pZCBYUENFbmRwb2ludDo6c2VuZEVuZHBv
aW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICBpZiAo
IWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0
T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAg
ICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIHhwY0VuZHBvaW50TWVz
c2FnZU5hbWVLZXkoKSwgeHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpKTsKKyAgICB4cGNfZGljdGlv
bmFyeV9zZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgeHBjRW5kcG9pbnROYW1lS2V5KCksIG1fZW5k
cG9pbnQuZ2V0KCkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rp
b24tPnhwY0Nvbm5lY3Rpb24oKSwgbWVzc2FnZS5nZXQoKSk7Cit9CisKK1hQQ0VuZHBvaW50Ojp+
WFBDRW5kcG9pbnQoKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZV
dGlsaXRpZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEku
aD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw3
ICszODgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAog
ICAgIE5ldHdvcmtQcm9jZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRh
U3RvcmUqIHdpdGhXZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cik7Ci0gICAgTmV0d29ya1Byb2Nl
c3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgp
OyB9CisgICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSBjb25zdCB7IHJl
dHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0Ny
YXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwpAQCAtNTQyLDYgKzU0
MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50MzJfdCB1c2VySWQoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXJJZDsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPU09iamVjdFB0cjx4
cGNfb2JqZWN0X3Q+IHhwY0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0OworICAgIHZvaWQgc2VuZE5l
dHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoT1NPYmplY3RQdHI8eHBjX29iamVj
dF90PiBlbmRwb2ludE1lc3NhZ2UpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKIApAQCAtODI2LDYgKzgzMSwxMCBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICNlbmRpZgorCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBtX2VuZHBv
aW50TWVzc2FnZTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYz
ODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTUzLDYgKzk1MywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBhdXRvIGVuZHBvaW50TWVzc2FnZSA9IHByb2Nlc3NQb29sKCkueHBjRW5kcG9p
bnRNZXNzYWdlKCk7CisgICAgaWYgKGVuZHBvaW50TWVzc2FnZSkKKyAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCBlbmRwb2lu
dE1lc3NhZ2UuZ2V0KCkpOworI2VuZGlmCisKICAgICBSRUxFQVNFX0FTU0VSVCghbV93ZWJDb25u
ZWN0aW9uKTsKICAgICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGUodGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTM0LDQgKzkzNCwyMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3Rl
ckhpZ2hEeW5hbWljCiB9CiAjZW5kaWYKIAorT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBXZWJQ
cm9jZXNzUG9vbDo6eHBjRW5kcG9pbnRNZXNzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9l
bmRwb2ludE1lc3NhZ2U7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmROZXR3b3JrUHJv
Y2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gZW5k
cG9pbnRNZXNzYWdlKQoreworICAgIG1fZW5kcG9pbnRNZXNzYWdlID0gZW5kcG9pbnRNZXNzYWdl
OworCisgICAgZm9yIChhdXRvIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAo
cHJvY2Vzcy0+aXNMYXVuY2hpbmcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoIXByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24o
KTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24sIGVuZHBv
aW50TWVzc2FnZS5nZXQoKSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50
SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRXZlbnRIYW5kbGVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFhQQ0V2ZW50SGFuZGxlcj4geworcHVibGljOgorICAgIHZpcnR1YWwg
flhQQ0V2ZW50SGFuZGxlcigpIHsgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZVhQQ0V2ZW50
KHhwY19vYmplY3RfdCkgY29uc3QgPSAwOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlzaW9uIDI2
Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi93aW4v
V2luMzJIYW5kbGUuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAi
WFBDRXZlbnRIYW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKQEAgLTU3LDYgKzYxLDkgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlcios
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIHZpcnR1YWwgUmVmUHRyPFhQQ0V2ZW50SGFu
ZGxlcj4geHBjRXZlbnRIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlm
CiAgICAgfTsKICAgICAKICAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NM
YXVuY2hlck1hYy5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjM4LDE4ICsyMzgsMjggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQog
ICAgICAgICBwcm9jZXNzTGF1bmNoZXItPmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MoMCwgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKCkpOwogICAgIH07CiAKLSAgICBhdXRvIGVycm9ySGFu
ZGxlciA9IFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKV0gKHhw
Y19vYmplY3RfdCBldmVudCkgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50
XSB7Ci0gICAgICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50KTsKLSAgICAgICAgfSk7Cisg
ICAgYXV0byBldmVudEhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JI
YW5kbGVySW1wbCksIGV2ZW50SGFuZGxlciA9IG1fY2xpZW50LT54cGNFdmVudEhhbmRsZXIoKV0g
KHhwY19vYmplY3RfdCBldmVudCkgbXV0YWJsZSB7CisKKyAgICAgICAgaWYgKCFldmVudCB8fCB4
cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFu
ZGxlckltcGwpLCBldmVudCA9IE9TT2JqZWN0UHRyKGV2ZW50KV0geworICAgICAgICAgICAgICAg
IGVycm9ySGFuZGxlckltcGwoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXZlbnRIYW5kbGVyKSB7Cisg
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2V2ZW50SGFuZGxlciA9IGV2ZW50
SGFuZGxlciwgZXZlbnQgPSBPU09iamVjdFB0cihldmVudCldIHsKKyAgICAgICAgICAgICAgICBl
dmVudEhhbmRsZXItPmhhbmRsZVhQQ0V2ZW50KGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CiAgICAgfTsKIAotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5k
bGVyKG1feHBjQ29ubmVjdGlvbi5nZXQoKSwgZXJyb3JIYW5kbGVyKTsKKyAgICB4cGNfY29ubmVj
dGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGV2ZW50SGFuZGxl
cik7CiAKICAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV94cGNDb25uZWN0aW9uLmdldCgpKTsK
IAogICAgIGlmIChVTkxJS0VMWShtX2xhdW5jaE9wdGlvbnMuc2hvdWxkTWFrZVByb2Nlc3NMYXVu
Y2hGYWlsRm9yVGVzdGluZykpIHsKLSAgICAgICAgZXJyb3JIYW5kbGVyKG51bGxwdHIpOworICAg
ICAgICBldmVudEhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsMTAgQEAKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJYUENFdmVudEhhbmRsZXIu
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwog
fQpAQCAtMjk3LDYgKzMwMSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6
OkNsaWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBjRXZlbnRIYW5kbGVyKCkgY29uc3Qgb3Zl
cnJpZGU7CisjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFBBTDo6U2Vzc2lvbklELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAK
QEAgLTMyNyw2ICszMzQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NBc3NlcnRpb24+PiB3ZWJQ
cm9jZXNzQXNzZXJ0aW9uczsKICAgICB9OwogICAgIE9wdGlvbmFsPFVwbG9hZEFjdGl2aXR5PiBt
X3VwbG9hZEFjdGl2aXR5OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2xhc3MgWFBDRXZl
bnRIYW5kbGVyIDogcHVibGljIFdlYktpdDo6WFBDRXZlbnRIYW5kbGVyIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7Cisg
ICAgICAgIHZpcnR1YWwgflhQQ0V2ZW50SGFuZGxlcigpOworCisgICAgICAgIGJvb2wgaGFuZGxl
WFBDRXZlbnQoeHBjX29iamVjdF90KSBjb25zdCBvdmVycmlkZTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIFdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsKKyAg
ICB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eUNvY29hLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5ldHdv
cmtQcm9jZXNzUHJveHkuaCIKKworI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50cy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbXBvcnQgIlhQQ0VuZHBv
aW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyKCp0aGlz
KSk7Cit9CisKK2Jvb2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5k
bGVYUENFdmVudCh4cGNfb2JqZWN0X3QgZXZlbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX25ldHdv
cmtQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWV2ZW50IHx8IHhw
Y19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
ZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKG1lc3NhZ2VO
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1lc3NhZ2VO
YW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lKQorICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9j
ZXNzKGV2ZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobWFrZVdlYWtQdHIo
bmV0d29ya1Byb2Nlc3MpKQoreworfQorCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhh
bmRsZXI6On5YUENFdmVudEhhbmRsZXIoKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2Mzg2MSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE2ODQsOSArMTY4NCwxNSBAQAogCQlDMTFBOUVDQzIxNDAzNUY4MDBDRkIy
MEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFBOUVDQjIxNDAzNUY4MDBDRkIyMEEgLyogV2ViU3dpdGNo
aW5nR1BVQ2xpZW50LmggKi87IH07CiAJCUMxMUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAvKiBXS01v
Y2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMTFFMTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNDkzODA5MjIzNDcxMDQw
MDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAyMjIzNDFDNjAwMDBDRDcwNyAvKiBX
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLzsgfTsKKwkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZG
MDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8q
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovOyB9OwogCQlDMTVDQkIzNjIzRjM3
NzcxMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyogUHJl
ZmVyZW5jZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNUNC
QjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi87IH07CisJCUMx
NjYzRTVCMjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3Rh
bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY2
M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
cy5oICovOyB9OworCQlDMTY2M0U1RDI0QUY5OTMwMDBDNkEzQjIgLyogWFBDRW5kcG9pbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjYzRTVDMjRB
Rjk2NUQwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5oICovOyB9OworCQlDMTY2M0U1RjI0QUY5QzFD
MDBDNkEzQjIgLyogWFBDRW5kcG9pbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMTY2M0U1RTI0QUY5QzFDMDBDNkEzQjIgLyogWFBDRW5kcG9pbnQu
bW0gKi87IH07CisJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLm1tICovOyB9OwogCQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxh
eUxpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMx
ODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovOyB9OworCQlDMTk3Rjk2
NDI0QjM2MjQ0MDBDQTc2MzkgLyogWFBDRW5kcG9pbnRDbGllbnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTk3Rjk2MzI0QjM2MjQ0MDBDQTc2Mzkg
LyogWFBDRW5kcG9pbnRDbGllbnQubW0gKi87IH07CiAJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZG
NCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzFFMTIzQjkyMEExMTU3MjAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51Lmgg
Ki87IH07CiAJCUM1MTczODgxMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUxNzM4
ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi87IH07CiAJCUM1
NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyNTZBRjE4QkVDMThC
MDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oICovOyB9OwpAQCAtNTAxOCwxMyAr
NTAyNCwyNCBAQAogCQlDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhl
c2lzQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwMzIyMzQxREY3MDAwQ0Q3MDcgLyog
V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkz
ODBBMjIzODUzQkUwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMTREMzdGQzI0QUNERjQ1MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNlT2JzZXJ2ZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNjYzRTVBMjRBRUE3NDIwMEM2QTNCMiAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VYUENDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzE2NjNFNUMyNEFGOTY1RDAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFhQQ0VuZHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNjYzRTVFMjRB
RjlDMUMwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFhQ
Q0VuZHBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTcxMENGMjI0QTdC
RDAzMDBEN0MxMTIgLyogWFBDRXZlbnRIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ0V2ZW50
SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTcxMENGNTI0QUE2MzQ1
MDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM1RTIw
NTgzOUY2MDBERkRBNjUgLyogRHJhd2luZ0FyZWFNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RHJhd2luZ0FyZWFNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2
MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxh
eUxpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4MTczNjIyMDU4NDRBOTAw
REZEQTY1IC8qIERpc3BsYXlMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaW5r
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUQyNDJGOUY3NjAwN0U5
ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMxOEZCNTFFMjQyRjlGNzcwMDdFOTg3NSAvKiBXZWJTbGVlcERpc2Fi
bGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNsZWVwRGlz
YWJsZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE5N0Y5NjIyNEIz
NjE5ODAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ0Vu
ZHBvaW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxOTdGOTYzMjRC
MzYyNDQwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFhQQ0VuZHBvaW50Q2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUERGQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJv
eHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUz
RjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3
OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVU
aW1lSW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Mzg0LDYg
KzY0MDEsNyBAQAogCQkJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250
ZW50UHJvdmlkZXIuaCAqLywKIAkJCQkyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCAqLywKIAkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0
M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi8sCisJCQkJQzE3
MTBDRjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03NDgxLDYgKzc0
OTksNyBAQAogCQkJCUM1NUY5MTZEMUM1OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVz
dWx0Lm1tICovLAogCQkJCUNFNTUwRTEzMjI4Mzc0NDQwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0
aW9ucy5jcHAgKi8sCiAJCQkJQ0U1NTBFMTIyMjgzNzNDODAwRDI4NzkxIC8qIEluc2VydFRleHRP
cHRpb25zLmggKi8sCisJCQkJQzE2NjNFNUEyNEFFQTc0MjAwQzZBM0IyIC8qIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCAqLywKIAkJCQkyRDEwODc2MjFEMkM2NDFCMDBCODVG
ODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSAqLywKIAkJCQlDRDI4NjVFQzIyNTU1NjIwMDA2
MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8sCiAJCQkJQ0QyODY1RUQyMjU1
NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSAqLywKQEAgLTc1MTQs
NiArNzUzMywxMCBAQAogCQkJCTM3QkYyRjA1MTk0N0RFQjQwMDcyM0M0OCAvKiBXS05TVVJMUmVx
dWVzdC5tbSAqLywKIAkJCQkzNzhFMUEzRjE4MUVEQTAxMDAzMTAwN0EgLyogV0tPYmplY3QuaCAq
LywKIAkJCQkzNzQ0MzY4NzE4MjBFNzI0MDA0OTU3OUYgLyogV0tPYmplY3QubW0gKi8sCisJCQkJ
QzE2NjNFNUMyNEFGOTY1RDAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50LmggKi8sCisJCQkJQzE2NjNF
NUUyNEFGOUMxQzAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50Lm1tICovLAorCQkJCUMxOTdGOTYyMjRC
MzYxOTgwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVudC5oICovLAorCQkJCUMxOTdGOTYzMjRC
MzYyNDQwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVudC5tbSAqLywKIAkJCSk7CiAJCQluYW1l
ID0gY29jb2E7CiAJCQlwYXRoID0gQ29jb2E7CkBAIC03ODQ0LDYgKzc4NjcsNyBAQAogCQk1MTBD
QzdFNzE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29h
ICovLAogCQkJCTI5QUQzMDkxMTY0QjRDMTAwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbHMgKi8s
CiAJCQkJNTE2MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywKIAkJCQk1MTBDQzdFQTE2
MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi8sCkBAIC04Mzc0LDYg
KzgzOTgsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQ0Q0NTcwQ0IyNDQwRkIyQTAwQTNEQ0VC
IC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLywKIAkJCQlDRDQ1NzBDQTI0
NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaCAqLywKKwkJ
CQlDMTREMzdGQzI0QUNERjQ1MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIuaCAqLywKKwkJCQlDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXIubW0gKi8sCiAJCQkJNDQ2REM2NEIyNEEyRDhBRDAwNjFGMzkwIC8qIFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmggKi8sCiAJCQkJQ0RBMjlBMTkxQ0JEQkY0
MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlDREEyOUExQzFD
QkRCRjVCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywK
QEAgLTg0MjUsNiArODQ1MSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDBDNTZGQjIyOUYx
REVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmggKi8sCiAJCQkJMkQwQzU2
RkMyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5tbSAqLywKKwkJ
CQlDMTcxMENGNTI0QUE2MzQ1MDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyLmggKi8sCisJCQkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5tbSAqLywKIAkJCQk1MzE1ODc2QjIwNzZCNzEzMDA0QkY5RjMgLyog
TmV0d29ya0FjdGl2aXR5VHJhY2tlckNvY29hLm1tICovLAogCQkJCTUzMjE1OTRGMURCQUU2RDcw
MDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oICovLAogCQkJCTVDQkM5QjhCMUM2NTI1
NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLywKQEAgLTEwMjUyLDYgKzEw
MjgwLDE0IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUMx
RUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdv
cmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gY29jb2E7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDNTQyNTZBRTE4QkVDMTYxMDBERTQxNzkg
LyogZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MTA4NTgsNiArMTA4OTQsNyBAQAogCQkJCTJENEQyQzgxMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDlBNDkx
MUZGQThDRTAwNDhCNDY0IC8qIEpTTlBNZXRob2QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTQ5
ODc4MTFGRjdGQUEwMDQ4QjQ2NCAvKiBKU05QT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlD
MTY2M0U1QjI0QUVBQTJGMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0
YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMDkzNzgxNEZCMTI4QzAwMTEzOEQ5IC8qIExh
eWVySG9zdGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTJEQzExMTJGOEJBNDYw
MDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEU5MzZG
RDI0NDdDMkQ4MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTgzOSw2ICsxMTg3Niw3IEBACiAJCQkJMUFENjBGNjAxOEUyMEY3NDAwMjBDMDM0
IC8qIFdLV2luZG93RmVhdHVyZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkE1MDgw
QkYxRjBFREFBQTAwRTYxN0M1IC8qIFdLV2luZG93RmVhdHVyZXNQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTdDMERGNzFCN0QxRjEwMDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJlc1Jl
Zi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzE2NjNFNUQyNEFGOTkzMDAwQzZBM0IyIC8qIFhQQ0Vu
ZHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFQ0RFODE2QjY0MTY4MDAwNDdBMUEgLyog
WFBDU2VydmljZUVudHJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTI3MjYsNiArMTI3NjQsOCBAQAog
CQkJCTI3NDlGNjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05Q
TWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEyOEFGRCAv
KiBKU05QT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMxNEQzN0ZFMjRBQ0UwODYwMDdG
RjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyog
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTI5ODRGNTdDMTY0QjkxNUYwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYw
NjBFMTE2NTQzMTg1MDBGMzI4MUMgLyogTGliV2ViUlRDTmV0d29ya01lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTEzMDg2LDYgKzEzMTI2LDggQEAKIAkJCQkxREIwMTk0NDIx
MUNGMDA1MDA5RkIzRTggLyogV0tTaGFyZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3
OEZGMzMyMjQxOTE5QjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVy
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzE2NjNFNUYyNEFGOUMxQzAwQzZBM0IyIC8qIFhQQ0Vu
ZHBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzE5N0Y5NjQyNEIzNjI0NDAwQ0E3NjM5IC8q
IFhQQ0VuZHBvaW50Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsy
OTAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogewogICAg
IEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcygpOworI2Vu
ZGlmCisKICAgICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dyb3Vu
ZCBxdWV1ZSBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAvLyBh
bmQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgogICAg
IGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soY2Fs
bEV4aXQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lv
biAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQt
PmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgdm9pZCBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3Q7CisjZW5kaWYK
KwogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsK
IAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4g
bV9wYWdlTWFwOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKICNpbXBvcnQg
Ikluc2VydFRleHRPcHRpb25zLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFu
YWdlci5oIgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBsdWdpblZpZXcu
aCIKICNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgiCkBAIC01Niwx
MiArNTcsMjIgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPE1vYmls
ZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogeworICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS53YWl0
Rm9yRGF0YWJhc2VVcGRhdGUoMTAwMF9zKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGF1dG8g
dXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIEFTU0VSVCghU3Ry
aW5nKHV0aS5nZXQoKSkuaXNFbXB0eSgpKTsKKyNlbmRpZgorCiAgICAgbV9kYXRhRGV0ZWN0aW9u
Q29udGV4dCA9IHBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CiAKICAgICBpZiAocGFy
YW1ldGVycy5uZUhlbHBlckV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8d3RmL0xvY2su
aD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL09TT2JqZWN0
UHRyLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKyNpbXBvcnQgPHd0Zi90
aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHNldE5l
dHdvcmtQcm9jZXNzRW5kcG9pbnQoeHBjX2VuZHBvaW50X3QpOworCisgICAgYm9vbCB3YWl0Rm9y
RGF0YWJhc2VVcGRhdGUoU2Vjb25kcyk7CisKK3ByaXZhdGU6CisgICAgT1NPYmplY3RQdHI8eHBj
X2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBib29sIG1f
aGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIHsgZmFsc2UgfTsKKyAgICBCaW5hcnlT
ZW1hcGhvcmUgbV9zZW1hcGhvcmU7CisgICAgTG9jayBtX2xvY2s7Cit9OworCit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCIKKworI2ltcG9y
dCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCAiWFBDRW5k
cG9pbnQuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2lu
L1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXImIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCh4cGNfZW5kcG9p
bnRfdCBlbmRwb2ludCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworCisgICAg
aWYgKG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0
aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KGVuZHBvaW50KSk7CisgICAgYXV0byBtZXNzYWdlID0g
YWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkp
OworICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9p
bnQ6OnhwY01lc3NhZ2VOYW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRz
Ojp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lKTsKKwor
ICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcy5nZXQoKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9Q
UklPUklUWV9ERUZBVUxULCAwKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRs
ZXIobV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVz
c2FnZSkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7
CisgICAgICAgIGlmICh0eXBlID09IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgICAgICBpZiAo
bWVzc2FnZSA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIHx8IG1lc3NhZ2UgPT0gWFBD
X0VSUk9SX1RFUk1JTkFUSU9OX0lNTUlORU5UKSB7CisgICAgICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAodHlwZSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IHhwY19kaWN0aW9uYXJ5
X2dldF9yZW1vdGVfY29ubmVjdGlvbihtZXNzYWdlKTsKKyAgICAgICAgaWYgKCFjb25uZWN0aW9u
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW47
CisgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVk
aXRUb2tlbik7CisgICAgICAgIGlmICghV1RGOjpoYXNFbnRpdGxlbWVudChhdWRpdFRva2VuLCAi
Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQiKSkgeworICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJEb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGVudGl0bGVtZW50Iik7Cisg
ICAgICAgICAgICAvLyByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIG1lc3NhZ2VO
YW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6eHBj
TWVzc2FnZU5hbWVLZXkpOworICAgICAgICBpZiAobWVzc2FnZU5hbWUuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1l
c3NhZ2VOYW1lKSB7CisgICAgICAgICAgICBhdXRvIGRhdGFiYXNlID0geHBjX2RpY3Rpb25hcnlf
Z2V0X3ZhbHVlKG1lc3NhZ2UsIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6Onhw
Y0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXkpOworICAgICAgICAgICAgaWYgKGRhdGFiYXNlKSB7
CisgICAgICAgICAgICAgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNE
YXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgICAgICAgICAgICAg
IGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvYnNlcnZlRGF0YWJh
c2VDaGFuZ2U0V2ViS2l0OildKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgW2NvbnRleHQgb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDpkYXRhYmFzZV07
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAg
ICAgICAgICAgICAgIG1faGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisgICAgeHBjX2Nvbm5lY3Rpb25f
cmVzdW1lKG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MuZ2V0KCkpOworCisgICAgeHBjX2Nv
bm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MuZ2V0KCks
IG1lc3NhZ2UuZ2V0KCkpOworfQorCitib29sIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
Ojp3YWl0Rm9yRGF0YWJhc2VVcGRhdGUoU2Vjb25kcyB0aW1lb3V0KQoreworICAgIHsKKyAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKG1faGFzUmVjZWl2ZWRM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiBtX3NlbWFwaG9yZS53YWl0Rm9yKHRpbWVvdXQpOworfQorCit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0J
KHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbXBvcnQg
IldlYlByb2Nlc3MuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDb2NvYS5oIgogCisjaW1wb3J0ICJM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0NvbnN0YW50cy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgiCiAjaW1wb3J0ICJMb2dJbml0aWFsaXphdGlvbi5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtNDgsNiArNTAsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvQ29uZmlnRmlsZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3B0aW9u
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgpAQCAtMTYxLDI1
ICsxNjQsMzIgQEAgc3RhdGljIGlkIE5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdQogfQog
I2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJQcm9jZXNz
OjpoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3QKIHsKLSAgICAvLyBNYXAgTGF1bmNo
IFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBiZSBkb25lIGFzIGVhcmx5IGFzIHBvc3Np
YmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAgICAvLyBpZiAnY29tLmFwcGxlLmxzZC5t
YXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMuCi0gICAgaWYgKHBhcmFtZXRlcnMu
bWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAgYXV0byBleHRlbnNpb24gPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRs
ZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8gUGVyZm9ybSBBUEkgY2FsbHMgd2hpY2gg
d2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZSBtYXBwaW5nIHNlcnZpY2UsIGFuZCBt
YXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4
dC9odG1sIiksIDApKTsKKyAgICBpZiAoIXBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpCisgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBbW29iamNfZ2V0Q2xhc3MoIl9MU0RSZWFkU2VydmljZSIp
IFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFsaWRhdGVdOworICAgIGF1dG8gY29ubmVjdGlv
biA9IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKTsKIAotICAgICAg
ICBvayA9IGV4dGVuc2lvbi0+cmV2b2tlKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9r
KTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRpc3Bh
dGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCkp
OworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24sIF4oeHBj
X29iamVjdF90IGV2ZW50KSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUoZXZlbnQpICE9IFhQ
Q19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQVNTRVJU
KFN0cmluZyh1dGkuZ2V0KCkpID09IFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIp
LCAwKSkuZ2V0KCkpKTsKLSAgICB9CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19k
aWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtl
eSk7CisgICAgICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm47CiAKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VO
YW1lKSB7CisgICAgICAgICAgICBhdXRvIGVuZHBvaW50ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3Zh
bHVlKGV2ZW50LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5KTsKKyAgICAgICAgICAgIExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXROZXR3b3JrUHJvY2Vzc0VuZHBv
aW50KGVuZHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0pOwor
fQorCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKICNpZiAhTE9HX0RJU0FCTEVE
IHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFdlYkNvcmU6OmluaXRpYWxpemVMb2dDaGFu
bmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViQ29yZUxvZ2dpbmdDaGFubmVscyk7CiAgICAg
V2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShwYXJhbWV0ZXJzLndlYktp
dExvZ2dpbmdDaGFubmVscyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403593</attachid>
            <date>2020-07-06 07:35:25 -0700</date>
            <delta_ts>2020-07-06 11:56:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200706073524.patch</filename>
            <type>text/plain</type>
            <size>69992</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24gYWNj
ZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIF94
cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2b2lk
KiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAogI2Rl
ZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2ICsx
MjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29sIHhw
Y19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9jYW5j
ZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19lbmRwb2ludF90
IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29ubmVjdGlvbl90
IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2ludF90KTsKIHhw
Y19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25zdCBj
aGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBwaWRfdCB4cGNf
Y29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNfY29ubmVjdGlv
bl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNi0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRh
dGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaDoKKwogMjAyMC0wNy0wMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBhcHBsaWNhdGlv
biBhY2NlbnQgY29sb3Igc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvTGF1bmNoU2VydmljZXNTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCShyZXZpc2lvbiAyNjM4NjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTQgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CiAKKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKwogI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxD
b3JlU2VydmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbXBvcnQgPENvcmVTZXJ2aWNlcy9MU0RhdGFiYXNlQ29udGV4dFByaXYuaD4KICNpbXBv
cnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9MU0FwcExpbmtQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzUHJpdi5o
PgpAQCAtODUsMTEgKzg4LDE0IEBAIGVudW0gTFNTZXNzaW9uSUQgewogCiAjZW5kaWYgLy8gIVVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAKLUBpbnRlcmZhY2UgX0xTRFNlcnZpY2UgOiBOU09iamVj
dCA8TlNYUENMaXN0ZW5lckRlbGVnYXRlPgotKyAoTlNYUENDb25uZWN0aW9uICopWFBDQ29ubmVj
dGlvblRvU2VydmljZTsKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgOiBOU09iamVjdAor
QHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0ICpzaGFyZWREYXRh
YmFzZUNvbnRleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgX0xTRFJlYWRTZXJ2aWNlIDogX0xTRFNl
cnZpY2UKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgKFdlYktpdENoYW5nZVRyYWNraW5n
KQorLSAoaWQgPE5TT2JqZWN0PilhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDoodm9p
ZCAoXikoeHBjX29iamVjdF90IGNoYW5nZSkpb2JzZXJ2ZXI7CistICh2b2lkKXJlbW92ZURhdGFi
YXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OihpZCA8TlNPYmplY3Q+KXRva2VuOworLSAodm9pZClv
YnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0Oih4cGNfb2JqZWN0X3QpY2hhbmdlOwogQGVuZAog
CiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIw
MjAtMDctMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gVXBkYXRlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIGZyb20gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVj
dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdl
YktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI6OnNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAo
V2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6eHBjRW5kcG9pbnRNZXNzYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmROZXR3b3JrUHJvY2Vzc1hQ
Q0VuZHBvaW50VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvWFBDRXZl
bnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVudEhhbmRsZXI6On5Y
UENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQ6OnhwY0V2
ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1
bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlD
b2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Onhw
Y0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxl
cjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpw
bGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNv
bm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlcjo6c2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmhhbmRsZVhQQ01lc3NhZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMjAtMDctMDIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6
OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKSBpcyBub3QgY2FsbGVkIGZvciBtYWNPUyBDYXRh
bHlzdCBhcHBzIG9uIEFwcGxlIFNpbGljb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSw4IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYklu
c3BlY3RvclByb3gKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yV0tXZWJWaWV3Lm1t
CiAKK1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQorCiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNiArOTcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUNvZGVycy5oIgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2VuZGlmCiAKQEAgLTM4Niw2
ICszODcsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpbwogewog
ICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
OjpzaW5nbGV0b24oKS5zZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24oY29ubmVjdGlvbik7CisjZW5k
aWYKKwogICAgIC8vIFdlIGdpdmUgYSBjaGFuY2UgZm9yIGRpZENsb3NlKCkgdG8gZ2V0IGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IGZvcmNlZnVsbHkgY2FsbCBfZXhpdCgpIGFmdGVyIGEg
ZGVsYXkKICAgICAvLyBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUgb3Ig
ZGlkQ2xvc2UoKSB0YWtlcyB0b28gbG9uZy4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0U29vbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiWFBDRW5kcG9pbnQuaCIK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgOiBwdWJsaWMgWFBDRW5kcG9p
bnQgeworICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI+OworcHVibGljOgorICAgIHN0YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXImIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlcigpOworICAgIHZpcnR1YWwgfkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigp
OworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
Pik7CisKKyAgICAvLyBYUENFbmRwb2ludAorICAgIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TWVz
c2FnZU5hbWVLZXkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiB4cGNFbmRwb2lu
dE1lc3NhZ2VOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9p
bnROYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfY29u
bmVjdGlvbl90LCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPGlkPiBt
X29ic2VydmVyOworICAgIFZlY3RvcjxPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pj4gbV9j
b25uZWN0aW9uczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCIKKworI2ltcG9ydCAiTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVu
Y2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorI2lt
cG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcj4gb2JzZXJ2ZXI7CisgICAgcmV0dXJuIG9ic2VydmVy
OworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5n
KEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgIGlmICgh
W2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNoYW5nZU9i
c2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vYnNlcnZlciA9IFtj
b250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNo
YW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9u
YXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5
LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBj
TGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKQorICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgIH1dOwor
fQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmco
T1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbikKK3sKKyAgICBtX2Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKKworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNz
RnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsK
KyAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJh
c2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRv
cHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwor
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPGlkPiBvYnNlcnZl
ciA9IFtjb250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVj
dF90IGNoYW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19k
aWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0
aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VO
YW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICB4cGNf
Y29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7
CisgICAgfV07CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdl
YktpdDpvYnNlcnZlci5nZXQoKV07Cit9CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cjo6fkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0
ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFz
ZUNvbnRleHRdOworCisgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OildKQorICAgICAgICByZXR1
cm47CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpt
X29ic2VydmVyLmdldCgpXTsKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4geHBjTWVzc2FnZU5hbWVLZXk7Cit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lOworfQorCitjb25zdCBjaGFyKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXk7Cit9CisKK3ZvaWQgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24sIHhwY19vYmplY3RfdCBldmVudCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9
PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICBpZiAoZXZlbnQgIT0gWFBDX0VSUk9SX0NPTk5F
Q1RJT05fSU5WQUxJRCAmJiBldmVudCAhPSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2Nvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9u
c1tpXS5nZXQoKSA9PSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9u
cy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50
KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAg
ICAgICAgaWYgKG1lc3NhZ2VOYW1lICE9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwor
ICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2Zp
bGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCSh3
b3JraW5nIGNvcHkpCkBAIC01ODgsNyArNTg4LDcgQEAKIChhbGxvdyBpcGMtcG9zaXgtc2htLXJl
YWQqCiAgICAgICAgKGlwYy1wb3NpeC1uYW1lLXByZWZpeCAiYXBwbGUuY2ZwcmVmcy4iKSkKICAK
LShhbGxvdyBtYWNoLWxvb2t1cAorKGRlbnkgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5sc2QubWFwZGIiKSkKIAogOzsgPHJkYXI6Ly9wcm9ibGVtLzEyNDEzOTQyPgpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRs
ZW1lbnRzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBAIGZ1bmN0aW9uIG1hY19w
cm9jZXNzX3dlYmNvbnRlbnRfZW50aXRsZW0KIAogICAgIGlmIFtbICIke1dLX1VTRV9SRVNUUklD
VEVEX0VOVElUTEVNRU5UU30iID09IFlFUyBdXQogICAgIHRoZW4KKyAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVT
CiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucm9vdGxlc3Muc3RvcmFnZS5XZWJL
aXRXZWJDb250ZW50U2FuZGJveCBib29sIFlFUwogICAgIGZpCiAKQEAgLTUxLDYgKzUyLDcgQEAg
ZnVuY3Rpb24gbWFjX3Byb2Nlc3NfbmV0d29ya19lbnRpdGxlbWVudAogICAgICAgICAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnRjYy5tYW5hZ2VyLmNoZWNrLWJ5LWF1ZGl0
LXRva2VuOjAgc3RyaW5nIGtUQ0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRUcmFja2luZ1ByZXZl
bnRpb24KICAgICAgICAgZmkKIAorICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5zdG9yYWdlLldlYktpdE5ldHdvcmtpbmdTYW5kYm94
IGJvb2wgWUVTCiAgICAgZmkKIH0KQEAgLTE0NCw2ICsxNDYsNyBAQCBmdW5jdGlvbiBpb3NfZmFt
aWx5X3Byb2Nlc3Nfd2ViY29udGVudF9lCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlv
biBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNw
ZWN0b3IucHJveHktYXBwbGljYXRpb24gYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJ1bm5pbmdib2FyZC5hc3NlcnRpb25zLndlYmtpdCBib29s
IFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpkeW5hbWljLWNvZGVzaWduaW5nIGJvb2wgWUVTCiAK
QEAgLTE4NCw2ICsxODcsNyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3NfbmV0d29ya19l
bnRpCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLmRtZC5wb2xpY3kgYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUubWVtb3J5c3RhdHVz
IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLm5ldHdvcmsu
c29ja2V0LWRlbGVnYXRlIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKIAog
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1i
eS1hdWRpdC10b2tlbiBhcnJheQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMgeworCitjb25zdGV4cHIgYXV0
byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRlLWxh
dW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0
ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5h
bWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiOwor
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtl
eSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0ZXhwciBh
dXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lID0gInhw
Yy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Cit9IC8vIG5hbWVz
cGFjZSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRW5kcG9pbnQgeworcHVibGljOgor
ICAgIFhQQ0VuZHBvaW50KCk7CisgICAgdmlydHVhbCB+WFBDRW5kcG9pbnQoKTsKKworICAgIHZv
aWQgc2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHhwY01lc3NhZ2VOYW1lS2V5ID0gIm1lc3NhZ2UtbmFtZSI7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1l
S2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNz
YWdlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50
TmFtZUtleSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoeHBjX2Nv
bm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSA9IDA7CisKKyAgICBPU09iamVjdFB0cjx4cGNfY29u
bmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisgICAgT1NPYmplY3RQdHI8eHBjX2VuZHBvaW50X3Q+
IG1fZW5kcG9pbnQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9YUENFbmRwb2ludC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgorCisjaW1w
b3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitY
UENFbmRwb2ludDo6WFBDRW5kcG9pbnQoKQoreworICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NP
YmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlKG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBtX2Vu
ZHBvaW50ID0gYWRvcHRPU09iamVjdCh4cGNfZW5kcG9pbnRfY3JlYXRlKG1fY29ubmVjdGlvbi5n
ZXQoKSkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rp
b24uZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgIHhwY19jb25uZWN0aW9u
X3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVz
c2FnZSkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7
CisKKyAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfQ09OTkVDVElPTikgeworICAgICAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0gbWVzc2FnZTsKKyAgICAgICAgICAgIGF1
ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9h
dWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisKKyAgICAgICAgICAgIGlmIChX
VEY6Omhhc0VudGl0bGVtZW50KGF1ZGl0VG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQu
dXNlLXhwYy1lbmRwb2ludCIpKSB7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJEb2Vz
IG5vdCBoYXZlIHJlcXVpcmVkIGVudGl0bGVtZW50Iik7CisgICAgICAgICAgICAgICAgLy8gcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3Rhcmdl
dF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICAgICAg
ICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24sIF4oeHBjX29i
amVjdF90IGV2ZW50KSB7CisgICAgICAgICAgICAgICAgaGFuZGxlRXZlbnQoY29ubmVjdGlvbiwg
ZXZlbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9yZXN1
bWUobWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1
bWUobV9jb25uZWN0aW9uLmdldCgpKTsKK30KKwordm9pZCBYUENFbmRwb2ludDo6c2VuZEVuZHBv
aW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICBpZiAo
IWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0
T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAg
ICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIHhwY0VuZHBvaW50TWVz
c2FnZU5hbWVLZXkoKSwgeHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpKTsKKyAgICB4cGNfZGljdGlv
bmFyeV9zZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgeHBjRW5kcG9pbnROYW1lS2V5KCksIG1fZW5k
cG9pbnQuZ2V0KCkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rp
b24tPnhwY0Nvbm5lY3Rpb24oKSwgbWVzc2FnZS5nZXQoKSk7Cit9CisKK1hQQ0VuZHBvaW50Ojp+
WFBDRW5kcG9pbnQoKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9YUENFbmRwb2ludENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTG9j
ay5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvZGFy
d2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRW5kcG9pbnRD
bGllbnQgeworcHVibGljOgorICAgIFhQQ0VuZHBvaW50Q2xpZW50KCk7CisgICAgdmlydHVhbCB+
WFBDRW5kcG9pbnRDbGllbnQoKTsKKworICAgIHZvaWQgc2V0RW5kcG9pbnQoeHBjX2VuZHBvaW50
X3QpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudCh4cGNfb2JqZWN0
X3QpID0gMDsKKworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlv
bjsKKyAgICBMb2NrIG1fbG9jazsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjkgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1l
dDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludENsaWVudC5o
IgorCisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFhQQ0VuZHBvaW50Q2xpZW50OjpzZXRFbmRwb2ludCh4cGNfZW5kcG9pbnRf
dCBlbmRwb2ludCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYg
KG1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uID0gYWRv
cHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVhdGVfZnJvbV9lbmRwb2ludChlbmRwb2ludCkp
OworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rpb24uZ2V0
KCksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVG
QVVMVCwgMCkpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVj
dGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVzc2FnZSkgeworICAgICAgICB4cGNfdHlwZV90
IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7CisgICAgICAgIGlmICh0eXBlID09IFhQQ19U
WVBFX0VSUk9SKSB7CisgICAgICAgICAgICBpZiAobWVzc2FnZSA9PSBYUENfRVJST1JfQ09OTkVD
VElPTl9JTlZBTElEIHx8IG1lc3NhZ2UgPT0gWFBDX0VSUk9SX1RFUk1JTkFUSU9OX0lNTUlORU5U
KSB7CisgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
ICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh0eXBlICE9IFhQQ19UWVBFX0RJQ1RJ
T05BUlkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKG1lc3NhZ2UpOworICAgICAgICBp
ZiAoIWNvbm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1ZGl0X3Rva2Vu
X3QgYXVkaXRUb2tlbjsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2VuKGNv
bm5lY3Rpb24sICZhdWRpdFRva2VuKTsKKyAgICAgICAgaWYgKCFXVEY6Omhhc0VudGl0bGVtZW50
KGF1ZGl0VG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCIp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGhhbmRsZUV2ZW50KG1lc3NhZ2UpOwor
ICAgIH0pOworCisgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbi5nZXQoKSk7
Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
Q29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9D
b3JlRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRlV0aWxpdGllc1NQSS5oPgor
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3Rm
L09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYv
c3BpL2Rhcndpbi9YUENTUEkuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzg4LDcgKzM4OCw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAgICAgTmV0d29ya1Byb2Nl
c3NQcm94eSYgZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aFdlYnNp
dGVEYXRhU3RvcmUgPSBudWxscHRyKTsKLSAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3Jr
UHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KKyAgICBOZXR3b3Jr
UHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1By
b2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJv
Y2Vzc1Byb3h5Jik7CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CkBAIC01NDIsNiArNTQyLDExIEBAIHB1YmxpYzoK
ICAgICBpbnQzMl90IHVzZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlcklkOyB9CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4geHBj
RW5kcG9pbnRNZXNzYWdlKCkgY29uc3Q7CisgICAgdm9pZCBzZW5kTmV0d29ya1Byb2Nlc3NYUENF
bmRwb2ludFRvV2ViUHJvY2VzcyhPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGVuZHBvaW50TWVz
c2FnZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgp
OwogCkBAIC04MjYsNiArODMxLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBt
X2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fZW5kcG9pbnRNZXNzYWdlOworI2Vu
ZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NTMsNiArOTUzLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8g
ZW5kcG9pbnRNZXNzYWdlID0gcHJvY2Vzc1Bvb2woKS54cGNFbmRwb2ludE1lc3NhZ2UoKTsKKyAg
ICBpZiAoZW5kcG9pbnRNZXNzYWdlKQorICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3Nh
Z2UoY29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksIGVuZHBvaW50TWVzc2FnZS5nZXQoKSk7
CisjZW5kaWYKKwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3dlYkNvbm5lY3Rpb24pOwogICAgIG1f
d2ViQ29ubmVjdGlvbiA9IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSh0aGlzKTsK
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MzQs
NCArOTM0LDIzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVySGlnaER5bmFtaWMKIH0K
ICNlbmRpZgogCitPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IFdlYlByb2Nlc3NQb29sOjp4cGNF
bmRwb2ludE1lc3NhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2VuZHBvaW50TWVzc2FnZTsK
K30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRU
b1dlYlByb2Nlc3MoT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBlbmRwb2ludE1lc3NhZ2UpCit7
CisgICAgbV9lbmRwb2ludE1lc3NhZ2UgPSBlbmRwb2ludE1lc3NhZ2U7CisKKyAgICBmb3IgKGF1
dG8gcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLT5pc0xhdW5j
aGluZygpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+Y29u
bmVjdGlvbigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8gY29ubmVjdGlv
biA9IHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpOworICAgICAgICB4cGNf
Y29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbiwgZW5kcG9pbnRNZXNzYWdlLmdldCgp
KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
WFBDRXZlbnRIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+WFBDRXZlbnRIYW5kbGVy
KCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBj
b25zdCA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJYUENFdmVudEhhbmRsZXIu
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV1BFKQpAQCAtNTcsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb25maWd1cmVK
U0NGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzSklURW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVudEhh
bmRsZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKICAgICB9OwogICAgIAog
ICAgIGVudW0gY2xhc3MgUHJvY2Vzc1R5cGUgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShy
ZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTggKzIzOCwyOCBA
QCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIHByb2Nlc3NM
YXVuY2hlci0+ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcygwLCBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIoKSk7CiAgICAgfTsKIAotICAgIGF1dG8gZXJyb3JIYW5kbGVyID0gW2Vycm9ySGFu
ZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpXSAoeHBjX29iamVjdF90IGV2ZW50
KSBtdXRhYmxlIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRs
ZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRdIHsKLSAgICAgICAgICAg
IGVycm9ySGFuZGxlckltcGwoZXZlbnQpOwotICAgICAgICB9KTsKKyAgICBhdXRvIGV2ZW50SGFu
ZGxlciA9IFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZl
bnRIYW5kbGVyID0gbV9jbGllbnQtPnhwY0V2ZW50SGFuZGxlcigpXSAoeHBjX29iamVjdF90IGV2
ZW50KSBtdXRhYmxlIHsKKworICAgICAgICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVu
dCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50
ID0gT1NPYmplY3RQdHIoZXZlbnQpXSB7CisgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1w
bChldmVudC5nZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChldmVudEhhbmRsZXIpIHsKKyAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyLCBldmVudCA9
IE9TT2JqZWN0UHRyKGV2ZW50KV0geworICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlci0+aGFu
ZGxlWFBDRXZlbnQoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAg
ICB9OwogCi0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0
aW9uLmdldCgpLCBlcnJvckhhbmRsZXIpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9o
YW5kbGVyKG1feHBjQ29ubmVjdGlvbi5nZXQoKSwgZXZlbnRIYW5kbGVyKTsKIAogICAgIHhwY19j
b25uZWN0aW9uX3Jlc3VtZShtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpOwogCiAgICAgaWYgKFVOTElL
RUxZKG1fbGF1bmNoT3B0aW9ucy5zaG91bGRNYWtlUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5n
KSkgewotICAgICAgICBlcnJvckhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIGV2ZW50SGFuZGxl
cihudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1
ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0yOTcsNiArMzAx
LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdm9p
ZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZWZQdHI8WFBD
RXZlbnRIYW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgog
CiAgICAgdm9pZCBwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQs
IFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKIApAQCAtMzI3LDYgKzMzNCwx
OSBAQCBwcml2YXRlOgogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlByb2Nlc3NBc3NlcnRpb25z
OwogICAgIH07CiAgICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1fdXBsb2FkQWN0aXZpdHk7
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJs
aWMgV2ViS2l0OjpYUENFdmVudEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgWFBDRXZl
bnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKKyAgICAgICAgdmlydHVhbCB+
WFBDRXZlbnRIYW5kbGVyKCk7CisKKyAgICAgICAgYm9vbCBoYW5kbGVYUENFdmVudCh4cGNfb2Jq
ZWN0X3QpIGNvbnN0IG92ZXJyaWRlOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vha1B0cjxO
ZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOworICAgIH07CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5o
IgorCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1w
b3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorI2ltcG9ydCAiWFBDRW5kcG9pbnQuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1JlZlB0cjxYUENFdmVudEhhbmRsZXI+IE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnhwY0V2ZW50SGFuZGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXIoKnRoaXMpKTsKK30KKworYm9vbCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50KHhwY19v
YmplY3RfdCBldmVudCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50
KSA9PSBYUENfVFlQRV9FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5n
IG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9p
bnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICBpZiAobWVzc2FnZU5hbWUuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Vu
ZHBvaW50TWVzc2FnZU5hbWUpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkuc2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoZXZlbnQpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxl
cjo6WFBDRXZlbnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9j
ZXNzKQorICAgIDogbV9uZXR3b3JrUHJvY2VzcyhtYWtlV2Vha1B0cihuZXR3b3JrUHJvY2Vzcykp
Cit7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50
SGFuZGxlcigpCit7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY4
NCw5ICsxNjg0LDE2IEBACiAJCUMxMUE5RUNDMjE0MDM1RjgwMENGQjIwQSAvKiBXZWJTd2l0Y2hp
bmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxMUE5RUNCMjE0MDM1RjgwMENGQjIwQSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCAq
LzsgfTsKIAkJQzExRTE2OTQyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUUxNjkyMjEyQjg3
QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE0OTM4MDkyMjM0NzEwNDAwMENENzA3IC8qIFdlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNp
c0NsaWVudC5oICovOyB9OworCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXIubW0gKi87IH07CiAJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQ
cmVmZXJlbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxNDVDQzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTVD
QkIzNzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzMyM0YzNEMzODAwMzAw
Q0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLzsgfTsKKwkJQzE2NjNFNUIyNEFFQUEyRjAw
QzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjYzRTVBMjRBRUE3NDIwMEM2
QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggKi87IH07CisJCUMx
NjYzRTVEMjRBRjk5MzAwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2NjNFNUMyNEFGOTY1RDAwQzZBM0IyIC8q
IFhQQ0VuZHBvaW50LmggKi87IH07CisJCUMxNjYzRTVGMjRBRjlDMUMwMEM2QTNCMiAvKiBYUENF
bmRwb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxNjYzRTVFMjRBRjlDMUMwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5tbSAqLzsgfTsKKwkJQzE3
MTBDRjcyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNzEwQ0Y2
MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi87
IH07CiAJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE4MTczNjAyMDU4NDI0NzAw
REZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87IH07CisJCUMxOTdGOTY0MjRCMzYyNDQwMENBNzYz
OSAvKiBYUENFbmRwb2ludENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMxOTdGOTYzMjRCMzYyNDQwMENBNzYzOSAvKiBYUENFbmRwb2ludENs
aWVudC5tbSAqLzsgfTsKKwkJQzE5N0Y5NjUyNEIzNkMyNjAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MTk3Rjk2MjI0QjM2MTk4MDBDQTc2MzkgLyogWFBDRW5kcG9pbnRDbGllbnQuaCAqLzsgfTsKIAkJ
QzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2
RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3
IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24uaCAqLzsgfTsKIAkJQzU0MjU2QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRGF0ZVRp
bWVJbnB1dENvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9s
LmggKi87IH07CkBAIC01MDE4LDEzICs1MDI1LDI0IEBACiAJCUMxNDkzODAyMjIzNDFDNjAwMDBD
RDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkz
ODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8qIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAv
KiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3
IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcmVu
Y2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE2NjNFNUEyNEFF
QTc0MjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1QzI0QUY5NjVEMDBDNkEzQjIgLyogWFBDRW5k
cG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzE2NjNFNUUyNEFGOUMxQzAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gWFBDRW5kcG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzEx
MiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMxODE3MzVFMjA1ODM5RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBERkRBNjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGlzcGxheUxpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUUyNDJGOUY3NzAw
N0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMTk3Rjk2MjI0QjM2MTk4MDBDQTc2MzkgLyogWFBDRW5kcG9pbnRDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzE5N0Y5NjMyNEIzNjI0NDAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFBDRW5kcG9pbnRDbGllbnQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250
ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQREZDb250ZXh0TWVu
dS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZD
RDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUyMzdGNUYxMjQ0MUNBMzAwNzgwNDcyIC8qIFdl
YkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBw
YXRoID0gaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYzODQsNiArNjQwMiw3IEBACiAJCQkJMkQ3QUFGRDIxOEM4NjQwNjAw
QTdBQ0Q0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oICovLAogCQkJCTJEQzZEOUMxMThD
NDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovLAog
CQkJCTJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJS
ZWdpc3RyeS5tbSAqLywKKwkJCQlDMTcxMENGMjI0QTdCRDAzMDBEN0MxMTIgLyogWFBDRXZlbnRI
YW5kbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTc0ODEsNiArNzUwMCw3IEBACiAJCQkJQzU1RjkxNkQxQzU5NUU0NDAwMjlF
OTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0gKi8sCiAJCQkJQ0U1NTBFMTMyMjgzNzQ0NDAw
RDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmNwcCAqLywKIAkJCQlDRTU1MEUxMjIyODM3M0M4
MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLywKKwkJCQlDMTY2M0U1QTI0QUVBNzQy
MDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICovLAogCQkJ
CTJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICovLAog
CQkJCUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIu
aCAqLywKIAkJCQlDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9i
c2VydmVyLm1tICovLApAQCAtNzUxNCw2ICs3NTM0LDEwIEBACiAJCQkJMzdCRjJGMDUxOTQ3REVC
NDAwNzIzQzQ4IC8qIFdLTlNVUkxSZXF1ZXN0Lm1tICovLAogCQkJCTM3OEUxQTNGMTgxRURBMDEw
MDMxMDA3QSAvKiBXS09iamVjdC5oICovLAogCQkJCTM3NDQzNjg3MTgyMEU3MjQwMDQ5NTc5RiAv
KiBXS09iamVjdC5tbSAqLywKKwkJCQlDMTY2M0U1QzI0QUY5NjVEMDBDNkEzQjIgLyogWFBDRW5k
cG9pbnQuaCAqLywKKwkJCQlDMTY2M0U1RTI0QUY5QzFDMDBDNkEzQjIgLyogWFBDRW5kcG9pbnQu
bW0gKi8sCisJCQkJQzE5N0Y5NjIyNEIzNjE5ODAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50
LmggKi8sCisJCQkJQzE5N0Y5NjMyNEIzNjI0NDAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50
Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXBhdGggPSBDb2NvYTsKQEAgLTc4
NDQsNiArNzg2OCw3IEBACiAJCTUxMENDN0U3MTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNjI0
QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8sCiAJCQkJMjlBRDMwOTExNjRCNEMxMDAwNzJERUE5
IC8qIEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyog
bWFjICovLAogCQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCAqLywKQEAgLTgzNzQsNiArODM5OSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlD
RDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3Iu
Y3BwICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvci5oICovLAorCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovLAorCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdG
RjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKIAkJCQk0NDZEQzY0
QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAq
LywKIAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5oICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtODQyNSw2ICs4NDUyLDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCTJEMEM1NkZCMjI5RjFERUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29m
dExpbmsuaCAqLywKIAkJCQkyRDBDNTZGQzIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdl
bWVudFNvZnRMaW5rLm1tICovLAorCQkJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlDMTcxMENGNjI0QUE2NDMyMDBE
N0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICovLAogCQkJCTUzMTU4
NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2EubW0gKi8s
CiAJCQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLmgg
Ki8sCiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29h
Lm1tICovLApAQCAtMTAyNTIsNiArMTAyODEsMTQgQEAKIAkJCXRhYldpZHRoID0gODsKIAkJCXVz
ZXNUYWJzID0gMDsKIAkJfTsKKwkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29hICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNzI0
QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovLAorCQkJKTsK
KwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUM1
NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMDg1OCw2ICsxMDg5NSw3IEBACiAJCQkJMkQ0RDJDODEx
REY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1ldGhvZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFFNDk4NzgxMUZGN0ZBQTAwNDhCNDY0IC8qIEpTTlBPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCUMxNjYzRTVCMjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwOTM3
ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Q
cm90b2NvbElELmggaW4gSGVhZGVycyAqLywKQEAgLTExODM5LDYgKzExODc3LDggQEAKIAkJCQkx
QUQ2MEY2MDE4RTIwRjc0MDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlc0ludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2QTUwODBCRjFGMEVEQUFBMDBFNjE3QzUgLyogV0tXaW5kb3dGZWF0
dXJlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBN0MwREY3MUI3RDFGMTAwMEE5Qjg0
OCAvKiBXS1dpbmRvd0ZlYXR1cmVzUmVmLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTY2M0U1RDI0
QUY5OTMwMDBDNkEzQjIgLyogWFBDRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUMxOTdG
OTY1MjRCMzZDMjYwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNCRUNERTgxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKQEAgLTEyNzI2LDYgKzEyNzY2LDggQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4
MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDkxMzQ0MTIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDkxMzQ0MjIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMTcxMENGNzI0QUE2NDMyMDBE
N0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5
MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8q
IExpYldlYlJUQ05ldHdvcmtNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MzA4Niw2ICsxMzEyOCw4IEBACiAJCQkJMURCMDE5NDQyMTFDRjAwNTAwOUZCM0U4IC8qIFdLU2hh
cmVTaGVldC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNzhGRjMzMjI0MTkxOUIwMDk2NDgzRSAv
KiBXS1N0b3JhZ2VBY2Nlc3NBbGVydC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFMjEyMTYwMjQw
RUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUMxNjYzRTVGMjRBRjlDMUMwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUMxOTdGOTY0MjRCMzYyNDQwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVudC5tbSBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsNiArMjkwLDEwIEBAIHZvaWQgV2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVAKIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0
aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMoKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgY2FsbCBf
ZXhpdCgpIGRpcmVjdGx5IGZyb20gdGhlIGJhY2tncm91bmQgcXVldWUgaW4gY2FzZSB0aGUgbWFp
biB0aHJlYWQgaXMgdW5yZXNwb25zaXZlCiAgICAgLy8gYW5kIEF1eGlsaWFyeVByb2Nlc3M6OmRp
ZENsb3NlKCkgZG9lcyBub3QgZ2V0IGNhbGxlZC4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9z
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYgKzUx
MCwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7
IHJldHVybiBtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSA6IHRydWU7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaGFuZGxlWFBD
RW5kcG9pbnRNZXNzYWdlcygpIGNvbnN0OworI2VuZGlmCisKICAgICBSZWZQdHI8V2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2ltcG9ydCAiV2ViUGFnZS5oIgogCiAjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgor
I2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvYWRQ
YXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIgpAQCAtNTYsMTIgKzU3LDIyIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29y
ZVNlcnZpY2VzLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVy
cyhjb25zdCBMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkud2FpdEZvckRhdGFiYXNlVXBkYXRlKDEwMDBf
cyk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigi
dGV4dC9odG1sIiksIDApKTsKKyAgICBBU1NFUlQoIVN0cmluZyh1dGkuZ2V0KCkpLmlzRW1wdHko
KSk7CisjZW5kaWYKKwogICAgIG1fZGF0YURldGVjdGlvbkNvbnRleHQgPSBwYXJhbWV0ZXJzLmRh
dGFEZXRlY3Rpb25Db250ZXh0OwogCiAgICAgaWYgKHBhcmFtZXRlcnMubmVIZWxwZXJFeHRlbnNp
b25IYW5kbGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgorI2ltcG9ydCA8d3RmL3Nw
aS9kYXJ3aW4vWFBDU1BJLmg+CisjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VN
YW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzZXROZXR3b3JrUHJvY2Vzc0VuZHBvaW50KHhw
Y19lbmRwb2ludF90KTsKKworICAgIGJvb2wgd2FpdEZvckRhdGFiYXNlVXBkYXRlKFNlY29uZHMp
OworCitwcml2YXRlOgorICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3M7CisgICAgYm9vbCBtX2hhc1JlY2VpdmVkTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZSB7IGZhbHNlIH07CisgICAgQmluYXJ5U2VtYXBob3JlIG1fc2VtYXBob3JlOwor
ICAgIExvY2sgbV9sb2NrOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ci5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgiCisKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJh
c2VYUENDb25zdGFudHMuaCIKKyNpbXBvcnQgIlhQQ0VuZHBvaW50LmgiCisjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRs
ZW1lbnRzLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyJiBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1h
bmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNl
dE5ldHdvcmtQcm9jZXNzRW5kcG9pbnQoeHBjX2VuZHBvaW50X3QgZW5kcG9pbnQpCit7CisgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmIChtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVhdGVfZnJvbV9lbmRwb2lu
dChlbmRwb2ludCkpOworICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rp
b25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwg
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjUmVxdWVzdExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VVcGRhdGVNZXNzYWdlTmFtZSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRf
dGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MuZ2V0KCksIGRpc3BhdGNo
X2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCkpOwor
ICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MuZ2V0KCksIF4oeHBjX29iamVjdF90IG1lc3NhZ2UpIHsKKyAgICAgICAgeHBjX3R5
cGVfdCB0eXBlID0geHBjX2dldF90eXBlKG1lc3NhZ2UpOworICAgICAgICBpZiAodHlwZSA9PSBY
UENfVFlQRV9FUlJPUikgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2UgPT0gWFBDX0VSUk9SX0NP
Tk5FQ1RJT05fSU5WQUxJRCB8fCBtZXNzYWdlID09IFhQQ19FUlJPUl9URVJNSU5BVElPTl9JTU1J
TkVOVCkgeworICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
ICAgICAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5
cGUgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBhdXRvIGNvbm5lY3Rpb24gPSB4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24o
bWVzc2FnZSk7CisgICAgICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOworICAgICAgICB4cGNfY29ubmVjdGlv
bl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOworICAgICAgICBpZiAo
IVdURjo6aGFzRW50aXRsZW1lbnQoYXVkaXRUb2tlbiwgImNvbS5hcHBsZS5wcml2YXRlLndlYmtp
dC51c2UteHBjLWVuZHBvaW50IikpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRG9lcyBu
b3QgaGF2ZSByZXF1aXJlZCBlbnRpdGxlbWVudCIpOworICAgICAgICAgICAgLy8gcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcobWVzc2FnZSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAg
ICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6
OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSkgeworICAgICAgICAg
ICAgYXV0byBkYXRhYmFzZSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShtZXNzYWdlLCBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
S2V5KTsKKyAgICAgICAgICAgIGlmIChkYXRhYmFzZSkgeworICAgICAgICAgICAgICAgIGF1dG8g
Y29udGV4dCA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVk
RGF0YWJhc2VDb250ZXh0XTsKKyAgICAgICAgICAgICAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iob2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDopXSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIFtjb250ZXh0IG9ic2Vy
dmVEYXRhYmFzZUNoYW5nZTRXZWJLaXQ6ZGF0YWJhc2VdOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICBtX2hhc1JlY2Vp
dmVkTGF1bmNoU2VydmljZXNEYXRhYmFzZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzLmdldCgpKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSht
X2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKK30KKwor
Ym9vbCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6d2FpdEZvckRhdGFiYXNlVXBkYXRl
KFNlY29uZHMgdGltZW91dCkKK3sKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgICAgIGlmIChtX2hhc1JlY2VpdmVkTGF1bmNoU2VydmljZXNEYXRhYmFzZSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gbV9zZW1hcGhvcmUu
d2FpdEZvcih0aW1lb3V0KTsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjM4NjEpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzQ29jb2EuaCIKIAorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXIuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCIK
ICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIgogI2ltcG9ydCAiTG9nSW5p
dGlhbGl6YXRpb24uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTQ4LDYgKzUwLDcgQEAKICNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJTbGVlcERpc2Fi
bGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgorI2lt
cG9ydCAiWFBDRW5kcG9pbnQuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0NvbmZpZ0ZpbGUu
aD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL09wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
QVZBc3NldE1JTUVUeXBlQ2FjaGUuaD4KQEAgLTE2MSwyNSArMTY0LDMyIEBAIHN0YXRpYyBpZCBO
U0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUZvY3UKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKK3ZvaWQgV2ViUHJvY2Vzczo6aGFuZGxlWFBDRW5kcG9pbnRNZXNz
YWdlcygpIGNvbnN0CiB7Ci0gICAgLy8gTWFwIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZS4gVGhp
cyBzaG91bGQgYmUgZG9uZSBhcyBlYXJseSBhcyBwb3NzaWJsZSwgYXMgdGhlIG1hcHBpbmcgd2ls
bCBmYWlsCi0gICAgLy8gaWYgJ2NvbS5hcHBsZS5sc2QubWFwZGInIGlzIGJlaW5nIGFjY2Vzc2Vk
IGJlZm9yZSB0aGlzLgotICAgIGlmIChwYXJhbWV0ZXJzLm1hcERCRXh0ZW5zaW9uSGFuZGxlKSB7
Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1v
dmUoKnBhcmFtZXRlcnMubWFwREJFeHRlbnNpb25IYW5kbGUpKTsKLSAgICAgICAgYm9vbCBvayA9
IGV4dGVuc2lvbi0+Y29uc3VtZSgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0g
ICAgICAgIC8vIFBlcmZvcm0gQVBJIGNhbGxzIHdoaWNoIHdpbGwgY29tbXVuaWNhdGUgd2l0aCB0
aGUgZGF0YWJhc2UgbWFwcGluZyBzZXJ2aWNlLCBhbmQgbWFwIHRoZSBkYXRhYmFzZS4KLSAgICAg
ICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JU
YWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIpLCAwKSk7CisgICAgaWYg
KCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
W1tvYmpjX2dldENsYXNzKCJfTFNEUmVhZFNlcnZpY2UiKSBYUENDb25uZWN0aW9uVG9TZXJ2aWNl
XSBpbnZhbGlkYXRlXTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT54cGNDb25uZWN0aW9uKCk7CiAKLSAgICAgICAgb2sgPSBleHRlbnNpb24tPnJldm9r
ZSgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7CisgICAgeHBjX2Nvbm5lY3Rpb25f
c2V0X3RhcmdldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKKyAgICB4cGNfY29ubmVjdGlvbl9z
ZXRfZXZlbnRfaGFuZGxlcihjb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAg
ICAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEFTU0VSVChTdHJpbmcodXRpLmdldCgpKSA9PSBT
dHJpbmcoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpLmdldCgpKSk7Ci0gICAgfQor
ICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2
ZW50LCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOworICAgICAgICBpZiAobWVzc2Fn
ZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGlmIChtZXNz
YWdlTmFtZSA9PSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSkgeworICAgICAgICAgICAgYXV0
byBlbmRwb2ludCA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShldmVudCwgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBv
aW50TmFtZUtleSk7CisgICAgICAgICAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6
c2luZ2xldG9uKCkuc2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludChlbmRwb2ludCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9KTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCit7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShwYXJhbWV0
ZXJzLndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6aW5pdGlhbGl6ZUxvZ0No
YW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5nQ2hhbm5lbHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403595</attachid>
            <date>2020-07-06 07:59:15 -0700</date>
            <delta_ts>2020-07-06 13:04:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200706075914.patch</filename>
            <type>text/plain</type>
            <size>69032</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24gYWNj
ZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIF94
cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2b2lk
KiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAogI2Rl
ZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2ICsx
MjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29sIHhw
Y19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9jYW5j
ZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19lbmRwb2ludF90
IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29ubmVjdGlvbl90
IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2ludF90KTsKIHhw
Y19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25zdCBj
aGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBwaWRfdCB4cGNf
Y29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNfY29ubmVjdGlv
bl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNi0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRh
dGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9z
cGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaDoKKwogMjAyMC0wNy0wMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBhcHBsaWNhdGlv
biBhY2NlbnQgY29sb3Igc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvTGF1bmNoU2VydmljZXNTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCShyZXZpc2lvbiAyNjM4NjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTQgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CiAKKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKwogI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxD
b3JlU2VydmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbXBvcnQgPENvcmVTZXJ2aWNlcy9MU0RhdGFiYXNlQ29udGV4dFByaXYuaD4KICNpbXBv
cnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9MU0FwcExpbmtQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzUHJpdi5o
PgpAQCAtODUsMTEgKzg4LDE0IEBAIGVudW0gTFNTZXNzaW9uSUQgewogCiAjZW5kaWYgLy8gIVVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAKLUBpbnRlcmZhY2UgX0xTRFNlcnZpY2UgOiBOU09iamVj
dCA8TlNYUENMaXN0ZW5lckRlbGVnYXRlPgotKyAoTlNYUENDb25uZWN0aW9uICopWFBDQ29ubmVj
dGlvblRvU2VydmljZTsKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgOiBOU09iamVjdAor
QHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0ICpzaGFyZWREYXRh
YmFzZUNvbnRleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgX0xTRFJlYWRTZXJ2aWNlIDogX0xTRFNl
cnZpY2UKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgKFdlYktpdENoYW5nZVRyYWNraW5n
KQorLSAoaWQgPE5TT2JqZWN0PilhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDoodm9p
ZCAoXikoeHBjX29iamVjdF90IGNoYW5nZSkpb2JzZXJ2ZXI7CistICh2b2lkKXJlbW92ZURhdGFi
YXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OihpZCA8TlNPYmplY3Q+KXRva2VuOworLSAodm9pZClv
YnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0Oih4cGNfb2JqZWN0X3QpY2hhbmdlOwogQGVuZAog
CiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIw
MjAtMDctMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gVXBkYXRlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIGZyb20gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVj
dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdl
YktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI6OnNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAo
V2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6eHBjRW5kcG9pbnRNZXNzYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmROZXR3b3JrUHJvY2Vzc1hQ
Q0VuZHBvaW50VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvWFBDRXZl
bnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVudEhhbmRsZXI6On5Y
UENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQ6OnhwY0V2
ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1
bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlD
b2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Onhw
Y0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxl
cjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpw
bGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNv
bm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlcjo6c2V0TmV0d29ya1Byb2Nlc3NFbmRwb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmhhbmRsZVhQQ01lc3NhZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMjAtMDctMDIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6
OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKSBpcyBub3QgY2FsbGVkIGZvciBtYWNPUyBDYXRh
bHlzdCBhcHBzIG9uIEFwcGxlIFNpbGljb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSw4IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYklu
c3BlY3RvclByb3gKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yV0tXZWJWaWV3Lm1t
CiAKK1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQorCiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNiArOTcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUNvZGVycy5oIgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2VuZGlmCiAKQEAgLTM4Niw2
ICszODcsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpbwogewog
ICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
OjpzaW5nbGV0b24oKS5zZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24oY29ubmVjdGlvbik7CisjZW5k
aWYKKwogICAgIC8vIFdlIGdpdmUgYSBjaGFuY2UgZm9yIGRpZENsb3NlKCkgdG8gZ2V0IGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IGZvcmNlZnVsbHkgY2FsbCBfZXhpdCgpIGFmdGVyIGEg
ZGVsYXkKICAgICAvLyBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUgb3Ig
ZGlkQ2xvc2UoKSB0YWtlcyB0b28gbG9uZy4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0U29vbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiWFBDRW5kcG9pbnQuaCIK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgOiBwdWJsaWMgWFBDRW5kcG9p
bnQgeworICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI+OworcHVibGljOgorICAgIHN0YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXImIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlcigpOworICAgIHZpcnR1YWwgfkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigp
OworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
Pik7CisKKyAgICAvLyBYUENFbmRwb2ludAorICAgIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TWVz
c2FnZU5hbWVLZXkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiB4cGNFbmRwb2lu
dE1lc3NhZ2VOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9p
bnROYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfY29u
bmVjdGlvbl90LCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPGlkPiBt
X29ic2VydmVyOworICAgIFZlY3RvcjxPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pj4gbV9j
b25uZWN0aW9uczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCIKKworI2ltcG9ydCAiTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVu
Y2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorI2lt
cG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcj4gb2JzZXJ2ZXI7CisgICAgcmV0dXJuIG9ic2VydmVy
OworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5n
KEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgIGlmICgh
W2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNoYW5nZU9i
c2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vYnNlcnZlciA9IFtj
b250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNo
YW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9u
YXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5
LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBj
TGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKQorICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgIH1dOwor
fQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmco
T1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbikKK3sKKyAgICBtX2Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKKworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNz
RnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsK
KyAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJh
c2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRv
cHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwor
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPGlkPiBvYnNlcnZl
ciA9IFtjb250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVj
dF90IGNoYW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19k
aWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0
aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VO
YW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICB4cGNf
Y29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7
CisgICAgfV07CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdl
YktpdDpvYnNlcnZlci5nZXQoKV07Cit9CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cjo6fkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0
ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFz
ZUNvbnRleHRdOworCisgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OildKQorICAgICAgICByZXR1
cm47CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpt
X29ic2VydmVyLmdldCgpXTsKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4geHBjTWVzc2FnZU5hbWVLZXk7Cit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lOworfQorCitjb25zdCBjaGFyKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXk7Cit9CisKK3ZvaWQgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24sIHhwY19vYmplY3RfdCBldmVudCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9
PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICBpZiAoZXZlbnQgIT0gWFBDX0VSUk9SX0NPTk5F
Q1RJT05fSU5WQUxJRCAmJiBldmVudCAhPSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2Nvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9u
c1tpXS5nZXQoKSA9PSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9u
cy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50
KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAg
ICAgICAgaWYgKG1lc3NhZ2VOYW1lICE9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwor
ICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2Zp
bGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCSh3
b3JraW5nIGNvcHkpCkBAIC01ODgsNyArNTg4LDcgQEAKIChhbGxvdyBpcGMtcG9zaXgtc2htLXJl
YWQqCiAgICAgICAgKGlwYy1wb3NpeC1uYW1lLXByZWZpeCAiYXBwbGUuY2ZwcmVmcy4iKSkKICAK
LShhbGxvdyBtYWNoLWxvb2t1cAorKGRlbnkgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5sc2QubWFwZGIiKSkKIAogOzsgPHJkYXI6Ly9wcm9ibGVtLzEyNDEzOTQyPgpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRs
ZW1lbnRzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBAIGZ1bmN0aW9uIG1hY19w
cm9jZXNzX3dlYmNvbnRlbnRfZW50aXRsZW0KIAogICAgIGlmIFtbICIke1dLX1VTRV9SRVNUUklD
VEVEX0VOVElUTEVNRU5UU30iID09IFlFUyBdXQogICAgIHRoZW4KKyAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVT
CiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucm9vdGxlc3Muc3RvcmFnZS5XZWJL
aXRXZWJDb250ZW50U2FuZGJveCBib29sIFlFUwogICAgIGZpCiAKQEAgLTUxLDYgKzUyLDcgQEAg
ZnVuY3Rpb24gbWFjX3Byb2Nlc3NfbmV0d29ya19lbnRpdGxlbWVudAogICAgICAgICAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnRjYy5tYW5hZ2VyLmNoZWNrLWJ5LWF1ZGl0
LXRva2VuOjAgc3RyaW5nIGtUQ0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRUcmFja2luZ1ByZXZl
bnRpb24KICAgICAgICAgZmkKIAorICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5zdG9yYWdlLldlYktpdE5ldHdvcmtpbmdTYW5kYm94
IGJvb2wgWUVTCiAgICAgZmkKIH0KQEAgLTE0NCw2ICsxNDYsNyBAQCBmdW5jdGlvbiBpb3NfZmFt
aWx5X3Byb2Nlc3Nfd2ViY29udGVudF9lCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlv
biBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNw
ZWN0b3IucHJveHktYXBwbGljYXRpb24gYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJ1bm5pbmdib2FyZC5hc3NlcnRpb25zLndlYmtpdCBib29s
IFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpkeW5hbWljLWNvZGVzaWduaW5nIGJvb2wgWUVTCiAK
QEAgLTE4NCw2ICsxODcsNyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3NfbmV0d29ya19l
bnRpCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLmRtZC5wb2xpY3kgYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUubWVtb3J5c3RhdHVz
IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLm5ldHdvcmsu
c29ja2V0LWRlbGVnYXRlIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKIAog
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1i
eS1hdWRpdC10b2tlbiBhcnJheQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMgeworCitjb25zdGV4cHIgYXV0
byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRlLWxh
dW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0
ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5h
bWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiOwor
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtl
eSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0ZXhwciBh
dXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lID0gInhw
Yy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Cit9IC8vIG5hbWVz
cGFjZSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRW5kcG9pbnQgeworcHVibGljOgor
ICAgIFhQQ0VuZHBvaW50KCk7CisgICAgdmlydHVhbCB+WFBDRW5kcG9pbnQoKTsKKworICAgIHZv
aWQgc2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHhwY01lc3NhZ2VOYW1lS2V5ID0gIm1lc3NhZ2UtbmFtZSI7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1l
S2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNz
YWdlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50
TmFtZUtleSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoeHBjX2Nv
bm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSA9IDA7CisKKyAgICBPU09iamVjdFB0cjx4cGNfY29u
bmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisgICAgT1NPYmplY3RQdHI8eHBjX2VuZHBvaW50X3Q+
IG1fZW5kcG9pbnQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9YUENFbmRwb2ludC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgorCisjaW1w
b3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitY
UENFbmRwb2ludDo6WFBDRW5kcG9pbnQoKQoreworICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NP
YmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlKG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBtX2Vu
ZHBvaW50ID0gYWRvcHRPU09iamVjdCh4cGNfZW5kcG9pbnRfY3JlYXRlKG1fY29ubmVjdGlvbi5n
ZXQoKSkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rp
b24uZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgIHhwY19jb25uZWN0aW9u
X3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVz
c2FnZSkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7
CisKKyAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfQ09OTkVDVElPTikgeworICAgICAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0gbWVzc2FnZTsKKyAgICAgICAgICAgIGF1
ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9h
dWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisKKyAgICAgICAgICAgIGlmICgh
V1RGOjpoYXNFbnRpdGxlbWVudChhdWRpdFRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2Via2l0
LnVzZS14cGMtZW5kcG9pbnQiKSkgeworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXVk
aXQgdG9rZW4gZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBlbnRpdGxlbWVudCIpOworICAgICAgICAg
ICAgICAgIC8vIFVuY29tbWVudCBiZWZvcmUgbGFuZGluZzsgdGhpcyBpcyBjb21tZW50ZWQgb3V0
IGJlY2F1c2UgdGhlIGJvdHMgZG9lcyBub3Qgc2VlbSB0byByZWJ1aWxkIHRoZSBlbnRpdGxlbWVu
dHMKKyAgICAgICAgICAgICAgICAvLyByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCkpOworICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hh
bmRsZXIoY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgICAgICAg
ICBoYW5kbGVFdmVudChjb25uZWN0aW9uLCBldmVudCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0p
OworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24uZ2V0KCkpOworfQorCit2
b2lkIFhQQ0VuZHBvaW50OjpzZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uKQoreworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUo
bnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVz
c2FnZS5nZXQoKSwgeHBjRW5kcG9pbnRNZXNzYWdlTmFtZUtleSgpLCB4cGNFbmRwb2ludE1lc3Nh
Z2VOYW1lKCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtZXNzYWdlLmdldCgpLCB4
cGNFbmRwb2ludE5hbWVLZXkoKSwgbV9lbmRwb2ludC5nZXQoKSk7CisKKyAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi0+eHBjQ29ubmVjdGlvbigpLCBtZXNzYWdlLmdl
dCgpKTsKK30KKworWFBDRW5kcG9pbnQ6On5YUENFbmRwb2ludCgpCit7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBYUENFbmRwb2ludENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
WFBDRW5kcG9pbnRDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmRwb2ludCh4
cGNfZW5kcG9pbnRfdCk7CisKK3Byb3RlY3RlZDoKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVj
dGlvbl90PiBjb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUV2ZW50KHhwY19vYmplY3RfdCkgPSAwOworCisgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rp
b25fdD4gbV9jb25uZWN0aW9uOworICAgIExvY2sgbV9sb2NrOworfTsKKworfQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQubW0JKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlhQ
Q0VuZHBvaW50Q2xpZW50LmgiCisKKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgWFBDRW5kcG9pbnRDbGllbnQ6OnNldEVuZHBv
aW50KHhwY19lbmRwb2ludF90IGVuZHBvaW50KQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2Nvbm5lY3Rpb24gPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2Vu
ZHBvaW50KGVuZHBvaW50KSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVl
KG1fY29ubmVjdGlvbi5nZXQoKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9R
VUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50
X2hhbmRsZXIobV9jb25uZWN0aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBtZXNzYWdlKSB7Cisg
ICAgICAgIHhwY190eXBlX3QgdHlwZSA9IHhwY19nZXRfdHlwZShtZXNzYWdlKTsKKyAgICAgICAg
aWYgKHR5cGUgPT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgICAgIGlmIChtZXNzYWdlID09
IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgfHwgbWVzc2FnZSA9PSBYUENfRVJST1JfVEVS
TUlOQVRJT05fSU1NSU5FTlQpIHsKKyAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvY2spOworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGUg
IT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBh
dXRvIGNvbm5lY3Rpb24gPSB4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24obWVz
c2FnZSk7CisgICAgICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOworICAgICAgICB4cGNfY29ubmVjdGlvbl9n
ZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOworICAgICAgICBpZiAoIVdU
Rjo6aGFzRW50aXRsZW1lbnQoYXVkaXRUb2tlbiwgImNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51
c2UteHBjLWVuZHBvaW50IikpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXVkaXQgdG9r
ZW4gZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBlbnRpdGxlbWVudCIpOworICAgICAgICAgICAgLy8g
VW5jb21tZW50IGJlZm9yZSBsYW5kaW5nOyB0aGlzIGlzIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSB0
aGUgYm90cyBkb2VzIG5vdCBzZWVtIHRvIHJlYnVpbGQgdGhlIGVudGl0bGVtZW50cworICAgICAg
ICAgICAgLy8gcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGhhbmRsZUV2ZW50KG1lc3NhZ2Up
OworICAgIH0pOworCisgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbi5nZXQo
KSk7Cit9CisKK09TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IFhQQ0VuZHBvaW50Q2xpZW50
Ojpjb25uZWN0aW9uKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIHJl
dHVybiBtX2Nvbm5lY3Rpb247Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29h
L1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENT
ZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0
IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9D
RlV0aWxpdGllc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQ
SS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzg4
LDcgKzM4OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50
CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURh
dGFTdG9yZSogd2l0aFdlYnNpdGVEYXRhU3RvcmUgPSBudWxscHRyKTsKLSAgICBOZXR3b3JrUHJv
Y2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0
KCk7IH0KKyAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIG5ldHdvcmtQcm9jZXNz
Q3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CkBAIC01NDIsNiAr
NTQyLDExIEBAIHB1YmxpYzoKICAgICBpbnQzMl90IHVzZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlcklkOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRy
PHhwY19vYmplY3RfdD4geHBjRW5kcG9pbnRNZXNzYWdlKCkgY29uc3Q7CisgICAgdm9pZCBzZW5k
TmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2VzcyhPU09iamVjdFB0cjx4cGNfb2Jq
ZWN0X3Q+IGVuZHBvaW50TWVzc2FnZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC04MjYsNiArODMxLDEwIEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogI2VuZGlmCisK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fZW5k
cG9pbnRNZXNzYWdlOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAy
NjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NTMsNiArOTUzLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuY2hpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGF1dG8gZW5kcG9pbnRNZXNzYWdlID0gcHJvY2Vzc1Bvb2woKS54cGNFbmRw
b2ludE1lc3NhZ2UoKTsKKyAgICBpZiAoZW5kcG9pbnRNZXNzYWdlKQorICAgICAgICB4cGNfY29u
bmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksIGVuZHBv
aW50TWVzc2FnZS5nZXQoKSk7CisjZW5kaWYKKwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3dlYkNv
bm5lY3Rpb24pOwogICAgIG1fd2ViQ29ubmVjdGlvbiA9IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZSh0aGlzKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyNjM4NjEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MzQsNCArOTM0LDIzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lz
dGVySGlnaER5bmFtaWMKIH0KICNlbmRpZgogCitPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IFdl
YlByb2Nlc3NQb29sOjp4cGNFbmRwb2ludE1lc3NhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBt
X2VuZHBvaW50TWVzc2FnZTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQ
cm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBl
bmRwb2ludE1lc3NhZ2UpCit7CisgICAgbV9lbmRwb2ludE1lc3NhZ2UgPSBlbmRwb2ludE1lc3Nh
Z2U7CisKKyAgICBmb3IgKGF1dG8gcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7CisgICAgICAgIGlm
IChwcm9jZXNzLT5pc0xhdW5jaGluZygpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGlmICghcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGF1dG8gY29ubmVjdGlvbiA9IHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlv
bigpOworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbiwgZW5k
cG9pbnRNZXNzYWdlLmdldCgpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVy
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZl
bnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8WFBDRXZlbnRIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+WFBDRXZlbnRIYW5kbGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlWFBDRXZl
bnQoeHBjX29iamVjdF90KSBjb25zdCA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24g
MjYzODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dp
bi9XaW4zMkhhbmRsZS5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
ICJYUENFdmVudEhhbmRsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQpAQCAtNTcsNiArNjEsOSBAQCBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDb25maWd1cmVKU0NGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGlzSklURW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8WFBDRXZlbnRI
YW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisjZW5k
aWYKICAgICB9OwogICAgIAogICAgIGVudW0gY2xhc3MgUHJvY2Vzc1R5cGUgewpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vz
c0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzgsMTggKzIzOCwyOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgICAgIHByb2Nlc3NMYXVuY2hlci0+ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcygwLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoKSk7CiAgICAgfTsKIAotICAgIGF1dG8gZXJyb3JI
YW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpXSAo
eHBjX29iamVjdF90IGV2ZW50KSBtdXRhYmxlIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZl
bnRdIHsKLSAgICAgICAgICAgIGVycm9ySGFuZGxlckltcGwoZXZlbnQpOwotICAgICAgICB9KTsK
KyAgICBhdXRvIGV2ZW50SGFuZGxlciA9IFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJv
ckhhbmRsZXJJbXBsKSwgZXZlbnRIYW5kbGVyID0gbV9jbGllbnQtPnhwY0V2ZW50SGFuZGxlcigp
XSAoeHBjX29iamVjdF90IGV2ZW50KSBtdXRhYmxlIHsKKworICAgICAgICBpZiAoIWV2ZW50IHx8
IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JI
YW5kbGVySW1wbCksIGV2ZW50ID0gT1NPYmplY3RQdHIoZXZlbnQpXSB7CisgICAgICAgICAgICAg
ICAgZXJyb3JIYW5kbGVySW1wbChldmVudC5nZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChldmVudEhhbmRsZXIpIHsK
KyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXZlbnRIYW5kbGVyID0gZXZl
bnRIYW5kbGVyLCBldmVudCA9IE9TT2JqZWN0UHRyKGV2ZW50KV0geworICAgICAgICAgICAgICAg
IGV2ZW50SGFuZGxlci0+aGFuZGxlWFBDRXZlbnQoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KICAgICB9OwogCi0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hh
bmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBlcnJvckhhbmRsZXIpOworICAgIHhwY19jb25u
ZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1feHBjQ29ubmVjdGlvbi5nZXQoKSwgZXZlbnRIYW5k
bGVyKTsKIAogICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkp
OwogCiAgICAgaWYgKFVOTElLRUxZKG1fbGF1bmNoT3B0aW9ucy5zaG91bGRNYWtlUHJvY2Vzc0xh
dW5jaEZhaWxGb3JUZXN0aW5nKSkgewotICAgICAgICBlcnJvckhhbmRsZXIobnVsbHB0cik7Cisg
ICAgICAgIGV2ZW50SGFuZGxlcihudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2
ICs0NCwxMCBAQAogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmgi
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxl
ci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7
CiB9CkBAIC0yOTcsNiArMzAxLDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hl
cjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwg
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCBv
dmVycmlkZTsKKyNlbmRpZgogCiAgICAgdm9pZCBwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoUEFMOjpTZXNzaW9uSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsK
IApAQCAtMzI3LDYgKzMzNCwxOSBAQCBwcml2YXRlOgogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdl
YlByb2Nlc3NBc3NlcnRpb25zOwogICAgIH07CiAgICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+
IG1fdXBsb2FkQWN0aXZpdHk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGFzcyBYUENF
dmVudEhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpYUENFdmVudEhhbmRsZXIgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgWFBDRXZlbnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmKTsK
KyAgICAgICAgdmlydHVhbCB+WFBDRXZlbnRIYW5kbGVyKCk7CisKKyAgICAgICAgYm9vbCBoYW5k
bGVYUENFdmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0IG92ZXJyaWRlOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgV2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOwor
ICAgIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Q29jb2EubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0
d29ya1Byb2Nlc3NQcm94eS5oIgorCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBD
Q29uc3RhbnRzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorI2ltcG9ydCAiWFBDRW5k
cG9pbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZlB0cjxYUENFdmVudEhhbmRsZXI+
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXIoKnRo
aXMpKTsKK30KKworYm9vbCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6Omhh
bmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCBldmVudCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbmV0
d29ya1Byb2Nlc3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZXZlbnQgfHwg
eHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmlu
ZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUpCisgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPnByb2Nlc3NQb29sKCkuc2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dlYlBy
b2Nlc3MoZXZlbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJv
eHk6OlhQQ0V2ZW50SGFuZGxlcjo6WFBDRXZlbnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNz
UHJveHkmIG5ldHdvcmtQcm9jZXNzKQorICAgIDogbV9uZXR3b3JrUHJvY2VzcyhtYWtlV2Vha1B0
cihuZXR3b3JrUHJvY2VzcykpCit7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50
SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcigpCit7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYzODYx
KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTY4NCw5ICsxNjg0LDE2IEBACiAJCUMxMUE5RUNDMjE0MDM1RjgwMENG
QjIwQSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUE5RUNCMjE0MDM1RjgwMENGQjIwQSAvKiBXZWJTd2l0
Y2hpbmdHUFVDbGllbnQuaCAqLzsgfTsKIAkJQzExRTE2OTQyMTJCODdDNTAwOTg1RkY2IC8qIFdL
TW9ja0Rpc3BsYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxMUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE0OTM4MDkyMjM0NzEw
NDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8q
IFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovOyB9OworCQlDMTREMzdGRTI0QUNFMDg2MDA3
RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQg
LyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gKi87IH07CiAJCUMxNUNCQjM2MjNG
Mzc3NzEwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDVDQzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQ
cmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMTVDQkIzNzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2Vy
dmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1
Q0JCMzMyM0YzNEMzODAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLzsgfTsKKwkJ
QzE2NjNFNUIyNEFFQUEyRjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25z
dGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMx
NjYzRTVBMjRBRUE3NDIwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3Rh
bnRzLmggKi87IH07CisJCUMxNjYzRTVEMjRBRjk5MzAwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2NjNFNUMy
NEFGOTY1RDAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50LmggKi87IH07CisJCUMxNjYzRTVGMjRBRjlD
MUMwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjYzRTVFMjRBRjlDMUMwMEM2QTNCMiAvKiBYUENFbmRwb2lu
dC5tbSAqLzsgfTsKKwkJQzE3MTBDRjcyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIubW0gKi87IH07CiAJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2NSAvKiBEaXNw
bGF5TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87IH07CisJCUMxOTdG
OTY0MjRCMzYyNDQwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxOTdGOTYzMjRCMzYyNDQwMENBNzYz
OSAvKiBYUENFbmRwb2ludENsaWVudC5tbSAqLzsgfTsKKwkJQzE5N0Y5NjUyNEIzNkMyNjAwQ0E3
NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMTk3Rjk2MjI0QjM2MTk4MDBDQTc2MzkgLyogWFBDRW5kcG9pbnRD
bGllbnQuaCAqLzsgfTsKIAkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRN
ZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUx
MjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4
ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNG
NDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKIAkJQzU0MjU2QjUxOEJFQzE4QzAw
REU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0Rh
dGVUaW1lSW5wdXRDb250cm9sLmggKi87IH07CkBAIC01MDE4LDEzICs1MDI1LDI0IEBACiAJCUMx
NDkzODAyMjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMxNDkzODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENE
NzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzN0ZD
MjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE1Q0JC
MzMyM0YzNEMzODAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFByZWZlcmVuY2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzE2NjNFNUEyNEFFQTc0MjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1QzI0QUY5NjVE
MDBDNkEzQjIgLyogWFBDRW5kcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE2NjNFNUUyNEFGOUMxQzAwQzZBM0IyIC8q
IFhQQ0VuZHBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFBDRW5kcG9pbnQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBY
UENFdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRIYW5kbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEw
Q0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzVFMjA1ODM5RjYwMERGREE2NSAv
KiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYwMjA1ODQyNDcwMERGREE2
NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGluay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBERkRBNjUgLyogRGlzcGxh
eUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpbmsuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUgLyogV2ViU2xlZXBE
aXNhYmxlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzE4RkI1MUUyNDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTk3Rjk2MjI0QjM2MTk4MDBDQTc2MzkgLyog
WFBDRW5kcG9pbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnRDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE5N0Y5NjMyNEIzNjI0NDAwQ0E3NjM5IC8q
IFhQQ0VuZHBvaW50Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFBDRW5kcG9pbnRD
bGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRTEyM0I5MjBBMTE1NzIw
MDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQREZDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMUVE
NzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRy
b2xsZXJBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0NvbnRy
b2xsZXJBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUyMzdGNUYxMjQ0
MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJ
bnB1dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tEYXRlVGlt
ZUlucHV0Q29udHJvbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzODQsNiArNjQwMiw3IEBACiAJCQkJ
MkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oICov
LAogCQkJCTJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlk
ZXJSZWdpc3RyeS5oICovLAogCQkJCTJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZp
ZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLywKKwkJCQlDMTcxMENGMjI0QTdCRDAzMDBE
N0MxMTIgLyogWFBDRXZlbnRIYW5kbGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc0ODEsNiArNzUwMCw3IEBACiAJCQkJQzU1
RjkxNkQxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0gKi8sCiAJCQkJ
Q0U1NTBFMTMyMjgzNzQ0NDAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmNwcCAqLywKIAkJ
CQlDRTU1MEUxMjIyODM3M0M4MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLywKKwkJ
CQlDMTY2M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50cy5oICovLAogCQkJCTJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1l
dGVyc0NvY29hLm1tICovLAogCQkJCUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNz
VGFza1N0YXRlT2JzZXJ2ZXIuaCAqLywKIAkJCQlDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyog
UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovLApAQCAtNzUxNCw2ICs3NTM0LDEwIEBACiAJ
CQkJMzdCRjJGMDUxOTQ3REVCNDAwNzIzQzQ4IC8qIFdLTlNVUkxSZXF1ZXN0Lm1tICovLAogCQkJ
CTM3OEUxQTNGMTgxRURBMDEwMDMxMDA3QSAvKiBXS09iamVjdC5oICovLAogCQkJCTM3NDQzNjg3
MTgyMEU3MjQwMDQ5NTc5RiAvKiBXS09iamVjdC5tbSAqLywKKwkJCQlDMTY2M0U1QzI0QUY5NjVE
MDBDNkEzQjIgLyogWFBDRW5kcG9pbnQuaCAqLywKKwkJCQlDMTY2M0U1RTI0QUY5QzFDMDBDNkEz
QjIgLyogWFBDRW5kcG9pbnQubW0gKi8sCisJCQkJQzE5N0Y5NjIyNEIzNjE5ODAwQ0E3NjM5IC8q
IFhQQ0VuZHBvaW50Q2xpZW50LmggKi8sCisJCQkJQzE5N0Y5NjMyNEIzNjI0NDAwQ0E3NjM5IC8q
IFhQQ0VuZHBvaW50Q2xpZW50Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXBh
dGggPSBDb2NvYTsKQEAgLTc4NDQsNiArNzg2OCw3IEBACiAJCTUxMENDN0U3MTYxMzhFNzIwMEQw
M0VEMyAvKiBOZXR3b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlDMUVENzIzNjI0QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8sCiAJCQkJMjlBRDMw
OTExNjRCNEMxMDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1MTYzMTk5MzE2
Mjg5ODBFMDBFMjJGMDAgLyogbWFjICovLAogCQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAqLywKQEAgLTgzNzQsNiArODM5OSw4IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQlDRDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEwMEEzRENFQiAv
KiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oICovLAorCQkJCUMxNEQzN0ZDMjRBQ0RG
NDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovLAorCQkJCUMx
NEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5t
bSAqLywKIAkJCQk0NDZEQzY0QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIuaCAqLywKIAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5oICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtODQyNSw2ICs4NDUy
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEMEM1NkZCMjI5RjFERUEwMEJEMzNFNyAvKiBE
ZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCAqLywKIAkJCQkyRDBDNTZGQzIyOUYxREVBMDBCRDMz
RTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tICovLAorCQkJCUMxNzEwQ0Y1MjRBQTYz
NDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlD
MTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
Lm1tICovLAogCQkJCTUzMTU4NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlU
cmFja2VyQ29jb2EubW0gKi8sCiAJCQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdv
cmtEYXRhVGFza0NvY29hLmggKi8sCiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5l
dHdvcmtEYXRhVGFza0NvY29hLm1tICovLApAQCAtMTAyNTIsNiArMTAyODEsMTQgQEAKIAkJCXRh
YldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzFFRDcyMzYyNEE1NjhGNTAw
M0Y2Q0QzIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCUM1NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMDg1OCw2ICsxMDg5NSw3
IEBACiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQg
LyogSlNOUE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDk4NzgxMUZGN0ZBQTAwNDhC
NDY0IC8qIEpTTlBPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUMxNjYzRTVCMjRBRUFBMkYw
MEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8qIExheWVy
VHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNF
MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggaW4gSGVhZGVycyAqLywKQEAgLTExODM5LDYg
KzExODc3LDggQEAKIAkJCQkxQUQ2MEY2MDE4RTIwRjc0MDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0
dXJlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QTUwODBCRjFGMEVEQUFBMDBFNjE3
QzUgLyogV0tXaW5kb3dGZWF0dXJlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBN0Mw
REY3MUI3RDFGMTAwMEE5Qjg0OCAvKiBXS1dpbmRvd0ZlYXR1cmVzUmVmLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDMTY2M0U1RDI0QUY5OTMwMDBDNkEzQjIgLyogWFBDRW5kcG9pbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMxOTdGOTY1MjRCMzZDMjYwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRUNERTgxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1Nl
cnZpY2VFbnRyeVBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTEyNzI2LDYgKzEyNzY2LDggQEAKIAkJCQky
NzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE1ldGhv
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MjIxMkNGOUYwMDAxMjhBRkQgLyogSlNO
UE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQg
LyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlD
MTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTEx
NjU0MzE4NTAwRjMyODFDIC8qIExpYldlYlJUQ05ldHdvcmtNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0xMzA4Niw2ICsxMzEyOCw4IEBACiAJCQkJMURCMDE5NDQyMTFDRjAw
NTAwOUZCM0U4IC8qIFdLU2hhcmVTaGVldC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNzhGRjMz
MjI0MTkxOUIwMDk2NDgzRSAvKiBXS1N0b3JhZ2VBY2Nlc3NBbGVydC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNFMjEyMTYwMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSBp
biBTb3VyY2VzICovLAorCQkJCUMxNjYzRTVGMjRBRjlDMUMwMEM2QTNCMiAvKiBYUENFbmRwb2lu
dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMxOTdGOTY0MjRCMzYyNDQwMENBNzYzOSAvKiBYUENF
bmRwb2ludENsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsNiArMjkwLDEw
IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVAKIHsKICAgICBBdXhp
bGlhcnlQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIGhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMoKTsKKyNlbmRpZgor
CiAgICAgLy8gV2UgY2FsbCBfZXhpdCgpIGRpcmVjdGx5IGZyb20gdGhlIGJhY2tncm91bmQgcXVl
dWUgaW4gY2FzZSB0aGUgbWFpbiB0aHJlYWQgaXMgdW5yZXNwb25zaXZlCiAgICAgLy8gYW5kIEF1
eGlsaWFyeVByb2Nlc3M6OmRpZENsb3NlKCkgZG9lcyBub3QgZ2V0IGNhbGxlZC4KICAgICBjb25u
ZWN0aW9uLT5zZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYz
ODYxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEwLDYgKzUxMCwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSB7IHJldHVybiBtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSA6IHRydWU7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcygpIGNvbnN0OworI2VuZGlmCisKICAg
ICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFn
ZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiV2ViUGFnZS5oIgogCiAjaW1wb3J0ICJJbnNl
cnRUZXh0T3B0aW9ucy5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbXBvcnQgIkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCiAj
aW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIgpAQCAtNTYsMTIgKzU3
LDIyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg+
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxNb2JpbGVDb3Jl
U2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJl
Y2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsK
KyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkud2FpdEZvckRh
dGFiYXNlVXBkYXRlKDEwMDBfcyk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBhdXRvIHV0aSA9
IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFz
c01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKKyAgICBBU1NFUlQoIVN0cmluZyh1
dGkuZ2V0KCkpLmlzRW1wdHkoKSk7CisjZW5kaWYKKwogICAgIG1fZGF0YURldGVjdGlvbkNvbnRl
eHQgPSBwYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0OwogCiAgICAgaWYgKHBhcmFtZXRl
cnMubmVIZWxwZXJFeHRlbnNpb25IYW5kbGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIlhQQ0VuZHBvaW50Q2xp
ZW50LmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgWFBDRW5kcG9pbnRDbGllbnQgewor
cHVibGljOgorICAgIHN0YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciYgc2luZ2xl
dG9uKCk7CisKKyAgICB2b2lkIHNldEVuZHBvaW50KHhwY19lbmRwb2ludF90KSBvdmVycmlkZTsK
KworICAgIGJvb2wgd2FpdEZvckRhdGFiYXNlVXBkYXRlKFNlY29uZHMpOworCitwcml2YXRlOgor
ICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90KSBvdmVycmlkZTsKKworICAgIHN0ZDo6
YXRvbWljPGJvb2w+IG1faGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIHsgZmFsc2Ug
fTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7Cit9OworCit9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorCisjaW1wb3J0ICJM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0ICJYUENFbmRwb2lu
dC5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9y
dCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBD
U1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFu
YWdlciYgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyPiBtYW5h
Z2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyOjpzZXRFbmRwb2ludCh4cGNfZW5kcG9pbnRfdCBlbmRwb2ludCkKK3sK
KyAgICBYUENFbmRwb2ludENsaWVudDo6c2V0RW5kcG9pbnQoZW5kcG9pbnQpOworCisgICAgYXV0
byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwg
bnVsbHB0ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQo
KSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
WFBDQ29uc3RhbnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3Nh
Z2VOYW1lKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uKCku
Z2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VN
YW5hZ2VyOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3QgbWVzc2FnZSkKK3sKKyAgICBTdHJpbmcg
bWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1lc3NhZ2UsIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2Fn
ZU5hbWUpIHsKKyAgICAgICAgYXV0byBkYXRhYmFzZSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1
ZShtZXNzYWdlLCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlS2V5KTsKKyAgICAgICAgaWYgKGRhdGFiYXNlKSB7CisgICAgICAgICAg
ICBhdXRvIGNvbnRleHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIp
IHNoYXJlZERhdGFiYXNlQ29udGV4dF07CisgICAgICAgICAgICBpZiAoIVtjb250ZXh0IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDopXSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBbY29udGV4dCBvYnNlcnZlRGF0
YWJhc2VDaGFuZ2U0V2ViS2l0OmRhdGFiYXNlXTsKKyAgICAgICAgfQorICAgICAgICBtX3NlbWFw
aG9yZS5zaWduYWwoKTsKKyAgICAgICAgbV9oYXNSZWNlaXZlZExhdW5jaFNlcnZpY2VzRGF0YWJh
c2UgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
cjo6d2FpdEZvckRhdGFiYXNlVXBkYXRlKFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBpZiAobV9o
YXNSZWNlaXZlZExhdW5jaFNlcnZpY2VzRGF0YWJhc2UpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBtX3NlbWFwaG9yZS53YWl0Rm9yKHRpbWVvdXQpOworfQorCit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0J
KHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbXBvcnQg
IldlYlByb2Nlc3MuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDb2NvYS5oIgogCisjaW1wb3J0ICJM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0NvbnN0YW50cy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgiCiAjaW1wb3J0ICJMb2dJbml0aWFsaXphdGlvbi5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtNDgsNiArNTAsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvQ29uZmlnRmlsZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3B0aW9u
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgpAQCAtMTYxLDI1
ICsxNjQsMzIgQEAgc3RhdGljIGlkIE5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdQogfQog
I2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJQcm9jZXNz
OjpoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3QKIHsKLSAgICAvLyBNYXAgTGF1bmNo
IFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBiZSBkb25lIGFzIGVhcmx5IGFzIHBvc3Np
YmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAgICAvLyBpZiAnY29tLmFwcGxlLmxzZC5t
YXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMuCi0gICAgaWYgKHBhcmFtZXRlcnMu
bWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAgYXV0byBleHRlbnNpb24gPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRs
ZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8gUGVyZm9ybSBBUEkgY2FsbHMgd2hpY2gg
d2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZSBtYXBwaW5nIHNlcnZpY2UsIGFuZCBt
YXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4
dC9odG1sIiksIDApKTsKKyAgICBpZiAoIXBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpCisgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBbW29iamNfZ2V0Q2xhc3MoIl9MU0RSZWFkU2VydmljZSIp
IFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFsaWRhdGVdOworICAgIGF1dG8gY29ubmVjdGlv
biA9IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKTsKIAotICAgICAg
ICBvayA9IGV4dGVuc2lvbi0+cmV2b2tlKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9r
KTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRpc3Bh
dGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCkp
OworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24sIF4oeHBj
X29iamVjdF90IGV2ZW50KSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUoZXZlbnQpICE9IFhQ
Q19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQVNTRVJU
KFN0cmluZyh1dGkuZ2V0KCkpID09IFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIp
LCAwKSkuZ2V0KCkpKTsKLSAgICB9CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19k
aWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtl
eSk7CisgICAgICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm47CiAKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VO
YW1lKSB7CisgICAgICAgICAgICBhdXRvIGVuZHBvaW50ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3Zh
bHVlKGV2ZW50LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5KTsKKyAgICAgICAgICAgIExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRFbmRwb2ludChlbmRwb2ludCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9KTsKK30KKwordm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eShwYXJhbWV0ZXJzLndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6aW5pdGlh
bGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5nQ2hhbm5l
bHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403603</attachid>
            <date>2020-07-06 11:55:50 -0700</date>
            <delta_ts>2020-07-06 14:32:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200706115545.patch</filename>
            <type>text/plain</type>
            <size>72253</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
Y2xhcmUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgeHBjIGVuZHBvaW50LCBhcyB3ZWxsIGFzIGEgZnVu
Y3Rpb24gdG8gY3JlYXRlIGEgY29ubmVjdGlvbiBmcm9tIGFuIGVuZHBvaW50LgorCisgICAgICAg
ICogd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24g
YWNjZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBD
U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lk
IF94cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2
b2lkKiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAog
I2RlZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2
ICsxMjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29s
IHhwY19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9j
YW5jZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9u
X2NyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19lbmRwb2lu
dF90IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29ubmVjdGlv
bl90IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2ludF90KTsK
IHhwY19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25z
dCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBwaWRfdCB4
cGNfY29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNfY29ubmVj
dGlvbl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNi0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2Vz
IGRhdGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWNs
YXJlIGludGVyZmFjZSBmb3Igb2JzZXJ2aW5nIGFuZCBjb25zdW1pbmcgdGhlIExhdW5jaCBTZXJ2
aWNlcyBkYXRhYmFzZS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNT
UEkuaDoKKwogMjAyMC0wNy0wMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBVcHN0cmVhbSBhcHBsaWNhdGlvbiBhY2NlbnQgY29sb3Igc3VwcG9ydApJ
bmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hT
ZXJ2aWNlc1NQSS5oCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSAr
MjUsMTQgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKKyNpbmNsdWRl
IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2Vz
UHJpdi5oPgogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPENvcmVTZXJ2aWNl
cy9MU0RhdGFiYXNlQ29udGV4dFByaXYuaD4KICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9M
U0FwcExpbmtQcml2Lmg+CiAjZWxpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxNb2JpbGVDb3Jl
U2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzUHJpdi5oPgpAQCAtODUsMTEgKzg4LDE0IEBAIGVu
dW0gTFNTZXNzaW9uSUQgewogCiAjZW5kaWYgLy8gIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAK
LUBpbnRlcmZhY2UgX0xTRFNlcnZpY2UgOiBOU09iamVjdCA8TlNYUENMaXN0ZW5lckRlbGVnYXRl
PgotKyAoTlNYUENDb25uZWN0aW9uICopWFBDQ29ubmVjdGlvblRvU2VydmljZTsKK0BpbnRlcmZh
Y2UgTFNEYXRhYmFzZUNvbnRleHQgOiBOU09iamVjdAorQHByb3BlcnR5IChjbGFzcywgcmVhZG9u
bHkpIExTRGF0YWJhc2VDb250ZXh0ICpzaGFyZWREYXRhYmFzZUNvbnRleHQ7CiBAZW5kCiAKLUBp
bnRlcmZhY2UgX0xTRFJlYWRTZXJ2aWNlIDogX0xTRFNlcnZpY2UKK0BpbnRlcmZhY2UgTFNEYXRh
YmFzZUNvbnRleHQgKFdlYktpdENoYW5nZVRyYWNraW5nKQorLSAoaWQgPE5TT2JqZWN0PilhZGRE
YXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDoodm9pZCAoXikoeHBjX29iamVjdF90IGNoYW5n
ZSkpb2JzZXJ2ZXI7CistICh2b2lkKXJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0
OihpZCA8TlNPYmplY3Q+KXRva2VuOworLSAodm9pZClvYnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2Vi
S2l0Oih4cGNfb2JqZWN0X3QpY2hhbmdlOwogQGVuZAogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzk3NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODggQEAKKzIwMjAtMDctMDYgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXBkYXRlIExhdW5jaCBT
ZXJ2aWNlcyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhlIE5ldHdv
cmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzNzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVG8gYmUgYWJsZSB0byBkZW55IG1hY2ggbG9va3VwIGFjY2VzcyB0byB0aGUgTGF1bmNoIFNl
cnZpY2VzIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNz
LCB0aGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUKKyAgICAgICAgc2VudCBmcm9tIHRoZSBOZXR3b3Jr
aW5nIHByb2Nlc3MgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcywgcmVwcmVzZW50ZWQgYnkgYSB4
cGMgb2JqZWN0LiBUaGUgTmV0d29ya2luZyBwcm9jZXNzIGlzIGNob3NlbiBpbnN0ZWFkIG9mIHRo
ZSBVSQorICAgICAgICBwcm9jZXNzLCBzaW5jZSBXZWJLaXQgaXMgY29udHJvbGxpbmcgdGhlIHNh
bmRib3ggb2YgdGhlIE5ldHdvcmtpbmcgcHJvY2Vzcy4gVGhlcmUgaXMgYWxyZWFkeSBhIGRpcmVj
dCBjb25uZWN0aW9uIGJldHdlZW4gdGhlIE5ldHdvcmtpbmcKKyAgICAgICAgcHJvY2VzcyBhbmQg
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcywgYnV0IHRoaXMgaXMgYSBDb3JlSVBDIGNvbm5lY3Rpb24u
IFNpbmNlIHRoZSBkYXRhYmFzZSBpcyByZXByZXNlbnRlZCBieSBhIHhwYyBvYmplY3QsIGEgeHBj
IGNvbm5lY3Rpb24KKyAgICAgICAgaXMgcmVxdWllcmVkIHRvIHRyYW5zZmVyIHRoZSBkYXRhYmFz
ZS4gVGhpcyBwYXRjaCBjcmVhdGVzIGEgZGlyZWN0IHhwYyBjb25uZWN0aW9uIGJldHdlZW4gdGhl
IE5ldHdvcmtpbmcgcHJvY2VzcyBhbmQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcywKKyAgICAgICAg
YnkgY3JlYXRpbmcgYSB4cGMgZW5kcG9pbnQgaW4gdGhlIE5ldHdvcmtpbmcgcHJvY2Vzcywgc2Vu
ZGluZyB0aGlzIHRvIHRoZSBVSSBwcm9jZXNzIG92ZXIgdGhlIGJvb3RzdHJhcCB4cGMgY29ubmVj
dGlvbiwgYW5kIHRoZW4gcHJvdmlkaW5nCisgICAgICAgIGVhY2ggV2ViQ29udGVudCBwcm9jZXNz
IHdpdGggdGhpcyBlbmRwb2ludCBieSBzZW5kaW5nIGl0IG92ZXIgdGhlIGJvb3RzdHJhcCB4cGMg
Y29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBVSSBwcm9jZXNzIGFuZCB0aGUgV2ViQ29udGVudCBwcm9j
ZXNzLgorICAgICAgICBXaGVuIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgcmVjZWl2ZXMgdGhlIGVu
ZHBvaW50LCBpdCB3aWxsIGNyZWF0ZSBhIHhwYyBjb25uZWN0aW9uIGZyb20gdGhlIGVuZHBvaW50
LCB3aGljaCB3aWxsIGNyZWF0ZSBhIGRpcmVjdCBjb25uZWN0aW9uCisgICAgICAgIHdpdGggdGhl
IE5ldHdvcmtpbmcgcHJvY2Vzcy4gQSBtZXNzYWdlIGlzIHRoZW4gc2VudCBvdmVyIHRoZSBjb25u
ZWN0aW9uIHRvIHJlcXVlc3QgdGhlIGRhdGFiYXNlIHhwYyBvYmplY3QuIFdoZW4gdGhlIE5ldHdv
cmtpbmcgcHJvY2VzcworICAgICAgICByZWNlaXZlcyB0aGlzIG1lc3NhZ2UsIGl0IGNoZWNrcyB0
aGUgZW50aXRsZW1lbnQgb2YgdGhlIHJlbW90ZSBlbmQgdG8gbWFrZSBzdXJlIGl0IGlzIGNvbW11
bmljYXRpbmcgd2l0aCBhIFdlYkNvbnRlbnQgcHJvY2VzcywgYW5kIHRoZW4gc2VuZHMKKyAgICAg
ICAgdGhlIGRhdGFiYXNlIGlmIHRoZSBlbnRpdGxlbWVudCBjaGVjayBzdWNjZWVkcy4gV2hlbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzIHJlY2VpdmVzIHRoaXMgbWVzc2FnZSwgaXQgcGVyZm9ybXMg
YW4gZW50aXRsZW1lbnQgY2hlY2sgYXMgd2VsbCwKKyAgICAgICAgYW5kIGlmIHN1Y2Nlc3NmdWws
IHRoZSBkYXRhYmFzZSBvYmplY3QgaXMgY29uc3VtZWQuIENvbnN1bWluZyB0aGlzIGRhdGFiYXNl
IG9iamVjdCwgd2lsbCBtYWtlIHN1cmUgVVRJIHRvIE1JTUUgdHlwZSBtYXBwaW5nIGlzIHdvcmtp
bmcKKyAgICAgICAgY29ycmVjdGx5IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGVyZSBhbHJlYWR5IGV4aXN0IHRlc3RzIGZvciB0aGlz
LiBVVEkgdG8gTUlNRSB0eXBlIG1hcHBpbmcgaXMgYmVpbmcgdXNlZCBpbiBXZWJLaXQgYW5kIHVu
ZGVybHlpbmcgZnJhbWV3b3JrLCBhbmQgbWFueQorICAgICAgICB0ZXN0cyB3b3VsZCBmYWlsIGlm
IHRoaXMgbWFwcGluZyB3YXMgbm90IHdvcmtpbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpp
bml0aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xldG9u
KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
Ojp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNF
bmRwb2ludE5hbWVLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBSZXNvdXJjZXMvU2FuZGJv
eFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I6CisgICAgICAgICog
U2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0NvY29h
L1hQQ0VuZHBvaW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6WFBDRW5kcG9pbnQ6OlhQ
Q0VuZHBvaW50KToKKyAgICAgICAgKFdlYktpdDo6WFBDRW5kcG9pbnQ6OnNlbmRFbmRwb2ludFRv
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlhQQ0VuZHBvaW50Ojp+WFBDRW5kcG9pbnQp
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6WFBDRW5kcG9pbnRDbGllbnQ6On5YUENFbmRwb2ludENsaWVudCk6Cisg
ICAgICAgICogU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6WFBDRW5kcG9pbnRDbGllbnQ6OnNldEVuZHBvaW50KToKKyAgICAgICAgKFdl
YktpdDo6WFBDRW5kcG9pbnRDbGllbnQ6OmNvbm5lY3Rpb24pOgorICAgICAgICAqIFNoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Onhw
Y0VuZHBvaW50TWVzc2FnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpzZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2Vzcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6Q2xpZW50Ojp4cGNFdmVudEhhbmRsZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRI
YW5kbGVyOjpYUENFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpYUENFdmVudEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaGluZyk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6
TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmRpZENvbm5lY3QpOgorICAgICAg
ICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6d2FpdEZvckRhdGFiYXNl
VXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorCiAyMDIwLTA3LTA2ICBIYWVsd2VubiAobGFub2RhbikgTW9ubmllciAgPGNv
bnRhY3RAaGFja3RpdmlzLm1lPgogCiAgICAgICAgIEJ1YmJsZXdyYXBMYXVuY2hlci5jcHA6IEFk
ZCBwYXRocyByZXF1aXJlZCBmb3Igc25kaW8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSw4IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYklu
c3BlY3RvclByb3gKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yV0tXZWJWaWV3Lm1t
CiAKK1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQorCiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNiArOTcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUNvZGVycy5oIgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2VuZGlmCiAKQEAgLTM4Niw2
ICszODcsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpbwogewog
ICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
OjpzaW5nbGV0b24oKS5zZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24oY29ubmVjdGlvbik7CisjZW5k
aWYKKwogICAgIC8vIFdlIGdpdmUgYSBjaGFuY2UgZm9yIGRpZENsb3NlKCkgdG8gZ2V0IGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IGZvcmNlZnVsbHkgY2FsbCBfZXhpdCgpIGFmdGVyIGEg
ZGVsYXkKICAgICAvLyBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUgb3Ig
ZGlkQ2xvc2UoKSB0YWtlcyB0b28gbG9uZy4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0U29vbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiWFBDRW5kcG9pbnQuaCIK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIgOiBwdWJsaWMgWFBDRW5kcG9p
bnQgeworICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI+OworcHVibGljOgorICAgIHN0YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXImIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlcigpOworICAgIHZpcnR1YWwgfkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigp
OworCisgICAgdm9pZCBzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
Pik7CisKKyAgICAvLyBYUENFbmRwb2ludAorICAgIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TWVz
c2FnZU5hbWVLZXkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiB4cGNFbmRwb2lu
dE1lc3NhZ2VOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9p
bnROYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfY29u
bmVjdGlvbl90LCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPGlkPiBt
X29ic2VydmVyOworICAgIFZlY3RvcjxPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pj4gbV9j
b25uZWN0aW9uczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCIKKworI2ltcG9ydCAiTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVu
Y2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorI2lt
cG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcj4gb2JzZXJ2ZXI7CisgICAgcmV0dXJuIG9ic2VydmVy
OworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5n
KEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgIGlmICgh
W2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNoYW5nZU9i
c2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vYnNlcnZlciA9IFtj
b250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNo
YW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9u
YXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5
LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBj
TGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKQorICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgIH1dOwor
fQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmco
T1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbikKK3sKKyAgICBtX2Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKKworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNz
RnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsK
KyAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJh
c2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRv
cHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwor
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPGlkPiBvYnNlcnZl
ciA9IFtjb250ZXh0IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVj
dF90IGNoYW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19k
aWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0
aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VO
YW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICB4cGNf
Y29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7
CisgICAgfV07CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdl
YktpdDpvYnNlcnZlci5nZXQoKV07Cit9CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cjo6fkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpCit7CisgICAgYXV0byBjb250ZXh0
ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFz
ZUNvbnRleHRdOworCisgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OildKQorICAgICAgICByZXR1
cm47CisKKyAgICBbY29udGV4dCByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpt
X29ic2VydmVyLmdldCgpXTsKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4geHBjTWVzc2FnZU5hbWVLZXk7Cit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lOworfQorCitjb25zdCBjaGFyKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXk7Cit9CisKK3ZvaWQgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24sIHhwY19vYmplY3RfdCBldmVudCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9
PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICBpZiAoZXZlbnQgIT0gWFBDX0VSUk9SX0NPTk5F
Q1RJT05fSU5WQUxJRCAmJiBldmVudCAhPSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2Nvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9u
c1tpXS5nZXQoKSA9PSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9u
cy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50
KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAg
ICAgICAgaWYgKG1lc3NhZ2VOYW1lICE9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwor
ICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2Zp
bGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCSh3
b3JraW5nIGNvcHkpCkBAIC01ODgsNyArNTg4LDcgQEAKIChhbGxvdyBpcGMtcG9zaXgtc2htLXJl
YWQqCiAgICAgICAgKGlwYy1wb3NpeC1uYW1lLXByZWZpeCAiYXBwbGUuY2ZwcmVmcy4iKSkKICAK
LShhbGxvdyBtYWNoLWxvb2t1cAorKGRlbnkgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5sc2QubWFwZGIiKSkKIAogOzsgPHJkYXI6Ly9wcm9ibGVtLzEyNDEzOTQyPgpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRs
ZW1lbnRzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBAIGZ1bmN0aW9uIG1hY19w
cm9jZXNzX3dlYmNvbnRlbnRfZW50aXRsZW0KIAogICAgIGlmIFtbICIke1dLX1VTRV9SRVNUUklD
VEVEX0VOVElUTEVNRU5UU30iID09IFlFUyBdXQogICAgIHRoZW4KKyAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVT
CiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucm9vdGxlc3Muc3RvcmFnZS5XZWJL
aXRXZWJDb250ZW50U2FuZGJveCBib29sIFlFUwogICAgIGZpCiAKQEAgLTUxLDYgKzUyLDcgQEAg
ZnVuY3Rpb24gbWFjX3Byb2Nlc3NfbmV0d29ya19lbnRpdGxlbWVudAogICAgICAgICAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnRjYy5tYW5hZ2VyLmNoZWNrLWJ5LWF1ZGl0
LXRva2VuOjAgc3RyaW5nIGtUQ0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRUcmFja2luZ1ByZXZl
bnRpb24KICAgICAgICAgZmkKIAorICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5zdG9yYWdlLldlYktpdE5ldHdvcmtpbmdTYW5kYm94
IGJvb2wgWUVTCiAgICAgZmkKIH0KQEAgLTE0NCw2ICsxNDYsNyBAQCBmdW5jdGlvbiBpb3NfZmFt
aWx5X3Byb2Nlc3Nfd2ViY29udGVudF9lCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlv
biBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNw
ZWN0b3IucHJveHktYXBwbGljYXRpb24gYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJ1bm5pbmdib2FyZC5hc3NlcnRpb25zLndlYmtpdCBib29s
IFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpkeW5hbWljLWNvZGVzaWduaW5nIGJvb2wgWUVTCiAK
QEAgLTE4NCw2ICsxODcsNyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3NfbmV0d29ya19l
bnRpCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLmRtZC5wb2xpY3kgYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUubWVtb3J5c3RhdHVz
IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLm5ldHdvcmsu
c29ja2V0LWRlbGVnYXRlIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKIAog
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1i
eS1hdWRpdC10b2tlbiBhcnJheQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMgeworCitjb25zdGV4cHIgYXV0
byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRlLWxh
dW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0
ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5h
bWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiOwor
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtl
eSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0ZXhwciBh
dXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lID0gInhw
Yy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Cit9IC8vIG5hbWVz
cGFjZSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRW5kcG9pbnQgeworcHVibGljOgor
ICAgIFhQQ0VuZHBvaW50KCk7CisgICAgdmlydHVhbCB+WFBDRW5kcG9pbnQoKTsKKworICAgIHZv
aWQgc2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHhwY01lc3NhZ2VOYW1lS2V5ID0gIm1lc3NhZ2UtbmFtZSI7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1l
S2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNz
YWdlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50
TmFtZUtleSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoeHBjX2Nv
bm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSA9IDA7CisKKyAgICBPU09iamVjdFB0cjx4cGNfY29u
bmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisgICAgT1NPYmplY3RQdHI8eHBjX2VuZHBvaW50X3Q+
IG1fZW5kcG9pbnQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UENFbmRwb2ludC5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9YUENFbmRwb2ludC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgorCisjaW1w
b3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitY
UENFbmRwb2ludDo6WFBDRW5kcG9pbnQoKQoreworICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NP
YmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlKG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBtX2Vu
ZHBvaW50ID0gYWRvcHRPU09iamVjdCh4cGNfZW5kcG9pbnRfY3JlYXRlKG1fY29ubmVjdGlvbi5n
ZXQoKSkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rp
b24uZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgIHhwY19jb25uZWN0aW9u
X3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVz
c2FnZSkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7
CisKKyAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfQ09OTkVDVElPTikgeworICAgICAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0gbWVzc2FnZTsKKyAgICAgICAgICAgIGF1
ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9h
dWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisKKyAgICAgICAgICAgIGlmICgh
V1RGOjpoYXNFbnRpdGxlbWVudChhdWRpdFRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2Via2l0
LnVzZS14cGMtZW5kcG9pbnQiKSkgeworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXVk
aXQgdG9rZW4gZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBlbnRpdGxlbWVudCIpOworICAgICAgICAg
ICAgICAgIC8vIFVuY29tbWVudCBiZWZvcmUgbGFuZGluZzsgdGhpcyBpcyBjb21tZW50ZWQgb3V0
IGJlY2F1c2UgdGhlIGJvdHMgZG9lcyBub3Qgc2VlbSB0byByZWJ1aWxkIHRoZSBlbnRpdGxlbWVu
dHMKKyAgICAgICAgICAgICAgICAvLyByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCkpOworICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hh
bmRsZXIoY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgICAgICAg
ICBoYW5kbGVFdmVudChjb25uZWN0aW9uLCBldmVudCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0p
OworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24uZ2V0KCkpOworfQorCit2
b2lkIFhQQ0VuZHBvaW50OjpzZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uKQoreworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUo
bnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVz
c2FnZS5nZXQoKSwgeHBjRW5kcG9pbnRNZXNzYWdlTmFtZUtleSgpLCB4cGNFbmRwb2ludE1lc3Nh
Z2VOYW1lKCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtZXNzYWdlLmdldCgpLCB4
cGNFbmRwb2ludE5hbWVLZXkoKSwgbV9lbmRwb2ludC5nZXQoKSk7CisKKyAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi0+eHBjQ29ubmVjdGlvbigpLCBtZXNzYWdlLmdl
dCgpKTsKK30KKworWFBDRW5kcG9pbnQ6On5YUENFbmRwb2ludCgpCit7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBYUENFbmRwb2ludENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
WFBDRW5kcG9pbnRDbGllbnQoKSB7IH0KKworICAgIHZvaWQgc2V0RW5kcG9pbnQoeHBjX2VuZHBv
aW50X3QpOworCitwcm90ZWN0ZWQ6CisgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4g
Y29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudCh4
cGNfb2JqZWN0X3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpID0gMDsKKwor
ICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyAgICBMb2Nr
IG1fbG9jazsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0Vu
ZHBvaW50Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hQQ0VuZHBvaW50Q2xpZW50Lm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
ODEgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludENsaWVudC5oIgorCisjaW1wb3J0
IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IFhQQ0VuZHBvaW50Q2xpZW50OjpzZXRFbmRwb2ludCh4cGNfZW5kcG9pbnRfdCBlbmRwb2ludCkK
K3sKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICAgICAg
aWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2Nvbm5l
Y3Rpb24gPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50
KGVuZHBvaW50KSk7CisKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZSht
X2Nvbm5lY3Rpb24uZ2V0KCksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVF
VUVfUFJJT1JJVFlfREVGQVVMVCwgMCkpOworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZl
bnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0KCksIF4oeHBjX29iamVjdF90IG1lc3NhZ2UpIHsK
KyAgICAgICAgICAgIHhwY190eXBlX3QgdHlwZSA9IHhwY19nZXRfdHlwZShtZXNzYWdlKTsKKyAg
ICAgICAgICAgIGlmICh0eXBlID09IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgICAgICAgICAg
aWYgKG1lc3NhZ2UgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCB8fCBtZXNzYWdlID09
IFhQQ19FUlJPUl9URVJNSU5BVElPTl9JTU1JTkVOVCkgeworICAgICAgICAgICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rp
b24gPSBudWxscHRyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodHlwZSAhPSBYUENfVFlQRV9ESUNUSU9O
QVJZKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBjb25uZWN0
aW9uID0geHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKG1lc3NhZ2UpOworICAg
ICAgICAgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKKyAgICAgICAgICAgIHhwY19jb25uZWN0
aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisgICAgICAgICAg
ICBpZiAoIVdURjo6aGFzRW50aXRsZW1lbnQoYXVkaXRUb2tlbiwgImNvbS5hcHBsZS5wcml2YXRl
LndlYmtpdC51c2UteHBjLWVuZHBvaW50IikpIHsKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIkF1ZGl0IHRva2VuIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgZW50aXRsZW1lbnQiKTsKKyAg
ICAgICAgICAgICAgICAvLyBVbmNvbW1lbnQgYmVmb3JlIGxhbmRpbmc7IHRoaXMgaXMgY29tbWVu
dGVkIG91dCBiZWNhdXNlIHRoZSBib3RzIGRvZXMgbm90IHNlZW0gdG8gcmVidWlsZCB0aGUgZW50
aXRsZW1lbnRzCisgICAgICAgICAgICAgICAgLy8gcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaGFuZGxlRXZlbnQobWVzc2FnZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHhw
Y19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24uZ2V0KCkpOworICAgIH0KKworICAgIGRp
ZENvbm5lY3QoKTsKK30KKworT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gWFBDRW5kcG9p
bnRDbGllbnQ6OmNvbm5lY3Rpb24oKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbjsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWlu
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkocmV2aXNpb24gMjYzODYxKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjM4NjEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1h
bmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhX
ZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHIpOwotICAgIE5l
dHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJv
Y2Vzcy5nZXQoKTsgfQorICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKQEAg
LTU0Miw2ICs1NDIsMTEgQEAgcHVibGljOgogICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VySWQ7IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgT1NP
YmplY3RQdHI8eHBjX29iamVjdF90PiB4cGNFbmRwb2ludE1lc3NhZ2UoKSBjb25zdDsKKyAgICB2
b2lkIHNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKE9TT2JqZWN0UHRy
PHhwY19vYmplY3RfdD4gZW5kcG9pbnRNZXNzYWdlKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgyNiw2ICs4MzEsMTAgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3Rf
dD4gbV9lbmRwb2ludE1lc3NhZ2U7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1Myw2ICs5NTMsMTIgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBlbmRwb2ludE1lc3NhZ2UgPSBwcm9jZXNzUG9vbCgp
LnhwY0VuZHBvaW50TWVzc2FnZSgpOworICAgIGlmIChlbmRwb2ludE1lc3NhZ2UpCisgICAgICAg
IHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24o
KSwgZW5kcG9pbnRNZXNzYWdlLmdldCgpKTsKKyNlbmRpZgorCiAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fd2ViQ29ubmVjdGlvbik7CiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI2Mzg2
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNCw0ICs5MzQsMjMgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJIaWdoRHluYW1pYwogfQogI2VuZGlmCiAKK09TT2JqZWN0UHRyPHhwY19vYmpl
Y3RfdD4gV2ViUHJvY2Vzc1Bvb2w6OnhwY0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fZW5kcG9pbnRNZXNzYWdlOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5k
TmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2VzcyhPU09iamVjdFB0cjx4cGNfb2Jq
ZWN0X3Q+IGVuZHBvaW50TWVzc2FnZSkKK3sKKyAgICBtX2VuZHBvaW50TWVzc2FnZSA9IGVuZHBv
aW50TWVzc2FnZTsKKworICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAg
ICAgICAgaWYgKHByb2Nlc3MtPmlzTGF1bmNoaW5nKCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKCFwcm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGND
b25uZWN0aW9uKCk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0
aW9uLCBlbmRwb2ludE1lc3NhZ2UuZ2V0KCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVu
dEhhbmRsZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9YUENFdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxYUENFdmVudEhhbmRsZXI+IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVYUENFdmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0ID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShy
ZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRl
IDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCkBAIC01Nyw2ICs2MSw5IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmly
dHVhbCBib29sIHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxY
UENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KKyNlbmRpZgogICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIzOCwxOCArMjM4LDI4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICAgICAgcHJvY2Vzc0xhdW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9j
ZXNzKDAsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKICAgICB9OwogCi0gICAgYXV0
byBlcnJvckhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVy
SW1wbCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlcklt
cGwpLCBldmVudF0gewotICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7Ci0gICAg
ICAgIH0pOworICAgIGF1dG8gZXZlbnRIYW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZN
b3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudEhhbmRsZXIgPSBtX2NsaWVudC0+eHBjRXZlbnRI
YW5kbGVyKCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgeworCisgICAgICAgIGlmICgh
ZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92
ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnQgPSBPU09iamVjdFB0cihldmVudCldIHsKKyAgICAg
ICAgICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV2ZW50SGFu
ZGxlcikgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtldmVudEhhbmRs
ZXIgPSBldmVudEhhbmRsZXIsIGV2ZW50ID0gT1NPYmplY3RQdHIoZXZlbnQpXSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRIYW5kbGVyLT5oYW5kbGVYUENFdmVudChldmVudC5nZXQoKSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH07CiAKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRf
ZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGVycm9ySGFuZGxlcik7CisgICAg
eHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBl
dmVudEhhbmRsZXIpOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlv
bi5nZXQoKSk7CiAKICAgICBpZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQ
cm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcpKSB7Ci0gICAgICAgIGVycm9ySGFuZGxlcihudWxs
cHRyKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyKG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZl
bnRIYW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJl
ZmVyZW5jZTsKIH0KQEAgLTI5Nyw2ICszMDEsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUHJvY2Vz
c0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1
bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigp
IGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHk+JiYpOwogCkBAIC0zMjcsNiArMzM0LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIEhhc2hNYXA8
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0
aW9uPj4gd2ViUHJvY2Vzc0Fzc2VydGlvbnM7CiAgICAgfTsKICAgICBPcHRpb25hbDxVcGxvYWRB
Y3Rpdml0eT4gbV91cGxvYWRBY3Rpdml0eTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNs
YXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7Cisg
ICAgcHVibGljOgorICAgICAgICBYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQ
cm94eSYpOworICAgICAgICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKTsKKworICAgICAgICBi
b29sIGhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBXZWFrUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1By
b2Nlc3M7CisgICAgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHlDb2NvYS5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0
ICJYUENFbmRwb2ludC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmUHRyPFhQQ0V2ZW50
SGFuZGxlcj4gTmV0d29ya1Byb2Nlc3NQcm94eTo6eHBjRXZlbnRIYW5kbGVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFu
ZGxlcigqdGhpcykpOworfQorCitib29sIE5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFu
ZGxlcjo6aGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90IGV2ZW50KSBjb25zdAoreworICAgIGlm
ICghbV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFl
dmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKGV2ZW50LCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOworICAgIGlm
IChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSkKKyAgICAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2lu
dFRvV2ViUHJvY2VzcyhldmVudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTmV0d29ya1By
b2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29y
a1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3MpCisgICAgOiBtX25ldHdvcmtQcm9jZXNzKG1h
a2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNzKSkKK3sKK30KKworTmV0d29ya1Byb2Nlc3NQcm94eTo6
WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRIYW5kbGVyKCkKK3sKK30KKworfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg0LDkgKzE2ODQsMTYgQEAKIAkJQzExQTlFQ0MyMTQw
MzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExQTlFQ0IyMTQwMzVGODAwQ0ZCMjBBIC8q
IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oICovOyB9OwogCQlDMTFFMTY5NDIxMkI4N0M1MDA5ODVG
RjYgLyogV0tNb2NrRGlzcGxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzExRTE2OTIyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTQ5Mzgw
OTIyMzQ3MTA0MDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ5MzgwMjIyMzQxQzYwMDAw
Q0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggKi87IH07CisJCUMxNEQzN0ZFMjRB
Q0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNEQzN0ZEMjRBQ0UwODYw
MDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLzsgfTsKIAkJQzE1
Q0JCMzYyM0YzNzc3MTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0NUNDMEUyM0RDQTQyNzAwM0E1
RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUMxNUNCQjM3MjNGMzdFQ0IwMDMwMENDNyAvKiBQcmVmZXJl
bmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICov
OyB9OworCQlDMTY2M0U1QjI0QUVBQTJGMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZVhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE2NjNFNUEyNEFFQTc0MjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHMuaCAqLzsgfTsKKwkJQzE2NjNFNUQyNEFGOTkzMDAwQzZBM0IyIC8qIFhQQ0Vu
ZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MTY2M0U1QzI0QUY5NjVEMDBDNkEzQjIgLyogWFBDRW5kcG9pbnQuaCAqLzsgfTsKKwkJQzE2NjNF
NUYyNEFGOUMxQzAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2NjNFNUUyNEFGOUMxQzAwQzZBM0IyIC8qIFhQ
Q0VuZHBvaW50Lm1tICovOyB9OworCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLzsgfTsKIAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1
IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsK
KwkJQzE5N0Y5NjQyNEIzNjI0NDAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE5N0Y5NjMyNEIzNjI0
NDAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lm1tICovOyB9OworCQlDMTk3Rjk2NTI0QjM2
QzI2MDBDQTc2MzkgLyogWFBDRW5kcG9pbnRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxOTdGOTYyMjRCMzYxOTgwMENBNzYzOSAvKiBYUENF
bmRwb2ludENsaWVudC5oICovOyB9OwogCQlDMUUxMjNCQTIwQTExNTczMDAyNjQ2RjQgLyogUERG
Q29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oICovOyB9Owog
CQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MTczODgwMTJERjhG
NEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICovOyB9OwogCQlDNTQyNTZCNTE4
QkVDMThDMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5
IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLzsgfTsKQEAgLTUwMTgsMTMgKzUwMjUsMjQg
QEAKIAkJQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENENzA3IC8qIFdlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwQTIyMzg1
M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUHJlZmVyZW5jZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMTY2M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0NvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlWFBDQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNjYzRTVD
MjRBRjk2NUQwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENFbmRw
b2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1RTI0QUY5QzFDMDBD
NkEzQjIgLyogWFBDRW5kcG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUENFbmRwb2lu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjIyNEE3QkQwMzAwRDdD
MTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENFdmVudEhhbmRsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjUyNEFBNjM0NTAwRDdDMTEy
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4MTczNUUyMDU4MzlGNjAw
REZEQTY1IC8qIERyYXdpbmdBcmVhTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdpbmdB
cmVhTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4MTczNjAyMDU4NDI0
NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaW5rLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYyMjA1ODQ0QTkwMERGREE2NSAv
KiBEaXNwbGF5TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGluay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTFEMjQyRjlGNzYwMDdFOTg3NSAvKiBX
ZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMThGQjUxRTI0MkY5Rjc3MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxOTdGOTYyMjRCMzYxOTgwMENB
NzYzOSAvKiBYUENFbmRwb2ludENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENFbmRwb2ludENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTk3Rjk2MzI0QjM2MjQ0MDBD
QTc2MzkgLyogWFBDRW5kcG9pbnRDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUENF
bmRwb2ludENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFFMTIzQjky
MEExMTU3MjAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBERkNvbnRleHRNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMxRUQ3MjM3MjRBNTY5MEUwMDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBE
cmFnQ29udHJvbGxlckFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
cmFnQ29udHJvbGxlckFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTIz
N0Y1RjEyNDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRWRpdG9yQ2xpZW50TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tE
YXRlVGltZUlucHV0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
S0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0
Q29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjM4NCw2ICs2NDAyLDcg
QEAKIAkJCQkyRDdBQUZEMjE4Qzg2NDA2MDBBN0FDRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyLmggKi8sCiAJCQkJMkRDNkQ5QzExOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5LmggKi8sCiAJCQkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8q
IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tICovLAorCQkJCUMxNzEwQ0YyMjRB
N0JEMDMwMEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
Q29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzQ4MSw2ICs3NTAwLDcgQEAK
IAkJCQlDNTVGOTE2RDFDNTk1RTQ0MDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5tbSAq
LywKIAkJCQlDRTU1MEUxMzIyODM3NDQ0MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuY3Bw
ICovLAogCQkJCUNFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5o
ICovLAorCQkJCUMxNjYzRTVBMjRBRUE3NDIwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlWFBDQ29uc3RhbnRzLmggKi8sCiAJCQkJMkQxMDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExv
YWRQYXJhbWV0ZXJzQ29jb2EubW0gKi8sCiAJCQkJQ0QyODY1RUMyMjU1NTYyMDAwNjA2QUM3IC8q
IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oICovLAogCQkJCUNEMjg2NUVEMjI1NTU2MjAwMDYw
NkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gKi8sCkBAIC03NTE0LDYgKzc1MzQs
MTAgQEAKIAkJCQkzN0JGMkYwNTE5NDdERUI0MDA3MjNDNDggLyogV0tOU1VSTFJlcXVlc3QubW0g
Ki8sCiAJCQkJMzc4RTFBM0YxODFFREEwMTAwMzEwMDdBIC8qIFdLT2JqZWN0LmggKi8sCiAJCQkJ
Mzc0NDM2ODcxODIwRTcyNDAwNDk1NzlGIC8qIFdLT2JqZWN0Lm1tICovLAorCQkJCUMxNjYzRTVD
MjRBRjk2NUQwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5oICovLAorCQkJCUMxNjYzRTVFMjRBRjlD
MUMwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5tbSAqLywKKwkJCQlDMTk3Rjk2MjI0QjM2MTk4MDBD
QTc2MzkgLyogWFBDRW5kcG9pbnRDbGllbnQuaCAqLywKKwkJCQlDMTk3Rjk2MzI0QjM2MjQ0MDBD
QTc2MzkgLyogWFBDRW5kcG9pbnRDbGllbnQubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNvY29h
OwogCQkJcGF0aCA9IENvY29hOwpAQCAtNzg0NCw2ICs3ODY4LDcgQEAKIAkJNTEwQ0M3RTcxNjEz
OEU3MjAwRDAzRUQzIC8qIE5ldHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUMxRUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAvKiBjb2NvYSAqLywKIAkJ
CQkyOUFEMzA5MTE2NEI0QzEwMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xzICovLAogCQkJCTUx
NjMxOTkzMTYyODk4MEUwMEUyMkYwMCAvKiBtYWMgKi8sCiAJCQkJNTEwQ0M3RUExNjEzOEU3MjAw
RDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwICovLApAQCAtODM3NCw2ICs4Mzk5LDgg
QEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNENDU3MENCMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgKi8sCiAJCQkJQ0Q0NTcwQ0EyNDQwRkIyQTAw
QTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmggKi8sCisJCQkJQzE0RDM3
RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmggKi8s
CisJCQkJQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VN
YW5hZ2VyLm1tICovLAogCQkJCTQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAvKiBQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAw
OTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC04NDI1
LDYgKzg0NTIsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMkQwQzU2RkIyMjlGMURFQTAwQkQz
M0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5oICovLAogCQkJCTJEMEM1NkZDMjI5RjFE
RUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsubW0gKi8sCisJCQkJQzE3MTBD
RjUyNEFBNjM0NTAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICov
LAorCQkJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW0gKi8sCiAJCQkJNTMxNTg3NkIyMDc2QjcxMzAwNEJGOUYzIC8qIE5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXJDb2NvYS5tbSAqLywKIAkJCQk1MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0Mg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCAqLywKIAkJCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZE
Q0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8sCkBAIC0xMDI1Miw2ICsxMDI4MSwxNCBA
QAogCQkJdGFiV2lkdGggPSA4OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMUVENzIzNjI0
QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUMxRUQ3MjM3MjRBNTY5MEUwMDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vz
c1Byb3h5Q29jb2EubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQzU0MjU2QUUxOEJFQzE2MTAwREU0MTc5IC8qIGZvcm1z
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEwODU4LDYg
KzEwODk1LDcgQEAKIAkJCQkyRDREMkM4MTFERjYwQkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTQ5QTQ5MTFGRkE4Q0Uw
MDQ4QjQ2NCAvKiBKU05QTWV0aG9kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU0OTg3ODExRkY3
RkFBMDA0OEI0NjQgLyogSlNOUE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzE2NjNFNUIy
NEFFQUEyRjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRTA5Mzc4MTRGQjEyOEMwMDExMzhEOSAvKiBMYXllckhvc3Rp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkyREMxMTEyRjhCQTQ2MDAxN0FGNjUg
LyogTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRFOTM2RkQyNDQ3QzJE
ODAwOUZBM0UzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCBpbiBIZWFkZXJzICovLApAQCAt
MTE4MzksNiArMTE4NzcsOCBAQAogCQkJCTFBRDYwRjYwMThFMjBGNzQwMDIwQzAzNCAvKiBXS1dp
bmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTZBNTA4MEJGMUYwRURB
QUEwMEU2MTdDNSAvKiBXS1dpbmRvd0ZlYXR1cmVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE3QzBERjcxQjdEMUYxMDAwQTlCODQ4IC8qIFdLV2luZG93RmVhdHVyZXNSZWYuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUMxNjYzRTVEMjRBRjk5MzAwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzE5N0Y5NjUyNEIzNkMyNjAwQ0E3NjM5IC8qIFhQQ0VuZHBv
aW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFQ0RFODE2QjY0MTY4MDAwNDdBMUEg
LyogWFBDU2VydmljZUVudHJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTI3MjYsNiArMTI3NjYsOCBA
QAogCQkJCTI3NDlGNjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBK
U05QTWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEyOEFG
RCAvKiBKU05QT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMxNEQzN0ZFMjRBQ0UwODYw
MDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYg
LyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5ODRGNTdDMTY0QjkxNUYwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUMgLyogTGliV2ViUlRDTmV0d29ya01lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzMDg2LDYgKzEzMTI4LDggQEAKIAkJCQkxREIwMTk0
NDIxMUNGMDA1MDA5RkIzRTggLyogV0tTaGFyZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0E3OEZGMzMyMjQxOTE5QjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9s
ZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzE2NjNFNUYyNEFGOUMxQzAwQzZBM0IyIC8qIFhQ
Q0VuZHBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzE5N0Y5NjQyNEIzNjI0NDAwQ0E3NjM5
IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2
ICsyOTAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogewog
ICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcygpOwor
I2VuZGlmCisKICAgICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dy
b3VuZCBxdWV1ZSBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAv
LyBhbmQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgog
ICAgIGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2so
Y2FsbEV4aXQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZp
c2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9u
SUQtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgdm9pZCBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3Q7CisjZW5k
aWYKKwogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlv
bjsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdl
Pj4gbV9wYWdlTWFwOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKICNpbXBv
cnQgIkluc2VydFRleHRPcHRpb25zLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5oIgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBsdWdpblZp
ZXcuaCIKICNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgiCkBAIC01
NiwxMiArNTcsMjIgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPE1v
YmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogeworICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS53
YWl0Rm9yRGF0YWJhc2VVcGRhdGUoNV9zKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGF1dG8g
dXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIEFTU0VSVCghU3Ry
aW5nKHV0aS5nZXQoKSkuaXNFbXB0eSgpKTsKKyNlbmRpZgorCiAgICAgbV9kYXRhRGV0ZWN0aW9u
Q29udGV4dCA9IHBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CiAKICAgICBpZiAocGFy
YW1ldGVycy5uZUhlbHBlckV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiWFBDRW5kcG9p
bnRDbGllbnQuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBYUENFbmRwb2ludENsaWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyJiBz
aW5nbGV0b24oKTsKKworICAgIGJvb2wgd2FpdEZvckRhdGFiYXNlVXBkYXRlKFNlY29uZHMpOwor
Citwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90KSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZENvbm5lY3QoKSBvdmVycmlkZTsKKworICAgIHN0ZDo6YXRvbWljPGJvb2w+
IG1faGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIHsgZmFsc2UgfTsKKyAgICBCaW5h
cnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VNYW5hZ2VyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgorI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29h
L0VudGl0bGVtZW50cy5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciYgTGF1bmNo
U2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJl
dHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3QgbWVzc2FnZSkKK3sKKyAgICBTdHJpbmcgbWVz
c2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1lc3NhZ2UsIFhQQ0VuZHBvaW50
Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5h
bWUpIHsKKyAgICAgICAgYXV0byBkYXRhYmFzZSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZSht
ZXNzYWdlLCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlS2V5KTsKKyAgICAgICAgaWYgKGRhdGFiYXNlKSB7CisgICAgICAgICAgICBh
dXRvIGNvbnRleHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIpIHNo
YXJlZERhdGFiYXNlQ29udGV4dF07CisgICAgICAgICAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iob2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDopXSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBbY29udGV4dCBvYnNlcnZlRGF0YWJh
c2VDaGFuZ2U0V2ViS2l0OmRhdGFiYXNlXTsKKyAgICAgICAgfQorICAgICAgICBtX3NlbWFwaG9y
ZS5zaWduYWwoKTsKKyAgICAgICAgbV9oYXNSZWNlaXZlZExhdW5jaFNlcnZpY2VzRGF0YWJhc2Ug
PSB0cnVlOworICAgIH0KK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6
ZGlkQ29ubmVjdCgpCit7CisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGlj
dGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5
LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lKTsKKworICAgIHhwY19jb25uZWN0aW9uX3Nl
bmRfbWVzc2FnZShjb25uZWN0aW9uKCkuZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworfQorCitib29s
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjp3YWl0Rm9yRGF0YWJhc2VVcGRhdGUoU2Vj
b25kcyB0aW1lb3V0KQoreworICAgIGlmIChtX2hhc1JlY2VpdmVkTGF1bmNoU2VydmljZXNEYXRh
YmFzZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fc2VtYXBob3JlLndhaXRG
b3IodGltZW91dCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsOCBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCAiV2Vi
UHJvY2Vzc0NvY29hLmgiCiAKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
LmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCiAjaW1w
b3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ0luaXRpYWxp
emF0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC00OCw2ICs1MCw3IEBACiAjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViU2xlZXBEaXNhYmxlckNs
aWVudC5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKKyNpbXBvcnQg
IlhQQ0VuZHBvaW50LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Db25maWdGaWxlLmg+CiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FWQXNz
ZXRNSU1FVHlwZUNhY2hlLmg+CkBAIC0xNjEsMjUgKzE2NCwzMiBAQCBzdGF0aWMgaWQgTlNBcHBs
aWNhdGlvbkFjY2Vzc2liaWxpdHlGb2N1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6OmhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMo
KSBjb25zdAogewotICAgIC8vIE1hcCBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UuIFRoaXMgc2hv
dWxkIGJlIGRvbmUgYXMgZWFybHkgYXMgcG9zc2libGUsIGFzIHRoZSBtYXBwaW5nIHdpbGwgZmFp
bAotICAgIC8vIGlmICdjb20uYXBwbGUubHNkLm1hcGRiJyBpcyBiZWluZyBhY2Nlc3NlZCBiZWZv
cmUgdGhpcy4KLSAgICBpZiAocGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRsZSkgewotICAg
ICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKCpw
YXJhbWV0ZXJzLm1hcERCRXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgICAgIGJvb2wgb2sgPSBleHRl
bnNpb24tPmNvbnN1bWUoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAgICAg
ICAvLyBQZXJmb3JtIEFQSSBjYWxscyB3aGljaCB3aWxsIGNvbW11bmljYXRlIHdpdGggdGhlIGRh
dGFiYXNlIG1hcHBpbmcgc2VydmljZSwgYW5kIG1hcCB0aGUgZGF0YWJhc2UuCi0gICAgICAgIGF1
dG8gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtV
VFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIGlmICghcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFtbb2Jq
Y19nZXRDbGFzcygiX0xTRFJlYWRTZXJ2aWNlIikgWFBDQ29ubmVjdGlvblRvU2VydmljZV0gaW52
YWxpZGF0ZV07CisgICAgYXV0byBjb25uZWN0aW9uID0gcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+eHBjQ29ubmVjdGlvbigpOwogCi0gICAgICAgIG9rID0gZXh0ZW5zaW9uLT5yZXZva2UoKTsK
LSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOworICAgIHhwY19jb25uZWN0aW9uX3NldF90
YXJnZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRD
SF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIoY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAg
aWYgKHhwY19nZXRfdHlwZShldmVudCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBBU1NFUlQoU3RyaW5nKHV0aS5nZXQoKSkgPT0gU3RyaW5n
KGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFz
c01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKS5nZXQoKSkpOwotICAgIH0KKyAgICAg
ICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwg
WFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1l
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAobWVzc2FnZU5h
bWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUpIHsKKyAgICAgICAgICAgIGF1dG8gZW5k
cG9pbnQgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUoZXZlbnQsIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5h
bWVLZXkpOworICAgICAgICAgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmds
ZXRvbigpLnNldEVuZHBvaW50KGVuZHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0pOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKICNp
ZiAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFdlYkNvcmU6Omlu
aXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViQ29yZUxvZ2dpbmdD
aGFubmVscyk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShw
YXJhbWV0ZXJzLndlYktpdExvZ2dpbmdDaGFubmVscyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403614</attachid>
            <date>2020-07-06 13:22:39 -0700</date>
            <delta_ts>2020-07-07 14:00:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200706132238.patch</filename>
            <type>text/plain</type>
            <size>72281</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
Y2xhcmUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgeHBjIGVuZHBvaW50LCBhcyB3ZWxsIGFzIGEgZnVu
Y3Rpb24gdG8gY3JlYXRlIGEgY29ubmVjdGlvbiBmcm9tIGFuIGVuZHBvaW50LgorCisgICAgICAg
ICogd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24g
YWNjZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBD
U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lk
IF94cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2
b2lkKiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAog
I2RlZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2
ICsxMjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29s
IHhwY19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9j
YW5jZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9u
X2NyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19lbmRwb2lu
dF90IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29ubmVjdGlv
bl90IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2ludF90KTsK
IHhwY19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25z
dCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBwaWRfdCB4
cGNfY29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNfY29ubmVj
dGlvbl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNi0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2Vz
IGRhdGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWNs
YXJlIGludGVyZmFjZSBmb3Igb2JzZXJ2aW5nIGFuZCBjb25zdW1pbmcgdGhlIExhdW5jaCBTZXJ2
aWNlcyBkYXRhYmFzZS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNT
UEkuaDoKKwogMjAyMC0wNy0wMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBVcHN0cmVhbSBhcHBsaWNhdGlvbiBhY2NlbnQgY29sb3Igc3VwcG9ydApJ
bmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hT
ZXJ2aWNlc1NQSS5oCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNiAr
MjUsMTAgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKLSNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgog
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0
IDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzUHJpdi5oPgotI2VsaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9MU0FwcExpbmtQcml2Lmg+Ci0jZWxp
ZiBQTEFURk9STShJT1MpCi0jaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNl
cnZpY2VzUHJpdi5oPgotI2VuZGlmCi0KICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQogCiAjaWYgSEFWRShBUFBfTElOS1MpCkBAIC04NSwxMSArNzksMTQgQEAgZW51bSBMU1Nlc3Np
b25JRCB7CiAKICNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAotQGludGVyZmFj
ZSBfTFNEU2VydmljZSA6IE5TT2JqZWN0IDxOU1hQQ0xpc3RlbmVyRGVsZWdhdGU+Ci0rIChOU1hQ
Q0Nvbm5lY3Rpb24gKilYUENDb25uZWN0aW9uVG9TZXJ2aWNlOworQGludGVyZmFjZSBMU0RhdGFi
YXNlQ29udGV4dCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgTFNEYXRh
YmFzZUNvbnRleHQgKnNoYXJlZERhdGFiYXNlQ29udGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBf
TFNEUmVhZFNlcnZpY2UgOiBfTFNEU2VydmljZQorQGludGVyZmFjZSBMU0RhdGFiYXNlQ29udGV4
dCAoV2ViS2l0Q2hhbmdlVHJhY2tpbmcpCistIChpZCA8TlNPYmplY3Q+KWFkZERhdGFiYXNlQ2hh
bmdlT2JzZXJ2ZXI0V2ViS2l0Oih2b2lkICheKSh4cGNfb2JqZWN0X3QgY2hhbmdlKSlvYnNlcnZl
cjsKKy0gKHZvaWQpcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KGlkIDxOU09i
amVjdD4pdG9rZW47CistICh2b2lkKW9ic2VydmVEYXRhYmFzZUNoYW5nZTRXZWJLaXQ6KHhwY19v
YmplY3RfdCljaGFuZ2U7CiBAZW5kCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMjYzOTc2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw4OCBAQAorMjAyMC0wNy0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRh
dGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBiZSBh
YmxlIHRvIGRlbnkgbWFjaCBsb29rdXAgYWNjZXNzIHRvIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0
YWJhc2UgbWFwcGluZyBzZXJ2aWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHRoZSBkYXRh
YmFzZSBuZWVkcyB0byBiZQorICAgICAgICBzZW50IGZyb20gdGhlIE5ldHdvcmtpbmcgcHJvY2Vz
cyB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCByZXByZXNlbnRlZCBieSBhIHhwYyBvYmplY3Qu
IFRoZSBOZXR3b3JraW5nIHByb2Nlc3MgaXMgY2hvc2VuIGluc3RlYWQgb2YgdGhlIFVJCisgICAg
ICAgIHByb2Nlc3MsIHNpbmNlIFdlYktpdCBpcyBjb250cm9sbGluZyB0aGUgc2FuZGJveCBvZiB0
aGUgTmV0d29ya2luZyBwcm9jZXNzLiBUaGVyZSBpcyBhbHJlYWR5IGEgZGlyZWN0IGNvbm5lY3Rp
b24gYmV0d2VlbiB0aGUgTmV0d29ya2luZworICAgICAgICBwcm9jZXNzIGFuZCB0aGUgV2ViQ29u
dGVudCBwcm9jZXNzLCBidXQgdGhpcyBpcyBhIENvcmVJUEMgY29ubmVjdGlvbi4gU2luY2UgdGhl
IGRhdGFiYXNlIGlzIHJlcHJlc2VudGVkIGJ5IGEgeHBjIG9iamVjdCwgYSB4cGMgY29ubmVjdGlv
bgorICAgICAgICBpcyByZXF1aWVyZWQgdG8gdHJhbnNmZXIgdGhlIGRhdGFiYXNlLiBUaGlzIHBh
dGNoIGNyZWF0ZXMgYSBkaXJlY3QgeHBjIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgTmV0d29ya2lu
ZyBwcm9jZXNzIGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzLAorICAgICAgICBieSBjcmVhdGlu
ZyBhIHhwYyBlbmRwb2ludCBpbiB0aGUgTmV0d29ya2luZyBwcm9jZXNzLCBzZW5kaW5nIHRoaXMg
dG8gdGhlIFVJIHByb2Nlc3Mgb3ZlciB0aGUgYm9vdHN0cmFwIHhwYyBjb25uZWN0aW9uLCBhbmQg
dGhlbiBwcm92aWRpbmcKKyAgICAgICAgZWFjaCBXZWJDb250ZW50IHByb2Nlc3Mgd2l0aCB0aGlz
IGVuZHBvaW50IGJ5IHNlbmRpbmcgaXQgb3ZlciB0aGUgYm9vdHN0cmFwIHhwYyBjb25uZWN0aW9u
IGJldHdlZW4gdGhlIFVJIHByb2Nlc3MgYW5kIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAg
ICAgIFdoZW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyByZWNlaXZlcyB0aGUgZW5kcG9pbnQsIGl0
IHdpbGwgY3JlYXRlIGEgeHBjIGNvbm5lY3Rpb24gZnJvbSB0aGUgZW5kcG9pbnQsIHdoaWNoIHdp
bGwgY3JlYXRlIGEgZGlyZWN0IGNvbm5lY3Rpb24KKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya2lu
ZyBwcm9jZXNzLiBBIG1lc3NhZ2UgaXMgdGhlbiBzZW50IG92ZXIgdGhlIGNvbm5lY3Rpb24gdG8g
cmVxdWVzdCB0aGUgZGF0YWJhc2UgeHBjIG9iamVjdC4gV2hlbiB0aGUgTmV0d29ya2luZyBwcm9j
ZXNzCisgICAgICAgIHJlY2VpdmVzIHRoaXMgbWVzc2FnZSwgaXQgY2hlY2tzIHRoZSBlbnRpdGxl
bWVudCBvZiB0aGUgcmVtb3RlIGVuZCB0byBtYWtlIHN1cmUgaXQgaXMgY29tbXVuaWNhdGluZyB3
aXRoIGEgV2ViQ29udGVudCBwcm9jZXNzLCBhbmQgdGhlbiBzZW5kcworICAgICAgICB0aGUgZGF0
YWJhc2UgaWYgdGhlIGVudGl0bGVtZW50IGNoZWNrIHN1Y2NlZWRzLiBXaGVuIHRoZSBXZWJDb250
ZW50IHByb2Nlc3MgcmVjZWl2ZXMgdGhpcyBtZXNzYWdlLCBpdCBwZXJmb3JtcyBhbiBlbnRpdGxl
bWVudCBjaGVjayBhcyB3ZWxsLAorICAgICAgICBhbmQgaWYgc3VjY2Vzc2Z1bCwgdGhlIGRhdGFi
YXNlIG9iamVjdCBpcyBjb25zdW1lZC4gQ29uc3VtaW5nIHRoaXMgZGF0YWJhc2Ugb2JqZWN0LCB3
aWxsIG1ha2Ugc3VyZSBVVEkgdG8gTUlNRSB0eXBlIG1hcHBpbmcgaXMgd29ya2luZworICAgICAg
ICBjb3JyZWN0bHkgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIHNpbmNlIHRoZXJlIGFscmVhZHkgZXhpc3QgdGVzdHMgZm9yIHRoaXMuIFVUSSB0byBN
SU1FIHR5cGUgbWFwcGluZyBpcyBiZWluZyB1c2VkIGluIFdlYktpdCBhbmQgdW5kZXJseWluZyBm
cmFtZXdvcmssIGFuZCBtYW55CisgICAgICAgIHRlc3RzIHdvdWxkIGZhaWwgaWYgdGhpcyBtYXBw
aW5nIHdhcyBub3Qgd29ya2luZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVD
b25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzaW5nbGV0b24pOgorICAgICAg
ICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmcpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBv
aW50TWVzc2FnZU5hbWVLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TWVzc2FnZU5hbWUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TmFt
ZUtleSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAgICAgKiBTY3JpcHRzL3By
b2Nlc3MtZW50aXRsZW1lbnRzLnNoOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9Db2Nv
YS9YUENFbmRwb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvWFBDRW5kcG9p
bnQubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFbmRwb2ludDo6WFBDRW5kcG9pbnQp
OgorICAgICAgICAoV2ViS2l0OjpYUENFbmRwb2ludDo6c2VuZEVuZHBvaW50VG9Db25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6WFBDRW5kcG9pbnQ6On5YUENFbmRwb2ludCk6CisgICAgICAg
ICogU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpYUENFbmRwb2ludENsaWVudDo6flhQQ0VuZHBvaW50Q2xpZW50KToKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpYUENFbmRwb2ludENsaWVudDo6c2V0RW5kcG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpYUENF
bmRwb2ludENsaWVudDo6Y29ubmVjdGlvbik6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKiBT
b3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6eHBjRW5kcG9pbnRN
ZXNzYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmROZXR3
b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvWFBDRXZlbnRIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYUENFdmVu
dEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQ6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHlDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQ
Q0V2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQ
Q0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlTWFuYWdlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjp3YWl0Rm9yRGF0YWJhc2VVcGRhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6
CisKIDIwMjAtMDctMDYgIEhhZWx3ZW5uIChsYW5vZGFuKSBNb25uaWVyICA8Y29udGFjdEBoYWNr
dGl2aXMubWU+CiAKICAgICAgICAgQnViYmxld3JhcExhdW5jaGVyLmNwcDogQWRkIHBhdGhzIHJl
cXVpcmVkIGZvciBzbmRpbwpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjYz
ODYxKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00MTUsNiArNDE1LDggQEAgVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJv
eAogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQog
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JXS1dlYlZpZXcubW0KIAorVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCisKIFVJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRl
UGlja2VyVmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlu
cHV0Q29udHJvbC5tbQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5
Nyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlQ29kZXJzLmgiCiAKICNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjZW5kaWYKIApAQCAtMzg2LDYgKzM4NywxMCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvCiB7CiAgICAgQXV4aWxp
YXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiAKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnNpbmdsZXRv
bigpLnNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyNlbmRpZgorCiAgICAg
Ly8gV2UgZ2l2ZSBhIGNoYW5jZSBmb3IgZGlkQ2xvc2UoKSB0byBnZXQgY2FsbGVkIG9uIHRoZSBt
YWluIHRocmVhZCBidXQgZm9yY2VmdWxseSBjYWxsIF9leGl0KCkgYWZ0ZXIgYSBkZWxheQogICAg
IC8vIGluIGNhc2UgdGhlIG1haW4gdGhyZWFkIGlzIHVucmVzcG9uc2l2ZSBvciBkaWRDbG9zZSgp
IHRha2VzIHRvbyBsb25nLgogICAgIGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9u
V29ya1F1ZXVlQ2FsbGJhY2soY2FsbEV4aXRTb29uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlhQQ0VuZHBvaW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyIDogcHVibGljIFhQQ0VuZHBvaW50IHsKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8TGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyJiBzaW5nbGV0b24oKTsKKworcHJpdmF0ZToKKyAgICBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKTsKKyAgICB2aXJ0dWFsIH5MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKTsKKworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoT1NPYmpl
Y3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4pOworCisgICAgLy8gWFBDRW5kcG9pbnQKKyAgICBjb25z
dCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Y29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgaGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSBvdmVycmlkZTsK
KworICAgIFJldGFpblB0cjxpZD4gbV9vYnNlcnZlcjsKKyAgICBWZWN0b3I8T1NPYmplY3RQdHI8
eHBjX2Nvbm5lY3Rpb25fdD4+IG1fY29ubmVjdGlvbnM7Cit9OworCit9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgi
CisKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCIKKyNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlciYg
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI+IG9ic2VydmVy
OworICAgIHJldHVybiBvYnNlcnZlcjsKK30KKworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKQoreworICAgIGF1dG8gY29udGV4
dCA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJh
c2VDb250ZXh0XTsKKyAgICBpZiAoIVtjb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pCisgICAgICAgIHJldHVybjsK
KworICAgIG1fb2JzZXJ2ZXIgPSBbY29udGV4dCBhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdl
YktpdDpeKHhwY19vYmplY3RfdCBjaGFuZ2UpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRv
cHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwor
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAg
eHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1lc3NhZ2UuZ2V0KCksIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXksIGNoYW5nZSk7
CisKKyAgICAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9ucykKKyAgICAg
ICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLmdldCgpLCBtZXNz
YWdlLmdldCgpKTsKKyAgICB9XTsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IGNvbm5l
Y3Rpb24pCit7CisgICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbik7CisKKyAgICBh
dXRvIGNvbnRleHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIpIHNo
YXJlZERhdGFiYXNlQ29udGV4dF07CisgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OildKSB7CisgICAg
ICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51
bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyht
ZXNzYWdlLmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXksIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VN
ZXNzYWdlTmFtZSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0
aW9uLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFJldGFpblB0cjxpZD4gb2JzZXJ2ZXIgPSBbY29udGV4dCBhZGREYXRhYmFzZUNoYW5nZU9ic2Vy
dmVyNFdlYktpdDpeKHhwY19vYmplY3RfdCBjaGFuZ2UpIHsKKyAgICAgICAgYXV0byBtZXNzYWdl
ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwg
MCkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQ
Q0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAg
ICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1lc3NhZ2UuZ2V0KCksIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXksIGNo
YW5nZSk7CisKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24u
Z2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgIH1dOworCisgICAgW2NvbnRleHQgcmVtb3ZlRGF0
YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6b2JzZXJ2ZXIuZ2V0KCldOworfQorCitMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIo
KQoreworICAgIGF1dG8gY29udGV4dCA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJhc2VD
b250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsKKworICAgIGlmICghW2NvbnRleHQgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdl
YktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2NvbnRleHQgcmVtb3ZlRGF0YWJhc2VD
aGFuZ2VPYnNlcnZlcjRXZWJLaXQ6bV9vYnNlcnZlci5nZXQoKV07Cit9CisKK2NvbnN0IGNoYXIq
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZUtl
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHhwY01lc3NhZ2VOYW1lS2V5OworfQorCitjb25zdCBj
aGFyKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TWVzc2FnZU5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3Rh
bnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZTsKK30K
KworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2lu
dE5hbWVLZXkoKSBjb25zdAoreworICAgIHJldHVybiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBD
Q29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5Owor
fQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQoeHBj
X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgZXZlbnQpCit7CisgICAgaWYg
KHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgaWYgKGV2
ZW50ICE9IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgJiYgZXZlbnQgIT0gWFBDX0VSUk9S
X1RFUk1JTkFUSU9OX0lNTUlORU5UKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jb25uZWN0aW9ucy5zaXplKCk7IGkrKykgeworICAgICAg
ICAgICAgaWYgKG1fY29ubmVjdGlvbnNbaV0uZ2V0KCkgPT0gY29ubmVjdGlvbikgeworICAgICAg
ICAgICAgICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSkgeworICAgICAg
ICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCB4
cGNNZXNzYWdlTmFtZUtleSk7CisgICAgICAgIGlmIChtZXNzYWdlTmFtZSAhPSBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFz
ZVVwZGF0ZU1lc3NhZ2VOYW1lKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGFydE9i
c2VydmluZyhjb25uZWN0aW9uKTsKKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
UmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxl
cy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShyZXZpc2lvbiAyNjM4NjEpCisr
KyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAtNTg4LDcgKzU4OCw3IEBACiAo
YWxsb3cgaXBjLXBvc2l4LXNobS1yZWFkKgogICAgICAgIChpcGMtcG9zaXgtbmFtZS1wcmVmaXgg
ImFwcGxlLmNmcHJlZnMuIikpCiAgCi0oYWxsb3cgbWFjaC1sb29rdXAKKyhkZW55IG1hY2gtbG9v
a3VwCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUubHNkLm1hcGRiIikpCiAKIDs7IDxyZGFy
Oi8vcHJvYmxlbS8xMjQxMzk0Mj4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNz
LWVudGl0bGVtZW50cy5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2gJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkod29ya2luZyBjb3B5KQpAQCAtMTUsNiAr
MTUsNyBAQCBmdW5jdGlvbiBtYWNfcHJvY2Vzc193ZWJjb250ZW50X2VudGl0bGVtCiAKICAgICBp
ZiBbWyAiJHtXS19VU0VfUkVTVFJJQ1RFRF9FTlRJVExFTUVOVFN9IiA9PSBZRVMgXV0KICAgICB0
aGVuCisgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNl
LXhwYy1lbmRwb2ludCBib29sIFlFUwogICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxl
LnJvb3RsZXNzLnN0b3JhZ2UuV2ViS2l0V2ViQ29udGVudFNhbmRib3ggYm9vbCBZRVMKICAgICBm
aQogCkBAIC01MSw2ICs1Miw3IEBAIGZ1bmN0aW9uIG1hY19wcm9jZXNzX25ldHdvcmtfZW50aXRs
ZW1lbnQKICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2Mu
bWFuYWdlci5jaGVjay1ieS1hdWRpdC10b2tlbjowIHN0cmluZyBrVENDU2VydmljZVdlYktpdElu
dGVsbGlnZW50VHJhY2tpbmdQcmV2ZW50aW9uCiAgICAgICAgIGZpCiAKKyAgICAgICAgcGxpc3Ri
dWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wg
WUVTCiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucm9vdGxlc3Muc3RvcmFnZS5X
ZWJLaXROZXR3b3JraW5nU2FuZGJveCBib29sIFlFUwogICAgIGZpCiB9CkBAIC0xNDQsNiArMTQ2
LDcgQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX3dlYmNvbnRlbnRfZQogICAgIHBsaXN0
YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29s
IFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3Iu
YWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLnByb3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCisg
ICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBv
aW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQu
YXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6ZHluYW1pYy1j
b2Rlc2lnbmluZyBib29sIFlFUwogCkBAIC0xODQsNiArMTg3LDcgQEAgZnVuY3Rpb24gaW9zX2Zh
bWlseV9wcm9jZXNzX25ldHdvcmtfZW50aQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUu
cHJpdmF0ZS5kbWQucG9saWN5IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5wcml2YXRlLm1lbW9yeXN0YXR1cyBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS5uZXR3b3JrLnNvY2tldC1kZWxlZ2F0ZSBib29sIFlFUworICAgIHBsaXN0
YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29s
IFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucnVubmluZ2JvYXJkLmFzc2VydGlv
bnMud2Via2l0IGJvb2wgWUVTCiAKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZh
dGUudGNjLm1hbmFnZXIuY2hlY2stYnktYXVkaXQtdG9rZW4gYXJyYXkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlWFBDQ29uc3RhbnRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3Rh
bnRzIHsKKworY29uc3RleHByIGF1dG8geHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1l
c3NhZ2VOYW1lID0gInVwZGF0ZS1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Citj
b25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5ID0gImxhdW5jaC1zZXJ2
aWNlcy1kYXRhYmFzZSI7Citjb25zdGV4cHIgYXV0byB4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNE
YXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lID0gInJlcXVlc3QtbGF1bmNoLXNlcnZpY2VzLWRhdGFi
YXNlLXVwZGF0ZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENFbmRwb2ludE5hbWVLZXkgPSAieHBjLWVuZHBvaW50LWxhdW5jaC1zZXJ2aWNlcy1k
YXRhYmFzZSI7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5k
cG9pbnRNZXNzYWdlTmFtZSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNl
LW1lc3NhZ2UiOworfSAvLyBuYW1lc3BhY2UgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0
YW50cworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1hQQ0VuZHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFBDRW5kcG9pbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUENFbmRwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFhQ
Q0VuZHBvaW50IHsKK3B1YmxpYzoKKyAgICBYUENFbmRwb2ludCgpOworICAgIHZpcnR1YWwgflhQ
Q0VuZHBvaW50KCk7CisKKyAgICB2b2lkIHNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb24qKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB4cGNNZXNzYWdlTmFtZUtl
eSA9ICJtZXNzYWdlLW5hbWUiOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgY29uc3QgY2hhciog
eHBjRW5kcG9pbnRNZXNzYWdlTmFtZUtleSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHhwY0VuZHBvaW50TWVzc2FnZU5hbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBj
b25zdCBjaGFyKiB4cGNFbmRwb2ludE5hbWVLZXkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUV2ZW50KHhwY19jb25uZWN0aW9uX3QsIHhwY19vYmplY3RfdCkgPSAwOworCisg
ICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uOworICAgIE9TT2Jq
ZWN0UHRyPHhwY19lbmRwb2ludF90PiBtX2VuZHBvaW50OworfTsKKworfQpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQubW0JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
WFBDRW5kcG9pbnQuaCIKKworI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworWFBDRW5kcG9pbnQ6OlhQQ0VuZHBvaW50KCkKK3sKKyAgICBt
X2Nvbm5lY3Rpb24gPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZShudWxscHRy
LCBudWxscHRyKSk7CisgICAgbV9lbmRwb2ludCA9IGFkb3B0T1NPYmplY3QoeHBjX2VuZHBvaW50
X2NyZWF0ZShtX2Nvbm5lY3Rpb24uZ2V0KCkpKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NldF90
YXJnZXRfcXVldWUobV9jb25uZWN0aW9uLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0
KCksIF4oeHBjX29iamVjdF90IG1lc3NhZ2UpIHsKKyAgICAgICAgeHBjX3R5cGVfdCB0eXBlID0g
eHBjX2dldF90eXBlKG1lc3NhZ2UpOworCisgICAgICAgIGlmICh0eXBlID09IFhQQ19UWVBFX0NP
Tk5FQ1RJT04pIHsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IG1l
c3NhZ2U7CisgICAgICAgICAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW47CisgICAgICAgICAg
ICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4p
OworCisgICAgICAgICAgICBpZiAoIVdURjo6aGFzRW50aXRsZW1lbnQoYXVkaXRUb2tlbiwgImNv
bS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IikpIHsKKyAgICAgICAgICAg
ICAgICAvLyBVbmNvbW1lbnQgYmVmb3JlIGxhbmRpbmc7IHRoaXMgaXMgY29tbWVudGVkIG91dCBi
ZWNhdXNlIHRoZSBib3RzIGRvZXMgbm90IHNlZW0gdG8gcmVidWlsZCB0aGUgZW50aXRsZW1lbnRz
CisgICAgICAgICAgICAgICAgLy8gV1RGTG9nQWx3YXlzKCJBdWRpdCB0b2tlbiBkb2VzIG5vdCBo
YXZlIHJlcXVpcmVkIGVudGl0bGVtZW50Iik7CisgICAgICAgICAgICAgICAgLy8gcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1
ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICAgICAgICAgIHhw
Y19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24sIF4oeHBjX29iamVjdF90
IGV2ZW50KSB7CisgICAgICAgICAgICAgICAgaGFuZGxlRXZlbnQoY29ubmVjdGlvbiwgZXZlbnQp
OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobWVz
c2FnZSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9j
b25uZWN0aW9uLmdldCgpKTsKK30KKwordm9pZCBYUENFbmRwb2ludDo6c2VuZEVuZHBvaW50VG9D
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICBpZiAoIWNvbm5l
Y3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmpl
Y3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4cGNf
ZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIHhwY0VuZHBvaW50TWVzc2FnZU5h
bWVLZXkoKSwgeHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgeHBjRW5kcG9pbnROYW1lS2V5KCksIG1fZW5kcG9pbnQu
Z2V0KCkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24tPnhw
Y0Nvbm5lY3Rpb24oKSwgbWVzc2FnZS5nZXQoKSk7Cit9CisKK1hQQ0VuZHBvaW50Ojp+WFBDRW5k
cG9pbnQoKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENF
bmRwb2ludENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hQQ0VuZHBvaW50Q2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQ
Q1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRW5kcG9pbnRDbGllbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgflhQQ0VuZHBvaW50Q2xpZW50KCkgeyB9CisKKyAgICB2
b2lkIHNldEVuZHBvaW50KHhwY19lbmRwb2ludF90KTsKKworcHJvdGVjdGVkOgorICAgIE9TT2Jq
ZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IGNvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZENvbm5lY3QoKSA9IDA7CisKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
PiBtX2Nvbm5lY3Rpb247CisgICAgTG9jayBtX2xvY2s7Cit9OworCit9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5tbQkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgxIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiWFBDRW5k
cG9pbnRDbGllbnQuaCIKKworI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBYUENFbmRwb2ludENsaWVudDo6c2V0RW5kcG9pbnQo
eHBjX2VuZHBvaW50X3QgZW5kcG9pbnQpCit7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworCisgICAgICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbV9jb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVj
dGlvbl9jcmVhdGVfZnJvbV9lbmRwb2ludChlbmRwb2ludCkpOworCisgICAgICAgIHhwY19jb25u
ZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25uZWN0aW9uLmdldCgpLCBkaXNwYXRjaF9nZXRf
Z2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKKyAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLmdldCgpLCBe
KHhwY19vYmplY3RfdCBtZXNzYWdlKSB7CisgICAgICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4
cGNfZ2V0X3R5cGUobWVzc2FnZSk7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9F
UlJPUikgeworICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlID09IFhQQ19FUlJPUl9DT05ORUNU
SU9OX0lOVkFMSUQgfHwgbWVzc2FnZSA9PSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQp
IHsKKyAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHR5cGUgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVf
Y29ubmVjdGlvbihtZXNzYWdlKTsKKyAgICAgICAgICAgIGlmICghY29ubmVjdGlvbikKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW47
CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbiwg
JmF1ZGl0VG9rZW4pOworICAgICAgICAgICAgaWYgKCFXVEY6Omhhc0VudGl0bGVtZW50KGF1ZGl0
VG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCIpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVW5jb21tZW50IGJlZm9yZSBsYW5kaW5nOyB0aGlzIGlzIGNvbW1l
bnRlZCBvdXQgYmVjYXVzZSB0aGUgYm90cyBkb2VzIG5vdCBzZWVtIHRvIHJlYnVpbGQgdGhlIGVu
dGl0bGVtZW50cworICAgICAgICAgICAgICAgIC8vIFdURkxvZ0Fsd2F5cygiQXVkaXQgdG9rZW4g
ZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBlbnRpdGxlbWVudCIpOworICAgICAgICAgICAgICAgIC8v
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGhhbmRsZUV2ZW50KG1lc3NhZ2Up
OworICAgICAgICB9KTsKKworICAgICAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0
aW9uLmdldCgpKTsKKyAgICB9CisKKyAgICBkaWRDb25uZWN0KCk7Cit9CisKK09TT2JqZWN0UHRy
PHhwY19jb25uZWN0aW9uX3Q+IFhQQ0VuZHBvaW50Q2xpZW50Ojpjb25uZWN0aW9uKCkKK3sKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIHJldHVybiBtX2Nvbm5lY3Rpb247Cit9
CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vydmlj
ZU1haW4ubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRlV0aWxpdGllc1NQSS5oPgorI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL09T
T2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3Bp
L2Rhcndpbi9YUENTUEkuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzg4LDcgKzM4OCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAgICAgTmV0d29ya1Byb2Nlc3NQ
cm94eSYgZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aFdlYnNpdGVE
YXRhU3RvcmUgPSBudWxscHRyKTsKLSAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJv
Y2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KKyAgICBOZXR3b3JrUHJv
Y2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nl
c3MuZ2V0KCk7IH0KICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vz
c1Byb3h5Jik7CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9j
ZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CkBAIC01NDIsNiArNTQyLDExIEBAIHB1YmxpYzoKICAg
ICBpbnQzMl90IHVzZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlcklkOyB9CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4geHBjRW5k
cG9pbnRNZXNzYWdlKCkgY29uc3Q7CisgICAgdm9pZCBzZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRw
b2ludFRvV2ViUHJvY2VzcyhPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGVuZHBvaW50TWVzc2Fn
ZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
CkBAIC04MjYsNiArODMxLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2Rv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IG1fZW5kcG9pbnRNZXNzYWdlOworI2VuZGlm
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTMs
NiArOTUzLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gZW5k
cG9pbnRNZXNzYWdlID0gcHJvY2Vzc1Bvb2woKS54cGNFbmRwb2ludE1lc3NhZ2UoKTsKKyAgICBp
ZiAoZW5kcG9pbnRNZXNzYWdlKQorICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
Y29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksIGVuZHBvaW50TWVzc2FnZS5nZXQoKSk7Cisj
ZW5kaWYKKwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3dlYkNvbm5lY3Rpb24pOwogICAgIG1fd2Vi
Q29ubmVjdGlvbiA9IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSh0aGlzKTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MzQsNCAr
OTM0LDIzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVySGlnaER5bmFtaWMKIH0KICNl
bmRpZgogCitPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IFdlYlByb2Nlc3NQb29sOjp4cGNFbmRw
b2ludE1lc3NhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2VuZHBvaW50TWVzc2FnZTsKK30K
Kwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dl
YlByb2Nlc3MoT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBlbmRwb2ludE1lc3NhZ2UpCit7Cisg
ICAgbV9lbmRwb2ludE1lc3NhZ2UgPSBlbmRwb2ludE1lc3NhZ2U7CisKKyAgICBmb3IgKGF1dG8g
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLT5pc0xhdW5jaGlu
ZygpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+Y29ubmVj
dGlvbigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9
IHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpOworICAgICAgICB4cGNfY29u
bmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbiwgZW5kcG9pbnRNZXNzYWdlLmdldCgpKTsK
KyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvWFBDRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8WFBD
RXZlbnRIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+WFBDRXZlbnRIYW5kbGVyKCkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBjb25z
dCA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Q
cm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
YXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJYUENFdmVudEhhbmRsZXIuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQpAQCAtNTcsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb25maWd1cmVKU0NG
b3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzSklURW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVudEhhbmRs
ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKICAgICB9OwogICAgIAogICAg
IGVudW0gY2xhc3MgUHJvY2Vzc1R5cGUgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZp
c2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJv
Y2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTggKzIzOCwyOCBAQCB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIHByb2Nlc3NMYXVu
Y2hlci0+ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcygwLCBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIoKSk7CiAgICAgfTsKIAotICAgIGF1dG8gZXJyb3JIYW5kbGVyID0gW2Vycm9ySGFuZGxl
ckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpXSAoeHBjX29iamVjdF90IGV2ZW50KSBt
dXRhYmxlIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJ
bXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRdIHsKLSAgICAgICAgICAgIGVy
cm9ySGFuZGxlckltcGwoZXZlbnQpOwotICAgICAgICB9KTsKKyAgICBhdXRvIGV2ZW50SGFuZGxl
ciA9IFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnRI
YW5kbGVyID0gbV9jbGllbnQtPnhwY0V2ZW50SGFuZGxlcigpXSAoeHBjX29iamVjdF90IGV2ZW50
KSBtdXRhYmxlIHsKKworICAgICAgICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkg
PT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50ID0g
T1NPYmplY3RQdHIoZXZlbnQpXSB7CisgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChl
dmVudC5nZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChldmVudEhhbmRsZXIpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyLCBldmVudCA9IE9T
T2JqZWN0UHRyKGV2ZW50KV0geworICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlci0+aGFuZGxl
WFBDRXZlbnQoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9
OwogCi0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9u
LmdldCgpLCBlcnJvckhhbmRsZXIpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5k
bGVyKG1feHBjQ29ubmVjdGlvbi5nZXQoKSwgZXZlbnRIYW5kbGVyKTsKIAogICAgIHhwY19jb25u
ZWN0aW9uX3Jlc3VtZShtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpOwogCiAgICAgaWYgKFVOTElLRUxZ
KG1fbGF1bmNoT3B0aW9ucy5zaG91bGRNYWtlUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nKSkg
ewotICAgICAgICBlcnJvckhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIGV2ZW50SGFuZGxlcihu
dWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlz
aW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUg
IkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0yOTcsNiArMzAxLDkg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdm9pZCBk
aWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZWZQdHI8WFBDRXZl
bnRIYW5kbGVyPiB4cGNFdmVudEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgogCiAg
ICAgdm9pZCBwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQsIFJl
ZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKIApAQCAtMzI3LDYgKzMzNCwxOSBA
QCBwcml2YXRlOgogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlByb2Nlc3NBc3NlcnRpb25zOwog
ICAgIH07CiAgICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1fdXBsb2FkQWN0aXZpdHk7CisK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGFzcyBYUENFdmVudEhhbmRsZXIgOiBwdWJsaWMg
V2ViS2l0OjpYUENFdmVudEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgWFBDRXZlbnRI
YW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKKyAgICAgICAgdmlydHVhbCB+WFBD
RXZlbnRIYW5kbGVyKCk7CisKKyAgICAgICAgYm9vbCBoYW5kbGVYUENFdmVudCh4cGNfb2JqZWN0
X3QpIGNvbnN0IG92ZXJyaWRlOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vha1B0cjxOZXR3
b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOworICAgIH07CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgor
CisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0
ICJXZWJQcm9jZXNzUG9vbC5oIgorI2ltcG9ydCAiWFBDRW5kcG9pbnQuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1JlZlB0cjxYUENFdmVudEhhbmRsZXI+IE5ldHdvcmtQcm9jZXNzUHJveHk6
OnhwY0V2ZW50SGFuZGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXIoKnRoaXMpKTsKK30KKworYm9vbCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50KHhwY19vYmpl
Y3RfdCBldmVudCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9
PSBYUENfVFlQRV9FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIG1l
c3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9pbnQ6
OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICBpZiAobWVzc2FnZU5hbWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBv
aW50TWVzc2FnZU5hbWUpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoZXZlbnQpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6
WFBDRXZlbnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNz
KQorICAgIDogbV9uZXR3b3JrUHJvY2VzcyhtYWtlV2Vha1B0cihuZXR3b3JrUHJvY2VzcykpCit7
Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFu
ZGxlcigpCit7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY4NCw5
ICsxNjg0LDE2IEBACiAJCUMxMUE5RUNDMjE0MDM1RjgwMENGQjIwQSAvKiBXZWJTd2l0Y2hpbmdH
UFVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxMUE5RUNCMjE0MDM1RjgwMENGQjIwQSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLzsg
fTsKIAkJQzExRTE2OTQyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUUxNjkyMjEyQjg3QzUw
MDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE0OTM4MDkyMjM0NzEwNDAwMENENzA3IC8qIFdlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0Ns
aWVudC5oICovOyB9OworCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXIubW0gKi87IH07CiAJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQcmVm
ZXJlbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMxNDVDQzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTVDQkIz
NzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3
IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLzsgfTsKKwkJQzE2NjNFNUIyNEFFQUEyRjAwQzZB
M0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjYzRTVBMjRBRUE3NDIwMEM2QTNC
MiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggKi87IH07CisJCUMxNjYz
RTVEMjRBRjk5MzAwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2NjNFNUMyNEFGOTY1RDAwQzZBM0IyIC8qIFhQ
Q0VuZHBvaW50LmggKi87IH07CisJCUMxNjYzRTVGMjRBRjlDMUMwMEM2QTNCMiAvKiBYUENFbmRw
b2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMx
NjYzRTVFMjRBRjlDMUMwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5tbSAqLzsgfTsKKwkJQzE3MTBD
RjcyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNzEwQ0Y2MjRB
QTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi87IH07
CiAJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE4MTczNjAyMDU4NDI0NzAwREZE
QTY1IC8qIERpc3BsYXlMaW5rLmggKi87IH07CisJCUMxOTdGOTY0MjRCMzYyNDQwMENBNzYzOSAv
KiBYUENFbmRwb2ludENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxOTdGOTYzMjRCMzYyNDQwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVu
dC5tbSAqLzsgfTsKKwkJQzE5N0Y5NjUyNEIzNkMyNjAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTk3
Rjk2MjI0QjM2MTk4MDBDQTc2MzkgLyogWFBDRW5kcG9pbnRDbGllbnQuaCAqLzsgfTsKIAkJQzFF
MTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQg
LyogUERGQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8q
IERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24uaCAqLzsgfTsKIAkJQzU0MjU2QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJ
bnB1dENvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgg
Ki87IH07CkBAIC01MDE4LDEzICs1MDI1LDI0IEBACiAJCUMxNDkzODAyMjIzNDFDNjAwMDBDRDcw
NyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNo
U3ludGhlc2lzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkzODAz
MjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTRE
MzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3IC8q
IFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcmVuY2VP
YnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE2NjNFNUEyNEFFQTc0
MjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1QzI0QUY5NjVEMDBDNkEzQjIgLyogWFBDRW5kcG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzE2NjNFNUUyNEFGOUMxQzAwQzZBM0IyIC8qIFhQQ0VuZHBvaW50Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gWFBDRW5kcG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gWFBDRXZlbnRIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAv
KiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMxODE3MzVFMjA1ODM5RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMTgxNzM2MjIwNTg0NEE5MDBERkRBNjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGlzcGxheUxpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUUyNDJGOUY3NzAwN0U5
ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMTk3Rjk2MjI0QjM2MTk4MDBDQTc2MzkgLyogWFBDRW5kcG9pbnRDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzE5N0Y5NjMyNEIzNjI0NDAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFBDRW5kcG9pbnRDbGllbnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0
TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQREZDb250ZXh0TWVudS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMg
LyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUyMzdGNUYxMjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVk
aXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0
MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBwYXRo
ID0gaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTYzODQsNiArNjQwMiw3IEBACiAJCQkJMkQ3QUFGRDIxOEM4NjQwNjAwQTdB
Q0Q0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oICovLAogCQkJCTJEQzZEOUMxMThDNDRB
NjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovLAogCQkJ
CTJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdp
c3RyeS5tbSAqLywKKwkJCQlDMTcxMENGMjI0QTdCRDAzMDBEN0MxMTIgLyogWFBDRXZlbnRIYW5k
bGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTc0ODEsNiArNzUwMCw3IEBACiAJCQkJQzU1RjkxNkQxQzU5NUU0NDAwMjlFOTJE
IC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0gKi8sCiAJCQkJQ0U1NTBFMTMyMjgzNzQ0NDAwRDI4
NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmNwcCAqLywKIAkJCQlDRTU1MEUxMjIyODM3M0M4MDBE
Mjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLywKKwkJCQlDMTY2M0U1QTI0QUVBNzQyMDBD
NkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICovLAogCQkJCTJE
MTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICovLAogCQkJ
CUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAq
LywKIAkJCQlDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2Vy
dmVyLm1tICovLApAQCAtNzUxNCw2ICs3NTM0LDEwIEBACiAJCQkJMzdCRjJGMDUxOTQ3REVCNDAw
NzIzQzQ4IC8qIFdLTlNVUkxSZXF1ZXN0Lm1tICovLAogCQkJCTM3OEUxQTNGMTgxRURBMDEwMDMx
MDA3QSAvKiBXS09iamVjdC5oICovLAogCQkJCTM3NDQzNjg3MTgyMEU3MjQwMDQ5NTc5RiAvKiBX
S09iamVjdC5tbSAqLywKKwkJCQlDMTY2M0U1QzI0QUY5NjVEMDBDNkEzQjIgLyogWFBDRW5kcG9p
bnQuaCAqLywKKwkJCQlDMTY2M0U1RTI0QUY5QzFDMDBDNkEzQjIgLyogWFBDRW5kcG9pbnQubW0g
Ki8sCisJCQkJQzE5N0Y5NjIyNEIzNjE5ODAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lmgg
Ki8sCisJCQkJQzE5N0Y5NjMyNEIzNjI0NDAwQ0E3NjM5IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lm1t
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXBhdGggPSBDb2NvYTsKQEAgLTc4NDQs
NiArNzg2OCw3IEBACiAJCTUxMENDN0U3MTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNjI0QTU2
OEY1MDAzRjZDRDMgLyogY29jb2EgKi8sCiAJCQkJMjlBRDMwOTExNjRCNEMxMDAwNzJERUE5IC8q
IEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyogbWFj
ICovLAogCQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcCAqLywKQEAgLTgzNzQsNiArODM5OSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDRDQ1
NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3Bw
ICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvci5oICovLAorCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovLAorCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAx
NCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKIAkJCQk0NDZEQzY0QjI0
QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAqLywK
IAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5o
ICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLm1lc3NhZ2VzLmluICovLApAQCAtODQyNSw2ICs4NDUyLDggQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTJEMEM1NkZCMjI5RjFERUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExp
bmsuaCAqLywKIAkJCQkyRDBDNTZGQzIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVu
dFNvZnRMaW5rLm1tICovLAorCQkJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlDMTcxMENGNjI0QUE2NDMyMDBEN0Mx
MTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICovLAogCQkJCTUzMTU4NzZC
MjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2EubW0gKi8sCiAJ
CQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLmggKi8s
CiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1t
ICovLApAQCAtMTAyNTIsNiArMTAyODEsMTQgQEAKIAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKKwkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29hICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNzI0QTU2
OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUM1NDI1
NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCkBAIC0xMDg1OCw2ICsxMDg5NSw3IEBACiAJCQkJMkQ0RDJDODExREY2
MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1ldGhvZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFFNDk4NzgxMUZGN0ZBQTAwNDhCNDY0IC8qIEpTTlBPYmplY3QuaCBp
biBIZWFkZXJzICovLAorCQkJCUMxNjYzRTVCMjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwOTM3ODE0
RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90
b2NvbElELmggaW4gSGVhZGVycyAqLywKQEAgLTExODM5LDYgKzExODc3LDggQEAKIAkJCQkxQUQ2
MEY2MDE4RTIwRjc0MDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlc0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2QTUwODBCRjFGMEVEQUFBMDBFNjE3QzUgLyogV0tXaW5kb3dGZWF0dXJl
c1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBN0MwREY3MUI3RDFGMTAwMEE5Qjg0OCAv
KiBXS1dpbmRvd0ZlYXR1cmVzUmVmLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTY2M0U1RDI0QUY5
OTMwMDBDNkEzQjIgLyogWFBDRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUMxOTdGOTY1
MjRCMzZDMjYwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNCRUNERTgxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKQEAgLTEyNzI2LDYgKzEyNzY2LDggQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4Mzgw
QkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkxMzQ0MTIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDkxMzQ0MjIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMTcxMENGNzI0QUE2NDMyMDBEN0Mx
MTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVG
MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIExp
YldlYlJUQ05ldHdvcmtNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMzA4
Niw2ICsxMzEyOCw4IEBACiAJCQkJMURCMDE5NDQyMTFDRjAwNTAwOUZCM0U4IC8qIFdLU2hhcmVT
aGVldC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNzhGRjMzMjI0MTkxOUIwMDk2NDgzRSAvKiBX
S1N0b3JhZ2VBY2Nlc3NBbGVydC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFMjEyMTYwMjQwRUU1
NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMx
NjYzRTVGMjRBRjlDMUMwMEM2QTNCMiAvKiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUMxOTdGOTY0MjRCMzYyNDQwMENBNzYzOSAvKiBYUENFbmRwb2ludENsaWVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsNiArMjkwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVAKIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGhh
bmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMoKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgY2FsbCBfZXhp
dCgpIGRpcmVjdGx5IGZyb20gdGhlIGJhY2tncm91bmQgcXVldWUgaW4gY2FzZSB0aGUgbWFpbiB0
aHJlYWQgaXMgdW5yZXNwb25zaXZlCiAgICAgLy8gYW5kIEF1eGlsaWFyeVByb2Nlc3M6OmRpZENs
b3NlKCkgZG9lcyBub3QgZ2V0IGNhbGxlZC4KICAgICBjb25uZWN0aW9uLT5zZXREaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKGNhbGxFeGl0KTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYgKzUxMCwx
MCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7IHJl
dHVybiBtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSA6IHRydWU7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaGFuZGxlWFBDRW5k
cG9pbnRNZXNzYWdlcygpIGNvbnN0OworI2VuZGlmCisKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2ltcG9ydCAiV2ViUGFnZS5oIgogCiAjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgorI2lt
cG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvYWRQYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0QmFzZS5oIgpAQCAtNTYsMTIgKzU3LDIyIEBACiAjaW1wb3J0IDxXZWJD
b3JlL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNl
cnZpY2VzLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhj
b25zdCBMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkud2FpdEZvckRhdGFiYXNlVXBkYXRlKDVfcyk7Cisj
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJl
ZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9o
dG1sIiksIDApKTsKKyAgICBBU1NFUlQoIVN0cmluZyh1dGkuZ2V0KCkpLmlzRW1wdHkoKSk7Cisj
ZW5kaWYKKwogICAgIG1fZGF0YURldGVjdGlvbkNvbnRleHQgPSBwYXJhbWV0ZXJzLmRhdGFEZXRl
Y3Rpb25Db250ZXh0OwogCiAgICAgaWYgKHBhcmFtZXRlcnMubmVIZWxwZXJFeHRlbnNpb25IYW5k
bGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbXBvcnQgIlhQQ0VuZHBvaW50Q2xpZW50LmgiCisjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIgOiBwdWJsaWMgWFBDRW5kcG9pbnRDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBib29sIHdhaXRG
b3JEYXRhYmFzZVVwZGF0ZShTZWNvbmRzKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZUV2
ZW50KHhwY19vYmplY3RfdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDb25uZWN0KCkgb3ZlcnJp
ZGU7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX2hhc1JlY2VpdmVkTGF1bmNoU2VydmljZXNE
YXRhYmFzZSB7IGZhbHNlIH07CisgICAgQmluYXJ5U2VtYXBob3JlIG1fc2VtYXBob3JlOworfTsK
KworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIu
aCIKKworI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2lt
cG9ydCAiWFBDRW5kcG9pbnQuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2Vydmlj
ZXNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0
Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXImIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5n
bGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9p
ZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90
IG1lc3NhZ2UpCit7CisgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOworICAgIGlm
IChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAgICAgIGF1dG8gZGF0YWJhc2Ug
PSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobWVzc2FnZSwgTGF1bmNoU2VydmljZXNEYXRhYmFz
ZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSk7CisgICAgICAgIGlm
IChkYXRhYmFzZSkgeworICAgICAgICAgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3Ry
aW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgICAg
ICAgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9ic2VydmVE
YXRhYmFzZUNoYW5nZTRXZWJLaXQ6KV0pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgW2NvbnRleHQgb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDpkYXRhYmFzZV07Cisg
ICAgICAgIH0KKyAgICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgIG1faGFzUmVj
ZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmRpZENvbm5lY3QoKQoreworICAgIGF1dG8gbWVz
c2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxw
dHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQ
Q0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50czo6eHBjUmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0YWJhc2VVcGRhdGVNZXNzYWdlTmFt
ZSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbigpLmdldCgp
LCBtZXNzYWdlLmdldCgpKTsKK30KKworYm9vbCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
cjo6d2FpdEZvckRhdGFiYXNlVXBkYXRlKFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBpZiAobV9o
YXNSZWNlaXZlZExhdW5jaFNlcnZpY2VzRGF0YWJhc2UpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBtX3NlbWFwaG9yZS53YWl0Rm9yKHRpbWVvdXQpOworfQorCit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0J
KHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbXBvcnQg
IldlYlByb2Nlc3MuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDb2NvYS5oIgogCisjaW1wb3J0ICJM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0NvbnN0YW50cy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgiCiAjaW1wb3J0ICJMb2dJbml0aWFsaXphdGlvbi5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtNDgsNiArNTAsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludC5oIgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvQ29uZmlnRmlsZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3B0aW9u
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgpAQCAtMTYxLDI1
ICsxNjQsMzIgQEAgc3RhdGljIGlkIE5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdQogfQog
I2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJQcm9jZXNz
OjpoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3QKIHsKLSAgICAvLyBNYXAgTGF1bmNo
IFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBiZSBkb25lIGFzIGVhcmx5IGFzIHBvc3Np
YmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAgICAvLyBpZiAnY29tLmFwcGxlLmxzZC5t
YXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMuCi0gICAgaWYgKHBhcmFtZXRlcnMu
bWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAgYXV0byBleHRlbnNpb24gPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRs
ZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8gUGVyZm9ybSBBUEkgY2FsbHMgd2hpY2gg
d2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZSBtYXBwaW5nIHNlcnZpY2UsIGFuZCBt
YXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4
dC9odG1sIiksIDApKTsKKyAgICBpZiAoIXBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpCisgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBbW29iamNfZ2V0Q2xhc3MoIl9MU0RSZWFkU2VydmljZSIp
IFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFsaWRhdGVdOworICAgIGF1dG8gY29ubmVjdGlv
biA9IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKTsKIAotICAgICAg
ICBvayA9IGV4dGVuc2lvbi0+cmV2b2tlKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9r
KTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRpc3Bh
dGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCkp
OworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24sIF4oeHBj
X29iamVjdF90IGV2ZW50KSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUoZXZlbnQpICE9IFhQ
Q19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQVNTRVJU
KFN0cmluZyh1dGkuZ2V0KCkpID09IFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRtbCIp
LCAwKSkuZ2V0KCkpKTsKLSAgICB9CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19k
aWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtl
eSk7CisgICAgICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm47CiAKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VO
YW1lKSB7CisgICAgICAgICAgICBhdXRvIGVuZHBvaW50ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3Zh
bHVlKGV2ZW50LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5KTsKKyAgICAgICAgICAgIExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRFbmRwb2ludChlbmRwb2ludCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9KTsKK30KKwordm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eShwYXJhbWV0ZXJzLndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6aW5pdGlh
bGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5nQ2hhbm5l
bHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403721</attachid>
            <date>2020-07-07 14:00:33 -0700</date>
            <delta_ts>2020-07-07 14:53:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200707140032.patch</filename>
            <type>text/plain</type>
            <size>86425</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
Y2xhcmUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgeHBjIGVuZHBvaW50LCBhcyB3ZWxsIGFzIGEgZnVu
Y3Rpb24gdG8gY3JlYXRlIGEgY29ubmVjdGlvbiBmcm9tIGFuIGVuZHBvaW50LgorCisgICAgICAg
ICogd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDEgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYXBwbGljYXRpb24g
YWNjZW50IGNvbG9yIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBD
U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAko
cmV2aXNpb24gMjYzODYxKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lk
IF94cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlwZWRlZiB2
b2lkKiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRfdDsKIAog
I2RlZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAgLTEyMSw2
ICsxMjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwgCiBib29s
IHhwY19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVjdGlvbl9j
YW5jZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25uZWN0aW9u
X2NyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19lbmRwb2lu
dF90IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29ubmVjdGlv
bl90IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2ludF90KTsK
IHhwY19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShjb25z
dCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBwaWRfdCB4
cGNfY29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNfY29ubmVj
dGlvbl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NjM4NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMSBAQAorMjAyMC0wNy0wNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlIGlu
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWJzdHJhY3QgY2xh
c3NlcyBYUENFbmRwb2ludCBhbmQgWFBDRW5kcG9pbnRDbGllbnQgdG8gaGFuZGxlIHRoZSBjcmVh
dGlvbiBvZiBkaXJlY3QgeHBjIGNvbm5lY3Rpb25zIGJldHdlZW4gV2ViS2l0IHByb2Nlc3Nlcy4K
KyAgICAgICAgSW4gb3JkZXIgdG8gY3JlYXRlIGEgZGlyZWN0IHhwYyBjb25uZWN0aW9uIGJldHdl
ZW4gdHdvIHByb2Nlc3NlcywgdGhlc2UgdHdvIGNsYXNzZXMgY2FuIGJlIHN1YmNsYXNzZWQsIGFu
ZCB0aGUgeHBjIGVuZHBvaW50IGNyZWF0ZWQKKyAgICAgICAgYnkgdGhlIFhQQ0VuZHBvaW50IG9i
amVjdCwgY2FuIGJlIHNlbnQgdmlhIHRoZSBVSSBwcm9jZXNzIG92ZXIgdGhlIGJvb3RzdHJhcCB4
cGMgY29ubmVjdGlvbi4gVGhlIFVJIHByb2Nlc3MgY2FuIHRoZW4gZm9yd2FyZCB0aGlzCisgICAg
ICAgIGVuZHBvaW50IHRvIGFub3RoZXIgV2ViS2l0IHByb2Nlc3MgYnkgc2VuZGluZyBpdCBvdmVy
IHRoZSBib290c3RyYXAgeHBjIGNvbm5lY3Rpb24uIFRoZSByZWNlaXZpbmcgcHJvY2VzcyBjYW4g
dGhlbiBpbml0aWFsaXplIGFuCisgICAgICAgIFhQQ0VuZHBvaW50Q2xpZW50IG9iamVjdCB3aXRo
IHRoaXMgZW5kcG9pbnQsIGFuZCBhIG5ldyBkaXJlY3QgY29ubmVjdGlvbiB3aWxsIHRoZW4gYmUg
YXZhaWxhYmxlLCBvdmVyIHdoaWNoIHRoZSB0d28gcHJvY2Vzc2VzIGNhbgorICAgICAgICBjb21t
dW5pY2F0ZS4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0LlhQQ0VuZHBvaW50CisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvWFBDRW5kcG9pbnQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
WFBDRW5kcG9pbnQubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFBDRW5kcG9pbnQ6OlhQ
Q0VuZHBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhQQ0VuZHBvaW50OjpzZW5kRW5kcG9pbnRU
b0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6WFBDRW5kcG9pbnQ6OmVuZHBvaW50IGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludENsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50Ojp+WFBDRW5kcG9pbnRDbGll
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50OjpzZXRFbmRwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpYUENFbmRwb2ludENsaWVudDo6Y29ubmVjdGlvbik6CisKIDIwMjAt
MDctMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjYwMjc2KTogbWVudSBpdGVtcyBpbiBmb290ZXIgb2YgaHR0cHM6Ly9zYWxv
LmFpIGFyZSBpbnZpc2libGUgdW50aWwgeW91IGhvdmVyIG9yIHJlc2l6ZQpJbmRleDogU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMzAgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXBkYXRlIExh
dW5jaCBTZXJ2aWNlcyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhl
IE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEzNzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRGVjbGFyZSBpbnRlcmZhY2UgZm9yIG9ic2VydmluZyBhbmQgY29uc3VtaW5nIHRo
ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UuCisKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL0xh
dW5jaFNlcnZpY2VzU1BJLmg6CisKIDIwMjAtMDctMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPGF0dGFjaG1lbnQ+IGxheW91dCBkb2VzIG5vdCBz
Y2FsZSB3aXRoIER5bmFtaWMgVHlwZSBzaXplIGNoYW5nZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaAkocmV2aXNp
b24gMjYzODYxKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2Vy
dmljZXNTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTYgKzI1LDEwIEBACiAKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0NvcmVT
ZXJ2aWNlc1ByaXYuaD4KLSNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaW1wb3J0IDxNb2Jp
bGVDb3JlU2VydmljZXMvTFNBcHBMaW5rUHJpdi5oPgotI2VsaWYgUExBVEZPUk0oSU9TKQotI2lt
cG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlc1ByaXYuaD4KLSNlbmRp
ZgotCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIEhBVkUoQVBQX0xJ
TktTKQpAQCAtODUsMTEgKzc5LDE0IEBAIGVudW0gTFNTZXNzaW9uSUQgewogCiAjZW5kaWYgLy8g
IVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKLUBpbnRlcmZhY2UgX0xTRFNlcnZpY2UgOiBOU09i
amVjdCA8TlNYUENMaXN0ZW5lckRlbGVnYXRlPgotKyAoTlNYUENDb25uZWN0aW9uICopWFBDQ29u
bmVjdGlvblRvU2VydmljZTsKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgOiBOU09iamVj
dAorQHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0ICpzaGFyZWRE
YXRhYmFzZUNvbnRleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgX0xTRFJlYWRTZXJ2aWNlIDogX0xT
RFNlcnZpY2UKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgKFdlYktpdENoYW5nZVRyYWNr
aW5nKQorLSAoaWQgPE5TT2JqZWN0PilhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDoo
dm9pZCAoXikoeHBjX29iamVjdF90IGNoYW5nZSkpb2JzZXJ2ZXI7CistICh2b2lkKXJlbW92ZURh
dGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OihpZCA8TlNPYmplY3Q+KXRva2VuOworLSAodm9p
ZClvYnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0Oih4cGNfb2JqZWN0X3QpY2hhbmdlOwogQGVu
ZAogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYzODYxKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC00MDAwLDYgKzQwMDAsMTAgQEAKIAkJQzE0OUQ1NUQyNDJFQTZCOTAwM0VCQjEyIC8qIFNs
ZWVwRGlzYWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxNDlENTVBMjQyRUE0RjkwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE0OUQ1NUYyNDJFQTdC
ODAwM0VCQjEyIC8qIFNsZWVwRGlzYWJsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDlENTVCMjQyRUE0RkEwMDNFQkIxMiAvKiBTbGVl
cERpc2FibGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzE0OUQ1NjcyNDJFQjg0QTAwM0VCQjEyIC8qIFNsZWVwRGlzYWJsZXJJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MTQ5RDU2NTI0MkVCNzY1MDAzRUJCMTIgLyogU2xlZXBEaXNhYmxlcklkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMTREMzA0OTI0
QjRFQUIxMDA0ODAzODcgLyogWFBDRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNEQzMDQ3MjRCNEVBQTgwMDQ4MDM4NyAvKiBYUENFbmRw
b2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUMxNEQzMDRCMjRCNEY3RUYwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNEQzMDRBMjRCNEVCMUUwMDQ4MDM4
NyAvKiBYUENFbmRwb2ludC5tbSAqLzsgfTsKKwkJQzE0RDMwNEUyNEI0RjhGQTAwNDgwMzg3IC8q
IFhQQ0VuZHBvaW50Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzE0RDMwNEMyNEI0RjhGNjAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Q2xpZW50
Lm1tICovOyB9OworCQlDMTREMzA0RjI0QjRGOEZGMDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNEQz
MDREMjRCNEY4RjcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNjkyREQyMjNEMjNBQkQwMDZF
ODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzE2OTJERDEyM0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnku
bW0gKi87IH07CiAJCUMxNjkyREQ1MjNEMjNFMDgwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY5MkRENDIz
RDIzQUUwMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxRTFEMjM2MjAzREYxNTQwMDU4NDY2NSAvKiBT
Y3JlZW5Qcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMUUxRDIzNTIwM0RGMTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzcyMiw2
ICsxMzcyNiwxMCBAQAogCQlDMTQ5RDU1QTI0MkVBNEY5MDAzRUJCMTIgLyogU2xlZXBEaXNhYmxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbGVlcERpc2FibGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDlENTVCMjQyRUE0RkEwMDNFQkIxMiAvKiBT
bGVlcERpc2FibGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNs
ZWVwRGlzYWJsZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OUQ1
NjUyNDJFQjc2NTAwM0VCQjEyIC8qIFNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMxNEQzMDQ3MjRCNEVBQTgwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENFbmRwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMTREMzA0QTI0QjRFQjFFMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUENFbmRwb2ludC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0RDMwNEMyNEI0RjhGNjAwNDgwMzg3IC8q
IFhQQ0VuZHBvaW50Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gWFBDRW5kcG9pbnRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMxNEQzMDREMjRCNEY4RjcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENFbmRwb2ludENsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkREMTIzRDIzQUJEMDA2RTg4RjcgLyogU3lzdGVtQmF0
dGVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbUJhdHRlcnkubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNjkyREQ0MjNEMjNBRTAwMDZFODhGNyAvKiBTeXN0ZW1C
YXR0ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbUJhdHRlcnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MTgyNDJGOTM4MjAwN0U5ODc1IC8qIFNsZWVwRGlzYWJsZXJD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2xlZXBEaXNhYmxlckNsaWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzYyMCw2ICsyMzYyOCwxMCBAQAogCQkJCUNE
Qzk3OUYzMUM0OThDMDkwMERCNTBENCAvKiBXZWJDb3JlTlNFcnJvckV4dHJhcy5oICovLAogCQkJ
CUNEQzk3OUYyMUM0OThDMDkwMERCNTBENCAvKiBXZWJDb3JlTlNFcnJvckV4dHJhcy5tbSAqLywK
IAkJCQk1REZFQkFCNjE4NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8s
CisJCQkJQzE0RDMwNDcyNEI0RUFBODAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50LmggKi8sCisJCQkJ
QzE0RDMwNEEyNEI0RUIxRTAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Lm1tICovLAorCQkJCUMxNEQz
MDREMjRCNEY4RjcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5oICovLAorCQkJCUMxNEQz
MDRDMjRCNEY4RjYwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzM5NzEsNiAr
MzM5ODMsOCBAQAogCQkJCTFBQjdGQzg0MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFV0aWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQjdGQzg2MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM4ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhW
YXJpYWJsZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzE0RDMwNDkyNEI0RUFCMTAw
NDgwMzg3IC8qIFhQQ0VuZHBvaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTREMzA0RjI0QjRG
OEZGMDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
RUU4QjlDMjQxMzE5NTAwMEU3OTRENiAvKiBYUkVudmlyb25tZW50QmxlbmRNb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUVFOEI5NzI0MTMxOTUwMDBFNzk0RDYgLyogWFJFeWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxRUU4QjhGMjQxMzE5NTAwMEU3OTRENiAvKiBYUkZyYW1lUmVxdWVzdENh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTY1LDYgKzM1MTc5LDggQEAKIAkJCQlBODMz
QzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE1QTM2RDkxMTA0NTcyNzAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQzE0RDMwNEIyNEI0RjdFRjAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQzE0RDMwNEUyNEI0RjhGQTAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50
Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRThCN0EyNDEzMTkxRjAwRTc5NEQ2IC8q
IFhSSW5wdXRTb3VyY2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVFOEJBNzI0MTMx
OTYzMDBFNzk0RDYgLyogWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUVFOEI5NTI0MTMxOTUwMDBFNzk0RDYgLyogWFJSZWZlcmVuY2VTcGFjZUV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
WFBDRW5kcG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9YUENFbmRwb2ludC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1hQQ0VuZHBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgWFBDRW5kcG9pbnQgeworcHVibGljOgorICAg
IFdFQkNPUkVfRVhQT1JUIFhQQ0VuZHBvaW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+WFBDRW5kcG9pbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
bmRFbmRwb2ludFRvQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90KTsKKworICAgIFdFQkNPUkVf
RVhQT1JUIE9TT2JqZWN0UHRyPHhwY19lbmRwb2ludF90PiBlbmRwb2ludCgpIGNvbnN0OworCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHhwY01lc3NhZ2VOYW1lS2V5ID0gIm1lc3NhZ2UtbmFt
ZSI7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3Nh
Z2VOYW1lS2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgY2hhciogeHBjRW5kcG9p
bnRNZXNzYWdlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHhwY0Vu
ZHBvaW50TmFtZUtleSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQo
eHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSA9IDA7CisKKyAgICBPU09iamVjdFB0cjx4
cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisgICAgT1NPYmplY3RQdHI8eHBjX2VuZHBv
aW50X3Q+IG1fZW5kcG9pbnQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9YUENFbmRwb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9YUENFbmRwb2ludC5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJYUENFbmRw
b2ludC5oIgorCisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworWFBDRW5kcG9pbnQ6OlhQQ0VuZHBvaW50KCkKK3sKKyAgICBtX2Nvbm5l
Y3Rpb24gPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZShudWxscHRyLCBudWxs
cHRyKSk7CisgICAgbV9lbmRwb2ludCA9IGFkb3B0T1NPYmplY3QoeHBjX2VuZHBvaW50X2NyZWF0
ZShtX2Nvbm5lY3Rpb24uZ2V0KCkpKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRf
cXVldWUobV9jb25uZWN0aW9uLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAg
ICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0KCksIF4o
eHBjX29iamVjdF90IG1lc3NhZ2UpIHsKKyAgICAgICAgeHBjX3R5cGVfdCB0eXBlID0geHBjX2dl
dF90eXBlKG1lc3NhZ2UpOworCisgICAgICAgIGlmICh0eXBlID09IFhQQ19UWVBFX0NPTk5FQ1RJ
T04pIHsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IG1lc3NhZ2U7
CisgICAgICAgICAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW47CisgICAgICAgICAgICB4cGNf
Y29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOworCisg
ICAgICAgICAgICBpZiAoIVdURjo6aGFzRW50aXRsZW1lbnQoYXVkaXRUb2tlbiwgImNvbS5hcHBs
ZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IikpIHsKKyAgICAgICAgICAgICAgICAv
LyBVbmNvbW1lbnQgYmVmb3JlIGxhbmRpbmc7IHRoaXMgaXMgY29tbWVudGVkIG91dCBiZWNhdXNl
IHRoZSBib3RzIGRvZXMgbm90IHNlZW0gdG8gdXBkYXRlIHRoZSBlbnRpdGxlbWVudHMgb24gaW5j
cmVtZW50YWwgYnVpbGRzLgorICAgICAgICAgICAgICAgIC8vIFdURkxvZ0Fsd2F5cygiQXVkaXQg
dG9rZW4gZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBlbnRpdGxlbWVudCIpOworICAgICAgICAgICAg
ICAgIC8vIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9u
X3NldF90YXJnZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7
CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihjb25uZWN0aW9u
LCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICAgICAgICAgIGhhbmRsZUV2ZW50KGNv
bm5lY3Rpb24sIGV2ZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fcmVzdW1lKGNvbm5lY3Rpb24pOworICAgICAgICB9CisgICAgfSk7CisgICAgeHBjX2Nv
bm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgWFBDRW5kcG9p
bnQ6OnNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24p
Cit7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1l
c3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxs
cHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgpLCB4
cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCksIHhwY0VuZHBvaW50TWVzc2FnZU5hbWUoKSk7Cisg
ICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1lc3NhZ2UuZ2V0KCksIHhwY0VuZHBvaW50TmFt
ZUtleSgpLCBtX2VuZHBvaW50LmdldCgpKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVz
c2FnZShjb25uZWN0aW9uLCBtZXNzYWdlLmdldCgpKTsKK30KKworT1NPYmplY3RQdHI8eHBjX2Vu
ZHBvaW50X3Q+IFhQQ0VuZHBvaW50OjplbmRwb2ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
ZW5kcG9pbnQ7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQ
Q0VuZHBvaW50Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvWFBDRW5kcG9pbnRDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9k
YXJ3aW4vWFBDU1BJLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgWFBDRW5kcG9p
bnRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflhQQ0VuZHBvaW50Q2xpZW50KCkgeyB9
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVuZHBvaW50KHhwY19lbmRwb2ludF90KTsK
KworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0
aW9uX3Q+IGNvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RXZlbnQoeHBjX29iamVjdF90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSA9
IDA7CisKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247Cisg
ICAgTG9jayBtX2xvY2s7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9YUENFbmRwb2ludENsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludENsaWVudC5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludENsaWVudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDgxIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFy
ZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiWFBDRW5kcG9pbnRDbGll
bnQuaCIKKworI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3ZvaWQgWFBDRW5kcG9pbnRDbGllbnQ6OnNldEVuZHBvaW50KHhwY19lbmRw
b2ludF90IGVuZHBvaW50KQoreworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKworICAgICAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NPYmplY3QoeHBjX2Nvbm5lY3Rpb25fY3Jl
YXRlX2Zyb21fZW5kcG9pbnQoZW5kcG9pbnQpKTsKKworICAgICAgICB4cGNfY29ubmVjdGlvbl9z
ZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9x
dWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSk7CisgICAgICAgIHhwY19j
b25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgXih4cGNfb2Jq
ZWN0X3QgbWVzc2FnZSkgeworICAgICAgICAgICAgeHBjX3R5cGVfdCB0eXBlID0geHBjX2dldF90
eXBlKG1lc3NhZ2UpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfRVJST1IpIHsK
KyAgICAgICAgICAgICAgICBpZiAobWVzc2FnZSA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZB
TElEIHx8IG1lc3NhZ2UgPT0gWFBDX0VSUk9SX1RFUk1JTkFUSU9OX0lNTUlORU5UKSB7CisgICAg
ICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICAg
ICAgICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0eXBlICE9
IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBhdXRvIGNvbm5lY3Rpb24gPSB4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rp
b24obWVzc2FnZSk7CisgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOworICAgICAg
ICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2VuKGNvbm5lY3Rpb24sICZhdWRpdFRv
a2VuKTsKKyAgICAgICAgICAgIGlmICghV1RGOjpoYXNFbnRpdGxlbWVudChhdWRpdFRva2VuLCAi
Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQiKSkgeworICAgICAgICAg
ICAgICAgIC8vIFVuY29tbWVudCBiZWZvcmUgbGFuZGluZzsgdGhpcyBpcyBjb21tZW50ZWQgb3V0
IGJlY2F1c2UgdGhlIGJvdHMgZG9lcyBub3Qgc2VlbSB0byB1cGRhdGUgdGhlIGVudGl0bGVtZW50
cyBvbiBpbmNyZW1lbnRhbCBidWlsZHMuCisgICAgICAgICAgICAgICAgLy8gV1RGTG9nQWx3YXlz
KCJBdWRpdCB0b2tlbiBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGVudGl0bGVtZW50Iik7CisgICAg
ICAgICAgICAgICAgLy8gcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaGFuZGxl
RXZlbnQobWVzc2FnZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHhwY19jb25uZWN0aW9uX3Jl
c3VtZShtX2Nvbm5lY3Rpb24uZ2V0KCkpOworICAgIH0KKworICAgIGRpZENvbm5lY3QoKTsKK30K
KworT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gWFBDRW5kcG9pbnRDbGllbnQ6OmNvbm5l
Y3Rpb24oKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgcmV0dXJuIG1f
Y29ubmVjdGlvbjsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzk3NikKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODYgQEAKKzIw
MjAtMDctMDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gVXBkYXRlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIGZyb20gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gYmUgYWJsZSB0byBkZW55IG1hY2ggbG9va3Vw
IGFjY2VzcyB0byB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZSBp
biB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCB0aGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUKKyAgICAg
ICAgc2VudCBmcm9tIHRoZSBOZXR3b3JraW5nIHByb2Nlc3MgdG8gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcywgcmVwcmVzZW50ZWQgYnkgYW4geHBjIG9iamVjdC4gVGhlIE5ldHdvcmtpbmcgcHJvY2Vz
cyBpcyBjaG9zZW4gaW5zdGVhZCBvZiB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcywgc2luY2UgV2Vi
S2l0IGlzIGNvbnRyb2xsaW5nIHRoZSBzYW5kYm94IG9mIHRoZSBOZXR3b3JraW5nIHByb2Nlc3Mu
IFRoZXJlIGlzIGFscmVhZHkgYSBkaXJlY3QgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBOZXR3b3Jr
aW5nCisgICAgICAgIHByb2Nlc3MgYW5kIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIGJ1dCB0aGlz
IGlzIGEgQ29yZUlQQyBjb25uZWN0aW9uLiBTaW5jZSB0aGUgZGF0YWJhc2UgaXMgcmVwcmVzZW50
ZWQgYnkgYW4geHBjIG9iamVjdCwgYW4geHBjIGNvbm5lY3Rpb24KKyAgICAgICAgaXMgcmVxdWll
cmVkIHRvIHRyYW5zZmVyIHRoZSBkYXRhYmFzZS4gVGhpcyBwYXRjaCBjcmVhdGVzIGEgZGlyZWN0
IHhwYyBjb25uZWN0aW9uIGJldHdlZW4gdGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBhbmQgdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcywKKyAgICAgICAgYnkgY3JlYXRpbmcgYW4geHBjIGVuZHBvaW50IGlu
IHRoZSBOZXR3b3JraW5nIHByb2Nlc3MsIHNlbmRpbmcgdGhpcyB0byB0aGUgVUkgcHJvY2VzcyBv
dmVyIHRoZSBib290c3RyYXAgeHBjIGNvbm5lY3Rpb24sIGFuZCB0aGVuIHByb3ZpZGluZworICAg
ICAgICBlYWNoIFdlYkNvbnRlbnQgcHJvY2VzcyB3aXRoIHRoaXMgZW5kcG9pbnQgYnkgc2VuZGlu
ZyBpdCBvdmVyIHRoZSBib290c3RyYXAgeHBjIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgVUkgcHJv
Y2VzcyBhbmQgdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBlbmRwb2ludCBo
YXMgdG8gYmUgc2VudCB2aWEgdGhlIHhwYyBjb25uZWN0aW9ucyB0byB0aGUgVUkgcHJvY2Vzcywg
c2luY2UgdGhlIGFscmVhZHkgZXhpc3RpbmcgZGlyZWN0IGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUg
TmV0d29ya2luZworICAgICAgICBwcm9jZXNzIGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGlz
IGEgbG93ZXIgbGV2ZWwgQ29yZUlQQyBjb25uZWN0aW9uLCB3aGljaCBkb2VzIG5vdCBzdXBwb3J0
IHRyYW5zZmVycmluZyB4cGMgb2JqZWN0cyBsaWtlIHRoZSB4cGMgZW5kcG9pbnQuCisgICAgICAg
IFdoZW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyByZWNlaXZlcyB0aGUgZW5kcG9pbnQsIGl0IHdp
bGwgY3JlYXRlIGFuIHhwYyBjb25uZWN0aW9uIGZyb20gdGhlIGVuZHBvaW50LCB3aGljaCB3aWxs
IGNyZWF0ZSBhIGRpcmVjdCBjb25uZWN0aW9uCisgICAgICAgIHdpdGggdGhlIE5ldHdvcmtpbmcg
cHJvY2Vzcy4gQSBtZXNzYWdlIGlzIHRoZW4gc2VudCBvdmVyIHRoZSBjb25uZWN0aW9uIHRvIHJl
cXVlc3QgdGhlIGRhdGFiYXNlIHhwYyBvYmplY3QuIFdoZW4gdGhlIE5ldHdvcmtpbmcgcHJvY2Vz
cworICAgICAgICByZWNlaXZlcyB0aGlzIG1lc3NhZ2UsIGl0IGNoZWNrcyB0aGUgZW50aXRsZW1l
bnQgb2YgdGhlIHJlbW90ZSBlbmQgdG8gbWFrZSBzdXJlIGl0IGlzIGNvbW11bmljYXRpbmcgd2l0
aCBhIFdlYkNvbnRlbnQgcHJvY2VzcywgYW5kIHRoZW4gc2VuZHMKKyAgICAgICAgdGhlIGRhdGFi
YXNlIGlmIHRoZSBlbnRpdGxlbWVudCBjaGVjayBzdWNjZWVkcy4gV2hlbiB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIHJlY2VpdmVzIHRoaXMgbWVzc2FnZSwgaXQgcGVyZm9ybXMgYW4gZW50aXRsZW1l
bnQgY2hlY2sgYXMgd2VsbCwKKyAgICAgICAgYW5kIGlmIHN1Y2Nlc3NmdWwsIHRoZSBkYXRhYmFz
ZSBvYmplY3QgaXMgY29uc3VtZWQuIENvbnN1bWluZyB0aGlzIGRhdGFiYXNlIG9iamVjdCwgd2ls
bCBtYWtlIHN1cmUgVVRJIHRvIE1JTUUgdHlwZSBtYXBwaW5nIGlzIHdvcmtpbmcKKyAgICAgICAg
Y29ycmVjdGx5IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgRm9yIHRoZSBV
SSBwcm9jZXNzIHRvIGJlIGFibGUgdG8gcGljayB1cCB4cGMgbWVzc2FnZXMgb24gdGhlIGJvb3Rz
dHJhcCBjb25uZWN0aW9uLCBhIG5ldyB2aXJ0dWFsIG1ldGhvZCwgaGFuZGxlWFBDRXZlbnQsIGlz
IGFkZGVkIHRvIHRoZQorICAgICAgICBQcm9jZXNzTGF1bmNoZXIgQ2xpZW50IGNsYXNzLiBUaGlz
IHdheSwgYSBQcm9jZXNzTGF1bmNoZXIgY2xpZW50IHdpbGwgYmUgYWJsZSB0byBwaWNrIHVwIHhw
YyBtZXNzYWdlcyBmcm9tIHRoZSB4cGMgYm9vdHN0cmFwIGNvbm5lY3Rpb24uCisgICAgICAgIFBy
ZXZpb3VzbHkgdGhlIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBib290c3RyYXAgY29ubmVjdGlvbiBp
biB0aGUgVUkgcHJvY2VzcyB3b3VsZCBoYW5kbGUgb25seSB4cGMgZXJyb3IgbWVzc2FnZXMuIEl0
IGhhcyBub3cgYmVlbiBleHBhbmRlZAorICAgICAgICB0byBoYW5kbGUgbm9ybWFsIG1lc3NhZ2Vz
LCB3aGljaCBhcmUgYmVpbmcgZm9yd2FyZGVkIHRvIHRoZSBQcm9jZXNzTGF1bmNoZXIgY2xpZW50
LiBJbiB0aGlzIGNhc2UgdGhlIGNsaWVudCBpcyB0aGUgTmV0d29yayBwcm9jZXNzIHByb3h5LAor
ICAgICAgICB3aGljaCB3aWxsIGNoZWNrIHRoZSBtZXNzYWdlIHJlY2VpdmVkLCBhbmQgaWYgaXQg
dHVybnMgb3V0IHRvIGJlIGEgbWVzc2FnZSBjb250YWluaW5nIGFuIHhwYyBlbmRwb2ludCwgdGhl
IG1lc3NhZ2Ugd2lsbCBiZSBmb3J3YXJkZWQgdG8KKyAgICAgICAgYWxsIFdlYiBwcm9jZXNzZXMu
IFRoZSBQcm9jZXNzTGF1bmNoZXIgY2xpZW50IGNhbiBiZSBleHBhbmRlZCB0byBoYW5kbGUgYW55
IHhwYyBtZXNzYWdlLCBidXQgcmlnaHQgbm90IHRoZSBOZXR3b3JrIHByb2Nlc3MgcHJveHkgb25s
eQorICAgICAgICBoYW5kbGVzIHRoZSB4cGMgZW5kcG9pbnQgbWVzc2FnZS4gVGhlIGhhbmRsZVhQ
Q0V2ZW50IHZpcnR1YWwgbWV0aG9kIHJldHVybiBhIFJlZlB0ciB0byBhbiBYUENFdmVudEhhbmRs
ZXIsIHdoaWNoIGlzIGNhcHR1cmVkIGluIHRoZSBldmVudAorICAgICAgICBoYW5kbGVyIG9mIHRo
ZSBib290c3RyYXAgeHBjIGNvbm5lY3Rpb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0
aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xldG9uKToK
KyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4
cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRw
b2ludE5hbWVLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBSZXNvdXJjZXMvU2FuZGJveFBy
b2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I6CisgICAgICAgICogU2Ny
aXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1t
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojp4cGNFbmRwb2ludE1lc3NhZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9j
ZXNzTGF1bmNoZXI6OkNsaWVudDo6eHBjRXZlbnRIYW5kbGVyIGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6eHBjRXZlbnRIYW5kbGVyIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENF
dmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2
ZW50SGFuZGxlcjo6WFBDRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5p
c2hMYXVuY2hpbmcpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJL
aXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpoYW5kbGVFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpkaWRDb25uZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OndhaXRGb3JEYXRh
YmFzZVVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmhhbmRsZVhQQ0VuZHBvaW50TWVzc2Fn
ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKToKKwogMjAyMC0wNy0wNiAgSGFlbHdlbm4gKGxhbm9kYW4pIE1vbm5pZXIg
IDxjb250YWN0QGhhY2t0aXZpcy5tZT4KIAogICAgICAgICBCdWJibGV3cmFwTGF1bmNoZXIuY3Bw
OiBBZGQgcGF0aHMgcmVxdWlyZWQgZm9yIHNuZGlvCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQxNSw2ICs0MTUsOCBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9X
ZWJJbnNwZWN0b3JQcm94CiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmll
dy5tbQogCitVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KKwog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYzODYxKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDYgKzk3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVDb2RlcnMuaCIKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNlbmRpZgogCkBAIC0x
NjMsNiArMTY0LDkgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeQog
I2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAgICAgYWRkU3VwcGxl
bWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBhZGRTdXBwbGVtZW50PExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cj4oKTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTEVHQUNZX0NVU1RP
TV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6bmV0
d29ya1Byb2Nlc3NDcmVhdGVkKCp0aGlzKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBs
ZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1hQQ0VuZHBvaW50Lmg+CisjaW5jbHVkZSA8d3Rm
L09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyIDogcHVibGlj
IFdlYkNvcmU6OlhQQ0VuZHBvaW50LCBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIoTmV0d29ya1Byb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5MYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBw
bGVtZW50TmFtZSgpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoT1NPYmpl
Y3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4pOworCisgICAgLy8gWFBDRW5kcG9pbnQKKyAgICBjb25z
dCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Y29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgaGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSBvdmVycmlkZTsK
KworICAgIC8vIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudAorICAgIHZvaWQgaW5pdGlhbGl6ZUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKikgZmluYWw7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1f
b2JzZXJ2ZXI7CisgICAgVmVjdG9yPE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+PiBtX2Nv
bm5lY3Rpb25zOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0ICJMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5j
aFNlcnZpY2VzU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjaW1w
b3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgTFNEYXRhYmFzZUNvbnRleHQgKmRhdGFiYXNlQ29udGV4dCgpCit7CisgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOworICAgIHN0YXRpYyBMU0RhdGFiYXNlQ29udGV4dCAq
Y29udGV4dCA9IG51bGxwdHI7CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICAgICAg
Y29udGV4dCA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVk
RGF0YWJhc2VDb250ZXh0XTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXIoTmV0d29ya1Byb2Nlc3MmKQoreworICAgIGlmICghW2RhdGFiYXNlQ29udGV4dCgpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6
KV0pCisgICAgICAgIHJldHVybjsKKworICAgIG1fb2JzZXJ2ZXIgPSBbZGF0YWJhc2VDb250ZXh0
KCkgYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6Xih4cGNfb2JqZWN0X3QgY2hhbmdl
KSB7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlf
Y3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3N0cmluZyhtZXNzYWdlLmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXksIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNZXNzYWdlTmFtZSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZSht
ZXNzYWdlLmdldCgpLCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlS2V5LCBjaGFuZ2UpOworCisgICAgICAgIGZvciAoYXV0byYgY29u
bmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpCisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5k
X21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisgICAgfV07Cit9CisK
K2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3VwcGxlbWVudE5h
bWUoKQoreworICAgIHJldHVybiAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyU3VwcGxl
bWVudCI7Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9i
c2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBjb25uZWN0aW9uKQoreworICAg
IG1fY29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24pOworCisgICAgaWYgKCFbZGF0YWJhc2VD
b250ZXh0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNoYW5nZU9i
c2VydmVyNFdlYktpdDopXSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0
KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhw
Y19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01l
c3NhZ2VOYW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRh
dGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8aWQ+IG9ic2VydmVyID0gW2RhdGFi
YXNlQ29udGV4dCgpIGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVj
dF90IGNoYW5nZSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19k
aWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0
aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VO
YW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICB4cGNf
Y29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7
CisgICAgfV07CisKKyAgICBbZGF0YWJhc2VDb250ZXh0KCkgcmVtb3ZlRGF0YWJhc2VDaGFuZ2VP
YnNlcnZlcjRXZWJLaXQ6b2JzZXJ2ZXIuZ2V0KCldOworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKQoreworICAgIGlm
ICghW2RhdGFiYXNlQ29udGV4dCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3Zl
RGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pCisgICAgICAgIHJldHVybjsKKworICAg
IFtkYXRhYmFzZUNvbnRleHQoKSByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpt
X29ic2VydmVyLmdldCgpXTsKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4geHBjTWVzc2FnZU5hbWVLZXk7Cit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lOworfQorCitjb25zdCBjaGFyKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXk7Cit9CisKK3ZvaWQgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24sIHhwY19vYmplY3RfdCBldmVudCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9
PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICBpZiAoZXZlbnQgIT0gWFBDX0VSUk9SX0NPTk5F
Q1RJT05fSU5WQUxJRCAmJiBldmVudCAhPSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2Nvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9u
c1tpXS5nZXQoKSA9PSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9u
cy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50
KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAg
ICAgICAgaWYgKG1lc3NhZ2VOYW1lICE9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwor
ICAgIH0KK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OmluaXRpYWxp
emVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICBzZW5kRW5k
cG9pbnRUb0Nvbm5lY3Rpb24oY29ubmVjdGlvbi0+eHBjQ29ubmVjdGlvbigpKTsKK30KKworfQpJ
bmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2IKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9SZXNv
dXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJ
KHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9m
aWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCSh3b3JraW5nIGNvcHkpCkBA
IC01ODgsNyArNTg4LDcgQEAKIChhbGxvdyBpcGMtcG9zaXgtc2htLXJlYWQqCiAgICAgICAgKGlw
Yy1wb3NpeC1uYW1lLXByZWZpeCAiYXBwbGUuY2ZwcmVmcy4iKSkKICAKLShhbGxvdyBtYWNoLWxv
b2t1cAorKGRlbnkgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5sc2Qu
bWFwZGIiKSkKIAogOzsgPHJkYXI6Ly9wcm9ibGVtLzEyNDEzOTQyPgpJbmRleDogU291cmNlL1dl
YktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkocmV2aXNpb24gMjYzODYx
KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBAIGZ1bmN0aW9uIG1hY19wcm9jZXNzX3dlYmNvbnRl
bnRfZW50aXRsZW0KIAogICAgIGlmIFtbICIke1dLX1VTRV9SRVNUUklDVEVEX0VOVElUTEVNRU5U
U30iID09IFlFUyBdXQogICAgIHRoZW4KKyAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgICAgIHBsaXN0
YnVkZHkgQWRkIDpjb20uYXBwbGUucm9vdGxlc3Muc3RvcmFnZS5XZWJLaXRXZWJDb250ZW50U2Fu
ZGJveCBib29sIFlFUwogICAgIGZpCiAKQEAgLTUxLDYgKzUyLDcgQEAgZnVuY3Rpb24gbWFjX3By
b2Nlc3NfbmV0d29ya19lbnRpdGxlbWVudAogICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNv
bS5hcHBsZS5wcml2YXRlLnRjYy5tYW5hZ2VyLmNoZWNrLWJ5LWF1ZGl0LXRva2VuOjAgc3RyaW5n
IGtUQ0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb24KICAgICAgICAg
ZmkKIAorICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVz
ZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5yb290bGVzcy5zdG9yYWdlLldlYktpdE5ldHdvcmtpbmdTYW5kYm94IGJvb2wgWUVTCiAgICAg
ZmkKIH0KQEAgLTE0NCw2ICsxNDYsNyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3Nfd2Vi
Y29udGVudF9lCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5
Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlvbiBib29sIFlFUwogICAg
IHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IucHJveHktYXBw
bGljYXRpb24gYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUu
d2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnJ1bm5pbmdib2FyZC5hc3NlcnRpb25zLndlYmtpdCBib29sIFlFUwogICAgIHBsaXN0
YnVkZHkgQWRkIDpkeW5hbWljLWNvZGVzaWduaW5nIGJvb2wgWUVTCiAKQEAgLTE4NCw2ICsxODcs
NyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3NfbmV0d29ya19lbnRpCiAgICAgcGxpc3Ri
dWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLmRtZC5wb2xpY3kgYm9vbCBZRVMKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUubWVtb3J5c3RhdHVzIGJvb2wgWUVTCiAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLm5ldHdvcmsuc29ja2V0LWRlbGVnYXRl
IGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51
c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5y
dW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKIAogICAgIHBsaXN0YnVkZHkg
QWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1ieS1hdWRpdC10b2tlbiBh
cnJheQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRh
YmFzZVhQQ0NvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VYUENDb25zdGFudHMgeworCitjb25zdGV4cHIgYXV0byB4cGNVcGRhdGVMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1k
YXRhYmFzZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY1Jl
cXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUgPSAicmVxdWVzdC1s
YXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiOworY29uc3RleHByIGF1dG8g
eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtleSA9ICJ4cGMtZW5kcG9p
bnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lID0gInhwYy1lbmRwb2ludC1sYXVu
Y2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Cit9IC8vIG5hbWVzcGFjZSBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VNYWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkocmV2
aXNpb24gMjYzODYxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQ
SS5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZp
c2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogCiAgICAgLy8gTmV0
d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVO
ZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51
bGxwdHIpOwotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1
cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQorICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5l
dHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQog
ICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAog
ICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5
ZWRSZXBseSYmKTsKQEAgLTU0Miw2ICs1NDIsMTEgQEAgcHVibGljOgogICAgIGludDMyX3QgdXNl
cklkKCkgY29uc3QgeyByZXR1cm4gbV91c2VySWQ7IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiB4cGNFbmRwb2ludE1lc3NhZ2Uo
KSBjb25zdDsKKyAgICB2b2lkIHNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9j
ZXNzKE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gZW5kcG9pbnRNZXNzYWdlKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgyNiw2ICs4
MzEsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2Vy
SW50ZXJhY3Rpb247CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0
UHRyPHhwY19vYmplY3RfdD4gbV9lbmRwb2ludE1lc3NhZ2U7CisjZW5kaWYKIH07CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAJKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1Myw2ICs5NTMsMTIgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZwogICAgICAgICByZXR1cm47
CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBlbmRwb2ludE1lc3NhZ2Ug
PSBwcm9jZXNzUG9vbCgpLnhwY0VuZHBvaW50TWVzc2FnZSgpOworICAgIGlmIChlbmRwb2ludE1l
c3NhZ2UpCisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uKCkt
PnhwY0Nvbm5lY3Rpb24oKSwgZW5kcG9pbnRNZXNzYWdlLmdldCgpKTsKKyNlbmRpZgorCiAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fd2ViQ29ubmVjdGlvbik7CiAgICAgbV93ZWJDb25uZWN0aW9uID0g
V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKHRoaXMpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0J
KHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNCw0ICs5MzQsMjMgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdoRHluYW1pYwogfQogI2VuZGlmCiAKK09TT2Jq
ZWN0UHRyPHhwY19vYmplY3RfdD4gV2ViUHJvY2Vzc1Bvb2w6OnhwY0VuZHBvaW50TWVzc2FnZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZW5kcG9pbnRNZXNzYWdlOworfQorCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2VzcyhPU09i
amVjdFB0cjx4cGNfb2JqZWN0X3Q+IGVuZHBvaW50TWVzc2FnZSkKK3sKKyAgICBtX2VuZHBvaW50
TWVzc2FnZSA9IGVuZHBvaW50TWVzc2FnZTsKKworICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9w
cm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MtPmlzTGF1bmNoaW5nKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFwcm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29u
bmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRf
bWVzc2FnZShjb25uZWN0aW9uLCBlbmRwb2ludE1lc3NhZ2UuZ2V0KCkpOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9YUENFdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFhQQ0V2
ZW50SGFuZGxlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxYUENFdmVudEhhbmRsZXI+
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKSB7IH0KKworICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0ID0gMDsKK307CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nl
c3NMYXVuY2hlci5oCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzks
MTAgQEAKICNpbmNsdWRlIDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCkBA
IC01Nyw2ICs2MSw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExh
dW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpID0g
MDsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICB2
aXJ0dWFsIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgogICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQ
cm9jZXNzVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDI2Mzg2MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxOCArMjM4LDI4IEBAIHZvaWQgUHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgcHJvY2Vzc0xhdW5jaGVyLT5kaWRGaW5p
c2hMYXVuY2hpbmdQcm9jZXNzKDAsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKICAg
ICB9OwogCi0gICAgYXV0byBlcnJvckhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1v
dmUoZXJyb3JIYW5kbGVySW1wbCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3Zl
KGVycm9ySGFuZGxlckltcGwpLCBldmVudF0gewotICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1w
bChldmVudCk7Ci0gICAgICAgIH0pOworICAgIGF1dG8gZXZlbnRIYW5kbGVyID0gW2Vycm9ySGFu
ZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudEhhbmRsZXIgPSBtX2Ns
aWVudC0+eHBjRXZlbnRIYW5kbGVyKCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewor
CisgICAgICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9F
UlJPUikgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRs
ZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnQgPSBPU09iamVjdFB0cihl
dmVudCldIHsKKyAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50LmdldCgpKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGV2ZW50SGFuZGxlcikgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXIsIGV2ZW50ID0gT1NPYmplY3RQdHIoZXZl
bnQpXSB7CisgICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVyLT5oYW5kbGVYUENFdmVudChldmVu
dC5nZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH07CiAKLSAgICB4cGNf
Y29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGVycm9y
SGFuZGxlcik7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25u
ZWN0aW9uLmdldCgpLCBldmVudEhhbmRsZXIpOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1l
KG1feHBjQ29ubmVjdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRp
b25zLnNob3VsZE1ha2VQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcpKSB7Ci0gICAgICAgIGVy
cm9ySGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyKG51bGxwdHIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYzODYxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiWFBDRXZlbnRIYW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTI5Nyw2ICszMDEsOSBAQCBwcml2YXRlOgog
CiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5j
aGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJy
aWRlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhw
Y0V2ZW50SGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHByb2Nl
c3NBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwogCkBAIC0zMjcsNiArMzM0LDE4IEBAIHByaXZhdGU6CiAg
ICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxQcm9jZXNzQXNzZXJ0aW9uPj4gd2ViUHJvY2Vzc0Fzc2VydGlvbnM7CiAgICAgfTsKICAgICBP
cHRpb25hbDxVcGxvYWRBY3Rpdml0eT4gbV91cGxvYWRBY3Rpdml0eTsKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGNsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2
ZW50SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBYUENFdmVudEhhbmRsZXIoY29uc3Qg
TmV0d29ya1Byb2Nlc3NQcm94eSYpOworCisgICAgICAgIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBj
X29iamVjdF90KSBjb25zdCBvdmVycmlkZTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtQ
dHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICB9OworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJv
eHkuaCIKKworI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgor
I2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvWFBDRW5kcG9pbnQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitS
ZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRs
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94
eTo6WFBDRXZlbnRIYW5kbGVyKCp0aGlzKSk7Cit9CisKK2Jvb2wgTmV0d29ya1Byb2Nlc3NQcm94
eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QgZXZlbnQpIGNv
bnN0Cit7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJS
T1IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFt
ZUtleSk7CisgICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUEND
b25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1l
KQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmROZXR3b3JrUHJv
Y2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKGV2ZW50KTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxl
cihjb25zdCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0
d29ya1Byb2Nlc3MobWFrZVdlYWtQdHIobmV0d29ya1Byb2Nlc3MpKQoreworfQorCit9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2ODQsOCArMTY4NCwxMSBAQAogCQlDMTFBOUVD
QzIxNDAzNUY4MDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFBOUVDQjIxNDAzNUY4MDBDRkIy
MEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggKi87IH07CiAJCUMxMUUxNjk0MjEyQjg3QzUw
MDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMTFFMTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMx
NDkzODA5MjIzNDcxMDQwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAyMjIzNDFD
NjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLzsgfTsKKwkJQzE0RDM3
RkUyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0RDM3RkQyNEFD
RTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovOyB9Owog
CQlDMTVDQkIzNjIzRjM3NzcxMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MwRTIzRENBNDI3
MDAzQTVFRUIgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFBy
ZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIu
bW0gKi87IH07CisJCUMxNjYzRTVCMjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMTY2M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZVhQQ0NvbnN0YW50cy5oICovOyB9OworCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyog
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLzsgfTsKIAkJQzE4MTczNjEyMDU4NDI0NzAw
REZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCAq
LzsgfTsKIAkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIwQTEx
NTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0
RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJh
Z0NvbnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKQEAgLTUwMTgsMTMgKzUwMjEsMjAgQEAKIAkJQzE0
OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNp
c0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3
MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0RDM3RkMy
NEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTVDQkIz
MzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJlZmVyZW5jZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMTY2M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQ
Q0NvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMw
MEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3
QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzVFMjA1ODM5
RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3
aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYwMjA1
ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlu
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBERkRB
NjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpbmsuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUg
LyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzE4RkI1MUUyNDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxl
ckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNCOTIwQTExNTcy
MDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUERGQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFF
RDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250
cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdDb250
cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0
NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1l
SW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGF0ZVRp
bWVJbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9s
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Mzg0LDYgKzYzOTQsNyBAQAogCQkJ
CTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCAq
LywKIAkJCQkyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyUmVnaXN0cnkuaCAqLywKIAkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIyNEE3QkQwMzAw
RDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03NDgxLDYgKzc0OTIsNyBAQAogCQkJCUM1
NUY5MTZEMUM1OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tICovLAogCQkJ
CUNFNTUwRTEzMjI4Mzc0NDQwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5jcHAgKi8sCiAJ
CQkJQ0U1NTBFMTIyMjgzNzNDODAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi8sCisJ
CQkJQzE2NjNFNUEyNEFFQTc0MjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUEND
b25zdGFudHMuaCAqLywKIAkJCQkyRDEwODc2MjFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFt
ZXRlcnNDb2NvYS5tbSAqLywKIAkJCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vz
c1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8sCiAJCQkJQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8q
IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSAqLywKQEAgLTc4NDQsNiArNzg1Niw3IEBACiAJ
CTUxMENDN0U3MTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNjI0QTU2OEY1MDAzRjZDRDMgLyog
Y29jb2EgKi8sCiAJCQkJMjlBRDMwOTExNjRCNEMxMDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29s
cyAqLywKIAkJCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyogbWFjICovLAogCQkJCTUxMEND
N0VBMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAqLywKQEAgLTgz
NzQsNiArODM4Nyw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDRDQ1NzBDQjI0NDBGQjJBMDBB
M0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJCUNENDU3
MENBMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oICov
LAorCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5oICovLAorCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKIAkJCQk0NDZEQzY0QjI0QTJEOEFEMDA2MUYzOTAg
LyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAqLywKIAkJCQlDREEyOUExOTFD
QkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oICovLAogCQkJCUNEQTI5
QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
ICovLApAQCAtODQyNSw2ICs4NDQwLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEMEM1NkZC
MjI5RjFERUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCAqLywKIAkJCQky
RDBDNTZGQzIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tICov
LAorCQkJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIuaCAqLywKKwkJCQlDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICovLAogCQkJCTUzMTU4NzZCMjA3NkI3MTMwMDRCRjlG
MyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2EubW0gKi8sCiAJCQkJNTMyMTU5NEYxREJB
RTZENzAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLmggKi8sCiAJCQkJNUNCQzlCOEIx
QzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovLApAQCAtMTAyNTIs
NiArMTAyNjksMTQgQEAKIAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsK
KwkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyog
TmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUM1NDI1NkFFMThCRUMxNjEwMERF
NDE3OSAvKiBmb3JtcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xMDg1OCw2ICsxMDg4Myw3IEBACiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8q
IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU0
OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFFNDk4NzgxMUZGN0ZBQTAwNDhCNDY0IC8qIEpTTlBPYmplY3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCUMxNjYzRTVCMjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBD
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkg
LyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MkRDMTExMkY4
QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0
RTkzNkZEMjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggaW4gSGVh
ZGVycyAqLywKQEAgLTEyNzI2LDYgKzEyNzUyLDggQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4
MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDkxMzQ0MTIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDkxMzQ0MjIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMTcxMENGNzI0QUE2NDMyMDBE
N0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5
MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8q
IExpYldlYlJUQ05ldHdvcmtNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM4NjEp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5MCw2ICsyOTAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVj
dGlvbihJUAogewogICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNv
bm5lY3Rpb24pOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFuZGxlWFBDRW5kcG9pbnRN
ZXNzYWdlcygpOworI2VuZGlmCisKICAgICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0bHkgZnJv
bSB0aGUgYmFja2dyb3VuZCBxdWV1ZSBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3Bv
bnNpdmUKICAgICAvLyBhbmQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBn
ZXQgY2FsbGVkLgogICAgIGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1
ZXVlQ2FsbGJhY2soY2FsbEV4aXQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCShyZXZpc2lvbiAyNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDEwIEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklE
ID8gbV9zZXNzaW9uSUQtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsgfQogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkg
Y29uc3Q7CisjZW5kaWYKKwogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1f
d2ViQ29ubmVjdGlvbjsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJl
ZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjYz
ODYxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJQYWdl
LmgiCiAKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5oIgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBv
cnQgIlBsdWdpblZpZXcuaCIKICNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlLmgiCkBAIC01NiwxMiArNTcsMjIgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXIuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdl
YlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpz
aW5nbGV0b24oKS53YWl0Rm9yRGF0YWJhc2VVcGRhdGUoNV9zKTsKKyNpZiBBU1NFUlRfRU5BQkxF
RAorICAgIGF1dG8gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVy
Rm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAg
IEFTU0VSVCghU3RyaW5nKHV0aS5nZXQoKSkuaXNFbXB0eSgpKTsKKyNlbmRpZgorCiAgICAgbV9k
YXRhRGV0ZWN0aW9uQ29udGV4dCA9IHBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CiAK
ICAgICBpZiAocGFyYW1ldGVycy5uZUhlbHBlckV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9y
dCA8V2ViQ29yZS9YUENFbmRwb2ludENsaWVudC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyIDogcHVi
bGljIFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgYm9vbCB3YWl0
Rm9yRGF0YWJhc2VVcGRhdGUoU2Vjb25kcyk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBoYW5kbGVF
dmVudCh4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ29ubmVjdCgpIG92ZXJy
aWRlOworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9oYXNSZWNlaXZlZExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2UgeyBmYWxzZSB9OworICAgIEJpbmFyeVNlbWFwaG9yZSBtX3NlbWFwaG9yZTsKK307
CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0JKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VN
YW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
LmgiCisKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvWFBDRW5kcG9pbnQuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1
bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNp
bXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXImIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VN
YW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQo
KTsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQo
eHBjX29iamVjdF90IG1lc3NhZ2UpCit7CisgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVL
ZXkpOworICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6
eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAgICAgIGF1
dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobWVzc2FnZSwgTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSk7
CisgICAgICAgIGlmIChkYXRhYmFzZSkgeworICAgICAgICAgICAgYXV0byBjb250ZXh0ID0gW05T
Q2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRl
eHRdOworICAgICAgICAgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKG9ic2VydmVEYXRhYmFzZUNoYW5nZTRXZWJLaXQ6KV0pCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgW2NvbnRleHQgb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDpk
YXRhYmFzZV07CisgICAgICAgIH0KKyAgICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7CisgICAg
ICAgIG1faGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlID0gdHJ1ZTsKKyAgICB9Cit9
CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmRpZENvbm5lY3QoKQorewor
ICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51
bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3Nh
Z2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjUmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0YWJhc2VVcGRh
dGVNZXNzYWdlTmFtZSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVj
dGlvbigpLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKK30KKworYm9vbCBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlTWFuYWdlcjo6d2FpdEZvckRhdGFiYXNlVXBkYXRlKFNlY29uZHMgdGltZW91dCkKK3sK
KyAgICBpZiAobV9oYXNSZWNlaXZlZExhdW5jaFNlcnZpY2VzRGF0YWJhc2UpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBtX3NlbWFwaG9yZS53YWl0Rm9yKHRpbWVvdXQpOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDgg
QEAKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDb2NvYS5oIgog
CisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorI2ltcG9ydCAiTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dJbml0aWFsaXphdGlvbi5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgpAQCAtNjksNiArNzEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TV0NvbnRl
eHRNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N5c3RlbUJhdHRlcnkuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1hQQ0VuZHBvaW50Lmg+
CiAjaW1wb3J0IDxhbGdvcml0aG0+CiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2lt
cG9ydCA8b2JqYy9ydW50aW1lLmg+CkBAIC0xNjEsMjUgKzE2NCwzMiBAQCBzdGF0aWMgaWQgTlNB
cHBsaWNhdGlvbkFjY2Vzc2liaWxpdHlGb2N1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6OmhhbmRsZVhQQ0VuZHBvaW50TWVzc2Fn
ZXMoKSBjb25zdAogewotICAgIC8vIE1hcCBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UuIFRoaXMg
c2hvdWxkIGJlIGRvbmUgYXMgZWFybHkgYXMgcG9zc2libGUsIGFzIHRoZSBtYXBwaW5nIHdpbGwg
ZmFpbAotICAgIC8vIGlmICdjb20uYXBwbGUubHNkLm1hcGRiJyBpcyBiZWluZyBhY2Nlc3NlZCBi
ZWZvcmUgdGhpcy4KLSAgICBpZiAocGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRsZSkgewot
ICAgICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3Zl
KCpwYXJhbWV0ZXJzLm1hcERCRXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgICAgIGJvb2wgb2sgPSBl
eHRlbnNpb24tPmNvbnN1bWUoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAg
ICAgICAvLyBQZXJmb3JtIEFQSSBjYWxscyB3aGljaCB3aWxsIGNvbW11bmljYXRlIHdpdGggdGhl
IGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZSwgYW5kIG1hcCB0aGUgZGF0YWJhc2UuCi0gICAgICAg
IGF1dG8gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
KGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIGlmICgh
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFtb
b2JqY19nZXRDbGFzcygiX0xTRFJlYWRTZXJ2aWNlIikgWFBDQ29ubmVjdGlvblRvU2VydmljZV0g
aW52YWxpZGF0ZV07CisgICAgYXV0byBjb25uZWN0aW9uID0gcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+eHBjQ29ubmVjdGlvbigpOwogCi0gICAgICAgIG9rID0gZXh0ZW5zaW9uLT5yZXZva2Uo
KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOworICAgIHhwY19jb25uZWN0aW9uX3Nl
dF90YXJnZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQ
QVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0
X2V2ZW50X2hhbmRsZXIoY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAg
ICAgaWYgKHhwY19nZXRfdHlwZShldmVudCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBBU1NFUlQoU3RyaW5nKHV0aS5nZXQoKSkgPT0gU3Ry
aW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdD
bGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKS5nZXQoKSkpOwotICAgIH0KKyAg
ICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVu
dCwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKG1lc3NhZ2VO
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUpIHsKKyAgICAgICAgICAgIGF1dG8g
ZW5kcG9pbnQgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUoZXZlbnQsIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2lu
dE5hbWVLZXkpOworICAgICAgICAgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNp
bmdsZXRvbigpLnNldEVuZHBvaW50KGVuZHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0pOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sK
ICNpZiAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFdlYkNvcmU6
OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViQ29yZUxvZ2dp
bmdDaGFubmVscyk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eShwYXJhbWV0ZXJzLndlYktpdExvZ2dpbmdDaGFubmVscyk7CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwMzkpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNy0w
NyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29h
XSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nl
c3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L1hQQ0VuZHBvaW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTA3LTA3ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRk
IFdlYkNvcmVOU1VSTFNlc3Npb24gU1BJIHRvIHNlbmQgSFRUUC8yIHBpbmcKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjM4NjEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtOTA4LDYgKzkwOCw3IEBACiAJCUMwQzVEM0M2MTQ1OTkxMjkwMEE4MDJBNiAvKiBHZXRCYWNr
aW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2Fs
ZUZhY3Rvcl9CdW5kbGUubW0gKi87IH07CiAJCUMxM0Q4MkQ5MjQxNkYxMzIwMEE2Mjc5MyAvKiBF
bmFibGVBY2Nlc3NpYmlsaXR5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzEzRDgyRDgyNDE2RjEzMjAwQTYyNzkzIC8qIEVuYWJsZUFjY2Vzc2liaWxp
dHkubW0gKi87IH07CiAJCUMxNDlENTUwMjQyRTk4REYwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0OUQ1
NEYyNDJFOTg0NDAwM0VCQjEyIC8qIFNsZWVwRGlzYWJsZXIubW0gKi87IH07CisJCUMxNEQzMDQ2
MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNEQzMDQ1MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENF
bmRwb2ludC5tbSAqLzsgfTsKIAkJQzE1Q0JCMzAyM0YxRkYxQTAwMzAwQ0M3IC8qIEJhY2tsaWdo
dExldmVsTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzE1Q0JCMkYyM0YxRkYxQTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90
aWZpY2F0aW9uLm1tICovOyB9OwogCQlDMTVDQkIzRjIzRkIxNzdBMDAzMDBDQzcgLyogUHJlZmVy
ZW5jZUNoYW5nZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMTVDQkIzRTIzRkIxNzdBMDAzMDBDQzcgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gKi87
IH07CiAJCUMxNjkyRENBMjNEMTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2OTJEQzkyM0QxMERBRTAwNkU4
OEY3IC8qIEJhdHRlcnkubW0gKi87IH07CkBAIC0yNTQ5LDYgKzI1NTAsNyBAQAogCQlDMEM1RDNC
RDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rv
cl9CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxM0Q4MkQ4MjQxNkYx
MzIwMEE2Mjc5MyAvKiBFbmFibGVBY2Nlc3NpYmlsaXR5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRW5hYmxlQWNjZXNzaWJpbGl0eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzE0OUQ1NEYyNDJFOTg0NDAwM0VCQjEyIC8qIFNsZWVwRGlzYWJsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTbGVlcERpc2FibGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMTREMzA0NTI0QjRDM0JBMDA0ODAzODcgLyogWFBDRW5kcG9p
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUENFbmRwb2ludC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzE1Q0JCMkYyM0YxRkYxQTAwMzAwQ0M3IC8qIEJhY2tsaWdodExl
dmVsTm90aWZpY2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmFja2xpZ2h0TGV2ZWxO
b3RpZmljYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNUNCQjNFMjNG
QjE3N0EwMDMwMENDNyAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcmVuY2VDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJhdHRlcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMDM0LDYgKzMwMzYsNyBAQAogCQkJCUMxNDlENTRGMjQyRTk4NDQwMDNFQkIxMiAv
KiBTbGVlcERpc2FibGVyLm1tICovLAogCQkJCTBGMTM5RTc1MUE0MjNBNTMwMEY1OTBGNSAvKiBX
ZWFrT2JqQ1B0ci5tbSAqLywKIAkJCQlDMUZGOUVEQTI0NDY0NEYwMDA4MzlBRTQgLyogV2ViRmls
dGVyLm1tICovLAorCQkJCUMxNEQzMDQ1MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5t
bSAqLywKIAkJCSk7CiAJCQluYW1lID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtNTM3OCw2ICs1MzgxLDcgQEAKIAkJCQlDRDdGODlEQzIyQTg2Q0RBMDBENjgzQUUgLyog
V0tXZWJWaWV3U3VzcGVuZEFsbE1lZGlhUGxheWJhY2subW0gaW4gU291cmNlcyAqLywKIAkJCQk5
OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M3NEM4RkEyMkRGQkE5NjAwREEyREFCIC8qIFdURlN0cmluZ1V0aWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzA0NjI0QjRDM0JBMDA0ODAzODcgLyogWFBD
RW5kcG9pbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QzY0REMzMjFENzYxOThBMDA0QjU5OEUg
LyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvWFBDRW5kcG9pbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvWFBDRW5kcG9pbnQubW0JKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvWFBDRW5kcG9pbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9Y
UENFbmRwb2ludC5oPgorI2ltcG9ydCA8V2ViQ29yZS9YUENFbmRwb2ludENsaWVudC5oPgorI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0YXRpYyBib29sIGNsaWVudENvbm5lY3Rl
ZFRvRW5kcG9pbnQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGVuZHBvaW50UmVjZWl2ZWRNZXNzYWdl
RnJvbUNsaWVudCA9IGZhbHNlOworc3RhdGljIGJvb2wgY2xpZW50UmVjZWl2ZWRNZXNzYWdlRnJv
bUVuZHBvaW50ID0gZmFsc2U7CisKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXN0TWVzc2FnZUZy
b21FbmRwb2ludCA9ICJ0ZXN0LW1lc3NhZ2UtZnJvbS1lbmRwb2ludCI7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gdGVzdE1lc3NhZ2VGcm9tQ2xpZW50ID0gInRlc3QtbWVzc2FnZS1mcm9tLWNsaWVu
dCI7CisKK2NsYXNzIFhQQ0VuZHBvaW50IDogcHVibGljIFdlYkNvcmU6OlhQQ0VuZHBvaW50IHsK
K3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFtZUtleSgpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
Y29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAg
eworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY29uc3QgY2hhciogeHBjRW5k
cG9pbnROYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICB2b2lkIGhhbmRsZUV2ZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbiwgeHBjX29iamVjdF90IGV2ZW50KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU3RyaW5n
IG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9p
bnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IHRlc3RN
ZXNzYWdlRnJvbUNsaWVudCkgeworICAgICAgICAgICAgZW5kcG9pbnRSZWNlaXZlZE1lc3NhZ2VG
cm9tQ2xpZW50ID0gdHJ1ZTsKKworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09i
amVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAg
ICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgpLCBYUENFbmRwb2lu
dDo6eHBjTWVzc2FnZU5hbWVLZXksIHRlc3RNZXNzYWdlRnJvbUVuZHBvaW50KTsKKyAgICAgICAg
ICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlLmdldCgp
KTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIFhQQ0VuZHBvaW50Q2xpZW50IDogcHVi
bGljIFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50IHsKK3ByaXZhdGU6CisgICAgdm9pZCBoYW5k
bGVFdmVudCh4cGNfb2JqZWN0X3QgZXZlbnQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBTdHJp
bmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCBYUENFbmRw
b2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOworICAgICAgICBpZiAobWVzc2FnZU5hbWUgPT0gdGVz
dE1lc3NhZ2VGcm9tRW5kcG9pbnQpCisgICAgICAgICAgICBjbGllbnRSZWNlaXZlZE1lc3NhZ2VG
cm9tRW5kcG9pbnQgPSB0cnVlOworICAgIH0KKyAgICB2b2lkIGRpZENvbm5lY3QoKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlv
bmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4cGNfZGljdGlvbmFy
eV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtl
eSwgdGVzdE1lc3NhZ2VGcm9tQ2xpZW50KTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9t
ZXNzYWdlKGNvbm5lY3Rpb24oKS5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisKKyAgICAgICAgY2xp
ZW50Q29ubmVjdGVkVG9FbmRwb2ludCA9IHRydWU7CisgICAgfQorfTsKKworVEVTVChXZWJLaXQs
IFhQQ0VuZHBvaW50KQoreworICAgIFhQQ0VuZHBvaW50IHhwY0VuZHBvaW50OworICAgIFhQQ0Vu
ZHBvaW50Q2xpZW50IHhwY0VuZHBvaW50Q2xpZW50OworCisgICAgeHBjRW5kcG9pbnRDbGllbnQu
c2V0RW5kcG9pbnQoeHBjRW5kcG9pbnQuZW5kcG9pbnQoKS5nZXQoKSk7CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmNsaWVudENvbm5lY3RlZFRvRW5kcG9pbnQpOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZW5kcG9pbnRSZWNlaXZlZE1lc3NhZ2VGcm9tQ2xpZW50KTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNsaWVudFJlY2VpdmVkTWVzc2FnZUZyb21F
bmRwb2ludCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403731</attachid>
            <date>2020-07-07 14:53:11 -0700</date>
            <delta_ts>2020-07-07 15:32:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200707145310.patch</filename>
            <type>text/plain</type>
            <size>87439</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQwMzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
Y2xhcmUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgeHBjIGVuZHBvaW50LCBhcyB3ZWxsIGFzIGEgZnVu
Y3Rpb24gdG8gY3JlYXRlIGEgY29ubmVjdGlvbiBmcm9tIGFuIGVuZHBvaW50LgorCisgICAgICAg
ICogd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDcgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYlByb2Nlc3Mg
aGFuZ3Mgd2hlbiBicm93c2luZyBHaXRIdWIKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3
aW4vWFBDU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENT
UEkuaAkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENT
UEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSB2b2lkIF94cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlw
ZWRlZiB2b2lkKiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRf
dDsKIAogI2RlZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAg
LTEyMSw2ICsxMjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwg
CiBib29sIHhwY19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVj
dGlvbl9jYW5jZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25u
ZWN0aW9uX2NyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19l
bmRwb2ludF90IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29u
bmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2lu
dF90KTsKIHhwY19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2Vydmlj
ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBw
aWRfdCB4cGNfY29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNf
Y29ubmVjdGlvbl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjQwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMSBAQAorMjAyMC0wNy0wNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFi
YXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWJzdHJh
Y3QgY2xhc3NlcyBYUENFbmRwb2ludCBhbmQgWFBDRW5kcG9pbnRDbGllbnQgdG8gaGFuZGxlIHRo
ZSBjcmVhdGlvbiBvZiBkaXJlY3QgeHBjIGNvbm5lY3Rpb25zIGJldHdlZW4gV2ViS2l0IHByb2Nl
c3Nlcy4KKyAgICAgICAgSW4gb3JkZXIgdG8gY3JlYXRlIGEgZGlyZWN0IHhwYyBjb25uZWN0aW9u
IGJldHdlZW4gdHdvIHByb2Nlc3NlcywgdGhlc2UgdHdvIGNsYXNzZXMgY2FuIGJlIHN1YmNsYXNz
ZWQsIGFuZCB0aGUgeHBjIGVuZHBvaW50IGNyZWF0ZWQKKyAgICAgICAgYnkgdGhlIFhQQ0VuZHBv
aW50IG9iamVjdCwgY2FuIGJlIHNlbnQgdmlhIHRoZSBVSSBwcm9jZXNzIG92ZXIgdGhlIGJvb3Rz
dHJhcCB4cGMgY29ubmVjdGlvbi4gVGhlIFVJIHByb2Nlc3MgY2FuIHRoZW4gZm9yd2FyZCB0aGlz
CisgICAgICAgIGVuZHBvaW50IHRvIGFub3RoZXIgV2ViS2l0IHByb2Nlc3MgYnkgc2VuZGluZyBp
dCBvdmVyIHRoZSBib290c3RyYXAgeHBjIGNvbm5lY3Rpb24uIFRoZSByZWNlaXZpbmcgcHJvY2Vz
cyBjYW4gdGhlbiBpbml0aWFsaXplIGFuCisgICAgICAgIFhQQ0VuZHBvaW50Q2xpZW50IG9iamVj
dCB3aXRoIHRoaXMgZW5kcG9pbnQsIGFuZCBhIG5ldyBkaXJlY3QgY29ubmVjdGlvbiB3aWxsIHRo
ZW4gYmUgYXZhaWxhYmxlLCBvdmVyIHdoaWNoIHRoZSB0d28gcHJvY2Vzc2VzIGNhbgorICAgICAg
ICBjb21tdW5pY2F0ZS4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0LlhQQ0VuZHBvaW50CisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvWFBDRW5kcG9pbnQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvWFBDRW5kcG9pbnQubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFBDRW5kcG9p
bnQ6OlhQQ0VuZHBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhQQ0VuZHBvaW50OjpzZW5kRW5k
cG9pbnRUb0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6WFBDRW5kcG9pbnQ6OmVuZHBv
aW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludENsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50Ojp+WFBDRW5kcG9p
bnRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50OjpzZXRFbmRwb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpYUENFbmRwb2ludENsaWVudDo6Y29ubmVjdGlvbik6CisK
IDIwMjAtMDctMDcgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBjb250ZW50IHByb2Nlc3MgaGFuZ3MgaW4gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSBpbiBzb21lIGNvcm5lciBjYXNl
cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA2LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBb
Q29jb2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERlY2xhcmUgaW50ZXJmYWNlIGZvciBvYnNlcnZpbmcg
YW5kIGNvbnN1bWluZyB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLgorCisgICAgICAgICog
cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA3LTA3ICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIDxhdHRhY2htZW50PiBs
YXlvdXQgZG9lcyBub3Qgc2NhbGUgd2l0aCBEeW5hbWljIFR5cGUgc2l6ZSBjaGFuZ2VzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZp
Y2VzU1BJLmgJKHJldmlzaW9uIDI2NDAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE2ICsyNSwx
MCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPENv
cmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+Ci0jZWxpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KLSNlbGlmIFBM
QVRGT1JNKElPUykKLSNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vydmlj
ZXNQcml2Lmg+Ci0jZW5kaWYKLQogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAK
ICNpZiBIQVZFKEFQUF9MSU5LUykKQEAgLTg1LDExICs3OSwxNCBAQCBlbnVtIExTU2Vzc2lvbklE
IHsKIAogI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCi1AaW50ZXJmYWNlIF9M
U0RTZXJ2aWNlIDogTlNPYmplY3QgPE5TWFBDTGlzdGVuZXJEZWxlZ2F0ZT4KLSsgKE5TWFBDQ29u
bmVjdGlvbiAqKVhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2U7CitAaW50ZXJmYWNlIExTRGF0YWJhc2VD
b250ZXh0IDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAoY2xhc3MsIHJlYWRvbmx5KSBMU0RhdGFiYXNl
Q29udGV4dCAqc2hhcmVkRGF0YWJhc2VDb250ZXh0OwogQGVuZAogCi1AaW50ZXJmYWNlIF9MU0RS
ZWFkU2VydmljZSA6IF9MU0RTZXJ2aWNlCitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChX
ZWJLaXRDaGFuZ2VUcmFja2luZykKKy0gKGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VP
YnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4pKHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOwor
LSAodm9pZClyZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0
Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVj
dF90KWNoYW5nZTsKIEBlbmQKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2
NDAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDAwMiw2ICs0MDAyLDEwIEBACiAJCUMxNDlENTVEMjQyRUE2
QjkwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ5RDU1QTI0MkVBNEY5MDAzRUJCMTIgLyogU2xlZXBEaXNh
Ymxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMxNDlENTVGMjQyRUE3QjgwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ5RDU1QjI0MkVBNEZB
MDAzRUJCMTIgLyogU2xlZXBEaXNhYmxlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNDlENTY3MjQyRUI4NEEwMDNFQkIxMiAvKiBT
bGVlcERpc2FibGVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzE0OUQ1NjUyNDJFQjc2NTAwM0VCQjEyIC8qIFNsZWVwRGlzYWJsZXJJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQzE0RDMwNDkyNEI0RUFCMTAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTREMzA0NzI0QjRFQUE4MDA0
ODAzODcgLyogWFBDRW5kcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlDMTREMzA0QjI0QjRGN0VGMDA0ODAzODcgLyogWFBDRW5kcG9pbnQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTREMzA0
QTI0QjRFQjFFMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gKi87IH07CisJCUMxNEQzMDRFMjRC
NEY4RkEwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNEQzMDRDMjRCNEY4RjYwMDQ4MDM4NyAvKiBY
UENFbmRwb2ludENsaWVudC5tbSAqLzsgfTsKKwkJQzE0RDMwNEYyNEI0RjhGRjAwNDgwMzg3IC8q
IFhQQ0VuZHBvaW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMTREMzA0RDI0QjRGOEY3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTY5
MkREMjIzRDIzQUJEMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjkyREQxMjNEMjNBQkQwMDZFODhGNyAv
KiBTeXN0ZW1CYXR0ZXJ5Lm1tICovOyB9OwogCQlDMTY5MkRENTIzRDIzRTA4MDA2RTg4RjcgLyog
U3lzdGVtQmF0dGVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE2OTJERDQyM0QyM0FFMDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMUUxRDIzNjIwM0RG
MTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMUQyMzUyMDNERjE1NDAwNTg0NjY1IC8qIFNjcmVl
blByb3BlcnRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTM3MzAsNiArMTM3MzQsMTAgQEAKIAkJQzE0OUQ1NUEyNDJFQTRGOTAwM0VCQjEy
IC8qIFNsZWVwRGlzYWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2xl
ZXBEaXNhYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5RDU1QjI0MkVB
NEZBMDAzRUJCMTIgLyogU2xlZXBEaXNhYmxlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTbGVlcERpc2FibGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMxNDlENTY1MjQyRUI3NjUwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVySWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTbGVlcERpc2FibGVySWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMTREMzA0NzI0QjRFQUE4MDA0ODAzODcgLyogWFBDRW5k
cG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0RDMwNEEyNEI0RUIxRTAwNDgwMzg3IC8q
IFhQQ0VuZHBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
WFBDRW5kcG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzMDRDMjRC
NEY4RjYwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFhQQ0VuZHBvaW50Q2xpZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMTREMzA0RDI0QjRGOEY3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnRDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE2OTJERDEyM0QyM0FCRDAwNkU4
OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1CYXR0
ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRENDIzRDIzQUUwMDA2
RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTE4MjQyRjkzODIwMDdFOTg3NSAv
KiBTbGVlcERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsZWVwRGlzYWJs
ZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM2MzIsNiArMjM2
NDAsMTAgQEAKIAkJCQlDREM5NzlGMzFDNDk4QzA5MDBEQjUwRDQgLyogV2ViQ29yZU5TRXJyb3JF
eHRyYXMuaCAqLywKIAkJCQlDREM5NzlGMjFDNDk4QzA5MDBEQjUwRDQgLyogV2ViQ29yZU5TRXJy
b3JFeHRyYXMubW0gKi8sCiAJCQkJNURGRUJBQjYxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2
YWlsYWJpbGl0eS5oICovLAorCQkJCUMxNEQzMDQ3MjRCNEVBQTgwMDQ4MDM4NyAvKiBYUENFbmRw
b2ludC5oICovLAorCQkJCUMxNEQzMDRBMjRCNEVCMUUwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5t
bSAqLywKKwkJCQlDMTREMzA0RDI0QjRGOEY3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQu
aCAqLywKKwkJCQlDMTREMzA0QzI0QjRGOEY2MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQu
bW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTMwMDk3LDYgKzMwMTA5LDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQg
LyogQ29sb3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRjAy
NDdGNDExMDAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0M1MTRFMDMyNEFGODA1RTAwNTA3MTBGIC8qIENvbG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzEwM0I3REYxREIwMTU2NzAwOEJCODkwIC8qIENvbG9ySGFzaC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1Mu
aCBpbiBIZWFkZXJzICovLApAQCAtMzM5MjMsNyArMzM5MzYsNiBAQAogCQkJCTkxMjc4RDYyMjFE
RURBRjAwMEI1NzE4NCAvKiBXb3JrZXJBdWRpdEFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MUE3RDM1MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQ0QxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlckNv
bnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M1MTRFMDMyNEFGODA1RTAwNTA3MTBG
IC8qIENvbG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1NjM5RDExQzZGMDlF
MzAwODA2RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
QjgxQ0NFMUZBQTQ0REUwMDM3RDFFNiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTJCMzQ5RTFGQTQxNzAzMDA4QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzk5MCw2ICszNDAwMiw4IEBACiAJCQkJMUFCN0ZDODQw
QThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoVXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZD
ODYwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QjdGQzg4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFZhcmlhYmxlUmVmZXJlbmNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDMTREMzA0OTI0QjRFQUIxMDA0ODAzODcgLyogWFBDRW5kcG9pbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCUMxNEQzMDRGMjRCNEY4RkYwMDQ4MDM4NyAvKiBYUENFbmRwb2lu
dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCOUMyNDEzMTk1MDAwRTc5NEQ2IC8q
IFhSRW52aXJvbm1lbnRCbGVuZE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU4Qjk3MjQx
MzE5NTAwMEU3OTRENiAvKiBYUkV5ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCOEYyNDEz
MTk1MDAwRTc5NEQ2IC8qIFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApA
QCAtMzUxODUsNiArMzUxOTksOCBAQAogCQkJCUE4MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAvKiBY
TGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2
NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTVBMzZEOTExMDQ1NzI3MDBC
N0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzA0QjI0QjRG
N0VGMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzA0
RTI0QjRGOEZBMDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQlFMUVFOEI3QTI0MTMxOTFGMDBFNzk0RDYgLyogWFJJbnB1dFNvdXJjZUV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxRUU4QkE3MjQxMzE5NjMwMEU3OTRENiAvKiBYUklucHV0U291
cmNlc0NoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU4Qjk1MjQxMzE5NTAw
MEU3OTRENiAvKiBYUlJlZmVyZW5jZVNwYWNlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50LmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvWFBDRW5kcG9pbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBYUENFbmRwb2ludCB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgWFBDRW5kcG9p
bnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5YUENFbmRwb2ludCgpID0gZGVmYXVs
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKHhw
Y19jb25uZWN0aW9uX3QpOworCisgICAgV0VCQ09SRV9FWFBPUlQgT1NPYmplY3RQdHI8eHBjX2Vu
ZHBvaW50X3Q+IGVuZHBvaW50KCkgY29uc3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
eHBjTWVzc2FnZU5hbWVLZXkgPSAibWVzc2FnZS1uYW1lIjsKKworcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TWVzc2FnZU5hbWVLZXkoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgY29uc3QgY2hhciogeHBjRW5kcG9pbnROYW1lS2V5KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90LCB4cGNfb2Jq
ZWN0X3QpID0gMDsKKworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVj
dGlvbjsKKyAgICBPU09iamVjdFB0cjx4cGNfZW5kcG9pbnRfdD4gbV9lbmRwb2ludDsKK307CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Lm1t
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBv
aW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlhQQ0VuZHBvaW50LmgiCisKKyNpbXBvcnQgPHd0Zi9j
b2NvYS9FbnRpdGxlbWVudHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitYUENFbmRwb2lu
dDo6WFBDRW5kcG9pbnQoKQoreworICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NPYmplY3QoeHBj
X2Nvbm5lY3Rpb25fY3JlYXRlKG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBtX2VuZHBvaW50ID0g
YWRvcHRPU09iamVjdCh4cGNfZW5kcG9pbnRfY3JlYXRlKG1fY29ubmVjdGlvbi5nZXQoKSkpOwor
CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rpb24uZ2V0KCks
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVu
dF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVzc2FnZSkgewor
ICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7CisKKyAgICAg
ICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfQ09OTkVDVElPTikgeworICAgICAgICAgICAgeHBjX2Nv
bm5lY3Rpb25fdCBjb25uZWN0aW9uID0gbWVzc2FnZTsKKyAgICAgICAgICAgIGF1ZGl0X3Rva2Vu
X3QgYXVkaXRUb2tlbjsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tl
bihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisKKyAgICAgICAgICAgIGlmICghV1RGOjpoYXNF
bnRpdGxlbWVudChhdWRpdFRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMt
ZW5kcG9pbnQiKSkgeworICAgICAgICAgICAgICAgIC8vIFVuY29tbWVudCBiZWZvcmUgbGFuZGlu
ZzsgdGhpcyBpcyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgdGhlIGJvdHMgZG9lcyBub3Qgc2VlbSB0
byB1cGRhdGUgdGhlIGVudGl0bGVtZW50cyBvbiBpbmNyZW1lbnRhbCBidWlsZHMuCisgICAgICAg
ICAgICAgICAgLy8gV1RGTG9nQWx3YXlzKCJBdWRpdCB0b2tlbiBkb2VzIG5vdCBoYXZlIHJlcXVp
cmVkIGVudGl0bGVtZW50Iik7CisgICAgICAgICAgICAgICAgLy8gcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShjb25uZWN0
aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICAgICAgICAgIHhwY19jb25uZWN0
aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24sIF4oeHBjX29iamVjdF90IGV2ZW50KSB7
CisgICAgICAgICAgICAgICAgaGFuZGxlRXZlbnQoY29ubmVjdGlvbiwgZXZlbnQpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUoY29ubmVjdGlvbik7
CisgICAgICAgIH0KKyAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0
aW9uLmdldCgpKTsKK30KKwordm9pZCBYUENFbmRwb2ludDo6c2VuZEVuZHBvaW50VG9Db25uZWN0
aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICBpZiAoIWNvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBj
X2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4cGNfZGljdGlv
bmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIHhwY0VuZHBvaW50TWVzc2FnZU5hbWVLZXko
KSwgeHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUobWVzc2FnZS5nZXQoKSwgeHBjRW5kcG9pbnROYW1lS2V5KCksIG1fZW5kcG9pbnQuZ2V0KCkp
OworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2Uu
Z2V0KCkpOworfQorCitPU09iamVjdFB0cjx4cGNfZW5kcG9pbnRfdD4gWFBDRW5kcG9pbnQ6OmVu
ZHBvaW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lbmRwb2ludDsKK30KKworfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvWFBDRW5kcG9pbnRDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludENsaWVudC5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBv
aW50Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvT1NP
YmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBYUENFbmRwb2ludENsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+WFBDRW5kcG9pbnRDbGllbnQoKSB7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0RW5kcG9pbnQoeHBjX2VuZHBvaW50X3QpOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09S
RV9FWFBPUlQgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbigpOworCitw
cml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3QpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpID0gMDsKKworICAgIE9TT2JqZWN0UHRyPHhw
Y19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyAgICBMb2NrIG1fbG9jazsKK307CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50
Q2xpZW50Lm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1hQQ0VuZHBvaW50Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisq
CisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisq
CisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJYUENFbmRwb2ludENsaWVudC5oIgorCisjaW1wb3J0IDx3dGYvY29j
b2EvRW50aXRsZW1lbnRzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBYUENFbmRw
b2ludENsaWVudDo6c2V0RW5kcG9pbnQoeHBjX2VuZHBvaW50X3QgZW5kcG9pbnQpCit7CisgICAg
eworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworCisgICAgICAgIGlmIChtX2Nv
bm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9jb25uZWN0aW9uID0g
YWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVhdGVfZnJvbV9lbmRwb2ludChlbmRwb2lu
dCkpOworCisgICAgICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25uZWN0
aW9uLmdldCgpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9S
SVRZX0RFRkFVTFQsIDApKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRs
ZXIobV9jb25uZWN0aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBtZXNzYWdlKSB7CisgICAgICAg
ICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7CisgICAgICAgICAg
ICBpZiAodHlwZSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICAgICAgICAgIGlmIChtZXNz
YWdlID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgfHwgbWVzc2FnZSA9PSBYUENfRVJS
T1JfVEVSTUlOQVRJT05fSU1NSU5FTlQpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uID0gbnVs
bHB0cjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHR5cGUgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihtZXNzYWdlKTsKKyAgICAgICAgICAg
IGlmICghY29ubmVjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBh
dWRpdF90b2tlbl90IGF1ZGl0VG9rZW47CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRf
YXVkaXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOworICAgICAgICAgICAgaWYgKCFX
VEY6Omhhc0VudGl0bGVtZW50KGF1ZGl0VG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQu
dXNlLXhwYy1lbmRwb2ludCIpKSB7CisgICAgICAgICAgICAgICAgLy8gVW5jb21tZW50IGJlZm9y
ZSBsYW5kaW5nOyB0aGlzIGlzIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSB0aGUgYm90cyBkb2VzIG5v
dCBzZWVtIHRvIHVwZGF0ZSB0aGUgZW50aXRsZW1lbnRzIG9uIGluY3JlbWVudGFsIGJ1aWxkcy4K
KyAgICAgICAgICAgICAgICAvLyBXVEZMb2dBbHdheXMoIkF1ZGl0IHRva2VuIGRvZXMgbm90IGhh
dmUgcmVxdWlyZWQgZW50aXRsZW1lbnQiKTsKKyAgICAgICAgICAgICAgICAvLyByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVFdmVudChtZXNzYWdlKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbi5nZXQoKSk7
CisgICAgfQorCisgICAgZGlkQ29ubmVjdCgpOworfQorCitPU09iamVjdFB0cjx4cGNfY29ubmVj
dGlvbl90PiBYUENFbmRwb2ludENsaWVudDo6Y29ubmVjdGlvbigpCit7CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uOworfQorCit9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw4NiBAQAorMjAyMC0wNy0wNiAgUGVyIEFybmUgVm9sbGFu
ICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNl
cnZpY2VzIGRhdGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29y
ayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTM3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUbyBiZSBhYmxlIHRvIGRlbnkgbWFjaCBsb29rdXAgYWNjZXNzIHRvIHRoZSBMYXVuY2ggU2Vy
dmljZXMgZGF0YWJhc2UgbWFwcGluZyBzZXJ2aWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3Ms
IHRoZSBkYXRhYmFzZSBuZWVkcyB0byBiZQorICAgICAgICBzZW50IGZyb20gdGhlIE5ldHdvcmtp
bmcgcHJvY2VzcyB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCByZXByZXNlbnRlZCBieSBhbiB4
cGMgb2JqZWN0LiBUaGUgTmV0d29ya2luZyBwcm9jZXNzIGlzIGNob3NlbiBpbnN0ZWFkIG9mIHRo
ZSBVSQorICAgICAgICBwcm9jZXNzLCBzaW5jZSBXZWJLaXQgaXMgY29udHJvbGxpbmcgdGhlIHNh
bmRib3ggb2YgdGhlIE5ldHdvcmtpbmcgcHJvY2Vzcy4gVGhlcmUgaXMgYWxyZWFkeSBhIGRpcmVj
dCBjb25uZWN0aW9uIGJldHdlZW4gdGhlIE5ldHdvcmtpbmcKKyAgICAgICAgcHJvY2VzcyBhbmQg
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcywgYnV0IHRoaXMgaXMgYSBDb3JlSVBDIGNvbm5lY3Rpb24u
IFNpbmNlIHRoZSBkYXRhYmFzZSBpcyByZXByZXNlbnRlZCBieSBhbiB4cGMgb2JqZWN0LCBhbiB4
cGMgY29ubmVjdGlvbgorICAgICAgICBpcyByZXF1aWVyZWQgdG8gdHJhbnNmZXIgdGhlIGRhdGFi
YXNlLiBUaGlzIHBhdGNoIGNyZWF0ZXMgYSBkaXJlY3QgeHBjIGNvbm5lY3Rpb24gYmV0d2VlbiB0
aGUgTmV0d29ya2luZyBwcm9jZXNzIGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzLAorICAgICAg
ICBieSBjcmVhdGluZyBhbiB4cGMgZW5kcG9pbnQgaW4gdGhlIE5ldHdvcmtpbmcgcHJvY2Vzcywg
c2VuZGluZyB0aGlzIHRvIHRoZSBVSSBwcm9jZXNzIG92ZXIgdGhlIGJvb3RzdHJhcCB4cGMgY29u
bmVjdGlvbiwgYW5kIHRoZW4gcHJvdmlkaW5nCisgICAgICAgIGVhY2ggV2ViQ29udGVudCBwcm9j
ZXNzIHdpdGggdGhpcyBlbmRwb2ludCBieSBzZW5kaW5nIGl0IG92ZXIgdGhlIGJvb3RzdHJhcCB4
cGMgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBVSSBwcm9jZXNzIGFuZCB0aGUgV2ViQ29udGVudCBw
cm9jZXNzLgorICAgICAgICBUaGlzIGVuZHBvaW50IGhhcyB0byBiZSBzZW50IHZpYSB0aGUgeHBj
IGNvbm5lY3Rpb25zIHRvIHRoZSBVSSBwcm9jZXNzLCBzaW5jZSB0aGUgYWxyZWFkeSBleGlzdGlu
ZyBkaXJlY3QgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBOZXR3b3JraW5nCisgICAgICAgIHByb2Nl
c3MgYW5kIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgaXMgYSBsb3dlciBsZXZlbCBDb3JlSVBDIGNv
bm5lY3Rpb24sIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgdHJhbnNmZXJyaW5nIHhwYyBvYmplY3Rz
IGxpa2UgdGhlIHhwYyBlbmRwb2ludC4KKyAgICAgICAgV2hlbiB0aGUgV2ViQ29udGVudCBwcm9j
ZXNzIHJlY2VpdmVzIHRoZSBlbmRwb2ludCwgaXQgd2lsbCBjcmVhdGUgYW4geHBjIGNvbm5lY3Rp
b24gZnJvbSB0aGUgZW5kcG9pbnQsIHdoaWNoIHdpbGwgY3JlYXRlIGEgZGlyZWN0IGNvbm5lY3Rp
b24KKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya2luZyBwcm9jZXNzLiBBIG1lc3NhZ2UgaXMgdGhl
biBzZW50IG92ZXIgdGhlIGNvbm5lY3Rpb24gdG8gcmVxdWVzdCB0aGUgZGF0YWJhc2UgeHBjIG9i
amVjdC4gV2hlbiB0aGUgTmV0d29ya2luZyBwcm9jZXNzCisgICAgICAgIHJlY2VpdmVzIHRoaXMg
bWVzc2FnZSwgaXQgY2hlY2tzIHRoZSBlbnRpdGxlbWVudCBvZiB0aGUgcmVtb3RlIGVuZCB0byBt
YWtlIHN1cmUgaXQgaXMgY29tbXVuaWNhdGluZyB3aXRoIGEgV2ViQ29udGVudCBwcm9jZXNzLCBh
bmQgdGhlbiBzZW5kcworICAgICAgICB0aGUgZGF0YWJhc2UgaWYgdGhlIGVudGl0bGVtZW50IGNo
ZWNrIHN1Y2NlZWRzLiBXaGVuIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgcmVjZWl2ZXMgdGhpcyBt
ZXNzYWdlLCBpdCBwZXJmb3JtcyBhbiBlbnRpdGxlbWVudCBjaGVjayBhcyB3ZWxsLAorICAgICAg
ICBhbmQgaWYgc3VjY2Vzc2Z1bCwgdGhlIGRhdGFiYXNlIG9iamVjdCBpcyBjb25zdW1lZC4gQ29u
c3VtaW5nIHRoaXMgZGF0YWJhc2Ugb2JqZWN0LCB3aWxsIG1ha2Ugc3VyZSBVVEkgdG8gTUlNRSB0
eXBlIG1hcHBpbmcgaXMgd29ya2luZworICAgICAgICBjb3JyZWN0bHkgaW4gdGhlIFdlYkNvbnRl
bnQgcHJvY2Vzcy4KKworICAgICAgICBGb3IgdGhlIFVJIHByb2Nlc3MgdG8gYmUgYWJsZSB0byBw
aWNrIHVwIHhwYyBtZXNzYWdlcyBvbiB0aGUgYm9vdHN0cmFwIGNvbm5lY3Rpb24sIGEgbmV3IHZp
cnR1YWwgbWV0aG9kLCBoYW5kbGVYUENFdmVudCwgaXMgYWRkZWQgdG8gdGhlCisgICAgICAgIFBy
b2Nlc3NMYXVuY2hlciBDbGllbnQgY2xhc3MuIFRoaXMgd2F5LCBhIFByb2Nlc3NMYXVuY2hlciBj
bGllbnQgd2lsbCBiZSBhYmxlIHRvIHBpY2sgdXAgeHBjIG1lc3NhZ2VzIGZyb20gdGhlIHhwYyBi
b290c3RyYXAgY29ubmVjdGlvbi4KKyAgICAgICAgUHJldmlvdXNseSB0aGUgZXZlbnQgaGFuZGxl
ciBmb3IgdGhlIGJvb3RzdHJhcCBjb25uZWN0aW9uIGluIHRoZSBVSSBwcm9jZXNzIHdvdWxkIGhh
bmRsZSBvbmx5IHhwYyBlcnJvciBtZXNzYWdlcy4gSXQgaGFzIG5vdyBiZWVuIGV4cGFuZGVkCisg
ICAgICAgIHRvIGhhbmRsZSBub3JtYWwgbWVzc2FnZXMsIHdoaWNoIGFyZSBiZWluZyBmb3J3YXJk
ZWQgdG8gdGhlIFByb2Nlc3NMYXVuY2hlciBjbGllbnQuIEluIHRoaXMgY2FzZSB0aGUgY2xpZW50
IGlzIHRoZSBOZXR3b3JrIHByb2Nlc3MgcHJveHksCisgICAgICAgIHdoaWNoIHdpbGwgY2hlY2sg
dGhlIG1lc3NhZ2UgcmVjZWl2ZWQsIGFuZCBpZiBpdCB0dXJucyBvdXQgdG8gYmUgYSBtZXNzYWdl
IGNvbnRhaW5pbmcgYW4geHBjIGVuZHBvaW50LCB0aGUgbWVzc2FnZSB3aWxsIGJlIGZvcndhcmRl
ZCB0bworICAgICAgICBhbGwgV2ViIHByb2Nlc3Nlcy4gVGhlIFByb2Nlc3NMYXVuY2hlciBjbGll
bnQgY2FuIGJlIGV4cGFuZGVkIHRvIGhhbmRsZSBhbnkgeHBjIG1lc3NhZ2UsIGJ1dCByaWdodCBu
b3QgdGhlIE5ldHdvcmsgcHJvY2VzcyBwcm94eSBvbmx5CisgICAgICAgIGhhbmRsZXMgdGhlIHhw
YyBlbmRwb2ludCBtZXNzYWdlLiBUaGUgaGFuZGxlWFBDRXZlbnQgdmlydHVhbCBtZXRob2QgcmV0
dXJuIGEgUmVmUHRyIHRvIGFuIFhQQ0V2ZW50SGFuZGxlciwgd2hpY2ggaXMgY2FwdHVyZWQgaW4g
dGhlIGV2ZW50CisgICAgICAgIGhhbmRsZXIgb2YgdGhlIGJvb3RzdHJhcCB4cGMgY29ubmVjdGlv
bi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIu
aDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcik6
CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRP
YnNlcnZpbmcpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TWVzc2FnZU5hbWVLZXkg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6
OnhwY0VuZHBvaW50TWVzc2FnZU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TmFtZUtleSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQp
OgorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5zYjoKKyAgICAgICAgKiBTY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRz
LnNoOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnhwY0VuZHBvaW50TWVzc2FnZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZW5kTmV0d29ya1Byb2Nlc3NY
UENFbmRwb2ludFRvV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1hQQ0V2
ZW50SGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6WFBDRXZlbnRIYW5kbGVyOjp+
WFBDRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xh
dW5jaGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ojp4cGNF
dmVudEhhbmRsZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJv
Y2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6Omxh
dW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4
cGNFdmVudEhhbmRsZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpYUENFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRs
ZXI6On5YUENFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVD
b25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFu
YWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlcjo6d2FpdEZvckRhdGFiYXNlVXBkYXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6aGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA3
LTA3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CiAKICAgICAgICAgTmV0d29yayBw
cm9jZXNzIGNyYXNoZXMgaW4gV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lv
blN0b3JhZ2VGb3JPcmlnaW5zCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAy
NjQwMzkpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQxNSw2ICs0MTUsOCBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQ
cm94CiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
CiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmlldy5tbQogCitVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KKwogVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Rh
dGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1l
SW5wdXRDb250cm9sLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYg
Kzk3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVDb2RlcnMuaCIKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNlbmRpZgogCkBAIC0xNjMsNiArMTY0LDkg
QEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeQogI2lmIEVOQUJMRShM
RUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAgICAgYWRkU3VwcGxlbWVudDxMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBhZGRTdXBwbGVtZW50PExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcj4oKTsKKyNlbmRp
ZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9N
QU5BR0VSKQogICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6bmV0d29ya1Byb2Nlc3ND
cmVhdGVkKCp0aGlzKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1hQQ0VuZHBvaW50Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyIDogcHVibGljIFdlYkNvcmU6OlhQ
Q0VuZHBvaW50LCBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIoTmV0d29ya1Byb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoT1NPYmplY3RQdHI8eHBjX2Nv
bm5lY3Rpb25fdD4pOworCisgICAgLy8gWFBDRW5kcG9pbnQKKyAgICBjb25zdCBjaGFyKiB4cGNF
bmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciog
eHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIq
IHhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlRXZl
bnQoeHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSBvdmVycmlkZTsKKworICAgIC8vIE5l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudAorICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uKikgZmluYWw7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fb2JzZXJ2ZXI7Cisg
ICAgVmVjdG9yPE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+PiBtX2Nvbm5lY3Rpb25zOwor
fTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0JKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
WFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJ
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjaW1wb3J0IDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTFNE
YXRhYmFzZUNvbnRleHQgKmRhdGFiYXNlQ29udGV4dCgpCit7CisgICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBvbmNlOworICAgIHN0YXRpYyBMU0RhdGFiYXNlQ29udGV4dCAqY29udGV4dCA9IG51
bGxwdHI7CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICAgICAgY29udGV4dCA9IFtO
U0NsYXNzRnJvbVN0cmluZyhAIkxTRGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250
ZXh0XTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworTGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoTmV0d29ya1By
b2Nlc3MmKQoreworICAgIGlmICghW2RhdGFiYXNlQ29udGV4dCgpIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pCisgICAgICAg
IHJldHVybjsKKworICAgIG1fb2JzZXJ2ZXIgPSBbZGF0YWJhc2VDb250ZXh0KCkgYWRkRGF0YWJh
c2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6Xih4cGNfb2JqZWN0X3QgY2hhbmdlKSB7CisgICAgICAg
IGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxw
dHIsIG51bGxwdHIsIDApKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNz
YWdlLmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXksIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNz
YWdlTmFtZSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtZXNzYWdlLmdldCgp
LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlS2V5LCBjaGFuZ2UpOworCisgICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
Y29ubmVjdGlvbnMpCisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29u
bmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisgICAgfV07Cit9CisKK2NvbnN0IGNoYXIq
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3VwcGxlbWVudE5hbWUoKQoreworICAg
IHJldHVybiAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyU3VwcGxlbWVudCI7Cit9CisK
K3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyhPU09i
amVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBjb25uZWN0aW9uKQoreworICAgIG1fY29ubmVjdGlv
bnMuYXBwZW5kKGNvbm5lY3Rpb24pOworCisgICAgaWYgKCFbZGF0YWJhc2VDb250ZXh0KCkgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktp
dDopXSkgeworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9u
YXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5
LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21l
c3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBSZXRhaW5QdHI8aWQ+IG9ic2VydmVyID0gW2RhdGFiYXNlQ29udGV4dCgp
IGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNoYW5nZSkg
eworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2Ny
ZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9z
dHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5LCBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlTWVzc2FnZU5hbWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobWVz
c2FnZS5nZXQoKSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNo
U2VydmljZXNEYXRhYmFzZUtleSwgY2hhbmdlKTsKKworICAgICAgICB4cGNfY29ubmVjdGlvbl9z
ZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisgICAgfV07CisK
KyAgICBbZGF0YWJhc2VDb250ZXh0KCkgcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJL
aXQ6b2JzZXJ2ZXIuZ2V0KCldOworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6
On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKQoreworICAgIGlmICghW2RhdGFiYXNl
Q29udGV4dCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlRGF0YWJhc2VDaGFu
Z2VPYnNlcnZlcjRXZWJLaXQ6KV0pCisgICAgICAgIHJldHVybjsKKworICAgIFtkYXRhYmFzZUNv
bnRleHQoKSByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDptX29ic2VydmVyLmdl
dCgpXTsKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4
cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3QKK3sKKyAgICByZXR1cm4geHBjTWVzc2Fn
ZU5hbWVLZXk7Cit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
cjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENF
bmRwb2ludE1lc3NhZ2VOYW1lOworfQorCitjb25zdCBjaGFyKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VYUENFbmRwb2ludE5hbWVLZXk7Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIHhwY19vYmpl
Y3RfdCBldmVudCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9F
UlJPUikgeworICAgICAgICBpZiAoZXZlbnQgIT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJ
RCAmJiBldmVudCAhPSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Nvbm5lY3Rpb25z
LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9uc1tpXS5nZXQoKSA9
PSBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9ucy5yZW1vdmUoaSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQ
RV9ESUNUSU9OQVJZKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKG1l
c3NhZ2VOYW1lICE9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVl
c3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOworICAgIH0KK30KKwor
dm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OmluaXRpYWxpemVDb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICBzZW5kRW5kcG9pbnRUb0Nvbm5l
Y3Rpb24oY29ubmVjdGlvbi0+eHBjQ29ubmVjdGlvbigpKTsKK30KKworfQpJbmRleDogU291cmNl
L1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2IKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJv
eFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJKHJldmlzaW9uIDI2
NDAzOSkKKysrIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCSh3b3JraW5nIGNvcHkpCkBAIC01ODgsNyArNTg4
LDcgQEAKIChhbGxvdyBpcGMtcG9zaXgtc2htLXJlYWQqCiAgICAgICAgKGlwYy1wb3NpeC1uYW1l
LXByZWZpeCAiYXBwbGUuY2ZwcmVmcy4iKSkKICAKLShhbGxvdyBtYWNoLWxvb2t1cAorKGRlbnkg
bWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5sc2QubWFwZGIiKSkKIAog
OzsgPHJkYXI6Ly9wcm9ibGVtLzEyNDEzOTQyPgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCSh3b3JraW5nIGNvcHkpCkBA
IC0xNSw2ICsxNSw3IEBAIGZ1bmN0aW9uIG1hY19wcm9jZXNzX3dlYmNvbnRlbnRfZW50aXRsZW0K
IAogICAgIGlmIFtbICIke1dLX1VTRV9SRVNUUklDVEVEX0VOVElUTEVNRU5UU30iID09IFlFUyBd
XQogICAgIHRoZW4KKyAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndl
YmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucm9vdGxlc3Muc3RvcmFnZS5XZWJLaXRXZWJDb250ZW50U2FuZGJveCBib29sIFlF
UwogICAgIGZpCiAKQEAgLTUxLDYgKzUyLDcgQEAgZnVuY3Rpb24gbWFjX3Byb2Nlc3NfbmV0d29y
a19lbnRpdGxlbWVudAogICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2
YXRlLnRjYy5tYW5hZ2VyLmNoZWNrLWJ5LWF1ZGl0LXRva2VuOjAgc3RyaW5nIGtUQ0NTZXJ2aWNl
V2ViS2l0SW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb24KICAgICAgICAgZmkKIAorICAgICAg
ICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9p
bnQgYm9vbCBZRVMKICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5z
dG9yYWdlLldlYktpdE5ldHdvcmtpbmdTYW5kYm94IGJvb2wgWUVTCiAgICAgZmkKIH0KQEAgLTE0
NCw2ICsxNDYsNyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3Nfd2ViY29udGVudF9lCiAg
ICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmls
dGVyIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmlu
c3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkg
QWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IucHJveHktYXBwbGljYXRpb24gYm9v
bCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14
cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJ1bm5p
bmdib2FyZC5hc3NlcnRpb25zLndlYmtpdCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpk
eW5hbWljLWNvZGVzaWduaW5nIGJvb2wgWUVTCiAKQEAgLTE4NCw2ICsxODcsNyBAQCBmdW5jdGlv
biBpb3NfZmFtaWx5X3Byb2Nlc3NfbmV0d29ya19lbnRpCiAgICAgcGxpc3RidWRkeSBBZGQgOmNv
bS5hcHBsZS5wcml2YXRlLmRtZC5wb2xpY3kgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6
Y29tLmFwcGxlLnByaXZhdGUubWVtb3J5c3RhdHVzIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLm5ldHdvcmsuc29ja2V0LWRlbGVnYXRlIGJvb2wgWUVTCisg
ICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBv
aW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQu
YXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKIAogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1ieS1hdWRpdC10b2tlbiBhcnJheQpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0
YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHMgeworCitjb25zdGV4cHIgYXV0byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNz
YWdlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1
bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUgPSAicmVxdWVzdC1sYXVuY2gtc2Vydmlj
ZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiOworY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtleSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNl
cnZpY2VzLWRhdGFiYXNlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lID0gInhwYy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMt
ZGF0YWJhc2UtbWVzc2FnZSI7Cit9IC8vIG5hbWVzcGFjZSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
WFBDQ29uc3RhbnRzCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VN
YWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkocmV2aXNpb24gMjY0MDM5
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5j
aFNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjQwMzkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zODksNyArMzg5LDcgQEAgcHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNz
IE1hbmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3b3JrUHJvY2Vz
cyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHIpOwotICAg
IE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3Jr
UHJvY2Vzcy5nZXQoKTsgfQorICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0
d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsK
QEAgLTU0MSw2ICs1NDEsMTEgQEAgcHVibGljOgogICAgIGludDMyX3QgdXNlcklkKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VySWQ7IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
T1NPYmplY3RQdHI8eHBjX29iamVjdF90PiB4cGNFbmRwb2ludE1lc3NhZ2UoKSBjb25zdDsKKyAg
ICB2b2lkIHNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKE9TT2JqZWN0
UHRyPHhwY19vYmplY3RfdD4gZW5kcG9pbnRNZXNzYWdlKTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgyNSw2ICs4MzAsMTAgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247
CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmpl
Y3RfdD4gbV9lbmRwb2ludE1lc3NhZ2U7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJ
KHJldmlzaW9uIDI2NDAzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1Myw2ICs5NTMsMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBlbmRwb2ludE1lc3NhZ2UgPSBwcm9jZXNzUG9v
bCgpLnhwY0VuZHBvaW50TWVzc2FnZSgpOworICAgIGlmIChlbmRwb2ludE1lc3NhZ2UpCisgICAg
ICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rp
b24oKSwgZW5kcG9pbnRNZXNzYWdlLmdldCgpKTsKKyNlbmRpZgorCiAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fd2ViQ29ubmVjdGlvbik7CiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlKHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI2
NDAzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNCw0ICs5MzQsMjMgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVnaXN0ZXJIaWdoRHluYW1pYwogfQogI2VuZGlmCiAKK09TT2JqZWN0UHRyPHhwY19v
YmplY3RfdD4gV2ViUHJvY2Vzc1Bvb2w6OnhwY0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZW5kcG9pbnRNZXNzYWdlOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpz
ZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2VzcyhPU09iamVjdFB0cjx4cGNf
b2JqZWN0X3Q+IGVuZHBvaW50TWVzc2FnZSkKK3sKKyAgICBtX2VuZHBvaW50TWVzc2FnZSA9IGVu
ZHBvaW50TWVzc2FnZTsKKworICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsK
KyAgICAgICAgaWYgKHByb2Nlc3MtPmlzTGF1bmNoaW5nKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgaWYgKCFwcm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54
cGNDb25uZWN0aW9uKCk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25u
ZWN0aW9uLCBlbmRwb2ludE1lc3NhZ2UuZ2V0KCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhh
bmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENF
dmVudEhhbmRsZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9YUENFdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFhQQ0V2ZW50SGFuZGxlciA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxYUENFdmVudEhhbmRsZXI+IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5YUENFdmVudEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0ID0gMDsKK307CisKK30KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5o
CShyZXZpc2lvbiAyNjQwMzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Q
cm9jZXNzTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAKICNpbmNs
dWRlIDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCkBAIC01Nyw2ICs2MSw5
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9j
ZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpID0gMDsKICAgICAgICAg
dmlydHVhbCBib29sIHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICB2aXJ0dWFsIFJlZlB0
cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KKyNlbmRpZgogICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5j
aGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDI2NDAzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzOCwxOCArMjM4LDI4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKICAgICAgICAgcHJvY2Vzc0xhdW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQ
cm9jZXNzKDAsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKICAgICB9OwogCi0gICAg
YXV0byBlcnJvckhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5k
bGVySW1wbCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxl
ckltcGwpLCBldmVudF0gewotICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7Ci0g
ICAgICAgIH0pOworICAgIGF1dG8gZXZlbnRIYW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBX
VEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudEhhbmRsZXIgPSBtX2NsaWVudC0+eHBjRXZl
bnRIYW5kbGVyKCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgeworCisgICAgICAgIGlm
ICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0gV1RG
TW92ZShlcnJvckhhbmRsZXJJbXBsKSwgZXZlbnQgPSBPU09iamVjdFB0cihldmVudCldIHsKKyAg
ICAgICAgICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV2ZW50
SGFuZGxlcikgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtldmVudEhh
bmRsZXIgPSBldmVudEhhbmRsZXIsIGV2ZW50ID0gT1NPYmplY3RQdHIoZXZlbnQpXSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRIYW5kbGVyLT5oYW5kbGVYUENFdmVudChldmVudC5nZXQoKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH07CiAKLSAgICB4cGNfY29ubmVjdGlvbl9z
ZXRfZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGVycm9ySGFuZGxlcik7Cisg
ICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgp
LCBldmVudEhhbmRsZXIpOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29ubmVj
dGlvbi5nZXQoKSk7CiAKICAgICBpZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3VsZE1h
a2VQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcpKSB7Ci0gICAgICAgIGVycm9ySGFuZGxlcihu
dWxscHRyKTsKKyAgICAgICAgZXZlbnRIYW5kbGVyKG51bGxwdHIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBD
RXZlbnRIYW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0
YVJlZmVyZW5jZTsKIH0KQEAgLTI5Nyw2ICszMDEsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUHJv
Y2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxl
cigpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHk+JiYpOwogCkBAIC0zMjcsNiArMzM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIEhhc2hN
YXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNz
ZXJ0aW9uPj4gd2ViUHJvY2Vzc0Fzc2VydGlvbnM7CiAgICAgfTsKICAgICBPcHRpb25hbDxVcGxv
YWRBY3Rpdml0eT4gbV91cGxvYWRBY3Rpdml0eTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGNsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7
CisgICAgcHVibGljOgorICAgICAgICBYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nl
c3NQcm94eSYpOworCisgICAgICAgIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBj
b25zdCBvdmVycmlkZTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtQdHI8TmV0d29ya1By
b2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICB9OworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKworI2lt
cG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvWFBDRW5kcG9pbnQuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8WFBDRXZl
bnRIYW5kbGVyPiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIoKSBjb25zdAor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRI
YW5kbGVyKCp0aGlzKSk7Cit9CisKK2Jvb2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRI
YW5kbGVyOjpoYW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QgZXZlbnQpIGNvbnN0Cit7CisgICAg
aWYgKCFtX25ldHdvcmtQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5
X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAg
aWYgKG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6Onhw
Y0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lKQorICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBv
aW50VG9XZWJQcm9jZXNzKGV2ZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3Mo
bWFrZVdlYWtQdHIobmV0d29ya1Byb2Nlc3MpKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDAz
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE2ODQsOCArMTY4NCwxMSBAQAogCQlDMTFBOUVDQzIxNDAzNUY4MDBD
RkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFBOUVDQjIxNDAzNUY4MDBDRkIyMEEgLyogV2ViU3dp
dGNoaW5nR1BVQ2xpZW50LmggKi87IH07CiAJCUMxMUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAvKiBX
S01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMTFFMTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNDkzODA5MjIzNDcx
MDQwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAyMjIzNDFDNjAwMDBDRDcwNyAv
KiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLzsgfTsKKwkJQzE0RDM3RkUyNEFDRTA4NjAw
N0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovOyB9OwogCQlDMTVDQkIzNjIz
RjM3NzcxMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyog
UHJlZmVyZW5jZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNl
cnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMx
NUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi87IH07CisJ
CUMxNjYzRTVCMjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MTY2M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0
YW50cy5oICovOyB9OworCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlci5tbSAqLzsgfTsKIAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERp
c3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsKIAkJQzFF
MTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQg
LyogUERGQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8q
IERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24uaCAqLzsgfTsKQEAgLTUwMTgsMTMgKzUwMjEsMjAgQEAKIAkJQzE0OTM4MDIyMjM0MUM2
MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzE0OTM4MDMyMjM0MURGNzAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0RDM3RkMyNEFDREY0NTAwN0ZG
MDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFu
YWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTVDQkIzMzIzRjM0QzM4MDAz
MDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJl
ZmVyZW5jZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1
QTI0QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBY
UENFdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRIYW5kbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEw
Q0Y2MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzVFMjA1ODM5RjYwMERGREE2NSAv
KiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYwMjA1ODQyNDcwMERGREE2
NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGluay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBERkRBNjUgLyogRGlzcGxh
eUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpbmsuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUgLyogV2ViU2xlZXBE
aXNhYmxlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzE4RkI1MUUyNDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyog
UERGQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGQ29u
dGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFFRDcyMzcyNEE1Njkw
RTAwM0Y2Q0QzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdDb250cm9sbGVyQWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3
MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9s
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGF0ZVRpbWVJbnB1dENvbnRy
b2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Mzg0LDYgKzYzOTQsNyBAQAogCQkJCTJEN0FBRkQyMThD
ODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCAqLywKIAkJCQkyREM2
RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnku
aCAqLywKIAkJCQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFBy
b3ZpZGVyUmVnaXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQ
Q0V2ZW50SGFuZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC03NDgxLDYgKzc0OTIsNyBAQAogCQkJCUM1NUY5MTZEMUM1OTVF
NDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tICovLAogCQkJCUNFNTUwRTEzMjI4
Mzc0NDQwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5jcHAgKi8sCiAJCQkJQ0U1NTBFMTIy
MjgzNzNDODAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi8sCisJCQkJQzE2NjNFNUEy
NEFFQTc0MjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCAq
LywKIAkJCQkyRDEwODc2MjFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5t
bSAqLywKIAkJCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9i
c2VydmVyLmggKi8sCiAJCQkJQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNr
U3RhdGVPYnNlcnZlci5tbSAqLywKQEAgLTc4NDQsNiArNzg1Niw3IEBACiAJCTUxMENDN0U3MTYx
MzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNjI0QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8sCiAJ
CQkJMjlBRDMwOTExNjRCNEMxMDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1
MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyogbWFjICovLAogCQkJCTUxMENDN0VBMTYxMzhFNzIw
MEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAqLywKQEAgLTgzNzQsNiArODM4Nyw4
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDRDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEw
MEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oICovLAorCQkJCUMxNEQz
N0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICov
LAorCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5tbSAqLywKIAkJCQk0NDZEQzY0QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAqLywKIAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFD
Q0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtODQy
NSw2ICs4NDQwLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEMEM1NkZCMjI5RjFERUEwMEJE
MzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCAqLywKIAkJCQkyRDBDNTZGQzIyOUYx
REVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tICovLAorCQkJCUMxNzEw
Q0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAq
LywKKwkJCQlDMTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLm1tICovLAogCQkJCTUzMTU4NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyQ29jb2EubW0gKi8sCiAJCQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTND
IC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLmggKi8sCiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThG
RENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovLApAQCAtMTAyNTIsNiArMTAyNjksMTQg
QEAKIAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzFFRDcyMzYy
NEE1NjhGNTAwM0Y2Q0QzIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nl
c3NQcm94eUNvY29hLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUM1NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3Jt
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMDg1OCw2
ICsxMDg4Myw3IEBACiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU0OUE0OTExRkZBOENF
MDA0OEI0NjQgLyogSlNOUE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDk4NzgxMUZG
N0ZBQTAwNDhCNDY0IC8qIEpTTlBPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUMxNjYzRTVC
MjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1
IC8qIExheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0RTkzNkZEMjQ0N0My
RDgwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggaW4gSGVhZGVycyAqLywKQEAg
LTEyNzI2LDYgKzEyNzUyLDggQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIx
MkNGOUYwMDAxMjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkx
MzQ0MjIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1
ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYg
LyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIExpYldlYlJUQ05l
dHdvcmtNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjQwMzkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2
ICsyOTAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogewog
ICAgIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcygpOwor
I2VuZGlmCisKICAgICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dy
b3VuZCBxdWV1ZSBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAv
LyBhbmQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgog
ICAgIGNvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2so
Y2FsbEV4aXQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZp
c2lvbiAyNjQwMzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MTUsNiArNTE1LDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9u
SUQtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgdm9pZCBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3Q7CisjZW5k
aWYKKwogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlv
bjsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdl
Pj4gbV9wYWdlTWFwOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjY0MDM5KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKICNpbXBv
cnQgIkluc2VydFRleHRPcHRpb25zLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5oIgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBsdWdpblZp
ZXcuaCIKICNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgiCkBAIC01
NiwxMiArNTcsMjIgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPE1v
YmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogeworICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS53
YWl0Rm9yRGF0YWJhc2VVcGRhdGUoNV9zKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGF1dG8g
dXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIEFTU0VSVCghU3Ry
aW5nKHV0aS5nZXQoKSkuaXNFbXB0eSgpKTsKKyNlbmRpZgorCiAgICAgbV9kYXRhRGV0ZWN0aW9u
Q29udGV4dCA9IHBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CiAKICAgICBpZiAocGFy
YW1ldGVycy5uZUhlbHBlckV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8V2ViQ29yZS9Y
UENFbmRwb2ludENsaWVudC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1w
b3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6
OlhQQ0VuZHBvaW50Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgYm9vbCB3YWl0Rm9yRGF0YWJhc2VV
cGRhdGUoU2Vjb25kcyk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfb2Jq
ZWN0X3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ29ubmVjdCgpIG92ZXJyaWRlOworCisgICAg
c3RkOjphdG9taWM8Ym9vbD4gbV9oYXNSZWNlaXZlZExhdW5jaFNlcnZpY2VzRGF0YWJhc2UgeyBm
YWxzZSB9OworICAgIEJpbmFyeVNlbWFwaG9yZSBtX3NlbWFwaG9yZTsKK307CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFu
YWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgiCisKKyNpbXBv
cnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvWFBDRW5kcG9pbnQuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNT
UEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9z
cGkvZGFyd2luL1hQQ1NQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXImIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5n
bGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9p
ZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90
IG1lc3NhZ2UpCit7CisgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOworICAgIGlm
IChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAgICAgIGF1dG8gZGF0YWJhc2Ug
PSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobWVzc2FnZSwgTGF1bmNoU2VydmljZXNEYXRhYmFz
ZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSk7CisgICAgICAgIGlm
IChkYXRhYmFzZSkgeworICAgICAgICAgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3Ry
aW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgICAg
ICAgICAgaWYgKCFbY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9ic2VydmVE
YXRhYmFzZUNoYW5nZTRXZWJLaXQ6KV0pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgW2NvbnRleHQgb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDpkYXRhYmFzZV07Cisg
ICAgICAgIH0KKyAgICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgIG1faGFzUmVj
ZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmRpZENvbm5lY3QoKQoreworICAgIGF1dG8gbWVz
c2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxw
dHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQ
Q0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50czo6eHBjUmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0YWJhc2VVcGRhdGVNZXNzYWdlTmFt
ZSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbigpLmdldCgp
LCBtZXNzYWdlLmdldCgpKTsKK30KKworYm9vbCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
cjo6d2FpdEZvckRhdGFiYXNlVXBkYXRlKFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBpZiAobV9o
YXNSZWNlaXZlZExhdW5jaFNlcnZpY2VzRGF0YWJhc2UpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBtX3NlbWFwaG9yZS53YWl0Rm9yKHRpbWVvdXQpOworfQorCit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0J
KHJldmlzaW9uIDI2NDAzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbXBvcnQg
IldlYlByb2Nlc3MuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDb2NvYS5oIgogCisjaW1wb3J0ICJM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0NvbnN0YW50cy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgiCiAjaW1wb3J0ICJMb2dJbml0aWFsaXphdGlvbi5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtNjksNiArNzEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TV0NvbnRleHRNYW5hZ2VyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1N5c3RlbUJhdHRlcnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJ
VXRpbGl0aWVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1hQQ0VuZHBvaW50Lmg+CiAjaW1wb3J0IDxh
bGdvcml0aG0+CiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8b2JqYy9y
dW50aW1lLmg+CkBAIC0xNjEsMjUgKzE2NCwzMiBAQCBzdGF0aWMgaWQgTlNBcHBsaWNhdGlvbkFj
Y2Vzc2liaWxpdHlGb2N1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCit2b2lkIFdlYlByb2Nlc3M6OmhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMoKSBjb25zdAog
ewotICAgIC8vIE1hcCBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UuIFRoaXMgc2hvdWxkIGJlIGRv
bmUgYXMgZWFybHkgYXMgcG9zc2libGUsIGFzIHRoZSBtYXBwaW5nIHdpbGwgZmFpbAotICAgIC8v
IGlmICdjb20uYXBwbGUubHNkLm1hcGRiJyBpcyBiZWluZyBhY2Nlc3NlZCBiZWZvcmUgdGhpcy4K
LSAgICBpZiAocGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhhbmRsZSkgewotICAgICAgICBhdXRv
IGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKCpwYXJhbWV0ZXJz
Lm1hcERCRXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgICAgIGJvb2wgb2sgPSBleHRlbnNpb24tPmNv
bnN1bWUoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAgICAgICAvLyBQZXJm
b3JtIEFQSSBjYWxscyB3aGljaCB3aWxsIGNvbW11bmljYXRlIHdpdGggdGhlIGRhdGFiYXNlIG1h
cHBpbmcgc2VydmljZSwgYW5kIG1hcCB0aGUgZGF0YWJhc2UuCi0gICAgICAgIGF1dG8gdXRpID0g
YWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNz
TUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIGlmICghcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFtbb2JqY19nZXRDbGFz
cygiX0xTRFJlYWRTZXJ2aWNlIikgWFBDQ29ubmVjdGlvblRvU2VydmljZV0gaW52YWxpZGF0ZV07
CisgICAgYXV0byBjb25uZWN0aW9uID0gcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+eHBjQ29u
bmVjdGlvbigpOwogCi0gICAgICAgIG9rID0gZXh0ZW5zaW9uLT5yZXZva2UoKTsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChvaywgb2spOworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVl
dWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9Q
UklPUklUWV9ERUZBVUxULCAwKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRs
ZXIoY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgaWYgKHhwY19n
ZXRfdHlwZShldmVudCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBBU1NFUlQoU3RyaW5nKHV0aS5nZXQoKSkgPT0gU3RyaW5nKGFkb3B0Q0Yo
VVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBl
LCBDRlNUUigidGV4dC9odG1sIiksIDApKS5nZXQoKSkpOwotICAgIH0KKyAgICAgICAgU3RyaW5n
IG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9p
bnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFz
ZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUpIHsKKyAgICAgICAgICAgIGF1dG8gZW5kcG9pbnQgPSB4
cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUoZXZlbnQsIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUEND
b25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXkpOwor
ICAgICAgICAgICAgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNl
dEVuZHBvaW50KGVuZHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0pOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mo
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKICNpZiAhTE9HX0RJ
U0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFdlYkNvcmU6OmluaXRpYWxpemVM
b2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViQ29yZUxvZ2dpbmdDaGFubmVscyk7
CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShwYXJhbWV0ZXJz
LndlYktpdExvZ2dpbmdDaGFubmVscyk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwMzkpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNy0wNyAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1
bmNoIFNlcnZpY2VzIGRhdGFiYXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUg
TmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTM3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1hQQ0VuZHBvaW50
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTA3LTA3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdlYkNvcmVOU1VS
TFNlc3Npb24gU1BJIHRvIHNlbmQgSFRUUC8yIHBpbmcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNjQwMzkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTA4LDYgKzkw
OCw3IEBACiAJCUMwQzVEM0M2MTQ1OTkxMjkwMEE4MDJBNiAvKiBHZXRCYWNraW5nU2NhbGVGYWN0
b3JfQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5k
bGUubW0gKi87IH07CiAJCUMxM0Q4MkQ5MjQxNkYxMzIwMEE2Mjc5MyAvKiBFbmFibGVBY2Nlc3Np
YmlsaXR5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzEzRDgyRDgyNDE2RjEzMjAwQTYyNzkzIC8qIEVuYWJsZUFjY2Vzc2liaWxpdHkubW0gKi87IH07
CiAJCUMxNDlENTUwMjQyRTk4REYwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0OUQ1NEYyNDJFOTg0NDAw
M0VCQjEyIC8qIFNsZWVwRGlzYWJsZXIubW0gKi87IH07CisJCUMxNEQzMDQ2MjRCNEMzQkEwMDQ4
MDM4NyAvKiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxNEQzMDQ1MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSAq
LzsgfTsKIAkJQzE1Q0JCMzAyM0YxRkYxQTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZp
Y2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzE1Q0JCMkYyM0YxRkYxQTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9uLm1t
ICovOyB9OwogCQlDMTVDQkIzRjIzRkIxNzdBMDAzMDBDQzcgLyogUHJlZmVyZW5jZUNoYW5nZXMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTVDQkIz
RTIzRkIxNzdBMDAzMDBDQzcgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gKi87IH07CiAJCUMxNjky
RENBMjNEMTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRl
cnkubW0gKi87IH07CkBAIC0yNTQ5LDYgKzI1NTAsNyBAQAogCQlDMEM1RDNCRDE0NTk4QjZGMDBB
ODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxM0Q4MkQ4MjQxNkYxMzIwMEE2Mjc5MyAv
KiBFbmFibGVBY2Nlc3NpYmlsaXR5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRW5hYmxlQWNj
ZXNzaWJpbGl0eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OUQ1NEYyNDJF
OTg0NDAwM0VCQjEyIC8qIFNsZWVwRGlzYWJsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTbGVlcERpc2FibGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMTREMzA0NTI0QjRDM0JBMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBYUENFbmRwb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzE1Q0JCMkYyM0YxRkYxQTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmFja2xpZ2h0TGV2ZWxOb3RpZmljYXRpb24u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNUNCQjNFMjNGQjE3N0EwMDMwMEND
NyAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFByZWZlcmVuY2VDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEJhdHRlcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDMz
LDYgKzMwMzUsNyBAQAogCQkJCUMxNDlENTRGMjQyRTk4NDQwMDNFQkIxMiAvKiBTbGVlcERpc2Fi
bGVyLm1tICovLAogCQkJCTBGMTM5RTc1MUE0MjNBNTMwMEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5t
bSAqLywKIAkJCQlDMUZGOUVEQTI0NDY0NEYwMDA4MzlBRTQgLyogV2ViRmlsdGVyLm1tICovLAor
CQkJCUMxNEQzMDQ1MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSAqLywKIAkJCSk7
CiAJCQluYW1lID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTM3Niw2
ICs1Mzc5LDcgQEAKIAkJCQlDRDdGODlEQzIyQTg2Q0RBMDBENjgzQUUgLyogV0tXZWJWaWV3U3Vz
cGVuZEFsbE1lZGlhUGxheWJhY2subW0gaW4gU291cmNlcyAqLywKIAkJCQk5OTg0RkFDQzFDRkZB
RjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M3NEM4RkEyMkRGQkE5NjAwREEyREFCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDMTREMzA0NjI0QjRDM0JBMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5QzY0REMzMjFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvWFBDRW5kcG9pbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvWFBDRW5kcG9pbnQubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvWFBDRW5kcG9pbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9YUENFbmRwb2ludC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9YUENFbmRwb2ludENsaWVudC5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3N0YXRpYyBib29sIGNsaWVudENvbm5lY3RlZFRvRW5kcG9pbnQg
PSBmYWxzZTsKK3N0YXRpYyBib29sIGVuZHBvaW50UmVjZWl2ZWRNZXNzYWdlRnJvbUNsaWVudCA9
IGZhbHNlOworc3RhdGljIGJvb2wgY2xpZW50UmVjZWl2ZWRNZXNzYWdlRnJvbUVuZHBvaW50ID0g
ZmFsc2U7CisKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXN0TWVzc2FnZUZyb21FbmRwb2ludCA9
ICJ0ZXN0LW1lc3NhZ2UtZnJvbS1lbmRwb2ludCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdGVz
dE1lc3NhZ2VGcm9tQ2xpZW50ID0gInRlc3QtbWVzc2FnZS1mcm9tLWNsaWVudCI7CisKK2NsYXNz
IFhQQ0VuZHBvaW50IDogcHVibGljIFdlYkNvcmU6OlhQQ0VuZHBvaW50IHsKK3ByaXZhdGU6Cisg
ICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFtZUtleSgpIGNvbnN0IG92ZXJyaWRl
CisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY29uc3QgY2hhciog
eHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnROYW1lS2V5
KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KyAgICB2b2lkIGhhbmRsZUV2ZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29i
amVjdF90IGV2ZW50KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1l
ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01lc3Nh
Z2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IHRlc3RNZXNzYWdlRnJvbUNs
aWVudCkgeworICAgICAgICAgICAgZW5kcG9pbnRSZWNlaXZlZE1lc3NhZ2VGcm9tQ2xpZW50ID0g
dHJ1ZTsKKworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGlj
dGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICAgICAgeHBjX2Rp
Y3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVzc2Fn
ZU5hbWVLZXksIHRlc3RNZXNzYWdlRnJvbUVuZHBvaW50KTsKKyAgICAgICAgICAgIHhwY19jb25u
ZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlLmdldCgpKTsKKyAgICAgICAg
fQorICAgIH0KK307CisKK2NsYXNzIFhQQ0VuZHBvaW50Q2xpZW50IDogcHVibGljIFdlYkNvcmU6
OlhQQ0VuZHBvaW50Q2xpZW50IHsKK3ByaXZhdGU6CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNf
b2JqZWN0X3QgZXZlbnQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBTdHJpbmcgbWVzc2FnZU5h
bWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCBYUENFbmRwb2ludDo6eHBjTWVz
c2FnZU5hbWVLZXkpOworICAgICAgICBpZiAobWVzc2FnZU5hbWUgPT0gdGVzdE1lc3NhZ2VGcm9t
RW5kcG9pbnQpCisgICAgICAgICAgICBjbGllbnRSZWNlaXZlZE1lc3NhZ2VGcm9tRW5kcG9pbnQg
PSB0cnVlOworICAgIH0KKyAgICB2b2lkIGRpZENvbm5lY3QoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUo
bnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5n
KG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgdGVzdE1lc3Nh
Z2VGcm9tQ2xpZW50KTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5l
Y3Rpb24oKS5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisKKyAgICAgICAgY2xpZW50Q29ubmVjdGVk
VG9FbmRwb2ludCA9IHRydWU7CisgICAgfQorfTsKKworVEVTVChXZWJLaXQsIFhQQ0VuZHBvaW50
KQoreworICAgIFhQQ0VuZHBvaW50IHhwY0VuZHBvaW50OworICAgIFhQQ0VuZHBvaW50Q2xpZW50
IHhwY0VuZHBvaW50Q2xpZW50OworCisgICAgeHBjRW5kcG9pbnRDbGllbnQuc2V0RW5kcG9pbnQo
eHBjRW5kcG9pbnQuZW5kcG9pbnQoKS5nZXQoKSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmNsaWVudENvbm5lY3RlZFRvRW5kcG9pbnQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZW5kcG9pbnRSZWNlaXZlZE1lc3NhZ2VGcm9tQ2xpZW50KTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmNsaWVudFJlY2VpdmVkTWVzc2FnZUZyb21FbmRwb2ludCk7Cit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403733</attachid>
            <date>2020-07-07 15:32:05 -0700</date>
            <delta_ts>2020-07-08 13:21:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200707153204.patch</filename>
            <type>text/plain</type>
            <size>87475</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQwMzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
Y2xhcmUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgeHBjIGVuZHBvaW50LCBhcyB3ZWxsIGFzIGEgZnVu
Y3Rpb24gdG8gY3JlYXRlIGEgY29ubmVjdGlvbiBmcm9tIGFuIGVuZHBvaW50LgorCisgICAgICAg
ICogd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg6CisKIDIwMjAtMDctMDcgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYlByb2Nlc3Mg
aGFuZ3Mgd2hlbiBicm93c2luZyBHaXRIdWIKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3
aW4vWFBDU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENT
UEkuaAkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENT
UEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSB2b2lkIF94cGNfb2JqZWN0X3ZhCiAKIHR5cGVkZWYgdm9pZCogeHBjX29iamVjdF90OwogdHlw
ZWRlZiB2b2lkKiB4cGNfY29ubmVjdGlvbl90OwordHlwZWRlZiB2b2lkKiB4cGNfZW5kcG9pbnRf
dDsKIAogI2RlZmluZSBYUENfR0xPQkFMX09CSkVDVChvYmplY3QpICgmKG9iamVjdCkpCiAKQEAg
LTEyMSw2ICsxMjIsOCBAQCB2b2lkIHhwY19hcnJheV9zZXRfc3RyaW5nKHhwY19vYmplY3RfdCwg
CiBib29sIHhwY19ib29sX2dldF92YWx1ZSh4cGNfb2JqZWN0X3QpOwogdm9pZCB4cGNfY29ubmVj
dGlvbl9jYW5jZWwoeHBjX2Nvbm5lY3Rpb25fdCk7CiB4cGNfY29ubmVjdGlvbl90IHhwY19jb25u
ZWN0aW9uX2NyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90KTsKK3hwY19l
bmRwb2ludF90IHhwY19lbmRwb2ludF9jcmVhdGUoeHBjX2Nvbm5lY3Rpb25fdCk7Cit4cGNfY29u
bmVjdGlvbl90IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9mcm9tX2VuZHBvaW50KHhwY19lbmRwb2lu
dF90KTsKIHhwY19jb25uZWN0aW9uX3QgeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2Vydmlj
ZShjb25zdCBjaGFyKiBuYW1lLCBkaXNwYXRjaF9xdWV1ZV90LCB1aW50NjRfdCBmbGFncyk7CiBw
aWRfdCB4cGNfY29ubmVjdGlvbl9nZXRfcGlkKHhwY19jb25uZWN0aW9uX3QpOwogdm9pZCB4cGNf
Y29ubmVjdGlvbl9yZXN1bWUoeHBjX2Nvbm5lY3Rpb25fdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjQwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMSBAQAorMjAyMC0wNy0wNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFi
YXNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWJzdHJh
Y3QgY2xhc3NlcyBYUENFbmRwb2ludCBhbmQgWFBDRW5kcG9pbnRDbGllbnQgdG8gaGFuZGxlIHRo
ZSBjcmVhdGlvbiBvZiBkaXJlY3QgeHBjIGNvbm5lY3Rpb25zIGJldHdlZW4gV2ViS2l0IHByb2Nl
c3Nlcy4KKyAgICAgICAgSW4gb3JkZXIgdG8gY3JlYXRlIGEgZGlyZWN0IHhwYyBjb25uZWN0aW9u
IGJldHdlZW4gdHdvIHByb2Nlc3NlcywgdGhlc2UgdHdvIGNsYXNzZXMgY2FuIGJlIHN1YmNsYXNz
ZWQsIGFuZCB0aGUgeHBjIGVuZHBvaW50IGNyZWF0ZWQKKyAgICAgICAgYnkgdGhlIFhQQ0VuZHBv
aW50IG9iamVjdCwgY2FuIGJlIHNlbnQgdmlhIHRoZSBVSSBwcm9jZXNzIG92ZXIgdGhlIGJvb3Rz
dHJhcCB4cGMgY29ubmVjdGlvbi4gVGhlIFVJIHByb2Nlc3MgY2FuIHRoZW4gZm9yd2FyZCB0aGlz
CisgICAgICAgIGVuZHBvaW50IHRvIGFub3RoZXIgV2ViS2l0IHByb2Nlc3MgYnkgc2VuZGluZyBp
dCBvdmVyIHRoZSBib290c3RyYXAgeHBjIGNvbm5lY3Rpb24uIFRoZSByZWNlaXZpbmcgcHJvY2Vz
cyBjYW4gdGhlbiBpbml0aWFsaXplIGFuCisgICAgICAgIFhQQ0VuZHBvaW50Q2xpZW50IG9iamVj
dCB3aXRoIHRoaXMgZW5kcG9pbnQsIGFuZCBhIG5ldyBkaXJlY3QgY29ubmVjdGlvbiB3aWxsIHRo
ZW4gYmUgYXZhaWxhYmxlLCBvdmVyIHdoaWNoIHRoZSB0d28gcHJvY2Vzc2VzIGNhbgorICAgICAg
ICBjb21tdW5pY2F0ZS4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0LlhQQ0VuZHBvaW50CisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvWFBDRW5kcG9pbnQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvWFBDRW5kcG9pbnQubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFBDRW5kcG9p
bnQ6OlhQQ0VuZHBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhQQ0VuZHBvaW50OjpzZW5kRW5k
cG9pbnRUb0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6WFBDRW5kcG9pbnQ6OmVuZHBv
aW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludENsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50Ojp+WFBDRW5kcG9p
bnRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50OjpzZXRFbmRwb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpYUENFbmRwb2ludENsaWVudDo6Y29ubmVjdGlvbik6CisK
IDIwMjAtMDctMDcgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBjb250ZW50IHByb2Nlc3MgaGFuZ3MgaW4gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSBpbiBzb21lIGNvcm5lciBjYXNl
cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA2LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBb
Q29jb2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERlY2xhcmUgaW50ZXJmYWNlIGZvciBvYnNlcnZpbmcg
YW5kIGNvbnN1bWluZyB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLgorCisgICAgICAgICog
cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA3LTA3ICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIDxhdHRhY2htZW50PiBs
YXlvdXQgZG9lcyBub3Qgc2NhbGUgd2l0aCBEeW5hbWljIFR5cGUgc2l6ZSBjaGFuZ2VzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZp
Y2VzU1BJLmgJKHJldmlzaW9uIDI2NDAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE2ICsyNSwx
MCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPENv
cmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+Ci0jZWxpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KLSNlbGlmIFBM
QVRGT1JNKElPUykKLSNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vydmlj
ZXNQcml2Lmg+Ci0jZW5kaWYKLQogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAK
ICNpZiBIQVZFKEFQUF9MSU5LUykKQEAgLTg1LDExICs3OSwxNCBAQCBlbnVtIExTU2Vzc2lvbklE
IHsKIAogI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCi1AaW50ZXJmYWNlIF9M
U0RTZXJ2aWNlIDogTlNPYmplY3QgPE5TWFBDTGlzdGVuZXJEZWxlZ2F0ZT4KLSsgKE5TWFBDQ29u
bmVjdGlvbiAqKVhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2U7CitAaW50ZXJmYWNlIExTRGF0YWJhc2VD
b250ZXh0IDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAoY2xhc3MsIHJlYWRvbmx5KSBMU0RhdGFiYXNl
Q29udGV4dCAqc2hhcmVkRGF0YWJhc2VDb250ZXh0OwogQGVuZAogCi1AaW50ZXJmYWNlIF9MU0RS
ZWFkU2VydmljZSA6IF9MU0RTZXJ2aWNlCitAaW50ZXJmYWNlIExTRGF0YWJhc2VDb250ZXh0IChX
ZWJLaXRDaGFuZ2VUcmFja2luZykKKy0gKGlkIDxOU09iamVjdD4pYWRkRGF0YWJhc2VDaGFuZ2VP
YnNlcnZlcjRXZWJLaXQ6KHZvaWQgKF4pKHhwY19vYmplY3RfdCBjaGFuZ2UpKW9ic2VydmVyOwor
LSAodm9pZClyZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDooaWQgPE5TT2JqZWN0
Pil0b2tlbjsKKy0gKHZvaWQpb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDooeHBjX29iamVj
dF90KWNoYW5nZTsKIEBlbmQKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2
NDAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDAwMiw2ICs0MDAyLDEwIEBACiAJCUMxNDlENTVEMjQyRUE2
QjkwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ5RDU1QTI0MkVBNEY5MDAzRUJCMTIgLyogU2xlZXBEaXNh
Ymxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMxNDlENTVGMjQyRUE3QjgwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ5RDU1QjI0MkVBNEZB
MDAzRUJCMTIgLyogU2xlZXBEaXNhYmxlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNDlENTY3MjQyRUI4NEEwMDNFQkIxMiAvKiBT
bGVlcERpc2FibGVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzE0OUQ1NjUyNDJFQjc2NTAwM0VCQjEyIC8qIFNsZWVwRGlzYWJsZXJJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQzE0RDMwNDkyNEI0RUFCMTAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTREMzA0NzI0QjRFQUE4MDA0
ODAzODcgLyogWFBDRW5kcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlDMTREMzA0QjI0QjRGN0VGMDA0ODAzODcgLyogWFBDRW5kcG9pbnQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTREMzA0
QTI0QjRFQjFFMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gKi87IH07CisJCUMxNEQzMDRFMjRC
NEY4RkEwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNEQzMDRDMjRCNEY4RjYwMDQ4MDM4NyAvKiBY
UENFbmRwb2ludENsaWVudC5tbSAqLzsgfTsKKwkJQzE0RDMwNEYyNEI0RjhGRjAwNDgwMzg3IC8q
IFhQQ0VuZHBvaW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMTREMzA0RDI0QjRGOEY3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTY5
MkREMjIzRDIzQUJEMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjkyREQxMjNEMjNBQkQwMDZFODhGNyAv
KiBTeXN0ZW1CYXR0ZXJ5Lm1tICovOyB9OwogCQlDMTY5MkRENTIzRDIzRTA4MDA2RTg4RjcgLyog
U3lzdGVtQmF0dGVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE2OTJERDQyM0QyM0FFMDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMUUxRDIzNjIwM0RG
MTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMUQyMzUyMDNERjE1NDAwNTg0NjY1IC8qIFNjcmVl
blByb3BlcnRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTM3MzAsNiArMTM3MzQsMTAgQEAKIAkJQzE0OUQ1NUEyNDJFQTRGOTAwM0VCQjEy
IC8qIFNsZWVwRGlzYWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2xl
ZXBEaXNhYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5RDU1QjI0MkVB
NEZBMDAzRUJCMTIgLyogU2xlZXBEaXNhYmxlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTbGVlcERpc2FibGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMxNDlENTY1MjQyRUI3NjUwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVySWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTbGVlcERpc2FibGVySWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMTREMzA0NzI0QjRFQUE4MDA0ODAzODcgLyogWFBDRW5k
cG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0RDMwNEEyNEI0RUIxRTAwNDgwMzg3IC8q
IFhQQ0VuZHBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
WFBDRW5kcG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzMDRDMjRC
NEY4RjYwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFhQQ0VuZHBvaW50Q2xpZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMTREMzA0RDI0QjRGOEY3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRW5kcG9pbnRDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE2OTJERDEyM0QyM0FCRDAwNkU4
OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1CYXR0
ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRENDIzRDIzQUUwMDA2
RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTE4MjQyRjkzODIwMDdFOTg3NSAv
KiBTbGVlcERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsZWVwRGlzYWJs
ZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM2MzIsNiArMjM2
NDAsMTAgQEAKIAkJCQlDREM5NzlGMzFDNDk4QzA5MDBEQjUwRDQgLyogV2ViQ29yZU5TRXJyb3JF
eHRyYXMuaCAqLywKIAkJCQlDREM5NzlGMjFDNDk4QzA5MDBEQjUwRDQgLyogV2ViQ29yZU5TRXJy
b3JFeHRyYXMubW0gKi8sCiAJCQkJNURGRUJBQjYxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2
YWlsYWJpbGl0eS5oICovLAorCQkJCUMxNEQzMDQ3MjRCNEVBQTgwMDQ4MDM4NyAvKiBYUENFbmRw
b2ludC5oICovLAorCQkJCUMxNEQzMDRBMjRCNEVCMUUwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5t
bSAqLywKKwkJCQlDMTREMzA0RDI0QjRGOEY3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQu
aCAqLywKKwkJCQlDMTREMzA0QzI0QjRGOEY2MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQu
bW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTMwMDk3LDYgKzMwMTA5LDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQg
LyogQ29sb3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRjAy
NDdGNDExMDAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0M1MTRFMDMyNEFGODA1RTAwNTA3MTBGIC8qIENvbG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzEwM0I3REYxREIwMTU2NzAwOEJCODkwIC8qIENvbG9ySGFzaC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1Mu
aCBpbiBIZWFkZXJzICovLApAQCAtMzM5MjMsNyArMzM5MzYsNiBAQAogCQkJCTkxMjc4RDYyMjFE
RURBRjAwMEI1NzE4NCAvKiBXb3JrZXJBdWRpdEFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MUE3RDM1MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQ0QxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlckNv
bnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M1MTRFMDMyNEFGODA1RTAwNTA3MTBG
IC8qIENvbG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1NjM5RDExQzZGMDlF
MzAwODA2RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
QjgxQ0NFMUZBQTQ0REUwMDM3RDFFNiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTJCMzQ5RTFGQTQxNzAzMDA4QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzk5MCw2ICszNDAwMiw4IEBACiAJCQkJMUFCN0ZDODQw
QThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoVXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZD
ODYwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QjdGQzg4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFZhcmlhYmxlUmVmZXJlbmNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDMTREMzA0OTI0QjRFQUIxMDA0ODAzODcgLyogWFBDRW5kcG9pbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCUMxNEQzMDRGMjRCNEY4RkYwMDQ4MDM4NyAvKiBYUENFbmRwb2lu
dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCOUMyNDEzMTk1MDAwRTc5NEQ2IC8q
IFhSRW52aXJvbm1lbnRCbGVuZE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU4Qjk3MjQx
MzE5NTAwMEU3OTRENiAvKiBYUkV5ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCOEYyNDEz
MTk1MDAwRTc5NEQ2IC8qIFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApA
QCAtMzUxODUsNiArMzUxOTksOCBAQAogCQkJCUE4MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAvKiBY
TGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2
NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTVBMzZEOTExMDQ1NzI3MDBC
N0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzA0QjI0QjRG
N0VGMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzA0
RTI0QjRGOEZBMDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQlFMUVFOEI3QTI0MTMxOTFGMDBFNzk0RDYgLyogWFJJbnB1dFNvdXJjZUV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxRUU4QkE3MjQxMzE5NjMwMEU3OTRENiAvKiBYUklucHV0U291
cmNlc0NoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU4Qjk1MjQxMzE5NTAw
MEU3OTRENiAvKiBYUlJlZmVyZW5jZVNwYWNlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50LmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvWFBDRW5kcG9pbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9Y
UENTUEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBYUENFbmRwb2ludCB7Citw
dWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgWFBDRW5kcG9pbnQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5YUENFbmRwb2ludCgpID0gZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgT1NPYmplY3RQdHI8eHBjX2VuZHBvaW50X3Q+IGVuZHBvaW50KCkg
Y29uc3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8geHBjTWVzc2FnZU5hbWVLZXkgPSAi
bWVzc2FnZS1uYW1lIjsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHhwY0Vu
ZHBvaW50TWVzc2FnZU5hbWVLZXkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogeHBjRW5kcG9pbnROYW1lS2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90LCB4cGNfb2JqZWN0X3QpID0gMDsKKworICAgIE9T
T2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyAgICBPU09iamVjdFB0
cjx4cGNfZW5kcG9pbnRfdD4gbV9lbmRwb2ludDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Lm1tCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlhQQ0VuZHBvaW50LmgiCisKKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitYUENFbmRwb2ludDo6WFBDRW5kcG9pbnQoKQorewor
ICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NPYmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlKG51
bGxwdHIsIG51bGxwdHIpKTsKKyAgICBtX2VuZHBvaW50ID0gYWRvcHRPU09iamVjdCh4cGNfZW5k
cG9pbnRfY3JlYXRlKG1fY29ubmVjdGlvbi5nZXQoKSkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25f
c2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlv
bi5nZXQoKSwgXih4cGNfb2JqZWN0X3QgbWVzc2FnZSkgeworICAgICAgICB4cGNfdHlwZV90IHR5
cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7CisKKyAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZ
UEVfQ09OTkVDVElPTikgeworICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9u
ID0gbWVzc2FnZTsKKyAgICAgICAgICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKKyAgICAg
ICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRU
b2tlbik7CisKKyAgICAgICAgICAgIGlmICghV1RGOjpoYXNFbnRpdGxlbWVudChhdWRpdFRva2Vu
LCAiY29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQiKSkgeworICAgICAg
ICAgICAgICAgIC8vIFVuY29tbWVudCBiZWZvcmUgbGFuZGluZzsgdGhpcyBpcyBjb21tZW50ZWQg
b3V0IGJlY2F1c2UgdGhlIGJvdHMgZG9lcyBub3Qgc2VlbSB0byB1cGRhdGUgdGhlIGVudGl0bGVt
ZW50cyBvbiBpbmNyZW1lbnRhbCBidWlsZHMuCisgICAgICAgICAgICAgICAgLy8gV1RGTG9nQWx3
YXlzKCJBdWRpdCB0b2tlbiBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGVudGl0bGVtZW50Iik7Cisg
ICAgICAgICAgICAgICAgLy8gcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeHBj
X2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpKTsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVy
KGNvbm5lY3Rpb24sIF4oeHBjX29iamVjdF90IGV2ZW50KSB7CisgICAgICAgICAgICAgICAgaGFu
ZGxlRXZlbnQoY29ubmVjdGlvbiwgZXZlbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB4cGNfY29ubmVjdGlvbl9yZXN1bWUoY29ubmVjdGlvbik7CisgICAgICAgIH0KKyAgICB9KTsK
KyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdldCgpKTsKK30KKwordm9p
ZCBYUENFbmRwb2ludDo6c2VuZEVuZHBvaW50VG9Db25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3Qg
Y29ubmVjdGlvbikKK3sKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51
bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3Nh
Z2UuZ2V0KCksIHhwY0VuZHBvaW50TWVzc2FnZU5hbWVLZXkoKSwgeHBjRW5kcG9pbnRNZXNzYWdl
TmFtZSgpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgeHBj
RW5kcG9pbnROYW1lS2V5KCksIG1fZW5kcG9pbnQuZ2V0KCkpOworCisgICAgeHBjX2Nvbm5lY3Rp
b25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2UuZ2V0KCkpOworfQorCitPU09iamVj
dFB0cjx4cGNfZW5kcG9pbnRfdD4gWFBDRW5kcG9pbnQ6OmVuZHBvaW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9lbmRwb2ludDsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvWFBDRW5kcG9pbnRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9YUENFbmRwb2ludENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Q2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBYUENFbmRwb2ludENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+WFBDRW5kcG9pbnRD
bGllbnQoKSB7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5kcG9pbnQoeHBjX2Vu
ZHBvaW50X3QpOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgT1NPYmplY3RQdHI8
eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29ubmVjdCgpID0gMDsKKworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29u
bmVjdGlvbjsKKyAgICBMb2NrIG1fbG9jazsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJYUENF
bmRwb2ludENsaWVudC5oIgorCisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBYUENFbmRwb2ludENsaWVudDo6c2V0RW5kcG9p
bnQoeHBjX2VuZHBvaW50X3QgZW5kcG9pbnQpCit7CisgICAgeworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworCisgICAgICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbV9jb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29u
bmVjdGlvbl9jcmVhdGVfZnJvbV9lbmRwb2ludChlbmRwb2ludCkpOworCisgICAgICAgIHhwY19j
b25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25uZWN0aW9uLmdldCgpLCBkaXNwYXRjaF9n
ZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKKyAg
ICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLmdldCgp
LCBeKHhwY19vYmplY3RfdCBtZXNzYWdlKSB7CisgICAgICAgICAgICB4cGNfdHlwZV90IHR5cGUg
PSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQ
RV9FUlJPUikgeworICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlID09IFhQQ19FUlJPUl9DT05O
RUNUSU9OX0lOVkFMSUQgfHwgbWVzc2FnZSA9PSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5F
TlQpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHR5cGUgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IHhwY19kaWN0aW9uYXJ5X2dldF9yZW1v
dGVfY29ubmVjdGlvbihtZXNzYWdlKTsKKyAgICAgICAgICAgIGlmICghY29ubmVjdGlvbikKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9r
ZW47CisgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlv
biwgJmF1ZGl0VG9rZW4pOworICAgICAgICAgICAgaWYgKCFXVEY6Omhhc0VudGl0bGVtZW50KGF1
ZGl0VG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCIpKSB7
CisgICAgICAgICAgICAgICAgLy8gVW5jb21tZW50IGJlZm9yZSBsYW5kaW5nOyB0aGlzIGlzIGNv
bW1lbnRlZCBvdXQgYmVjYXVzZSB0aGUgYm90cyBkb2VzIG5vdCBzZWVtIHRvIHVwZGF0ZSB0aGUg
ZW50aXRsZW1lbnRzIG9uIGluY3JlbWVudGFsIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAvLyBX
VEZMb2dBbHdheXMoIkF1ZGl0IHRva2VuIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgZW50aXRsZW1l
bnQiKTsKKyAgICAgICAgICAgICAgICAvLyByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBoYW5kbGVFdmVudChtZXNzYWdlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgeHBjX2Nv
bm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbi5nZXQoKSk7CisgICAgfQorCisgICAgZGlkQ29u
bmVjdCgpOworfQorCitPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBYUENFbmRwb2ludENs
aWVudDo6Y29ubmVjdGlvbigpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICByZXR1cm4gbV9jb25uZWN0aW9uOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjY0
MDM5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw4NiBAQAorMjAyMC0wNy0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlIGluIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBiZSBhYmxlIHRvIGRlbnkg
bWFjaCBsb29rdXAgYWNjZXNzIHRvIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgbWFwcGlu
ZyBzZXJ2aWNlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHRoZSBkYXRhYmFzZSBuZWVkcyB0
byBiZQorICAgICAgICBzZW50IGZyb20gdGhlIE5ldHdvcmtpbmcgcHJvY2VzcyB0byB0aGUgV2Vi
Q29udGVudCBwcm9jZXNzLCByZXByZXNlbnRlZCBieSBhbiB4cGMgb2JqZWN0LiBUaGUgTmV0d29y
a2luZyBwcm9jZXNzIGlzIGNob3NlbiBpbnN0ZWFkIG9mIHRoZSBVSQorICAgICAgICBwcm9jZXNz
LCBzaW5jZSBXZWJLaXQgaXMgY29udHJvbGxpbmcgdGhlIHNhbmRib3ggb2YgdGhlIE5ldHdvcmtp
bmcgcHJvY2Vzcy4gVGhlcmUgaXMgYWxyZWFkeSBhIGRpcmVjdCBjb25uZWN0aW9uIGJldHdlZW4g
dGhlIE5ldHdvcmtpbmcKKyAgICAgICAgcHJvY2VzcyBhbmQgdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cywgYnV0IHRoaXMgaXMgYSBDb3JlSVBDIGNvbm5lY3Rpb24uIFNpbmNlIHRoZSBkYXRhYmFzZSBp
cyByZXByZXNlbnRlZCBieSBhbiB4cGMgb2JqZWN0LCBhbiB4cGMgY29ubmVjdGlvbgorICAgICAg
ICBpcyByZXF1aWVyZWQgdG8gdHJhbnNmZXIgdGhlIGRhdGFiYXNlLiBUaGlzIHBhdGNoIGNyZWF0
ZXMgYSBkaXJlY3QgeHBjIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgTmV0d29ya2luZyBwcm9jZXNz
IGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzLAorICAgICAgICBieSBjcmVhdGluZyBhbiB4cGMg
ZW5kcG9pbnQgaW4gdGhlIE5ldHdvcmtpbmcgcHJvY2Vzcywgc2VuZGluZyB0aGlzIHRvIHRoZSBV
SSBwcm9jZXNzIG92ZXIgdGhlIGJvb3RzdHJhcCB4cGMgY29ubmVjdGlvbiwgYW5kIHRoZW4gcHJv
dmlkaW5nCisgICAgICAgIGVhY2ggV2ViQ29udGVudCBwcm9jZXNzIHdpdGggdGhpcyBlbmRwb2lu
dCBieSBzZW5kaW5nIGl0IG92ZXIgdGhlIGJvb3RzdHJhcCB4cGMgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBVSSBwcm9jZXNzIGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgorICAgICAgICBUaGlz
IGVuZHBvaW50IGhhcyB0byBiZSBzZW50IHZpYSB0aGUgeHBjIGNvbm5lY3Rpb25zIHRvIHRoZSBV
SSBwcm9jZXNzLCBzaW5jZSB0aGUgYWxyZWFkeSBleGlzdGluZyBkaXJlY3QgY29ubmVjdGlvbiBi
ZXR3ZWVuIHRoZSBOZXR3b3JraW5nCisgICAgICAgIHByb2Nlc3MgYW5kIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MgaXMgYSBsb3dlciBsZXZlbCBDb3JlSVBDIGNvbm5lY3Rpb24sIHdoaWNoIGRvZXMg
bm90IHN1cHBvcnQgdHJhbnNmZXJyaW5nIHhwYyBvYmplY3RzIGxpa2UgdGhlIHhwYyBlbmRwb2lu
dC4KKyAgICAgICAgV2hlbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHJlY2VpdmVzIHRoZSBlbmRw
b2ludCwgaXQgd2lsbCBjcmVhdGUgYW4geHBjIGNvbm5lY3Rpb24gZnJvbSB0aGUgZW5kcG9pbnQs
IHdoaWNoIHdpbGwgY3JlYXRlIGEgZGlyZWN0IGNvbm5lY3Rpb24KKyAgICAgICAgd2l0aCB0aGUg
TmV0d29ya2luZyBwcm9jZXNzLiBBIG1lc3NhZ2UgaXMgdGhlbiBzZW50IG92ZXIgdGhlIGNvbm5l
Y3Rpb24gdG8gcmVxdWVzdCB0aGUgZGF0YWJhc2UgeHBjIG9iamVjdC4gV2hlbiB0aGUgTmV0d29y
a2luZyBwcm9jZXNzCisgICAgICAgIHJlY2VpdmVzIHRoaXMgbWVzc2FnZSwgaXQgY2hlY2tzIHRo
ZSBlbnRpdGxlbWVudCBvZiB0aGUgcmVtb3RlIGVuZCB0byBtYWtlIHN1cmUgaXQgaXMgY29tbXVu
aWNhdGluZyB3aXRoIGEgV2ViQ29udGVudCBwcm9jZXNzLCBhbmQgdGhlbiBzZW5kcworICAgICAg
ICB0aGUgZGF0YWJhc2UgaWYgdGhlIGVudGl0bGVtZW50IGNoZWNrIHN1Y2NlZWRzLiBXaGVuIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgcmVjZWl2ZXMgdGhpcyBtZXNzYWdlLCBpdCBwZXJmb3JtcyBh
biBlbnRpdGxlbWVudCBjaGVjayBhcyB3ZWxsLAorICAgICAgICBhbmQgaWYgc3VjY2Vzc2Z1bCwg
dGhlIGRhdGFiYXNlIG9iamVjdCBpcyBjb25zdW1lZC4gQ29uc3VtaW5nIHRoaXMgZGF0YWJhc2Ug
b2JqZWN0LCB3aWxsIG1ha2Ugc3VyZSBVVEkgdG8gTUlNRSB0eXBlIG1hcHBpbmcgaXMgd29ya2lu
ZworICAgICAgICBjb3JyZWN0bHkgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAg
ICBGb3IgdGhlIFVJIHByb2Nlc3MgdG8gYmUgYWJsZSB0byBwaWNrIHVwIHhwYyBtZXNzYWdlcyBv
biB0aGUgYm9vdHN0cmFwIGNvbm5lY3Rpb24sIGEgbmV3IHZpcnR1YWwgbWV0aG9kLCBoYW5kbGVY
UENFdmVudCwgaXMgYWRkZWQgdG8gdGhlCisgICAgICAgIFByb2Nlc3NMYXVuY2hlciBDbGllbnQg
Y2xhc3MuIFRoaXMgd2F5LCBhIFByb2Nlc3NMYXVuY2hlciBjbGllbnQgd2lsbCBiZSBhYmxlIHRv
IHBpY2sgdXAgeHBjIG1lc3NhZ2VzIGZyb20gdGhlIHhwYyBib290c3RyYXAgY29ubmVjdGlvbi4K
KyAgICAgICAgUHJldmlvdXNseSB0aGUgZXZlbnQgaGFuZGxlciBmb3IgdGhlIGJvb3RzdHJhcCBj
b25uZWN0aW9uIGluIHRoZSBVSSBwcm9jZXNzIHdvdWxkIGhhbmRsZSBvbmx5IHhwYyBlcnJvciBt
ZXNzYWdlcy4gSXQgaGFzIG5vdyBiZWVuIGV4cGFuZGVkCisgICAgICAgIHRvIGhhbmRsZSBub3Jt
YWwgbWVzc2FnZXMsIHdoaWNoIGFyZSBiZWluZyBmb3J3YXJkZWQgdG8gdGhlIFByb2Nlc3NMYXVu
Y2hlciBjbGllbnQuIEluIHRoaXMgY2FzZSB0aGUgY2xpZW50IGlzIHRoZSBOZXR3b3JrIHByb2Nl
c3MgcHJveHksCisgICAgICAgIHdoaWNoIHdpbGwgY2hlY2sgdGhlIG1lc3NhZ2UgcmVjZWl2ZWQs
IGFuZCBpZiBpdCB0dXJucyBvdXQgdG8gYmUgYSBtZXNzYWdlIGNvbnRhaW5pbmcgYW4geHBjIGVu
ZHBvaW50LCB0aGUgbWVzc2FnZSB3aWxsIGJlIGZvcndhcmRlZCB0bworICAgICAgICBhbGwgV2Vi
IHByb2Nlc3Nlcy4gVGhlIFByb2Nlc3NMYXVuY2hlciBjbGllbnQgY2FuIGJlIGV4cGFuZGVkIHRv
IGhhbmRsZSBhbnkgeHBjIG1lc3NhZ2UsIGJ1dCByaWdodCBub3QgdGhlIE5ldHdvcmsgcHJvY2Vz
cyBwcm94eSBvbmx5CisgICAgICAgIGhhbmRsZXMgdGhlIHhwYyBlbmRwb2ludCBtZXNzYWdlLiBU
aGUgaGFuZGxlWFBDRXZlbnQgdmlydHVhbCBtZXRob2QgcmV0dXJuIGEgUmVmUHRyIHRvIGFuIFhQ
Q0V2ZW50SGFuZGxlciwgd2hpY2ggaXMgY2FwdHVyZWQgaW4gdGhlIGV2ZW50CisgICAgICAgIGhh
bmRsZXIgb2YgdGhlIGJvb3RzdHJhcCB4cGMgY29ubmVjdGlvbi4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpz
aW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Okxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmcpOgorICAgICAgICAo
V2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OnhwY0VuZHBvaW50TWVzc2FnZU5hbWVLZXkgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TWVzc2FnZU5h
bWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXI6OnhwY0VuZHBvaW50TmFtZUtleSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNl
cnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIFJlc291cmNl
cy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAg
ICAgICAgKiBTY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoOgorICAgICAgICAqIFNoYXJl
ZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmg6IEFkZGVkLgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnhwY0VuZHBvaW50TWVzc2FnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJvY2Vz
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ojp4cGNFdmVudEhhbmRsZXIgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW06IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6
OmhhbmRsZVhQQ0V2ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6WFBDRXZlbnRIYW5kbGVyOjpYUENFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6On5YUENFdmVudEhhbmRsZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9h
ZFBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW06IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmhhbmRsZUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmRpZENv
bm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6
d2FpdEZvckRhdGFiYXNlVXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aGFuZGxlWFBDRW5k
cG9pbnRNZXNzYWdlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDIwLTA3LTA3ICBTaWh1aSBMaXUgIDxzaWh1
aV9saXVAYXBwZS5jb20+CiAKICAgICAgICAgTmV0d29yayBwcm9jZXNzIGNyYXNoZXMgaW4gV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNjQwMzkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQxNSw2ICs0MTUsOCBAQCBV
SVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94CiBVSVByb2Nlc3MvSW5zcGVj
dG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvSW5zcGVjdG9y
L21hYy9XS0luc3BlY3RvcldLV2ViVmlldy5tbQogCitVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Q29jb2EubW0KKwogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0
ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxl
ci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAko
cmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDcgQEAKICNpbmNsdWRlICJO
ZXR3b3JrQ2FjaGVDb2RlcnMuaCIKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9u
Q29jb2EuaCIKICNlbmRpZgogCkBAIC0xNjMsNiArMTY0LDkgQEAgTmV0d29ya1Byb2Nlc3M6Ok5l
dHdvcmtQcm9jZXNzKEF1eGlsaWFyeQogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09M
X01BTkFHRVIpCiAgICAgYWRkU3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+
KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhZGRTdXBwbGVtZW50PExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcj4oKTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlcjo6bmV0d29ya1Byb2Nlc3NDcmVhdGVkKCp0aGlzKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1hQQ0Vu
ZHBvaW50Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyIDogcHVibGljIFdlYkNvcmU6OlhQQ0VuZHBvaW50LCBwdWJsaWMgTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoTmV0d29ya1Byb2Nlc3Mm
KTsKKyAgICB2aXJ0dWFsIH5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKTsKKworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCitwcml2YXRlOgorICAgIHZv
aWQgc3RhcnRPYnNlcnZpbmcoT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4pOworCisgICAg
Ly8gWFBDRW5kcG9pbnQKKyAgICBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TmFtZUtleSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCwg
eHBjX29iamVjdF90KSBvdmVycmlkZTsKKworICAgIC8vIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dAorICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKikgZmluYWw7
CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fb2JzZXJ2ZXI7CisgICAgVmVjdG9yPE9TT2JqZWN0UHRy
PHhwY19jb25uZWN0aW9uX3Q+PiBtX2Nvbm5lY3Rpb25zOworfTsKKworfQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9M
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5o
IgorCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvRW50aXRsZW1lbnRzLmg+CisjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgTFNEYXRhYmFzZUNvbnRleHQgKmRhdGFi
YXNlQ29udGV4dCgpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOworICAgIHN0
YXRpYyBMU0RhdGFiYXNlQ29udGV4dCAqY29udGV4dCA9IG51bGxwdHI7CisgICAgZGlzcGF0Y2hf
b25jZSgmb25jZSwgXnsKKyAgICAgICAgY29udGV4dCA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIkxT
RGF0YWJhc2VDb250ZXh0Iikgc2hhcmVkRGF0YWJhc2VDb250ZXh0XTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gY29udGV4dDsKK30KKworTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoTmV0d29ya1Byb2Nlc3MmKQoreworICAgIGlmICgh
W2RhdGFiYXNlQ29udGV4dCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJh
c2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0pCisgICAgICAgIHJldHVybjsKKworICAgIG1fb2Jz
ZXJ2ZXIgPSBbZGF0YWJhc2VDb250ZXh0KCkgYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJL
aXQ6Xih4cGNfb2JqZWN0X3QgY2hhbmdlKSB7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0
T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAg
ICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgpLCBYUENFbmRwb2lu
dDo6eHBjTWVzc2FnZU5hbWVLZXksIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6
OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSk7CisgICAgICAgIHhw
Y19kaWN0aW9uYXJ5X3NldF92YWx1ZShtZXNzYWdlLmdldCgpLCBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5LCBjaGFuZ2UpOwor
CisgICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpCisgICAgICAg
ICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2Fn
ZS5nZXQoKSk7CisgICAgfV07Cit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlcjo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyU3VwcGxlbWVudCI7Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyOjpzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlv
bl90PiBjb25uZWN0aW9uKQoreworICAgIG1fY29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24p
OworCisgICAgaWYgKCFbZGF0YWJhc2VDb250ZXh0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDopXSkgeworICAgICAgICBhdXRv
IG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBu
dWxscHRyLCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5n
ZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5h
bWUpOworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQo
KSwgbWVzc2FnZS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5Q
dHI8aWQ+IG9ic2VydmVyID0gW2RhdGFiYXNlQ29udGV4dCgpIGFkZERhdGFiYXNlQ2hhbmdlT2Jz
ZXJ2ZXI0V2ViS2l0Ol4oeHBjX29iamVjdF90IGNoYW5nZSkgeworICAgICAgICBhdXRvIG1lc3Nh
Z2UgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRy
LCAwKSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwg
WFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBD
Q29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOwor
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwg
Y2hhbmdlKTsKKworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlv
bi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisgICAgfV07CisKKyAgICBbZGF0YWJhc2VDb250ZXh0
KCkgcmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6b2JzZXJ2ZXIuZ2V0KCldOwor
fQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXIoKQoreworICAgIGlmICghW2RhdGFiYXNlQ29udGV4dCgpIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6KV0p
CisgICAgICAgIHJldHVybjsKKworICAgIFtkYXRhYmFzZUNvbnRleHQoKSByZW1vdmVEYXRhYmFz
ZUNoYW5nZU9ic2VydmVyNFdlYktpdDptX29ic2VydmVyLmdldCgpXTsKK30KKworY29uc3QgY2hh
ciogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1l
S2V5KCkgY29uc3QKK3sKKyAgICByZXR1cm4geHBjTWVzc2FnZU5hbWVLZXk7Cit9CisKK2NvbnN0
IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25z
dGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lOwor
fQorCitjb25zdCBjaGFyKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBv
aW50TmFtZUtleSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXk7
Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4
cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBldmVudCkKK3sKKyAgICBp
ZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICBpZiAo
ZXZlbnQgIT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCAmJiBldmVudCAhPSBYUENfRVJS
T1JfVEVSTUlOQVRJT05fSU1NSU5FTlQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Nvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAg
ICAgICAgICBpZiAobV9jb25uZWN0aW9uc1tpXS5nZXQoKSA9PSBjb25uZWN0aW9uKSB7CisgICAg
ICAgICAgICAgICAgbV9jb25uZWN0aW9ucy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAg
ICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQs
IHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lICE9IExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlVXBkYXRlTWVzc2FnZU5hbWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXJ0
T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOworICAgIH0KK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29u
bmVjdGlvbikKK3sKKyAgICBzZW5kRW5kcG9pbnRUb0Nvbm5lY3Rpb24oY29ubmVjdGlvbi0+eHBj
Q29ubmVjdGlvbigpKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2Fu
ZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJKHJldmlzaW9uIDI2NDAzOSkKKysrIFNvdXJjZS9XZWJL
aXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LnNiCSh3b3JraW5nIGNvcHkpCkBAIC01ODgsNyArNTg4LDcgQEAKIChhbGxvdyBpcGMtcG9z
aXgtc2htLXJlYWQqCiAgICAgICAgKGlwYy1wb3NpeC1uYW1lLXByZWZpeCAiYXBwbGUuY2ZwcmVm
cy4iKSkKICAKLShhbGxvdyBtYWNoLWxvb2t1cAorKGRlbnkgbWFjaC1sb29rdXAKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5sc2QubWFwZGIiKSkKIAogOzsgPHJkYXI6Ly9wcm9ibGVtLzEy
NDEzOTQyPgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRz
LnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVt
ZW50cy5zaAkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nl
c3MtZW50aXRsZW1lbnRzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBAIGZ1bmN0
aW9uIG1hY19wcm9jZXNzX3dlYmNvbnRlbnRfZW50aXRsZW0KIAogICAgIGlmIFtbICIke1dLX1VT
RV9SRVNUUklDVEVEX0VOVElUTEVNRU5UU30iID09IFlFUyBdXQogICAgIHRoZW4KKyAgICAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50
IGJvb2wgWUVTCiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucm9vdGxlc3Muc3Rv
cmFnZS5XZWJLaXRXZWJDb250ZW50U2FuZGJveCBib29sIFlFUwogICAgIGZpCiAKQEAgLTUxLDYg
KzUyLDcgQEAgZnVuY3Rpb24gbWFjX3Byb2Nlc3NfbmV0d29ya19lbnRpdGxlbWVudAogICAgICAg
ICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnRjYy5tYW5hZ2VyLmNoZWNr
LWJ5LWF1ZGl0LXRva2VuOjAgc3RyaW5nIGtUQ0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRUcmFj
a2luZ1ByZXZlbnRpb24KICAgICAgICAgZmkKIAorICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5zdG9yYWdlLldlYktpdE5ldHdvcmtp
bmdTYW5kYm94IGJvb2wgWUVTCiAgICAgZmkKIH0KQEAgLTE0NCw2ICsxNDYsNyBAQCBmdW5jdGlv
biBpb3NfZmFtaWx5X3Byb2Nlc3Nfd2ViY29udGVudF9lCiAgICAgcGxpc3RidWRkeSBBZGQgOmNv
bS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCiAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUt
aW5zcGVjdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS53ZWJpbnNwZWN0b3IucHJveHktYXBwbGljYXRpb24gYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5
IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMK
ICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJ1bm5pbmdib2FyZC5hc3NlcnRpb25zLndl
YmtpdCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpkeW5hbWljLWNvZGVzaWduaW5nIGJv
b2wgWUVTCiAKQEAgLTE4NCw2ICsxODcsNyBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3Nf
bmV0d29ya19lbnRpCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLmRtZC5w
b2xpY3kgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUubWVt
b3J5c3RhdHVzIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRl
Lm5ldHdvcmsuc29ja2V0LWRlbGVnYXRlIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNv
bS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJraXQgYm9v
bCBZRVMKIAogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdl
ci5jaGVjay1ieS1hdWRpdC10b2tlbiBhcnJheQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25z
dGFudHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworbmFtZXNwYWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMgeworCitjb25z
dGV4cHIgYXV0byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAi
dXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRv
IHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNl
IjsKK2NvbnN0ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRl
TWVzc2FnZU5hbWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1l
c3NhZ2UiOworY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBv
aW50TmFtZUtleSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKK2Nv
bnN0ZXhwciBhdXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VO
YW1lID0gInhwYy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Cit9
IC8vIG5hbWVzcGFjZSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlTWFpbi5tbQkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWlu
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgPENvcmVGb3Vu
ZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGVXRpbGl0aWVz
U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CiAjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBv
cnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjQwMzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNyArMzg5LDcg
QEAgcHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3
aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHIpOwotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkq
IG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQorICAg
IE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9u
ZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5l
dHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKQEAgLTU0MSw2ICs1NDEsMTEgQEAg
cHVibGljOgogICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyByZXR1cm4gbV91c2VySWQ7IH0K
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgT1NPYmplY3RQdHI8eHBjX29iamVj
dF90PiB4cGNFbmRwb2ludE1lc3NhZ2UoKSBjb25zdDsKKyAgICB2b2lkIHNlbmROZXR3b3JrUHJv
Y2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gZW5k
cG9pbnRNZXNzYWdlKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CiAKQEAgLTgyNSw2ICs4MzAsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAjZW5kaWYKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gbV9lbmRwb2ludE1lc3Nh
Z2U7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2NDAzOSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk1Myw2ICs5NTMsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaGluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgYXV0byBlbmRwb2ludE1lc3NhZ2UgPSBwcm9jZXNzUG9vbCgpLnhwY0VuZHBvaW50TWVzc2Fn
ZSgpOworICAgIGlmIChlbmRwb2ludE1lc3NhZ2UpCisgICAgICAgIHhwY19jb25uZWN0aW9uX3Nl
bmRfbWVzc2FnZShjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgZW5kcG9pbnRNZXNzYWdl
LmdldCgpKTsKKyNlbmRpZgorCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fd2ViQ29ubmVjdGlvbik7
CiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
KHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI2NDAzOSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTkzNCw0ICs5MzQsMjMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdoRHlu
YW1pYwogfQogI2VuZGlmCiAKK09TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gV2ViUHJvY2Vzc1Bv
b2w6OnhwY0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZW5kcG9pbnRN
ZXNzYWdlOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kTmV0d29ya1Byb2Nlc3NYUENF
bmRwb2ludFRvV2ViUHJvY2VzcyhPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGVuZHBvaW50TWVz
c2FnZSkKK3sKKyAgICBtX2VuZHBvaW50TWVzc2FnZSA9IGVuZHBvaW50TWVzc2FnZTsKKworICAg
IGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHByb2Nlc3Mt
PmlzTGF1bmNoaW5nKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFwcm9j
ZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byBj
b25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCk7CisgICAg
ICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBlbmRwb2ludE1lc3Nh
Z2UuZ2V0KCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxYUENFdmVudEhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5YUENFdmVu
dEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVYUENFdmVudCh4cGNfb2Jq
ZWN0X3QpIGNvbnN0ID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShyZXZpc2lvbiAyNjQwMzkpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRlIDx3dGYvd2luL1dpbjMySGFu
ZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlhQQ0V2ZW50
SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCkBAIC01Nyw2ICs2MSw5IEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENv
bmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhw
Y0V2ZW50SGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgogICAgIH07
CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0JKHJldmlzaW9uIDI2NDAzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxOCAr
MjM4LDI4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAg
cHJvY2Vzc0xhdW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzKDAsIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcigpKTsKICAgICB9OwogCi0gICAgYXV0byBlcnJvckhhbmRsZXIgPSBb
ZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCldICh4cGNfb2JqZWN0
X3QgZXZlbnQpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Vy
cm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBldmVudF0gewotICAg
ICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7Ci0gICAgICAgIH0pOworICAgIGF1dG8g
ZXZlbnRIYW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlcklt
cGwpLCBldmVudEhhbmRsZXIgPSBtX2NsaWVudC0+eHBjRXZlbnRIYW5kbGVyKCldICh4cGNfb2Jq
ZWN0X3QgZXZlbnQpIG11dGFibGUgeworCisgICAgICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90
eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBs
KSwgZXZlbnQgPSBPU09iamVjdFB0cihldmVudCldIHsKKyAgICAgICAgICAgICAgICBlcnJvckhh
bmRsZXJJbXBsKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV2ZW50SGFuZGxlcikgeworICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXIs
IGV2ZW50ID0gT1NPYmplY3RQdHIoZXZlbnQpXSB7CisgICAgICAgICAgICAgICAgZXZlbnRIYW5k
bGVyLT5oYW5kbGVYUENFdmVudChldmVudC5nZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQogICAgIH07CiAKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX3hw
Y0Nvbm5lY3Rpb24uZ2V0KCksIGVycm9ySGFuZGxlcik7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0
X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBldmVudEhhbmRsZXIpOwogCiAg
ICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlvbi5nZXQoKSk7CiAKICAgICBp
ZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1bmNoRmFpbEZv
clRlc3RpbmcpKSB7Ci0gICAgICAgIGVycm9ySGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgZXZl
bnRIYW5kbGVyKG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDEwIEBA
CiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRIYW5kbGVyLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTI5
Nyw2ICszMDEsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQK
ICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJl
ZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwor
I2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNl
c3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwogCkBAIC0zMjcs
NiArMzM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPj4gd2ViUHJvY2Vzc0Fz
c2VydGlvbnM7CiAgICAgfTsKICAgICBPcHRpb25hbDxVcGxvYWRBY3Rpdml0eT4gbV91cGxvYWRB
Y3Rpdml0eTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNsYXNzIFhQQ0V2ZW50SGFuZGxl
ciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAg
ICBYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYpOworCisgICAgICAg
IGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBjb25zdCBvdmVycmlkZTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIFdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3Jr
UHJvY2VzczsKKyAgICB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKworI2ltcG9ydCAiTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvWFBDRW5kcG9pbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyKCp0aGlzKSk7Cit9CisK
K2Jvb2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVu
dCh4cGNfb2JqZWN0X3QgZXZlbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNz
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlw
ZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQ
Q0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLnNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQcm9jZXNzKGV2ZW50
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVu
dEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3
b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobWFrZVdlYWtQdHIobmV0d29ya1By
b2Nlc3MpKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDAzOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2ODQs
OCArMTY4NCwxMSBAQAogCQlDMTFBOUVDQzIxNDAzNUY4MDBDRkIyMEEgLyogV2ViU3dpdGNoaW5n
R1BVQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMTFBOUVDQjIxNDAzNUY4MDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggKi87
IH07CiAJCUMxMUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFFMTY5MjIxMkI4N0M1
MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUMxNDkzODA5MjIzNDcxMDQwMDBDRDcwNyAvKiBXZWJTcGVl
Y2hTeW50aGVzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxNDkzODAyMjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXND
bGllbnQuaCAqLzsgfTsKKwkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLm1tICovOyB9OwogCQlDMTVDQkIzNjIzRjM3NzcxMDAzMDBDQzcgLyogUHJl
ZmVyZW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMTQ1Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyogUHJlZmVyZW5jZU9ic2VydmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE1Q0JC
MzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNUNCQjMzMjNGMzRDMzgwMDMwMEND
NyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi87IH07CisJCUMxNjYzRTVCMjRBRUFBMkYwMEM2
QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY2M0U1QTI0QUVBNzQyMDBDNkEz
QjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICovOyB9OworCQlDMTcx
MENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE3MTBDRjYy
NEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLzsg
fTsKIAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBE
RkRBNjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsKIAkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0
IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAq
LzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4
MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKQEAgLTUw
MTgsMTMgKzUwMjEsMjAgQEAKIAkJQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENE
NzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQzN0ZEMjRBQ0UwODYw
MDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9i
c2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlZmVyZW5jZU9ic2VydmVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyog
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBYUENFdmVudEhhbmRsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gWFBDRXZlbnRIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y2MjRBQTY0MzIwMEQ3QzExMiAv
KiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMxODE3MzVFMjA1ODM5RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMTgxNzM2MjIwNTg0NEE5MDBERkRBNjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGlzcGxheUxpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUUyNDJGOUY3NzAwN0U5
ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGQ29udGV4dE1lbnUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0QzIC8qIE5ldHdvcmtQ
cm9jZXNzUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
UHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRG
OEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JD
bGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMx
OEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jt
cy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02Mzg0LDYgKzYzOTQsNyBAQAogCQkJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXIuaCAqLywKIAkJCQkyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQg
LyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCAqLywKIAkJCQkyREM2RDlDMjE4
QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi8s
CisJCQkJQzE3MTBDRjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03
NDgxLDYgKzc0OTIsNyBAQAogCQkJCUM1NUY5MTZEMUM1OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0
ZWN0aW9uUmVzdWx0Lm1tICovLAogCQkJCUNFNTUwRTEzMjI4Mzc0NDQwMEQyODc5MSAvKiBJbnNl
cnRUZXh0T3B0aW9ucy5jcHAgKi8sCiAJCQkJQ0U1NTBFMTIyMjgzNzNDODAwRDI4NzkxIC8qIElu
c2VydFRleHRPcHRpb25zLmggKi8sCisJCQkJQzE2NjNFNUEyNEFFQTc0MjAwQzZBM0IyIC8qIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCAqLywKIAkJCQkyRDEwODc2MjFEMkM2
NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSAqLywKIAkJCQlDRDI4NjVFQzIy
NTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8sCiAJCQkJQ0Qy
ODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSAqLywK
QEAgLTc4NDQsNiArNzg1Niw3IEBACiAJCTUxMENDN0U3MTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3
b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVE
NzIzNjI0QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8sCiAJCQkJMjlBRDMwOTExNjRCNEMxMDAw
NzJERUE5IC8qIEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJG
MDAgLyogbWFjICovLAogCQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCAqLywKQEAgLTgzNzQsNiArODM4Nyw4IEBACiAJCQljaGlsZHJlbiA9ICgK
IAkJCQlDRDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3IuY3BwICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvci5oICovLAorCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAv
KiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovLAorCQkJCUMxNEQzN0ZEMjRBQ0Uw
ODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKIAkJCQk0
NDZEQzY0QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIuaCAqLywKIAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5oICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtODQyNSw2ICs4NDQwLDggQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTJEMEM1NkZCMjI5RjFERUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2Vt
ZW50U29mdExpbmsuaCAqLywKIAkJCQkyRDBDNTZGQzIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNl
TWFuYWdlbWVudFNvZnRMaW5rLm1tICovLAorCQkJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAv
KiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlDMTcxMENGNjI0QUE2
NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICovLAogCQkJ
CTUzMTU4NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2Eu
bW0gKi8sCiAJCQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0Nv
Y29hLmggKi8sCiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFz
a0NvY29hLm1tICovLApAQCAtMTAyNTIsNiArMTAyNjksMTQgQEAKIAkJCXRhYldpZHRoID0gODsK
IAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzFFRDcyMzYyNEE1NjhGNTAwM0Y2Q0QzIC8qIGNv
Y29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMUVE
NzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tICovLAor
CQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCUM1NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMDg1OCw2ICsxMDg4Myw3IEBACiAJCQkJMkQ0
RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1ldGhv
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDk4NzgxMUZGN0ZBQTAwNDhCNDY0IC8qIEpTTlBP
YmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUMxNjYzRTVCMjRBRUFBMkYwMEM2QTNCMiAvKiBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdhY3lD
dXN0b21Qcm90b2NvbElELmggaW4gSGVhZGVycyAqLywKQEAgLTEyNzI2LDYgKzEyNzUyLDggQEAK
IAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAxMjhBRkQgLyogSlNO
UE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MjIxMkNGOUYwMDAxMjhBRkQg
LyogSlNOUE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzdGRTI0QUNFMDg2MDA3
RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywK
KwkJCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8q
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFG
MDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIExpYldlYlJUQ05ldHdvcmtNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAyNjQwMzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAgQEAgdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogewogICAgIEF1eGlsaWFyeVByb2Nlc3M6
OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcygpOworI2VuZGlmCisKICAgICAvLyBXZSBj
YWxsIF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dyb3VuZCBxdWV1ZSBpbiBjYXNlIHRo
ZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAvLyBhbmQgQXV4aWxpYXJ5UHJvY2Vz
czo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgogICAgIGNvbm5lY3Rpb24tPnNldERp
ZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soY2FsbEV4aXQpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjQwMzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTUs
NiArNTE1LDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBoYW5k
bGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFJlZlB0cjxXZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQkocmV2aXNpb24gMjY0MDM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25z
LmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgogI2ltcG9ydCAi
TG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBsdWdpblZpZXcuaCIKICNpbXBvcnQgIldLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgiCkBAIC01NiwxMiArNTcsMjIgQEAKICNpbXBv
cnQgPFdlYkNvcmUvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaD4KICNlbmRpZgogCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2Jp
bGVDb3JlU2VydmljZXMuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJh
bWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS53YWl0Rm9yRGF0YWJhc2VVcGRhdGUo
NV9zKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGF1dG8gdXRpID0gYWRvcHRDRihVVFR5cGVD
cmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RS
KCJ0ZXh0L2h0bWwiKSwgMCkpOworICAgIEFTU0VSVCghU3RyaW5nKHV0aS5nZXQoKSkuaXNFbXB0
eSgpKTsKKyNlbmRpZgorCiAgICAgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dCA9IHBhcmFtZXRlcnMu
ZGF0YURldGVjdGlvbkNvbnRleHQ7CiAKICAgICBpZiAocGFyYW1ldGVycy5uZUhlbHBlckV4dGVu
c2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8V2ViQ29yZS9YUENFbmRwb2ludENsaWVudC5oPgor
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5h
cnlTZW1hcGhvcmUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXImIHNpbmds
ZXRvbigpOworCisgICAgYm9vbCB3YWl0Rm9yRGF0YWJhc2VVcGRhdGUoU2Vjb25kcyk7CisKK3By
aXZhdGU6CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkQ29ubmVjdCgpIG92ZXJyaWRlOworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9o
YXNSZWNlaXZlZExhdW5jaFNlcnZpY2VzRGF0YWJhc2UgeyBmYWxzZSB9OworICAgIEJpbmFyeVNl
bWFwaG9yZSBtX3NlbWFwaG9yZTsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgiCisKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvWFBDRW5kcG9pbnQuaD4KKyNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9j
b2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgor
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIm
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcj4gbWFuYWdlcjsK
KyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG1lc3NhZ2UpCit7CisgICAgU3Ry
aW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENF
bmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOworICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1l
c3NhZ2VOYW1lKSB7CisgICAgICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRf
dmFsdWUobWVzc2FnZSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1
bmNoU2VydmljZXNEYXRhYmFzZUtleSk7CisgICAgICAgIGlmIChkYXRhYmFzZSkgeworICAgICAg
ICAgICAgYXV0byBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRl
eHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgICAgICAgICAgaWYgKCFbY29udGV4dCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9ic2VydmVEYXRhYmFzZUNoYW5nZTRXZWJLaXQ6
KV0pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgW2NvbnRleHQgb2JzZXJ2
ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDpkYXRhYmFzZV07CisgICAgICAgIH0KKyAgICAgICAgbV9z
ZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgIG1faGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXI6OmRpZENvbm5lY3QoKQoreworICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3Qo
eHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4cGNfZGlj
dGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdl
TmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjUmVxdWVzdExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VVcGRhdGVNZXNzYWdlTmFtZSk7CisKKyAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbigpLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKK30K
KworYm9vbCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6d2FpdEZvckRhdGFiYXNlVXBk
YXRlKFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBpZiAobV9oYXNSZWNlaXZlZExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBtX3NlbWFwaG9y
ZS53YWl0Rm9yKHRpbWVvdXQpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2NDAzOSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NDb2NvYS5oIgogCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5o
IgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dJ
bml0aWFsaXphdGlvbi5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtNjksNiArNzEsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9TV0NvbnRleHRNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N5
c3RlbUJhdHRlcnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1hQQ0VuZHBvaW50Lmg+CiAjaW1wb3J0IDxhbGdvcml0aG0+CiAjaW1wb3J0IDxk
aXNwYXRjaC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CkBAIC0xNjEsMjUg
KzE2NCwzMiBAQCBzdGF0aWMgaWQgTlNBcHBsaWNhdGlvbkFjY2Vzc2liaWxpdHlGb2N1CiB9CiAj
ZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6
OmhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMoKSBjb25zdAogewotICAgIC8vIE1hcCBMYXVuY2gg
U2VydmljZXMgZGF0YWJhc2UuIFRoaXMgc2hvdWxkIGJlIGRvbmUgYXMgZWFybHkgYXMgcG9zc2li
bGUsIGFzIHRoZSBtYXBwaW5nIHdpbGwgZmFpbAotICAgIC8vIGlmICdjb20uYXBwbGUubHNkLm1h
cGRiJyBpcyBiZWluZyBhY2Nlc3NlZCBiZWZvcmUgdGhpcy4KLSAgICBpZiAocGFyYW1ldGVycy5t
YXBEQkV4dGVuc2lvbkhhbmRsZSkgewotICAgICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKCpwYXJhbWV0ZXJzLm1hcERCRXh0ZW5zaW9uSGFuZGxl
KSk7Ci0gICAgICAgIGJvb2wgb2sgPSBleHRlbnNpb24tPmNvbnN1bWUoKTsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChvaywgb2spOwotICAgICAgICAvLyBQZXJmb3JtIEFQSSBjYWxscyB3aGljaCB3
aWxsIGNvbW11bmljYXRlIHdpdGggdGhlIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZSwgYW5kIG1h
cCB0aGUgZGF0YWJhc2UuCi0gICAgICAgIGF1dG8gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQ
cmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0
L2h0bWwiKSwgMCkpOworICAgIGlmICghcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIFtbb2JqY19nZXRDbGFzcygiX0xTRFJlYWRTZXJ2aWNlIikg
WFBDQ29ubmVjdGlvblRvU2VydmljZV0gaW52YWxpZGF0ZV07CisgICAgYXV0byBjb25uZWN0aW9u
ID0gcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpOwogCi0gICAgICAg
IG9rID0gZXh0ZW5zaW9uLT5yZXZva2UoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2sp
OworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0
Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSk7
CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVjdGlvbiwgXih4cGNf
b2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgaWYgKHhwY19nZXRfdHlwZShldmVudCkgIT0gWFBD
X1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBBU1NFUlQo
U3RyaW5nKHV0aS5nZXQoKSkgPT0gU3RyaW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVk
SWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiks
IDApKS5nZXQoKSkpOwotICAgIH0KKyAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5
KTsKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKIAorICAgICAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQ
Q0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5h
bWUpIHsKKyAgICAgICAgICAgIGF1dG8gZW5kcG9pbnQgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFs
dWUoZXZlbnQsIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXkpOworICAgICAgICAgICAgTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNldEVuZHBvaW50KGVuZHBvaW50KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKK3sKICNpZiAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIFdlYkNvcmU6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5
KHBhcmFtZXRlcnMud2ViQ29yZUxvZ2dpbmdDaGFubmVscyk7CiAgICAgV2ViS2l0Ojppbml0aWFs
aXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShwYXJhbWV0ZXJzLndlYktpdExvZ2dpbmdDaGFubmVs
cyk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjQwMzkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAyMC0wNy0wNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVcGRhdGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNl
IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgTmV0d29yayBwcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3OTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1hQQ0VuZHBvaW50Lm1tOiBBZGRlZC4KKyAgICAgICAg
KFRFU1QpOgorCiAyMDIwLTA3LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdlYkNvcmVOU1VSTFNlc3Npb24gU1BJIHRvIHNlbmQg
SFRUUC8yIHBpbmcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjQwMzkp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTA4LDYgKzkwOCw3IEBACiAJCUMwQzVEM0M2MTQ1
OTkxMjkwMEE4MDJBNiAvKiBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBDNUQzQkQxNDU5OEI2RjAw
QTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gKi87IH07CiAJCUMxM0Q4
MkQ5MjQxNkYxMzIwMEE2Mjc5MyAvKiBFbmFibGVBY2Nlc3NpYmlsaXR5Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEzRDgyRDgyNDE2RjEzMjAwQTYy
NzkzIC8qIEVuYWJsZUFjY2Vzc2liaWxpdHkubW0gKi87IH07CiAJCUMxNDlENTUwMjQyRTk4REYw
MDNFQkIxMiAvKiBTbGVlcERpc2FibGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzE0OUQ1NEYyNDJFOTg0NDAwM0VCQjEyIC8qIFNsZWVwRGlzYWJs
ZXIubW0gKi87IH07CisJCUMxNEQzMDQ2MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNEQzMDQ1
MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSAqLzsgfTsKIAkJQzE1Q0JCMzAyM0Yx
RkYxQTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMkYyM0YxRkYxQTAwMzAw
Q0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9uLm1tICovOyB9OwogCQlDMTVDQkIzRjIz
RkIxNzdBMDAzMDBDQzcgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTVDQkIzRTIzRkIxNzdBMDAzMDBDQzcgLyog
UHJlZmVyZW5jZUNoYW5nZXMubW0gKi87IH07CiAJCUMxNjkyRENBMjNEMTBEQUUwMDZFODhGNyAv
KiBCYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi87IH07CkBAIC0yNTQ5
LDYgKzI1NTAsNyBAQAogCQlDMEM1RDNCRDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1Nj
YWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMxM0Q4MkQ4MjQxNkYxMzIwMEE2Mjc5MyAvKiBFbmFibGVBY2Nlc3NpYmlsaXR5
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRW5hYmxlQWNjZXNzaWJpbGl0eS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OUQ1NEYyNDJFOTg0NDAwM0VCQjEyIC8qIFNsZWVw
RGlzYWJsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTbGVl
cERpc2FibGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTREMzA0NTI0QjRD
M0JBMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUENF
bmRwb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE1Q0JCMkYyM0YxRkYx
QTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQmFja2xpZ2h0TGV2ZWxOb3RpZmljYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMxNUNCQjNFMjNGQjE3N0EwMDMwMENDNyAvKiBQcmVmZXJlbmNlQ2hhbmdl
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcmVuY2VD
aGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRDOTIzRDEwREFF
MDA2RTg4RjcgLyogQmF0dGVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJhdHRlcnkubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDMzLDYgKzMwMzUsNyBAQAogCQkJCUMx
NDlENTRGMjQyRTk4NDQwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVyLm1tICovLAogCQkJCTBGMTM5
RTc1MUE0MjNBNTMwMEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5tbSAqLywKIAkJCQlDMUZGOUVEQTI0
NDY0NEYwMDA4MzlBRTQgLyogV2ViRmlsdGVyLm1tICovLAorCQkJCUMxNEQzMDQ1MjRCNEMzQkEw
MDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gY29jb2E7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTM3Niw2ICs1Mzc5LDcgQEAKIAkJCQlDRDdG
ODlEQzIyQTg2Q0RBMDBENjgzQUUgLyogV0tXZWJWaWV3U3VzcGVuZEFsbE1lZGlhUGxheWJhY2su
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyogV0tXZWJW
aWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3NEM4RkEyMkRGQkE5NjAwREEy
REFCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzA0
NjI0QjRDM0JBMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
QzY0REMzMjFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvWFBDRW5kcG9p
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvWFBD
RW5kcG9pbnQubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvWFBDRW5kcG9pbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKworI2ltcG9ydCA8V2ViQ29yZS9YUENFbmRwb2ludC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Y
UENFbmRwb2ludENsaWVudC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0
YXRpYyBib29sIGNsaWVudENvbm5lY3RlZFRvRW5kcG9pbnQgPSBmYWxzZTsKK3N0YXRpYyBib29s
IGVuZHBvaW50UmVjZWl2ZWRNZXNzYWdlRnJvbUNsaWVudCA9IGZhbHNlOworc3RhdGljIGJvb2wg
Y2xpZW50UmVjZWl2ZWRNZXNzYWdlRnJvbUVuZHBvaW50ID0gZmFsc2U7CisKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byB0ZXN0TWVzc2FnZUZyb21FbmRwb2ludCA9ICJ0ZXN0LW1lc3NhZ2UtZnJvbS1l
bmRwb2ludCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdGVzdE1lc3NhZ2VGcm9tQ2xpZW50ID0g
InRlc3QtbWVzc2FnZS1mcm9tLWNsaWVudCI7CisKK2NsYXNzIFhQQ0VuZHBvaW50IDogcHVibGlj
IFdlYkNvcmU6OlhQQ0VuZHBvaW50IHsKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogeHBjRW5k
cG9pbnRNZXNzYWdlTmFtZUtleSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnROYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICB2b2lkIGhhbmRsZUV2ZW50
KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29iamVjdF90IGV2ZW50KSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAg
aWYgKG1lc3NhZ2VOYW1lID09IHRlc3RNZXNzYWdlRnJvbUNsaWVudCkgeworICAgICAgICAgICAg
ZW5kcG9pbnRSZWNlaXZlZE1lc3NhZ2VGcm9tQ2xpZW50ID0gdHJ1ZTsKKworICAgICAgICAgICAg
YXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0
ciwgbnVsbHB0ciwgMCkpOworICAgICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyht
ZXNzYWdlLmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXksIHRlc3RNZXNzYWdl
RnJvbUVuZHBvaW50KTsKKyAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShj
b25uZWN0aW9uLCBtZXNzYWdlLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNz
IFhQQ0VuZHBvaW50Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OlhQQ0VuZHBvaW50Q2xpZW50IHsK
K3ByaXZhdGU6CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3QgZXZlbnQpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKGV2ZW50LCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOworICAgICAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gdGVzdE1lc3NhZ2VGcm9tRW5kcG9pbnQpCisgICAgICAgICAg
ICBjbGllbnRSZWNlaXZlZE1lc3NhZ2VGcm9tRW5kcG9pbnQgPSB0cnVlOworICAgIH0KKyAgICB2
b2lkIGRpZENvbm5lY3QoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0g
YWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkp
OworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0Vu
ZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgdGVzdE1lc3NhZ2VGcm9tQ2xpZW50KTsKKyAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24oKS5nZXQoKSwgbWVzc2Fn
ZS5nZXQoKSk7CisKKyAgICAgICAgY2xpZW50Q29ubmVjdGVkVG9FbmRwb2ludCA9IHRydWU7Cisg
ICAgfQorfTsKKworVEVTVChXZWJLaXQsIFhQQ0VuZHBvaW50KQoreworICAgIFhQQ0VuZHBvaW50
IHhwY0VuZHBvaW50OworICAgIFhQQ0VuZHBvaW50Q2xpZW50IHhwY0VuZHBvaW50Q2xpZW50Owor
CisgICAgeHBjRW5kcG9pbnRDbGllbnQuc2V0RW5kcG9pbnQoeHBjRW5kcG9pbnQuZW5kcG9pbnQo
KS5nZXQoKSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNsaWVudENvbm5lY3Rl
ZFRvRW5kcG9pbnQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZW5kcG9pbnRSZWNl
aXZlZE1lc3NhZ2VGcm9tQ2xpZW50KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNs
aWVudFJlY2VpdmVkTWVzc2FnZUZyb21FbmRwb2ludCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403804</attachid>
            <date>2020-07-08 13:21:23 -0700</date>
            <delta_ts>2020-07-08 14:13:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200708132121.patch</filename>
            <type>text/plain</type>
            <size>57405</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTI5KQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2
LTMwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIFVwZGF0ZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBmcm9tIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIERlY2xhcmUgaW50ZXJmYWNlIGZvciBvYnNlcnZpbmcgYW5k
IGNvbnN1bWluZyB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlLgorCisgICAgICAgICogcGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA3LTA3ICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBGaXggdGhlIGJ1aWxk
IG9uIENhdGFsaW5hIGludGVybmFsIFNES3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaAkocmV2aXNpb24gMjY0MTI5
KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEku
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTYgKzI1LDEwIEBACiAKICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRl
IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlc1By
aXYuaD4KLSNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaW1wb3J0IDxNb2JpbGVDb3JlU2Vy
dmljZXMvTFNBcHBMaW5rUHJpdi5oPgotI2VsaWYgUExBVEZPUk0oSU9TKQotI2ltcG9ydCA8TW9i
aWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlc1ByaXYuaD4KLSNlbmRpZgotCiAjZW5k
aWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIEhBVkUoQVBQX0xJTktTKQpAQCAt
ODUsMTEgKzc5LDE0IEBAIGVudW0gTFNTZXNzaW9uSUQgewogCiAjZW5kaWYgLy8gIVVTRShBUFBM
RV9JTlRFUk5BTF9TREspCiAKLUBpbnRlcmZhY2UgX0xTRFNlcnZpY2UgOiBOU09iamVjdCA8TlNY
UENMaXN0ZW5lckRlbGVnYXRlPgotKyAoTlNYUENDb25uZWN0aW9uICopWFBDQ29ubmVjdGlvblRv
U2VydmljZTsKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgOiBOU09iamVjdAorQHByb3Bl
cnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0ICpzaGFyZWREYXRhYmFzZUNv
bnRleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgX0xTRFJlYWRTZXJ2aWNlIDogX0xTRFNlcnZpY2UK
K0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgKFdlYktpdENoYW5nZVRyYWNraW5nKQorLSAo
aWQgPE5TT2JqZWN0PilhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDoodm9pZCAoXiko
eHBjX29iamVjdF90IGNoYW5nZSkpb2JzZXJ2ZXI7CistICh2b2lkKXJlbW92ZURhdGFiYXNlQ2hh
bmdlT2JzZXJ2ZXI0V2ViS2l0OihpZCA8TlNPYmplY3Q+KXRva2VuOworLSAodm9pZClvYnNlcnZl
RGF0YWJhc2VDaGFuZ2U0V2ViS2l0Oih4cGNfb2JqZWN0X3QpY2hhbmdlOwogQGVuZAogCiAjaWYg
UExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDEyOSkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODkgQEAKKzIwMjAtMDct
MDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gVXBkYXRlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVudCBwcm9j
ZXNzIGZyb20gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVG8gYmUgYWJsZSB0byBkZW55IG1hY2ggbG9va3VwIGFjY2Vz
cyB0byB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZSBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCB0aGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUKKyAgICAgICAgc2Vu
dCBmcm9tIHRoZSBOZXR3b3JraW5nIHByb2Nlc3MgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcywg
cmVwcmVzZW50ZWQgYnkgYW4geHBjIG9iamVjdC4gVGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBpcyBj
aG9zZW4gaW5zdGVhZCBvZiB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcywgc2luY2UgV2ViS2l0IGlz
IGNvbnRyb2xsaW5nIHRoZSBzYW5kYm94IG9mIHRoZSBOZXR3b3JraW5nIHByb2Nlc3MuIFRoZXJl
IGlzIGFscmVhZHkgYSBkaXJlY3QgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBOZXR3b3JraW5nCisg
ICAgICAgIHByb2Nlc3MgYW5kIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIGJ1dCB0aGlzIGlzIGEg
Q29yZUlQQyBjb25uZWN0aW9uLiBTaW5jZSB0aGUgZGF0YWJhc2UgaXMgcmVwcmVzZW50ZWQgYnkg
YW4geHBjIG9iamVjdCwgYW4geHBjIGNvbm5lY3Rpb24KKyAgICAgICAgaXMgcmVxdWllcmVkIHRv
IHRyYW5zZmVyIHRoZSBkYXRhYmFzZS4gVGhpcyBwYXRjaCBjcmVhdGVzIGEgZGlyZWN0IHhwYyBj
b25uZWN0aW9uIGJldHdlZW4gdGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBhbmQgdGhlIFdlYkNvbnRl
bnQgcHJvY2VzcywKKyAgICAgICAgYnkgY3JlYXRpbmcgYW4geHBjIGVuZHBvaW50IGluIHRoZSBO
ZXR3b3JraW5nIHByb2Nlc3MsIHNlbmRpbmcgdGhpcyB0byB0aGUgVUkgcHJvY2VzcyBvdmVyIHRo
ZSBib290c3RyYXAgeHBjIGNvbm5lY3Rpb24sIGFuZCB0aGVuIHByb3ZpZGluZworICAgICAgICBl
YWNoIFdlYkNvbnRlbnQgcHJvY2VzcyB3aXRoIHRoaXMgZW5kcG9pbnQgYnkgc2VuZGluZyBpdCBv
dmVyIHRoZSBib290c3RyYXAgeHBjIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgVUkgcHJvY2VzcyBh
bmQgdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBlbmRwb2ludCBoYXMgdG8g
YmUgc2VudCB2aWEgdGhlIHhwYyBjb25uZWN0aW9ucyB0byB0aGUgVUkgcHJvY2Vzcywgc2luY2Ug
dGhlIGFscmVhZHkgZXhpc3RpbmcgZGlyZWN0IGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgTmV0d29y
a2luZworICAgICAgICBwcm9jZXNzIGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGlzIGEgbG93
ZXIgbGV2ZWwgQ29yZUlQQyBjb25uZWN0aW9uLCB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IHRyYW5z
ZmVycmluZyB4cGMgb2JqZWN0cyBsaWtlIHRoZSB4cGMgZW5kcG9pbnQuCisgICAgICAgIFdoZW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcyByZWNlaXZlcyB0aGUgZW5kcG9pbnQsIGl0IHdpbGwgY3Jl
YXRlIGFuIHhwYyBjb25uZWN0aW9uIGZyb20gdGhlIGVuZHBvaW50LCB3aGljaCB3aWxsIGNyZWF0
ZSBhIGRpcmVjdCBjb25uZWN0aW9uCisgICAgICAgIHdpdGggdGhlIE5ldHdvcmtpbmcgcHJvY2Vz
cy4gQSBtZXNzYWdlIGlzIHRoZW4gc2VudCBvdmVyIHRoZSBjb25uZWN0aW9uIHRvIHJlcXVlc3Qg
dGhlIGRhdGFiYXNlIHhwYyBvYmplY3QuIFdoZW4gdGhlIE5ldHdvcmtpbmcgcHJvY2VzcworICAg
ICAgICByZWNlaXZlcyB0aGlzIG1lc3NhZ2UsIGl0IGNoZWNrcyB0aGUgZW50aXRsZW1lbnQgb2Yg
dGhlIHJlbW90ZSBlbmQgdG8gbWFrZSBzdXJlIGl0IGlzIGNvbW11bmljYXRpbmcgd2l0aCBhIFdl
YkNvbnRlbnQgcHJvY2VzcywgYW5kIHRoZW4gc2VuZHMKKyAgICAgICAgdGhlIGRhdGFiYXNlIGlm
IHRoZSBlbnRpdGxlbWVudCBjaGVjayBzdWNjZWVkcy4gV2hlbiB0aGUgV2ViQ29udGVudCBwcm9j
ZXNzIHJlY2VpdmVzIHRoaXMgbWVzc2FnZSwgaXQgcGVyZm9ybXMgYW4gZW50aXRsZW1lbnQgY2hl
Y2sgYXMgd2VsbCwKKyAgICAgICAgYW5kIGlmIHN1Y2Nlc3NmdWwsIHRoZSBkYXRhYmFzZSBvYmpl
Y3QgaXMgY29uc3VtZWQuIENvbnN1bWluZyB0aGlzIGRhdGFiYXNlIG9iamVjdCwgd2lsbCBtYWtl
IHN1cmUgVVRJIHRvIE1JTUUgdHlwZSBtYXBwaW5nIGlzIHdvcmtpbmcKKyAgICAgICAgY29ycmVj
dGx5IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgRm9yIHRoZSBVSSBwcm9j
ZXNzIHRvIGJlIGFibGUgdG8gcGljayB1cCB4cGMgbWVzc2FnZXMgb24gdGhlIGJvb3RzdHJhcCBj
b25uZWN0aW9uLCBhIG5ldyB2aXJ0dWFsIG1ldGhvZCwgaGFuZGxlWFBDRXZlbnQsIGlzIGFkZGVk
IHRvIHRoZQorICAgICAgICBQcm9jZXNzTGF1bmNoZXIgQ2xpZW50IGNsYXNzLiBUaGlzIHdheSwg
YSBQcm9jZXNzTGF1bmNoZXIgY2xpZW50IHdpbGwgYmUgYWJsZSB0byBwaWNrIHVwIHhwYyBtZXNz
YWdlcyBmcm9tIHRoZSB4cGMgYm9vdHN0cmFwIGNvbm5lY3Rpb24uCisgICAgICAgIFByZXZpb3Vz
bHkgdGhlIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBib290c3RyYXAgY29ubmVjdGlvbiBpbiB0aGUg
VUkgcHJvY2VzcyB3b3VsZCBoYW5kbGUgb25seSB4cGMgZXJyb3IgbWVzc2FnZXMuIEl0IGhhcyBu
b3cgYmVlbiBleHBhbmRlZAorICAgICAgICB0byBoYW5kbGUgbm9ybWFsIG1lc3NhZ2VzLCB3aGlj
aCBhcmUgYmVpbmcgZm9yd2FyZGVkIHRvIHRoZSBQcm9jZXNzTGF1bmNoZXIgY2xpZW50LiBJbiB0
aGlzIGNhc2UgdGhlIGNsaWVudCBpcyB0aGUgTmV0d29yayBwcm9jZXNzIHByb3h5LAorICAgICAg
ICB3aGljaCB3aWxsIGNoZWNrIHRoZSBtZXNzYWdlIHJlY2VpdmVkLCBhbmQgaWYgaXQgdHVybnMg
b3V0IHRvIGJlIGEgbWVzc2FnZSBjb250YWluaW5nIGFuIHhwYyBlbmRwb2ludCwgdGhlIG1lc3Nh
Z2Ugd2lsbCBiZSBmb3J3YXJkZWQgdG8KKyAgICAgICAgYWxsIFdlYiBwcm9jZXNzZXMuIFRoZSBQ
cm9jZXNzTGF1bmNoZXIgY2xpZW50IGNhbiBiZSBleHBhbmRlZCB0byBoYW5kbGUgYW55IHhwYyBt
ZXNzYWdlLCBidXQgcmlnaHQgbm90IHRoZSBOZXR3b3JrIHByb2Nlc3MgcHJveHkgb25seQorICAg
ICAgICBoYW5kbGVzIHRoZSB4cGMgZW5kcG9pbnQgbWVzc2FnZS4gVGhlIGhhbmRsZVhQQ0V2ZW50
IHZpcnR1YWwgbWV0aG9kIHJldHVybiBhIFJlZlB0ciB0byBhbiBYUENFdmVudEhhbmRsZXIsIHdo
aWNoIGlzIGNhcHR1cmVkIGluIHRoZSBldmVudAorICAgICAgICBoYW5kbGVyIG9mIHRoZSBib290
c3RyYXAgeHBjIGNvbm5lY3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGVy
ZSBhbHJlYWR5IGV4aXN0IHRlc3RzIGZvciB0aGlzLiBVVEkgdG8gTUlNRSB0eXBlIG1hcHBpbmcg
aXMgYmVpbmcgdXNlZCBpbiBXZWJLaXQgYW5kIHVuZGVybHlpbmcgZnJhbWV3b3JrLCBhbmQgbWFu
eQorICAgICAgICB0ZXN0cyB3b3VsZCBmYWlsIGlmIHRoaXMgbWFwcGluZyB3YXMgbm90IHdvcmtp
bmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIp
OgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0
T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyOjp+TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
Ojp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE5hbWVLZXkgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OmhhbmRsZUV2ZW50
KToKKyAgICAgICAgKiBSZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2I6CisgICAgICAgICogU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50
cy5zaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9D
b2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp4cGNFbmRwb2ludE1lc3NhZ2UgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNz
WFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9YUENF
dmVudEhhbmRsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlcjo6
flhQQ0V2ZW50SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NM
YXVuY2hlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OkNsaWVudDo6eHBj
RXZlbnRIYW5kbGVyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1By
b2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjps
YXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eUNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
eHBjRXZlbnRIYW5kbGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6WFBDRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5k
bGVyOjp+WFBDRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXpl
Q29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJh
c2VNYW5hZ2VyOjpoYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyOjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXI6OndhaXRGb3JEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMC0w
Ny0wOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFj
T1NdIFNpbGVuY2Ugc3BhbSByZXBvcnRzIGFib3V0IGRlcHJlY2F0ZWQgbG9nZ2luZyBzeXN0ZW0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2NDEyOSkKKysrIFNvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSw4IEBA
IFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3gKIFVJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvbWFjL1dLSW5zcGVjdG9yV0tXZWJWaWV3Lm1tCiAKK1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHlDb2NvYS5tbQorCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJv
dXRlUGlja2VyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9s
bGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CShyZXZpc2lvbiAyNjQxMjkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQAogI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZUNvZGVycy5oIgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAi
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Np
b25Db2NvYS5oIgogI2VuZGlmCiAKQEAgLTE2Myw2ICsxNjQsOSBAQCBOZXR3b3JrUHJvY2Vzczo6
TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9D
T0xfTUFOQUdFUikKICAgICBhZGRTdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
cj4oKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGFkZFN1cHBsZW1lbnQ8TGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyPigpOworI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAgICAgTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyZWF0ZWQoKnRoaXMpOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvWFBD
RW5kcG9pbnQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6WFBDRW5kcG9pbnQsIHB1YmxpYyBO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcihOZXR3b3JrUHJvY2Vz
cyYpOworICAgIHZpcnR1YWwgfkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcigpOworCisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBzdGFydE9ic2VydmluZyhPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pik7CisKKyAg
ICAvLyBYUENFbmRwb2ludAorICAgIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TWVzc2FnZU5hbWVL
ZXkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnROYW1lS2V5
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90
LCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOworCisgICAgLy8gTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50CisgICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKSBmaW5h
bDsKKworICAgIFJldGFpblB0cjxpZD4gbV9vYnNlcnZlcjsKKyAgICBWZWN0b3I8T1NPYmplY3RQ
dHI8eHBjX2Nvbm5lY3Rpb25fdD4+IG1fY29ubmVjdGlvbnM7Cit9OworCit9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
LmgiCisKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCIKKyNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9j
b2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEku
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBMU0RhdGFiYXNlQ29udGV4dCAqZGF0
YWJhc2VDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7CisgICAg
c3RhdGljIExTRGF0YWJhc2VDb250ZXh0ICpjb250ZXh0ID0gbnVsbHB0cjsKKyAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlLCBeeworICAgICAgICBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAi
TFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgIH0pOworICAg
IHJldHVybiBjb250ZXh0OworfQorCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6Okxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcihOZXR3b3JrUHJvY2VzcyYpCit7CisgICAgaWYg
KCFbZGF0YWJhc2VDb250ZXh0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGREYXRh
YmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9v
YnNlcnZlciA9IFtkYXRhYmFzZUNvbnRleHQoKSBhZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdl
YktpdDpeKHhwY19vYmplY3RfdCBjaGFuZ2UpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRv
cHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwor
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50
czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAg
eHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1lc3NhZ2UuZ2V0KCksIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXksIGNoYW5nZSk7
CisKKyAgICAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9ucykKKyAgICAg
ICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLmdldCgpLCBtZXNz
YWdlLmdldCgpKTsKKyAgICB9XTsKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyOjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXJTdXBwbGVtZW50IjsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0
aW9uX3Q+IGNvbm5lY3Rpb24pCit7CisgICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlv
bik7CisKKyAgICBpZiAoIVtkYXRhYmFzZUNvbnRleHQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGFkZERhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OildKSB7CisgICAgICAgIGF1
dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIs
IG51bGxwdHIsIDApKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdl
LmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXksIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdl
TmFtZSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLmdl
dCgpLCBtZXNzYWdlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFp
blB0cjxpZD4gb2JzZXJ2ZXIgPSBbZGF0YWJhc2VDb250ZXh0KCkgYWRkRGF0YWJhc2VDaGFuZ2VP
YnNlcnZlcjRXZWJLaXQ6Xih4cGNfb2JqZWN0X3QgY2hhbmdlKSB7CisgICAgICAgIGF1dG8gbWVz
c2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxw
dHIsIDApKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgp
LCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXksIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSk7
CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtZXNzYWdlLmdldCgpLCBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5
LCBjaGFuZ2UpOworCisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0
aW9uLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKKyAgICB9XTsKKworICAgIFtkYXRhYmFzZUNvbnRl
eHQoKSByZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpvYnNlcnZlci5nZXQoKV07
Cit9CisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6fkxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlcigpCit7CisgICAgaWYgKCFbZGF0YWJhc2VDb250ZXh0KCkgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVEYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDop
XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RhdGFiYXNlQ29udGV4dCgpIHJlbW92ZURhdGFi
YXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Om1fb2JzZXJ2ZXIuZ2V0KCldOworfQorCitjb25zdCBj
aGFyKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TWVzc2FnZU5h
bWVLZXkoKSBjb25zdAoreworICAgIHJldHVybiB4cGNNZXNzYWdlTmFtZUtleTsKK30KKworY29u
c3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3Nh
Z2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWU7
Cit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6eHBjRW5k
cG9pbnROYW1lS2V5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gTGF1bmNoU2VydmljZXNEYXRhYmFz
ZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtl
eTsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OmhhbmRsZUV2ZW50
KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29iamVjdF90IGV2ZW50KQoreworICAg
IGlmICh4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgIGlm
IChldmVudCAhPSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEICYmIGV2ZW50ICE9IFhQQ19F
UlJPUl9URVJNSU5BVElPTl9JTU1JTkVOVCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY29ubmVjdGlvbnMuc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgICAgIGlmIChtX2Nvbm5lY3Rpb25zW2ldLmdldCgpID09IGNvbm5lY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmICh4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKKyAg
ICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVu
dCwgeHBjTWVzc2FnZU5hbWVLZXkpOworICAgICAgICBpZiAobWVzc2FnZU5hbWUgIT0gTGF1bmNo
U2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjUmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VVcGRhdGVNZXNzYWdlTmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3Rh
cnRPYnNlcnZpbmcoY29ubmVjdGlvbik7CisgICAgfQorfQorCit2b2lkIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uKQoreworICAgIHNlbmRFbmRwb2ludFRvQ29ubmVjdGlvbihjb25uZWN0aW9uLT54
cGNDb25uZWN0aW9uKCkpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkocmV2aXNpb24gMjY0MTI5KQorKysgU291cmNlL1dl
YktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQuc2IJKHdvcmtpbmcgY29weSkKQEAgLTU4OCw3ICs1ODgsNyBAQAogKGFsbG93IGlwYy1w
b3NpeC1zaG0tcmVhZCoKICAgICAgICAoaXBjLXBvc2l4LW5hbWUtcHJlZml4ICJhcHBsZS5jZnBy
ZWZzLiIpKQogIAotKGFsbG93IG1hY2gtbG9va3VwCisoZGVueSBtYWNoLWxvb2t1cAogICAgIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLmxzZC5tYXBkYiIpKQogCiA7OyA8cmRhcjovL3Byb2JsZW0v
MTI0MTM5NDI+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVu
dHMuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRs
ZW1lbnRzLnNoCShyZXZpc2lvbiAyNjQxMjkpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDcgQEAgZnVu
Y3Rpb24gbWFjX3Byb2Nlc3Nfd2ViY29udGVudF9lbnRpdGxlbQogCiAgICAgaWYgW1sgIiR7V0tf
VVNFX1JFU1RSSUNURURfRU5USVRMRU1FTlRTfSIgPT0gWUVTIF1dCiAgICAgdGhlbgorICAgICAg
ICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9p
bnQgYm9vbCBZRVMKICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5yb290bGVzcy5z
dG9yYWdlLldlYktpdFdlYkNvbnRlbnRTYW5kYm94IGJvb2wgWUVTCiAgICAgZmkKIApAQCAtNTEs
NiArNTIsNyBAQCBmdW5jdGlvbiBtYWNfcHJvY2Vzc19uZXR3b3JrX2VudGl0bGVtZW50CiAgICAg
ICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUudGNjLm1hbmFnZXIuY2hl
Y2stYnktYXVkaXQtdG9rZW46MCBzdHJpbmcga1RDQ1NlcnZpY2VXZWJLaXRJbnRlbGxpZ2VudFRy
YWNraW5nUHJldmVudGlvbgogICAgICAgICBmaQogCisgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29sIFlFUwogICAgICAg
ICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJvb3RsZXNzLnN0b3JhZ2UuV2ViS2l0TmV0d29y
a2luZ1NhbmRib3ggYm9vbCBZRVMKICAgICBmaQogfQpAQCAtMTQ0LDYgKzE0Niw3IEBAIGZ1bmN0
aW9uIGlvc19mYW1pbHlfcHJvY2Vzc193ZWJjb250ZW50X2UKICAgICBwbGlzdGJ1ZGR5IEFkZCA6
Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubWVzc2FnZS1maWx0ZXIgYm9vbCBZRVMKICAgICBw
bGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLmFsbG93LXJlbW90
ZS1pbnNwZWN0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2
YXRlLndlYmluc3BlY3Rvci5wcm94eS1hcHBsaWNhdGlvbiBib29sIFlFUworICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29sIFlF
UwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucnVubmluZ2JvYXJkLmFzc2VydGlvbnMu
d2Via2l0IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmR5bmFtaWMtY29kZXNpZ25pbmcg
Ym9vbCBZRVMKIApAQCAtMTg0LDYgKzE4Nyw3IEBAIGZ1bmN0aW9uIGlvc19mYW1pbHlfcHJvY2Vz
c19uZXR3b3JrX2VudGkKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuZG1k
LnBvbGljeSBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5t
ZW1vcnlzdGF0dXMgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZh
dGUubmV0d29yay5zb2NrZXQtZGVsZWdhdGUgYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6
Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKICAgICBw
bGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJ1bm5pbmdib2FyZC5hc3NlcnRpb25zLndlYmtpdCBi
b29sIFlFUwogCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnRjYy5tYW5h
Z2VyLmNoZWNrLWJ5LWF1ZGl0LXRva2VuIGFycmF5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCituYW1lc3BhY2UgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cyB7CisKK2Nv
bnN0ZXhwciBhdXRvIHhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSA9
ICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLW1lc3NhZ2UiOworY29uc3RleHByIGF1
dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSA9ICJsYXVuY2gtc2VydmljZXMtZGF0YWJh
c2UiOworY29uc3RleHByIGF1dG8geHBjUmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0YWJhc2VVcGRh
dGVNZXNzYWdlTmFtZSA9ICJyZXF1ZXN0LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS11cGRhdGUt
bWVzc2FnZSI7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5k
cG9pbnROYW1lS2V5ID0gInhwYy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiOwor
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2Fn
ZU5hbWUgPSAieHBjLWVuZHBvaW50LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsK
K30gLy8gbmFtZXNwYWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50
VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VNYWluLm1tCShyZXZpc2lvbiAyNjQxMjkpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1h
aW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCA8Q29yZUZv
dW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZVdGlsaXRp
ZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNp
bXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2NDEyOSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4OSw3ICszODks
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogICAgIE5l
dHdvcmtQcm9jZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUq
IHdpdGhXZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cik7Ci0gICAgTmV0d29ya1Byb2Nlc3NQcm94
eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9Cisg
ICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSBjb25zdCB7IHJldHVybiBt
X25ldHdvcmtQcm9jZXNzLmdldCgpOyB9CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQo
TmV0d29ya1Byb2Nlc3NQcm94eSYpOwogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwpAQCAtNTQxLDYgKzU0MSwxMSBA
QCBwdWJsaWM6CiAgICAgaW50MzJfdCB1c2VySWQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJJZDsg
fQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPU09iamVjdFB0cjx4cGNfb2Jq
ZWN0X3Q+IHhwY0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0OworICAgIHZvaWQgc2VuZE5ldHdvcmtQ
cm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBl
bmRwb2ludE1lc3NhZ2UpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKIApAQCAtODI1LDYgKzgzMCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICNlbmRpZgorCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBtX2VuZHBvaW50TWVz
c2FnZTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjY0MTI5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTUzLDYgKzk1MywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNo
TGF1bmNoaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBhdXRvIGVuZHBvaW50TWVzc2FnZSA9IHByb2Nlc3NQb29sKCkueHBjRW5kcG9pbnRNZXNz
YWdlKCk7CisgICAgaWYgKGVuZHBvaW50TWVzc2FnZSkKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCBlbmRwb2ludE1lc3Nh
Z2UuZ2V0KCkpOworI2VuZGlmCisKICAgICBSRUxFQVNFX0FTU0VSVCghbV93ZWJDb25uZWN0aW9u
KTsKICAgICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGUodGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjY0MTI5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtOTM0LDQgKzkzNCwyMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlckhpZ2hE
eW5hbWljCiB9CiAjZW5kaWYKIAorT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBXZWJQcm9jZXNz
UG9vbDo6eHBjRW5kcG9pbnRNZXNzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lbmRwb2lu
dE1lc3NhZ2U7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmROZXR3b3JrUHJvY2Vzc1hQ
Q0VuZHBvaW50VG9XZWJQcm9jZXNzKE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gZW5kcG9pbnRN
ZXNzYWdlKQoreworICAgIG1fZW5kcG9pbnRNZXNzYWdlID0gZW5kcG9pbnRNZXNzYWdlOworCisg
ICAgZm9yIChhdXRvIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vz
cy0+aXNMYXVuY2hpbmcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXBy
b2Nlc3MtPmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRv
IGNvbm5lY3Rpb24gPSBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKTsKKyAg
ICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24sIGVuZHBvaW50TWVz
c2FnZS5nZXQoKSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxlci5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1hQQ0V2ZW50SGFuZGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgWFBDRXZlbnRIYW5kbGVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFhQQ0V2ZW50SGFuZGxlcj4geworcHVibGljOgorICAgIHZpcnR1YWwgflhQQ0V2
ZW50SGFuZGxlcigpIHsgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZVhQQ0V2ZW50KHhwY19v
YmplY3RfdCkgY29uc3QgPSAwOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlzaW9uIDI2NDEyOSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi93aW4vV2luMzJI
YW5kbGUuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZl
bnRIYW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFdQRSkKQEAgLTU3LDYgKzYxLDkgQEAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q29uZmlndXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgICAgIHZpcnR1YWwgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4g
eHBjRXZlbnRIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAgICAg
fTsKICAgICAKICAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbQkocmV2aXNpb24gMjY0MTI5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDE4
ICsyMzgsMjggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAg
ICBwcm9jZXNzTGF1bmNoZXItPmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MoMCwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKCkpOwogICAgIH07CiAKLSAgICBhdXRvIGVycm9ySGFuZGxlciA9
IFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJvckhhbmRsZXJJbXBsKV0gKHhwY19vYmpl
Y3RfdCBldmVudCkgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
ZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCksIGV2ZW50XSB7Ci0g
ICAgICAgICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50KTsKLSAgICAgICAgfSk7CisgICAgYXV0
byBldmVudEhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVy
SW1wbCksIGV2ZW50SGFuZGxlciA9IG1fY2xpZW50LT54cGNFdmVudEhhbmRsZXIoKV0gKHhwY19v
YmplY3RfdCBldmVudCkgbXV0YWJsZSB7CisKKyAgICAgICAgaWYgKCFldmVudCB8fCB4cGNfZ2V0
X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlcklt
cGwpLCBldmVudCA9IE9TT2JqZWN0UHRyKGV2ZW50KV0geworICAgICAgICAgICAgICAgIGVycm9y
SGFuZGxlckltcGwoZXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXZlbnRIYW5kbGVyKSB7CisgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2V2ZW50SGFuZGxlciA9IGV2ZW50SGFuZGxl
ciwgZXZlbnQgPSBPU09iamVjdFB0cihldmVudCldIHsKKyAgICAgICAgICAgICAgICBldmVudEhh
bmRsZXItPmhhbmRsZVhQQ0V2ZW50KGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CiAgICAgfTsKIAotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1f
eHBjQ29ubmVjdGlvbi5nZXQoKSwgZXJyb3JIYW5kbGVyKTsKKyAgICB4cGNfY29ubmVjdGlvbl9z
ZXRfZXZlbnRfaGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGV2ZW50SGFuZGxlcik7CiAK
ICAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV94cGNDb25uZWN0aW9uLmdldCgpKTsKIAogICAg
IGlmIChVTkxJS0VMWShtX2xhdW5jaE9wdGlvbnMuc2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWls
Rm9yVGVzdGluZykpIHsKLSAgICAgICAgZXJyb3JIYW5kbGVyKG51bGxwdHIpOworICAgICAgICBl
dmVudEhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCShyZXZpc2lvbiAyNjQxMjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTAg
QEAKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJYUENFdmVudEhhbmRsZXIuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpAQCAt
Mjk3LDYgKzMwMSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVu
dAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
UmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBjRXZlbnRIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7
CisjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6
U2Vzc2lvbklELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKQEAgLTMy
Nyw2ICszMzQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NBc3NlcnRpb24+PiB3ZWJQcm9jZXNz
QXNzZXJ0aW9uczsKICAgICB9OwogICAgIE9wdGlvbmFsPFVwbG9hZEFjdGl2aXR5PiBtX3VwbG9h
ZEFjdGl2aXR5OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2xhc3MgWFBDRXZlbnRIYW5k
bGVyIDogcHVibGljIFdlYktpdDo6WFBDRXZlbnRIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CisKKyAgICAg
ICAgYm9vbCBoYW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgV2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdv
cmtQcm9jZXNzOworICAgIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorI2lt
cG9ydCA8V2ViQ29yZS9YUENFbmRwb2ludC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxYUENFdmVudEhhbmRsZXI+IE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnhwY0V2ZW50SGFuZGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXIoKnRoaXMpKTsKK30K
KworYm9vbCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2
ZW50KHhwY19vYmplY3RfdCBldmVudCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbmV0d29ya1Byb2Nl
c3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90
eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwg
WFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICBpZiAobWVzc2FnZU5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0g
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRh
YmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuc2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoZXZl
bnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2
ZW50SGFuZGxlcjo6WFBDRXZlbnRIYW5kbGVyKGNvbnN0IE5ldHdvcmtQcm9jZXNzUHJveHkmIG5l
dHdvcmtQcm9jZXNzKQorICAgIDogbV9uZXR3b3JrUHJvY2VzcyhtYWtlV2Vha1B0cihuZXR3b3Jr
UHJvY2VzcykpCit7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY0MTI5KQorKysgU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY4
NCw4ICsxNjg0LDExIEBACiAJCUMxMUE5RUNDMjE0MDM1RjgwMENGQjIwQSAvKiBXZWJTd2l0Y2hp
bmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxMUE5RUNCMjE0MDM1RjgwMENGQjIwQSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCAq
LzsgfTsKIAkJQzExRTE2OTQyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUUxNjkyMjEyQjg3
QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzE0OTM4MDkyMjM0NzEwNDAwMENENzA3IC8qIFdlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNp
c0NsaWVudC5oICovOyB9OworCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXIubW0gKi87IH07CiAJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQ
cmVmZXJlbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxNDVDQzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTVD
QkIzNzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzMyM0YzNEMzODAwMzAw
Q0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLzsgfTsKKwkJQzE2NjNFNUIyNEFFQUEyRjAw
QzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjYzRTVBMjRBRUE3NDIwMEM2
QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggKi87IH07CisJCUMx
NzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTcxMENG
NjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tICov
OyB9OwogCQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxODE3MzYwMjA1ODQyNDcw
MERGREE2NSAvKiBEaXNwbGF5TGluay5oICovOyB9OwogCQlDMUUxMjNCQTIwQTExNTczMDAyNjQ2
RjQgLyogUERGQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5o
ICovOyB9OwogCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MTcz
ODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICovOyB9OwpAQCAt
NTAxOCwxMyArNTAyMSwyMCBAQAogCQlDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc0Ns
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwMzIyMzQxREY3MDAw
Q0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMxNDkzODBBMjIzODUzQkUwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMTREMzdGQzI0QUNERjQ1MDA3RkYwMTQgLyogTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0RDM3RkQyNEFDRTA4
NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNl
T2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNlT2JzZXJ2ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNjYzRTVBMjRBRUE3NDIwMEM2QTNCMiAv
KiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzE3MTBDRjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFuZGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBYUENFdmVudEhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzE3MTBDRjUyNEFBNjM0NTAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VP
YnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEy
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzE4MTczNUUyMDU4MzlGNjAwREZEQTY1IC8qIERyYXdpbmdBcmVhTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdpbmdBcmVhTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMxODE3MzYyMjA1ODQ0QTkwMERGREE2NSAvKiBEaXNwbGF5TGluay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaXNwbGF5TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMxOEZCNTFEMjQyRjlGNzYwMDdFOTg3NSAvKiBXZWJTbGVlcERpc2FibGVyQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNsZWVwRGlzYWJsZXJDbGll
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMThGQjUxRTI0MkY5Rjc3MDA3
RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTbGVlcERpc2FibGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQREZDb250ZXh0TWVudS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29y
a1Byb2Nlc3NQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3NQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTE3Mzg4MDEy
REY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzUyMzdGNUYxMjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVu
dE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRv
ckNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QUYxOEJF
QzE4QjAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBwYXRoID0gaW9zL2Zv
cm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTYzODQsNiArNjM5NCw3IEBACiAJCQkJMkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8qIFdL
V2ViVmlld0NvbnRlbnRQcm92aWRlci5oICovLAogCQkJCTJEQzZEOUMxMThDNDRBNjEwMDQzQkFE
NCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovLAogCQkJCTJEQzZEOUMy
MThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAq
LywKKwkJCQlDMTcxMENGMjI0QTdCRDAzMDBEN0MxMTIgLyogWFBDRXZlbnRIYW5kbGVyLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTc0ODEsNiArNzQ5Miw3IEBACiAJCQkJQzU1RjkxNkQxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFE
ZXRlY3Rpb25SZXN1bHQubW0gKi8sCiAJCQkJQ0U1NTBFMTMyMjgzNzQ0NDAwRDI4NzkxIC8qIElu
c2VydFRleHRPcHRpb25zLmNwcCAqLywKIAkJCQlDRTU1MEUxMjIyODM3M0M4MDBEMjg3OTEgLyog
SW5zZXJ0VGV4dE9wdGlvbnMuaCAqLywKKwkJCQlDMTY2M0U1QTI0QUVBNzQyMDBDNkEzQjIgLyog
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICovLAogCQkJCTJEMTA4NzYyMUQy
QzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICovLAogCQkJCUNEMjg2NUVD
MjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLywKIAkJCQlD
RDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICov
LApAQCAtNzg0NCw2ICs3ODU2LDcgQEAKIAkJNTEwQ0M3RTcxNjEzOEU3MjAwRDAzRUQzIC8qIE5l
dHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMx
RUQ3MjM2MjRBNTY4RjUwMDNGNkNEMyAvKiBjb2NvYSAqLywKIAkJCQkyOUFEMzA5MTE2NEI0QzEw
MDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xzICovLAogCQkJCTUxNjMxOTkzMTYyODk4MEUwMEUy
MkYwMCAvKiBtYWMgKi8sCiAJCQkJNTEwQ0M3RUExNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwICovLApAQCAtODM3NCw2ICs4Mzg3LDggQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUNENDU3MENCMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvci5jcHAgKi8sCiAJCQkJQ0Q0NTcwQ0EyNDQwRkIyQTAwQTNEQ0VCIC8qIEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yLmggKi8sCisJCQkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmggKi8sCisJCQkJQzE0RDM3RkQyNEFD
RTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovLAogCQkJ
CTQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC04NDI1LDYgKzg0NDAsOCBAQAogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJMkQwQzU2RkIyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFn
ZW1lbnRTb2Z0TGluay5oICovLAogCQkJCTJEMEM1NkZDMjI5RjFERUEwMEJEMzNFNyAvKiBEZXZp
Y2VNYW5hZ2VtZW50U29mdExpbmsubW0gKi8sCisJCQkJQzE3MTBDRjUyNEFBNjM0NTAwRDdDMTEy
IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oICovLAorCQkJCUMxNzEwQ0Y2MjRB
QTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8sCiAJ
CQkJNTMxNTg3NkIyMDc2QjcxMzAwNEJGOUYzIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXJDb2Nv
YS5tbSAqLywKIAkJCQk1MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNr
Q29jb2EuaCAqLywKIAkJCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0gKi8sCkBAIC0xMDI1Miw2ICsxMDI2OSwxNCBAQAogCQkJdGFiV2lkdGggPSA4
OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMUVENzIzNjI0QTU2OEY1MDAzRjZDRDMgLyog
Y29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMx
RUQ3MjM3MjRBNTY5MEUwMDNGNkNEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0gKi8s
CisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJQzU0MjU2QUUxOEJFQzE2MTAwREU0MTc5IC8qIGZvcm1zICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEwODU4LDYgKzEwODgzLDcgQEAKIAkJCQky
RDREMkM4MTFERjYwQkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTQ5QTQ5MTFGRkE4Q0UwMDQ4QjQ2NCAvKiBKU05QTWV0
aG9kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU0OTg3ODExRkY3RkFBMDA0OEI0NjQgLyogSlNO
UE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzE2NjNFNUIyNEFFQUEyRjAwQzZBM0IyIC8q
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRTA5Mzc4MTRGQjEyOEMwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTkyREMxMTEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRFOTM2RkQyNDQ3QzJEODAwOUZBM0UzIC8qIExlZ2Fj
eUN1c3RvbVByb3RvY29sSUQuaCBpbiBIZWFkZXJzICovLApAQCAtMTI3MjYsNiArMTI3NTIsOCBA
QAogCQkJCTI3NDlGNjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBK
U05QTWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEyOEFG
RCAvKiBKU05QT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMxNEQzN0ZFMjRBQ0UwODYw
MDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUMxNzEwQ0Y3MjRBQTY0MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYg
LyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5ODRGNTdDMTY0QjkxNUYwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUMgLyogTGliV2ViUlRDTmV0d29ya01lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDI2NDEyOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxMCBAQCB2b2lkIFdl
YlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKElQCiB7CiAgICAgQXV4aWxpYXJ5UHJvY2Vz
czo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiAKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCk7CisjZW5kaWYKKwogICAgIC8vIFdl
IGNhbGwgX2V4aXQoKSBkaXJlY3RseSBmcm9tIHRoZSBiYWNrZ3JvdW5kIHF1ZXVlIGluIGNhc2Ug
dGhlIG1haW4gdGhyZWFkIGlzIHVucmVzcG9uc2l2ZQogICAgIC8vIGFuZCBBdXhpbGlhcnlQcm9j
ZXNzOjpkaWRDbG9zZSgpIGRvZXMgbm90IGdldCBjYWxsZWQuCiAgICAgY29ubmVjdGlvbi0+c2V0
RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhjYWxsRXhpdCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI2NDEyOSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
NSw2ICs1MTUsMTAgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCkgeyByZXR1cm4gbV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+aXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCkgOiB0cnVlOyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGhh
bmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgUmVmUHRyPFdl
YkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCiAgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCShyZXZpc2lvbiAyNjQxMjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbXBvcnQgIldlYlBhZ2UuaCIKIAogI2ltcG9ydCAiSW5zZXJ0VGV4dE9wdGlv
bnMuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW1wb3J0
ICJMb2FkUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgogI2ltcG9ydCAiV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCIKQEAgLTU2LDEyICs1NywyMiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oPgogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01v
YmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBh
cmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisgICAgTGF1bmNo
U2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLndhaXRGb3JEYXRhYmFzZVVwZGF0
ZSg1X3MpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlw
ZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZT
VFIoInRleHQvaHRtbCIpLCAwKSk7CisgICAgQVNTRVJUKCFTdHJpbmcodXRpLmdldCgpKS5pc0Vt
cHR5KCkpOworI2VuZGlmCisKICAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0ID0gcGFyYW1ldGVy
cy5kYXRhRGV0ZWN0aW9uQ29udGV4dDsKIAogICAgIGlmIChwYXJhbWV0ZXJzLm5lSGVscGVyRXh0
ZW5zaW9uSGFuZGxlKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJDb3JlL1hQQ0VuZHBvaW50Q2xpZW50Lmg+
CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi90aHJlYWRzL0Jp
bmFyeVNlbWFwaG9yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6WFBDRW5kcG9pbnRDbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciYgc2lu
Z2xldG9uKCk7CisKKyAgICBib29sIHdhaXRGb3JEYXRhYmFzZVVwZGF0ZShTZWNvbmRzKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRDb25uZWN0KCkgb3ZlcnJpZGU7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBt
X2hhc1JlY2VpdmVkTGF1bmNoU2VydmljZXNEYXRhYmFzZSB7IGZhbHNlIH07CisgICAgQmluYXJ5
U2VtYXBob3JlIG1fc2VtYXBob3JlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCIKKworI2ltcG9ydCAiTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCA8V2ViQ29yZS9YUENFbmRwb2ludC5oPgor
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL0VudGl0bGVtZW50cy5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+
CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ciYgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyPiBtYW5hZ2Vy
OworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3QgbWVzc2FnZSkKK3sKKyAgICBT
dHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1lc3NhZ2UsIFhQ
Q0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWVzc2FnZU5hbWUpIHsKKyAgICAgICAgYXV0byBkYXRhYmFzZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF92YWx1ZShtZXNzYWdlLCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5KTsKKyAgICAgICAgaWYgKGRhdGFiYXNlKSB7CisgICAg
ICAgICAgICBhdXRvIGNvbnRleHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29u
dGV4dCIpIHNoYXJlZERhdGFiYXNlQ29udGV4dF07CisgICAgICAgICAgICBpZiAoIVtjb250ZXh0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktp
dDopXSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBbY29udGV4dCBvYnNl
cnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0OmRhdGFiYXNlXTsKKyAgICAgICAgfQorICAgICAgICBt
X3NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICAgICAgbV9oYXNSZWNlaXZlZExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2UgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlcjo6ZGlkQ29ubmVjdCgpCit7CisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVj
dCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19k
aWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3Nh
Z2VOYW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNSZXF1ZXN0
TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lKTsKKworICAgIHhwY19jb25u
ZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uKCkuZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOwor
fQorCitib29sIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjp3YWl0Rm9yRGF0YWJhc2VV
cGRhdGUoU2Vjb25kcyB0aW1lb3V0KQoreworICAgIGlmIChtX2hhc1JlY2VpdmVkTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fc2VtYXBo
b3JlLndhaXRGb3IodGltZW91dCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjY0MTI5KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc0NvY29hLmgiCiAKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJh
c2VNYW5hZ2VyLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRz
LmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKICNpbXBvcnQgIkxv
Z0luaXRpYWxpemF0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC02OSw2ICs3MSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U3lzdGVtQmF0dGVyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvWFBDRW5kcG9pbnQuaD4KICNpbXBvcnQgPGFsZ29yaXRobT4KICNpbXBvcnQg
PGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTE2MSwy
NSArMTY0LDMyIEBAIHN0YXRpYyBpZCBOU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUZvY3UKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mo
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3ZvaWQgV2ViUHJvY2Vz
czo6aGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcygpIGNvbnN0CiB7Ci0gICAgLy8gTWFwIExhdW5j
aCBTZXJ2aWNlcyBkYXRhYmFzZS4gVGhpcyBzaG91bGQgYmUgZG9uZSBhcyBlYXJseSBhcyBwb3Nz
aWJsZSwgYXMgdGhlIG1hcHBpbmcgd2lsbCBmYWlsCi0gICAgLy8gaWYgJ2NvbS5hcHBsZS5sc2Qu
bWFwZGInIGlzIGJlaW5nIGFjY2Vzc2VkIGJlZm9yZSB0aGlzLgotICAgIGlmIChwYXJhbWV0ZXJz
Lm1hcERCRXh0ZW5zaW9uSGFuZGxlKSB7Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoKnBhcmFtZXRlcnMubWFwREJFeHRlbnNpb25IYW5k
bGUpKTsKLSAgICAgICAgYm9vbCBvayA9IGV4dGVuc2lvbi0+Y29uc3VtZSgpOwotICAgICAgICBB
U1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0gICAgICAgIC8vIFBlcmZvcm0gQVBJIGNhbGxzIHdoaWNo
IHdpbGwgY29tbXVuaWNhdGUgd2l0aCB0aGUgZGF0YWJhc2UgbWFwcGluZyBzZXJ2aWNlLCBhbmQg
bWFwIHRoZSBkYXRhYmFzZS4KLSAgICAgICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0
ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRl
eHQvaHRtbCIpLCAwKSk7CisgICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgW1tvYmpjX2dldENsYXNzKCJfTFNEUmVhZFNlcnZpY2Ui
KSBYUENDb25uZWN0aW9uVG9TZXJ2aWNlXSBpbnZhbGlkYXRlXTsKKyAgICBhdXRvIGNvbm5lY3Rp
b24gPSBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCk7CiAKLSAgICAg
ICAgb2sgPSBleHRlbnNpb24tPnJldm9rZSgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBv
ayk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNw
YXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDAp
KTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihjb25uZWN0aW9uLCBeKHhw
Y19vYmplY3RfdCBldmVudCkgeworICAgICAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSAhPSBY
UENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEFTU0VS
VChTdHJpbmcodXRpLmdldCgpKSA9PSBTdHJpbmcoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJy
ZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwi
KSwgMCkpLmdldCgpKSk7Ci0gICAgfQorICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNf
ZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVL
ZXkpOworICAgICAgICBpZiAobWVzc2FnZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuOwogCisgICAgICAgIGlmIChtZXNzYWdlTmFtZSA9PSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
WFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdl
TmFtZSkgeworICAgICAgICAgICAgYXV0byBlbmRwb2ludCA9IHhwY19kaWN0aW9uYXJ5X2dldF92
YWx1ZShldmVudCwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNo
U2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtleSk7CisgICAgICAgICAgICBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0RW5kcG9pbnQoZW5kcG9pbnQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorewogI2lmICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3Nh
cnkocGFyYW1ldGVycy53ZWJDb3JlTG9nZ2luZ0NoYW5uZWxzKTsKICAgICBXZWJLaXQ6OmluaXRp
YWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMud2ViS2l0TG9nZ2luZ0NoYW5u
ZWxzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403836</attachid>
            <date>2020-07-08 19:30:23 -0700</date>
            <delta_ts>2020-07-08 22:24:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200708193022.patch</filename>
            <type>text/plain</type>
            <size>59174</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQxNDMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgQWRk
ZWQgSEFWRSBkZWZpbmUgZm9yIGRldGVybWluaW5nIGlmIHRoZSBjbGFzcyBMU0RhdGFiYXNlQ29u
dGV4dCBpcyBwcmVzZW50LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIw
LTA3LTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIE1ha2UgaXQgcG9zc2libGUgdG8gZXN0YWJsaXNoIGRpcmVjdCBYUEMgY29ubmVjdGlv
bnMgYmV0d2VlbiBXZWJLaXQgcHJvY2Vzc2VzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUhhdmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2
aXNpb24gMjY0MTQyKQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3MiwzICs2NzIsMTAgQEAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwCiAjZGVmaW5lIEhBVkVfQVBQX0FDQ0VO
VF9DT0xPUlMgMQogI2VuZGlmCisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTYwMCkgXAorICAgIHx8ICgoUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDE0MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDcwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQUExF
VFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQorI2RlZmluZSBI
QVZFX0xTREFUQUJBU0VDT05URVhUIDEKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMDggIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXBkYXRlIExhdW5jaCBTZXJ2aWNl
cyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhlIE5ldHdvcmsgcHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
Nzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBEZWNs
YXJlIGludGVyZmFjZSBmb3Igb2JzZXJ2aW5nIGFuZCBjb25zdW1pbmcgdGhlIExhdW5jaCBTZXJ2
aWNlcyBkYXRhYmFzZS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNT
UEkuaDoKKwogMjAyMC0wNy0wOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQxMzIgYW5kIHIyNjQxMzku
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQ
SS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5j
aFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2NDE0MikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE2
ICsyNSwxMCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+
CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBv
cnQgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+Ci0jZWxpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KLSNl
bGlmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3Jl
U2VydmljZXNQcml2Lmg+Ci0jZW5kaWYKLQogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiAKICNpZiBIQVZFKEFQUF9MSU5LUykKQEAgLTgzLDE0ICs3NywyMSBAQCBlbnVtIExTU2Vz
c2lvbklEIHsKIH07CiAjZW5kaWYKIAotI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotCi1AaW50ZXJmYWNlIF9MU0RTZXJ2aWNlIDogTlNPYmplY3QgPE5TWFBDTGlzdGVuZXJEZWxl
Z2F0ZT4KLSsgKE5TWFBDQ29ubmVjdGlvbiAqKVhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2U7CisjaWYg
SEFWRShMU0RBVEFCQVNFQ09OVEVYVCkKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgOiBO
U09iamVjdAorQHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0ICpz
aGFyZWREYXRhYmFzZUNvbnRleHQ7CiBAZW5kCisjZW5kaWYKIAotQGludGVyZmFjZSBfTFNEUmVh
ZFNlcnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorCisjaWYgSEFWRShMU0RBVEFCQVNFQ09OVEVYVCkKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNv
bnRleHQgKFdlYktpdENoYW5nZVRyYWNraW5nKQorLSAoaWQgPE5TT2JqZWN0PilhZGREYXRhYmFz
ZUNoYW5nZU9ic2VydmVyNFdlYktpdDoodm9pZCAoXikoeHBjX29iamVjdF90IGNoYW5nZSkpb2Jz
ZXJ2ZXI7CistICh2b2lkKXJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OihpZCA8
TlNPYmplY3Q+KXRva2VuOworLSAodm9pZClvYnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0Oih4
cGNfb2JqZWN0X3QpY2hhbmdlOwogQGVuZAorI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDIwLTA3LTA4ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVu
Y2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBO
ZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAg
ICAgICAgVG8gYmUgYWJsZSB0byBkZW55IG1hY2ggbG9va3VwIGFjY2VzcyB0byB0aGUgTGF1bmNo
IFNlcnZpY2VzIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZSBpbiB0aGUgV2ViQ29udGVudCBwcm9j
ZXNzLCB0aGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUKKyAgICAgICAgc2VudCBmcm9tIHRoZSBOZXR3
b3JraW5nIHByb2Nlc3MgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcywgcmVwcmVzZW50ZWQgYnkg
YW4geHBjIG9iamVjdC4gVGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBpcyBjaG9zZW4gaW5zdGVhZCBv
ZiB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcywgc2luY2UgV2ViS2l0IGlzIGNvbnRyb2xsaW5nIHRo
ZSBzYW5kYm94IG9mIHRoZSBOZXR3b3JraW5nIHByb2Nlc3MuIFRoZXJlIGlzIGFscmVhZHkgYSBk
aXJlY3QgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBOZXR3b3JraW5nCisgICAgICAgIHByb2Nlc3Mg
YW5kIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIGJ1dCB0aGlzIGlzIGEgQ29yZUlQQyBjb25uZWN0
aW9uLiBTaW5jZSB0aGUgZGF0YWJhc2UgaXMgcmVwcmVzZW50ZWQgYnkgYW4geHBjIG9iamVjdCwg
YW4geHBjIGNvbm5lY3Rpb24KKyAgICAgICAgaXMgcmVxdWllcmVkIHRvIHRyYW5zZmVyIHRoZSBk
YXRhYmFzZS4gVGhpcyBwYXRjaCBjcmVhdGVzIGEgZGlyZWN0IHhwYyBjb25uZWN0aW9uIGJldHdl
ZW4gdGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBhbmQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcywKKyAg
ICAgICAgYnkgY3JlYXRpbmcgYW4geHBjIGVuZHBvaW50IGluIHRoZSBOZXR3b3JraW5nIHByb2Nl
c3MsIHNlbmRpbmcgdGhpcyB0byB0aGUgVUkgcHJvY2VzcyBvdmVyIHRoZSBib290c3RyYXAgeHBj
IGNvbm5lY3Rpb24sIGFuZCB0aGVuIHByb3ZpZGluZworICAgICAgICBlYWNoIFdlYkNvbnRlbnQg
cHJvY2VzcyB3aXRoIHRoaXMgZW5kcG9pbnQgYnkgc2VuZGluZyBpdCBvdmVyIHRoZSBib290c3Ry
YXAgeHBjIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgVUkgcHJvY2VzcyBhbmQgdGhlIFdlYkNvbnRl
bnQgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBlbmRwb2ludCBoYXMgdG8gYmUgc2VudCB2aWEgdGhl
IHhwYyBjb25uZWN0aW9ucyB0byB0aGUgVUkgcHJvY2Vzcywgc2luY2UgdGhlIGFscmVhZHkgZXhp
c3RpbmcgZGlyZWN0IGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgTmV0d29ya2luZworICAgICAgICBw
cm9jZXNzIGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGlzIGEgbG93ZXIgbGV2ZWwgQ29yZUlQ
QyBjb25uZWN0aW9uLCB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zZmVycmluZyB4cGMgb2Jq
ZWN0cyBsaWtlIHRoZSB4cGMgZW5kcG9pbnQuCisgICAgICAgIFdoZW4gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcyByZWNlaXZlcyB0aGUgZW5kcG9pbnQsIGl0IHdpbGwgY3JlYXRlIGFuIHhwYyBjb25u
ZWN0aW9uIGZyb20gdGhlIGVuZHBvaW50LCB3aGljaCB3aWxsIGNyZWF0ZSBhIGRpcmVjdCBjb25u
ZWN0aW9uCisgICAgICAgIHdpdGggdGhlIE5ldHdvcmtpbmcgcHJvY2Vzcy4gQSBtZXNzYWdlIGlz
IHRoZW4gc2VudCBvdmVyIHRoZSBjb25uZWN0aW9uIHRvIHJlcXVlc3QgdGhlIGRhdGFiYXNlIHhw
YyBvYmplY3QuIFdoZW4gdGhlIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICByZWNlaXZlcyB0
aGlzIG1lc3NhZ2UsIGl0IGNoZWNrcyB0aGUgZW50aXRsZW1lbnQgb2YgdGhlIHJlbW90ZSBlbmQg
dG8gbWFrZSBzdXJlIGl0IGlzIGNvbW11bmljYXRpbmcgd2l0aCBhIFdlYkNvbnRlbnQgcHJvY2Vz
cywgYW5kIHRoZW4gc2VuZHMKKyAgICAgICAgdGhlIGRhdGFiYXNlIGlmIHRoZSBlbnRpdGxlbWVu
dCBjaGVjayBzdWNjZWVkcy4gV2hlbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHJlY2VpdmVzIHRo
aXMgbWVzc2FnZSwgaXQgcGVyZm9ybXMgYW4gZW50aXRsZW1lbnQgY2hlY2sgYXMgd2VsbCwKKyAg
ICAgICAgYW5kIGlmIHN1Y2Nlc3NmdWwsIHRoZSBkYXRhYmFzZSBvYmplY3QgaXMgY29uc3VtZWQu
IENvbnN1bWluZyB0aGlzIGRhdGFiYXNlIG9iamVjdCwgd2lsbCBtYWtlIHN1cmUgVVRJIHRvIE1J
TUUgdHlwZSBtYXBwaW5nIGlzIHdvcmtpbmcKKyAgICAgICAgY29ycmVjdGx5IGluIHRoZSBXZWJD
b250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgRm9yIHRoZSBVSSBwcm9jZXNzIHRvIGJlIGFibGUg
dG8gcGljayB1cCB4cGMgbWVzc2FnZXMgb24gdGhlIGJvb3RzdHJhcCBjb25uZWN0aW9uLCBhIG5l
dyB2aXJ0dWFsIG1ldGhvZCwgaGFuZGxlWFBDRXZlbnQsIGlzIGFkZGVkIHRvIHRoZQorICAgICAg
ICBQcm9jZXNzTGF1bmNoZXIgQ2xpZW50IGNsYXNzLiBUaGlzIHdheSwgYSBQcm9jZXNzTGF1bmNo
ZXIgY2xpZW50IHdpbGwgYmUgYWJsZSB0byBwaWNrIHVwIHhwYyBtZXNzYWdlcyBmcm9tIHRoZSB4
cGMgYm9vdHN0cmFwIGNvbm5lY3Rpb24uCisgICAgICAgIFByZXZpb3VzbHkgdGhlIGV2ZW50IGhh
bmRsZXIgZm9yIHRoZSBib290c3RyYXAgY29ubmVjdGlvbiBpbiB0aGUgVUkgcHJvY2VzcyB3b3Vs
ZCBoYW5kbGUgb25seSB4cGMgZXJyb3IgbWVzc2FnZXMuIEl0IGhhcyBub3cgYmVlbiBleHBhbmRl
ZAorICAgICAgICB0byBoYW5kbGUgbm9ybWFsIG1lc3NhZ2VzLCB3aGljaCBhcmUgYmVpbmcgZm9y
d2FyZGVkIHRvIHRoZSBQcm9jZXNzTGF1bmNoZXIgY2xpZW50LiBJbiB0aGlzIGNhc2UgdGhlIGNs
aWVudCBpcyB0aGUgTmV0d29yayBwcm9jZXNzIHByb3h5LAorICAgICAgICB3aGljaCB3aWxsIGNo
ZWNrIHRoZSBtZXNzYWdlIHJlY2VpdmVkLCBhbmQgaWYgaXQgdHVybnMgb3V0IHRvIGJlIGEgbWVz
c2FnZSBjb250YWluaW5nIGFuIHhwYyBlbmRwb2ludCwgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBmb3J3
YXJkZWQgdG8KKyAgICAgICAgYWxsIFdlYiBwcm9jZXNzZXMuIFRoZSBQcm9jZXNzTGF1bmNoZXIg
Y2xpZW50IGNhbiBiZSBleHBhbmRlZCB0byBoYW5kbGUgYW55IHhwYyBtZXNzYWdlLCBidXQgcmln
aHQgbm90IHRoZSBOZXR3b3JrIHByb2Nlc3MgcHJveHkgb25seQorICAgICAgICBoYW5kbGVzIHRo
ZSB4cGMgZW5kcG9pbnQgbWVzc2FnZS4gVGhlIGhhbmRsZVhQQ0V2ZW50IHZpcnR1YWwgbWV0aG9k
IHJldHVybiBhIFJlZlB0ciB0byBhbiBYUENFdmVudEhhbmRsZXIsIHdoaWNoIGlzIGNhcHR1cmVk
IGluIHRoZSBldmVudAorICAgICAgICBoYW5kbGVyIG9mIHRoZSBib290c3RyYXAgeHBjIGNvbm5l
Y3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGVyZSBhbHJlYWR5IGV4aXN0
IHRlc3RzIGZvciB0aGlzLiBVVEkgdG8gTUlNRSB0eXBlIG1hcHBpbmcgaXMgYmVpbmcgdXNlZCBp
biBXZWJLaXQgYW5kIHVuZGVybHlpbmcgZnJhbWV3b3JrLCBhbmQgbWFueQorICAgICAgICB0ZXN0
cyB3b3VsZCBmYWlsIGlmIHRoaXMgbWFwcGluZyB3YXMgbm90IHdvcmtpbmcuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFkZGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp+TGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE1l
c3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjp4cGNFbmRwb2ludE5hbWVLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBS
ZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQu
c2I6CisgICAgICAgICogU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjp4cGNFbmRwb2ludE1lc3NhZ2UgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dl
YlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OkNsaWVudDo6eHBjRXZlbnRIYW5kbGVyIGNv
bnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6eHBjRXZlbnRIYW5kbGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRI
YW5kbGVyOjpoYW5kbGVYUENFdmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6WFBDRXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRGlkUmVj
ZWl2ZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRv
bik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpoYW5k
bGVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXI6OndhaXRGb3JEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmhhbmRs
ZVhQQ0VuZHBvaW50TWVzc2FnZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMC0wNy0wOCAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyNjQxMzIgYW5kIHIyNjQxMzkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShy
ZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQxNSw2ICs0MTUsOCBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJ
bnNwZWN0b3JQcm94CiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tCiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmlldy5t
bQogCitVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KKwogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0RhdGVUaW1lSW5wdXRDb250cm9sLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjY0MTQyKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk3LDYgKzk3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVDb2RlcnMuaCIKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNlbmRpZgogCkBAIC0xNjMs
NiArMTY0LDkgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeQogI2lm
IEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAgICAgYWRkU3VwcGxlbWVu
dDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBhZGRTdXBwbGVtZW50PExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcj4o
KTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9Q
Uk9UT0NPTF9NQU5BR0VSKQogICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6bmV0d29y
a1Byb2Nlc3NDcmVhdGVkKCp0aGlzKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1l
bnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1hQQ0VuZHBvaW50Lmg+CisjaW5jbHVkZSA8d3RmL09T
T2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyIDogcHVibGljIFdl
YkNvcmU6OlhQQ0VuZHBvaW50LCBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXIoTmV0d29ya1Byb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVt
ZW50TmFtZSgpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoT1NPYmplY3RQ
dHI8eHBjX2Nvbm5lY3Rpb25fdD4pOworCisgICAgLy8gWFBDRW5kcG9pbnQKKyAgICBjb25zdCBj
aGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNv
bnN0IGNoYXIqIHhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
aGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSBvdmVycmlkZTsKKwor
ICAgIC8vIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudAorICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uKikgZmluYWw7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fb2Jz
ZXJ2ZXI7CisgICAgVmVjdG9yPE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+PiBtX2Nvbm5l
Y3Rpb25zOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjaW1wb3J0
IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisj
aWYgSEFWRShMU0RBVEFCQVNFQ09OVEVYVCkKK3N0YXRpYyBMU0RhdGFiYXNlQ29udGV4dCAqZGF0
YWJhc2VDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7CisgICAg
c3RhdGljIExTRGF0YWJhc2VDb250ZXh0ICpjb250ZXh0ID0gbnVsbHB0cjsKKyAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlLCBeeworICAgICAgICBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAi
TFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgIH0pOworICAg
IHJldHVybiBjb250ZXh0OworfQorI2VuZGlmCisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKE5ldHdvcmtQcm9jZXNzJikKK3sK
KyNpZiBIQVZFKExTREFUQUJBU0VDT05URVhUKQorICAgIGlmICghW2RhdGFiYXNlQ29udGV4dCgp
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRX
ZWJLaXQ6KV0pCisgICAgICAgIHJldHVybjsKKworICAgIG1fb2JzZXJ2ZXIgPSBbZGF0YWJhc2VD
b250ZXh0KCkgYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6Xih4cGNfb2JqZWN0X3Qg
Y2hhbmdlKSB7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rp
b25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICAgICAgeHBjX2RpY3Rpb25h
cnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVL
ZXksIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92
YWx1ZShtZXNzYWdlLmdldCgpLCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4
cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5LCBjaGFuZ2UpOworCisgICAgICAgIGZvciAoYXV0
byYgY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpCisgICAgICAgICAgICB4cGNfY29ubmVjdGlv
bl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisgICAgfV07
CisjZW5kaWYKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXJTdXBwbGVtZW50IjsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IGNvbm5l
Y3Rpb24pCit7CisgICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbik7CisKKyNpZiBI
QVZFKExTREFUQUJBU0VDT05URVhUKQorICAgIGlmICghW2RhdGFiYXNlQ29udGV4dCgpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6
KV0pIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFy
eV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwg
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgUmV0YWluUHRyPGlkPiBvYnNlcnZlciA9IFtkYXRhYmFzZUNvbnRleHQoKSBh
ZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpeKHhwY19vYmplY3RfdCBjaGFuZ2UpIHsK
KyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVh
dGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3Ry
aW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNo
U2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1lc3Nh
Z2UuZ2V0KCksIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VLZXksIGNoYW5nZSk7CisKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2Vu
ZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgIH1dOworCisg
ICAgW2RhdGFiYXNlQ29udGV4dCgpIHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0
Om9ic2VydmVyLmdldCgpXTsKKyNlbHNlCisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVj
dCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19k
aWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3Nh
Z2VOYW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgIHhwY19jb25uZWN0aW9uX3Nl
bmRfbWVzc2FnZShjb25uZWN0aW9uLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKKyNlbmRpZgorfQor
CitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIoKQoreworI2lmIEhBVkUoTFNEQVRBQkFTRUNPTlRFWFQpCisgICAgaWYgKCFbZGF0
YWJhc2VDb250ZXh0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVEYXRhYmFz
ZUNoYW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RhdGFi
YXNlQ29udGV4dCgpIHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Om1fb2JzZXJ2
ZXIuZ2V0KCldOworI2VuZGlmCit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZUtleSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHhwY01lc3NhZ2VOYW1lS2V5OworfQorCitjb25zdCBjaGFyKiBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TWVzc2FnZU5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZTsKK30KKworY29uc3QgY2hhciogTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE5hbWVLZXkoKSBjb25zdAorewor
ICAgIHJldHVybiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5OworfQorCit2b2lkIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0
aW9uLCB4cGNfb2JqZWN0X3QgZXZlbnQpCit7CisgICAgaWYgKHhwY19nZXRfdHlwZShldmVudCkg
PT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgaWYgKGV2ZW50ICE9IFhQQ19FUlJPUl9DT05O
RUNUSU9OX0lOVkFMSUQgJiYgZXZlbnQgIT0gWFBDX0VSUk9SX1RFUk1JTkFUSU9OX0lNTUlORU5U
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9jb25uZWN0aW9ucy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKG1fY29ubmVjdGlv
bnNbaV0uZ2V0KCkgPT0gY29ubmVjdGlvbikgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlv
bnMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHhwY19nZXRfdHlwZShldmVu
dCkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUg
PSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCB4cGNNZXNzYWdlTmFtZUtleSk7Cisg
ICAgICAgIGlmIChtZXNzYWdlTmFtZSAhPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3Rh
bnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGFydE9ic2VydmluZyhjb25uZWN0aW9uKTsK
KyAgICB9Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjppbml0aWFs
aXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgc2VuZEVu
ZHBvaW50VG9Db25uZWN0aW9uKGNvbm5lY3Rpb24tPnhwY0Nvbm5lY3Rpb24oKSk7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFw
cGxlLldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVz
b3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
CShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJv
ZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpA
QCAtNTg4LDcgKzU4OCw3IEBACiAoYWxsb3cgaXBjLXBvc2l4LXNobS1yZWFkKgogICAgICAgIChp
cGMtcG9zaXgtbmFtZS1wcmVmaXggImFwcGxlLmNmcHJlZnMuIikpCiAgCi0oYWxsb3cgbWFjaC1s
b29rdXAKKyhkZW55IG1hY2gtbG9va3VwCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUubHNk
Lm1hcGRiIikpCiAKIDs7IDxyZGFyOi8vcHJvYmxlbS8xMjQxMzk0Mj4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gJKHJldmlzaW9uIDI2NDE0
MikKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkod29y
a2luZyBjb3B5KQpAQCAtMTUsNiArMTUsNyBAQCBmdW5jdGlvbiBtYWNfcHJvY2Vzc193ZWJjb250
ZW50X2VudGl0bGVtCiAKICAgICBpZiBbWyAiJHtXS19VU0VfUkVTVFJJQ1RFRF9FTlRJVExFTUVO
VFN9IiA9PSBZRVMgXV0KICAgICB0aGVuCisgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29sIFlFUwogICAgICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJvb3RsZXNzLnN0b3JhZ2UuV2ViS2l0V2ViQ29udGVudFNh
bmRib3ggYm9vbCBZRVMKICAgICBmaQogCkBAIC01MSw2ICs1Miw3IEBAIGZ1bmN0aW9uIG1hY19w
cm9jZXNzX25ldHdvcmtfZW50aXRsZW1lbnQKICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1ieS1hdWRpdC10b2tlbjowIHN0cmlu
ZyBrVENDU2VydmljZVdlYktpdEludGVsbGlnZW50VHJhY2tpbmdQcmV2ZW50aW9uCiAgICAgICAg
IGZpCiAKKyAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51
c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUucm9vdGxlc3Muc3RvcmFnZS5XZWJLaXROZXR3b3JraW5nU2FuZGJveCBib29sIFlFUwogICAg
IGZpCiB9CkBAIC0xNDQsNiArMTQ2LDcgQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX3dl
YmNvbnRlbnRfZQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0
eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUu
cHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9vbCBZRVMKICAg
ICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLnByb3h5LWFw
cGxpY2F0aW9uIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRl
LndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNv
bS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6ZHluYW1pYy1jb2Rlc2lnbmluZyBib29sIFlFUwogCkBAIC0xODQsNiArMTg3
LDcgQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX25ldHdvcmtfZW50aQogICAgIHBsaXN0
YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5kbWQucG9saWN5IGJvb2wgWUVTCiAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLm1lbW9yeXN0YXR1cyBib29sIFlFUwogICAg
IHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5uZXR3b3JrLnNvY2tldC1kZWxlZ2F0
ZSBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQu
dXNlLXhwYy1lbmRwb2ludCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUu
cnVubmluZ2JvYXJkLmFzc2VydGlvbnMud2Via2l0IGJvb2wgWUVTCiAKICAgICBwbGlzdGJ1ZGR5
IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUudGNjLm1hbmFnZXIuY2hlY2stYnktYXVkaXQtdG9rZW4g
YXJyYXkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzIHsKKworY29uc3RleHByIGF1dG8geHBjVXBkYXRlTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lID0gInVwZGF0ZS1sYXVuY2gtc2VydmljZXMt
ZGF0YWJhc2UtbWVzc2FnZSI7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlS2V5ID0gImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSI7Citjb25zdGV4cHIgYXV0byB4cGNS
ZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lID0gInJlcXVlc3Qt
bGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLXVwZGF0ZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRv
IHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXkgPSAieHBjLWVuZHBv
aW50LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSI7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSA9ICJ4cGMtZW5kcG9pbnQtbGF1
bmNoLXNlcnZpY2VzLWRhdGFiYXNlLW1lc3NhZ2UiOworfSAvLyBuYW1lc3BhY2UgTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHJl
dmlzaW9uIDI2NDE0MikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRlV0aWxpdGllc1NQSS5oPgorI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENT
UEkuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2
aXNpb24gMjY0MTQyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDcgKzM4OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE5l
dHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJl
TmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aFdlYnNpdGVEYXRhU3RvcmUgPSBu
dWxscHRyKTsKLSAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0
dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KKyAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBu
ZXR3b3JrUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0K
ICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CiAK
ICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxh
eWVkUmVwbHkmJik7CkBAIC01NDEsNiArNTQxLDExIEBAIHB1YmxpYzoKICAgICBpbnQzMl90IHVz
ZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlcklkOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4geHBjRW5kcG9pbnRNZXNzYWdl
KCkgY29uc3Q7CisgICAgdm9pZCBzZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJv
Y2VzcyhPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGVuZHBvaW50TWVzc2FnZSk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC04MjUsNiAr
ODMwLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNl
ckludGVyYWN0aW9uOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPU09iamVj
dFB0cjx4cGNfb2JqZWN0X3Q+IG1fZW5kcG9pbnRNZXNzYWdlOworI2VuZGlmCiB9OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTMsNiArOTUzLDEyIEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gZW5kcG9pbnRNZXNzYWdl
ID0gcHJvY2Vzc1Bvb2woKS54cGNFbmRwb2ludE1lc3NhZ2UoKTsKKyAgICBpZiAoZW5kcG9pbnRN
ZXNzYWdlKQorICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbigp
LT54cGNDb25uZWN0aW9uKCksIGVuZHBvaW50TWVzc2FnZS5nZXQoKSk7CisjZW5kaWYKKwogICAg
IFJFTEVBU0VfQVNTRVJUKCFtX3dlYkNvbm5lY3Rpb24pOwogICAgIG1fd2ViQ29ubmVjdGlvbiA9
IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSh0aGlzKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MzQsNCArOTM0LDIzIEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVySGlnaER5bmFtaWMKIH0KICNlbmRpZgogCitPU09i
amVjdFB0cjx4cGNfb2JqZWN0X3Q+IFdlYlByb2Nlc3NQb29sOjp4cGNFbmRwb2ludE1lc3NhZ2Uo
KSBjb25zdAoreworICAgIHJldHVybiBtX2VuZHBvaW50TWVzc2FnZTsKK30KKwordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoT1NP
YmplY3RQdHI8eHBjX29iamVjdF90PiBlbmRwb2ludE1lc3NhZ2UpCit7CisgICAgbV9lbmRwb2lu
dE1lc3NhZ2UgPSBlbmRwb2ludE1lc3NhZ2U7CisKKyAgICBmb3IgKGF1dG8gcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLT5zdGF0ZSgpICE9IEF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKCFwcm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgYXV0byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGNDb25uZWN0
aW9uKCk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBl
bmRwb2ludE1lc3NhZ2UuZ2V0KCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRs
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENF
dmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxYUENFdmVudEhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5YUENFdmVudEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVYUENF
dmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0ID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShyZXZpc2lv
biAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRlIDx3dGYv
d2luL1dpbjMySGFuZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1
ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCkBAIC01Nyw2ICs2MSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNo
ZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxYUENFdmVu
dEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNl
bmRpZgogICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDI2NDE0MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIzOCwxOCArMjM4LDI4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KCkKICAgICAgICAgcHJvY2Vzc0xhdW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzKDAs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKICAgICB9OwogCi0gICAgYXV0byBlcnJv
ckhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCld
ICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBl
dmVudF0gewotICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7Ci0gICAgICAgIH0p
OworICAgIGF1dG8gZXZlbnRIYW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVy
cm9ySGFuZGxlckltcGwpLCBldmVudEhhbmRsZXIgPSBtX2NsaWVudC0+eHBjRXZlbnRIYW5kbGVy
KCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgeworCisgICAgICAgIGlmICghZXZlbnQg
fHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJv
ckhhbmRsZXJJbXBsKSwgZXZlbnQgPSBPU09iamVjdFB0cihldmVudCldIHsKKyAgICAgICAgICAg
ICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV2ZW50SGFuZGxlcikg
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtldmVudEhhbmRsZXIgPSBl
dmVudEhhbmRsZXIsIGV2ZW50ID0gT1NPYmplY3RQdHIoZXZlbnQpXSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRIYW5kbGVyLT5oYW5kbGVYUENFdmVudChldmVudC5nZXQoKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQogICAgIH07CiAKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRf
aGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGVycm9ySGFuZGxlcik7CisgICAgeHBjX2Nv
bm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBldmVudEhh
bmRsZXIpOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlvbi5nZXQo
KSk7CiAKICAgICBpZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNz
TGF1bmNoRmFpbEZvclRlc3RpbmcpKSB7Ci0gICAgICAgIGVycm9ySGFuZGxlcihudWxscHRyKTsK
KyAgICAgICAgZXZlbnRIYW5kbGVyKG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjY0MTQyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRIYW5k
bGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKIH0KQEAgLTI5Nyw2ICszMDEsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUHJvY2Vzc0xhdW5j
aGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIq
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0
IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYp
OwogCkBAIC0zMjcsNiArMzM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPj4g
d2ViUHJvY2Vzc0Fzc2VydGlvbnM7CiAgICAgfTsKICAgICBPcHRpb25hbDxVcGxvYWRBY3Rpdml0
eT4gbV91cGxvYWRBY3Rpdml0eTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNsYXNzIFhQ
Q0V2ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7CisgICAgcHVi
bGljOgorICAgICAgICBYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYp
OworCisgICAgICAgIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBjb25zdCBvdmVy
cmlkZTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94
eT4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKworI2ltcG9ydCAiTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Bv
b2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvWFBDRW5kcG9pbnQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8WFBDRXZlbnRIYW5kbGVy
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyKCp0
aGlzKSk7Cit9CisKK2Jvb2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpo
YW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QgZXZlbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX25l
dHdvcmtQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWV2ZW50IHx8
IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKG1lc3Nh
Z2VOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lKQorICAgICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQ
cm9jZXNzKGV2ZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitOZXR3b3JrUHJvY2Vzc1By
b3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobWFrZVdlYWtQ
dHIobmV0d29ya1Byb2Nlc3MpKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDE0MikKKysrIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTE2ODQsOCArMTY4NCwxMSBAQAogCQlDMTFBOUVDQzIxNDAzNUY4MDBDRkIyMEEgLyog
V2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMTFBOUVDQjIxNDAzNUY4MDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BV
Q2xpZW50LmggKi87IH07CiAJCUMxMUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNw
bGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFF
MTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNDkzODA5MjIzNDcxMDQwMDBDRDcw
NyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAyMjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVl
Y2hTeW50aGVzaXNDbGllbnQuaCAqLzsgfTsKKwkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8q
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovOyB9OwogCQlDMTVDQkIzNjIzRjM3NzcxMDAz
MDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyogUHJlZmVyZW5j
ZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNUNCQjMzMjNG
MzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi87IH07CisJCUMxNjYzRTVC
MjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY2M0U1QTI0
QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICov
OyB9OworCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlci5tbSAqLzsgfTsKIAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTgxNzM2
MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsKIAkJQzFFMTIzQkEyMEEx
MTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29u
dGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250
cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAq
LzsgfTsKQEAgLTUwMTgsMTMgKzUwMjEsMjAgQEAKIAkJQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3
IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hT
eW50aGVzaXNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDMy
MjM0MURGNzAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQz
N0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyog
UHJlZmVyZW5jZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlZmVyZW5jZU9i
c2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1QTI0QUVBNzQy
MDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBYUENFdmVudEhh
bmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y2MjRBQTY0
MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzVFMjA1ODM5RjYwMERGREE2NSAvKiBEcmF3aW5n
QXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNw
bGF5TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGluay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBERkRBNjUgLyogRGlzcGxheUxpbmsuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTbGVlcERp
c2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUUy
NDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4
dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGQ29udGV4dE1lbnUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0Qz
IC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJF
ZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgcGF0
aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02Mzg0LDYgKzYzOTQsNyBAQAogCQkJCTJEN0FBRkQyMThDODY0MDYwMEE3
QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCAqLywKIAkJCQkyREM2RDlDMTE4QzQ0
QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCAqLywKIAkJ
CQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVn
aXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFu
ZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC03NDgxLDYgKzc0OTIsNyBAQAogCQkJCUM1NUY5MTZEMUM1OTVFNDQwMDI5RTky
RCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tICovLAogCQkJCUNFNTUwRTEzMjI4Mzc0NDQwMEQy
ODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5jcHAgKi8sCiAJCQkJQ0U1NTBFMTIyMjgzNzNDODAw
RDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi8sCisJCQkJQzE2NjNFNUEyNEFFQTc0MjAw
QzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCAqLywKIAkJCQky
RDEwODc2MjFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSAqLywKIAkJ
CQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmgg
Ki8sCiAJCQkJQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNl
cnZlci5tbSAqLywKQEAgLTc4NDQsNiArNzg1Niw3IEBACiAJCTUxMENDN0U3MTYxMzhFNzIwMEQw
M0VEMyAvKiBOZXR3b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlDMUVENzIzNjI0QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8sCiAJCQkJMjlBRDMw
OTExNjRCNEMxMDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1MTYzMTk5MzE2
Mjg5ODBFMDBFMjJGMDAgLyogbWFjICovLAogCQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAqLywKQEAgLTgzNzQsNiArODM4Nyw4IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQlDRDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEwMEEzRENFQiAv
KiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oICovLAorCQkJCUMxNEQzN0ZDMjRBQ0RG
NDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovLAorCQkJCUMx
NEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5t
bSAqLywKIAkJCQk0NDZEQzY0QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIuaCAqLywKIAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5oICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtODQyNSw2ICs4NDQw
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEMEM1NkZCMjI5RjFERUEwMEJEMzNFNyAvKiBE
ZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCAqLywKIAkJCQkyRDBDNTZGQzIyOUYxREVBMDBCRDMz
RTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tICovLAorCQkJCUMxNzEwQ0Y1MjRBQTYz
NDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlD
MTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
Lm1tICovLAogCQkJCTUzMTU4NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlU
cmFja2VyQ29jb2EubW0gKi8sCiAJCQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdv
cmtEYXRhVGFza0NvY29hLmggKi8sCiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5l
dHdvcmtEYXRhVGFza0NvY29hLm1tICovLApAQCAtMTAyNTIsNiArMTAyNjksMTQgQEAKIAkJCXRh
YldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzFFRDcyMzYyNEE1NjhGNTAw
M0Y2Q0QzIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCUM1NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMDg1OCw2ICsxMDg4Myw3
IEBACiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQg
LyogSlNOUE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDk4NzgxMUZGN0ZBQTAwNDhC
NDY0IC8qIEpTTlBPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUMxNjYzRTVCMjRBRUFBMkYw
MEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8qIExheWVy
VHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNF
MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggaW4gSGVhZGVycyAqLywKQEAgLTEyNzI2LDYg
KzEyNzUyLDggQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAx
MjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MjIxMkNG
OUYwMDAxMjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzdG
RTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4g
U291cmNlcyAqLywKKwkJCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5
NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIExpYldlYlJUQ05ldHdvcmtNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogewogICAgIEF1eGls
aWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcygpOworI2VuZGlmCisK
ICAgICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dyb3VuZCBxdWV1
ZSBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAvLyBhbmQgQXV4
aWxpYXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgogICAgIGNvbm5l
Y3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soY2FsbEV4aXQp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjQx
NDIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MTUsNiArNTE1LDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgdm9pZCBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3Q7CisjZW5kaWYKKwogICAg
IFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAogICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdl
TWFwOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjY0MTQyKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKICNpbXBvcnQgIkluc2Vy
dFRleHRPcHRpb25zLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5o
IgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBsdWdpblZpZXcuaCIKICNp
bXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgiCkBAIC02Miw2ICs2Myw5
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2
ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAg
IGJvb2wgZGF0YWJhc2VVcGRhdGVkID0gIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpz
aW5nbGV0b24oKS53YWl0Rm9yRGF0YWJhc2VVcGRhdGUoNV9zKTsKKyAgICBBU1NFUlRfVU5VU0VE
KGRhdGFiYXNlVXBkYXRlZCwgZGF0YWJhc2VVcGRhdGVkKTsKKwogICAgIG1fZGF0YURldGVjdGlv
bkNvbnRleHQgPSBwYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0OwogCiAgICAgaWYgKHBh
cmFtZXRlcnMubmVIZWxwZXJFeHRlbnNpb25IYW5kbGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYkNvcmUv
WFBDRW5kcG9pbnRDbGllbnQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lt
cG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBXZWJDb3Jl
OjpYUENFbmRwb2ludENsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIGJvb2wgd2FpdEZvckRhdGFiYXNl
VXBkYXRlKFNlY29uZHMpOworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29i
amVjdF90KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENvbm5lY3QoKSBvdmVycmlkZTsKKworICAg
IHN0ZDo6YXRvbWljPGJvb2w+IG1faGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIHsg
ZmFsc2UgfTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7Cit9OworCit9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorCisjaW1w
b3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0IDxXZWJD
b3JlL1hQQ0VuZHBvaW50Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2Vz
U1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjaW1wb3J0IDx3dGYv
c3BpL2Rhcndpbi9YUENTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2lu
Z2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3Zv
aWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmhhbmRsZUV2ZW50KHhwY19vYmplY3Rf
dCBtZXNzYWdlKQoreworICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcobWVzc2FnZSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICBp
ZiAobWVzc2FnZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSkgeworI2lmIEhBVkUoTFNEQVRBQkFTRUNP
TlRFWFQpCisgICAgICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUo
bWVzc2FnZSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZUtleSk7CisKKyAgICAgICAgaWYgKGRhdGFiYXNlKSB7CisgICAgICAgICAg
ICBhdXRvIGNvbnRleHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIp
IHNoYXJlZERhdGFiYXNlQ29udGV4dF07CisgICAgICAgICAgICBpZiAoIVtjb250ZXh0IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDopXSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBbY29udGV4dCBvYnNlcnZlRGF0
YWJhc2VDaGFuZ2U0V2ViS2l0OmRhdGFiYXNlXTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAg
IG1fc2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICBtX2hhc1JlY2VpdmVkTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZSA9IHRydWU7CisgICAgfQorfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VNYW5hZ2VyOjpkaWRDb25uZWN0KCkKK3sKKyAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2Jq
ZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBj
X2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVz
c2FnZU5hbWVLZXksIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVl
c3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpOworCisgICAgeHBjX2Nv
bm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24oKS5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7
Cit9CisKK2Jvb2wgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OndhaXRGb3JEYXRhYmFz
ZVVwZGF0ZShTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgaWYgKG1faGFzUmVjZWl2ZWRMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV9zZW1h
cGhvcmUud2FpdEZvcih0aW1lb3V0KTsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjQxNDIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAj
aW1wb3J0ICJXZWJQcm9jZXNzQ29jb2EuaCIKIAorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXIuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHMuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIgogI2ltcG9ydCAi
TG9nSW5pdGlhbGl6YXRpb24uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTY5LDYgKzcxLDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvU1dDb250ZXh0TWFuYWdlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TeXN0ZW1CYXR0ZXJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VUSVV0aWxpdGllcy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9YUENFbmRwb2ludC5oPgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9y
dCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtMTYx
LDI1ICsxNjQsMzIgQEAgc3RhdGljIGlkIE5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdQog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJQcm9j
ZXNzOjpoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3QKIHsKLSAgICAvLyBNYXAgTGF1
bmNoIFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBiZSBkb25lIGFzIGVhcmx5IGFzIHBv
c3NpYmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAgICAvLyBpZiAnY29tLmFwcGxlLmxz
ZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMuCi0gICAgaWYgKHBhcmFtZXRl
cnMubWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAgYXV0byBleHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhh
bmRsZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8gUGVyZm9ybSBBUEkgY2FsbHMgd2hp
Y2ggd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZSBtYXBwaW5nIHNlcnZpY2UsIGFu
ZCBtYXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigi
dGV4dC9odG1sIiksIDApKTsKKyAgICBpZiAoIXBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpCisg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBbW29iamNfZ2V0Q2xhc3MoIl9MU0RSZWFkU2Vydmlj
ZSIpIFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFsaWRhdGVdOworICAgIGF1dG8gY29ubmVj
dGlvbiA9IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKTsKIAotICAg
ICAgICBvayA9IGV4dGVuc2lvbi0+cmV2b2tlKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ss
IG9rKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRp
c3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwg
MCkpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24sIF4o
eHBjX29iamVjdF90IGV2ZW50KSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUoZXZlbnQpICE9
IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQVNT
RVJUKFN0cmluZyh1dGkuZ2V0KCkpID09IFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZl
cnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTVFIoInRleHQvaHRt
bCIpLCAwKSkuZ2V0KCkpKTsKLSAgICB9CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFt
ZUtleSk7CisgICAgICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm47CiAKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3Nh
Z2VOYW1lKSB7CisgICAgICAgICAgICBhdXRvIGVuZHBvaW50ID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3ZhbHVlKGV2ZW50LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5KTsKKyAgICAgICAgICAgIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRFbmRwb2ludChlbmRwb2lu
dCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9KTsKK30KKwordm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vz
c2FyeShwYXJhbWV0ZXJzLndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6aW5p
dGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5nQ2hh
bm5lbHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403862</attachid>
            <date>2020-07-09 07:15:38 -0700</date>
            <delta_ts>2020-07-09 10:06:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213794-20200709071537.patch</filename>
            <type>text/plain</type>
            <size>60355</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQxNDMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTA5ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBOZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgQWRk
ZWQgSEFWRSBkZWZpbmUgZm9yIGRldGVybWluaW5nIGlmIHRoZSBjbGFzcyBMU0RhdGFiYXNlQ29u
dGV4dCBpcyBwcmVzZW50LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIw
LTA3LTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIE1ha2UgaXQgcG9zc2libGUgdG8gZXN0YWJsaXNoIGRpcmVjdCBYUEMgY29ubmVjdGlv
bnMgYmV0d2VlbiBXZWJLaXQgcHJvY2Vzc2VzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUhhdmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2
aXNpb24gMjY0MTQyKQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3MiwzICs2NzIsMTAgQEAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwCiAjZGVmaW5lIEhBVkVfQVBQX0FDQ0VO
VF9DT0xPUlMgMQogI2VuZGlmCisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTYwMCkgXAorICAgIHx8ICgoUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDE0MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDcwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQUExF
VFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQorI2RlZmluZSBI
QVZFX0xTREFUQUJBU0VDT05URVhUIDEKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMDkgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXBkYXRlIExhdW5jaCBTZXJ2aWNl
cyBkYXRhYmFzZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhlIE5ldHdvcmsgcHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
Nzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBEZWNs
YXJlIGludGVyZmFjZSBmb3Igb2JzZXJ2aW5nIGFuZCBjb25zdW1pbmcgdGhlIExhdW5jaCBTZXJ2
aWNlcyBkYXRhYmFzZS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNT
UEkuaDoKKwogMjAyMC0wNy0wOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQxMzIgYW5kIHIyNjQxMzku
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQ
SS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5j
aFNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDI2NDE0MikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE2
ICsyNSwxMCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+
CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBv
cnQgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXNQcml2Lmg+Ci0jZWxpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KLSNl
bGlmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3Jl
U2VydmljZXNQcml2Lmg+Ci0jZW5kaWYKLQogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiAKICNpZiBIQVZFKEFQUF9MSU5LUykKQEAgLTgzLDE0ICs3NywyMSBAQCBlbnVtIExTU2Vz
c2lvbklEIHsKIH07CiAjZW5kaWYKIAotI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotCi1AaW50ZXJmYWNlIF9MU0RTZXJ2aWNlIDogTlNPYmplY3QgPE5TWFBDTGlzdGVuZXJEZWxl
Z2F0ZT4KLSsgKE5TWFBDQ29ubmVjdGlvbiAqKVhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2U7CisjaWYg
SEFWRShMU0RBVEFCQVNFQ09OVEVYVCkKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNvbnRleHQgOiBO
U09iamVjdAorQHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIExTRGF0YWJhc2VDb250ZXh0ICpz
aGFyZWREYXRhYmFzZUNvbnRleHQ7CiBAZW5kCisjZW5kaWYKIAotQGludGVyZmFjZSBfTFNEUmVh
ZFNlcnZpY2UgOiBfTFNEU2VydmljZQorI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorCisjaWYgSEFWRShMU0RBVEFCQVNFQ09OVEVYVCkKK0BpbnRlcmZhY2UgTFNEYXRhYmFzZUNv
bnRleHQgKFdlYktpdENoYW5nZVRyYWNraW5nKQorLSAoaWQgPE5TT2JqZWN0PilhZGREYXRhYmFz
ZUNoYW5nZU9ic2VydmVyNFdlYktpdDoodm9pZCAoXikoeHBjX29iamVjdF90IGNoYW5nZSkpb2Jz
ZXJ2ZXI7CistICh2b2lkKXJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0OihpZCA8
TlNPYmplY3Q+KXRva2VuOworLSAodm9pZClvYnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0Oih4
cGNfb2JqZWN0X3QpY2hhbmdlOwogQGVuZAorI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDIwLTA3LTA5ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSBMYXVu
Y2ggU2VydmljZXMgZGF0YWJhc2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBO
ZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAg
ICAgICAgVG8gYmUgYWJsZSB0byBkZW55IG1hY2ggbG9va3VwIGFjY2VzcyB0byB0aGUgTGF1bmNo
IFNlcnZpY2VzIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZSBpbiB0aGUgV2ViQ29udGVudCBwcm9j
ZXNzLCB0aGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUKKyAgICAgICAgc2VudCBmcm9tIHRoZSBOZXR3
b3JraW5nIHByb2Nlc3MgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcywgcmVwcmVzZW50ZWQgYnkg
YW4geHBjIG9iamVjdC4gVGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBpcyBjaG9zZW4gaW5zdGVhZCBv
ZiB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcywgc2luY2UgV2ViS2l0IGlzIGNvbnRyb2xsaW5nIHRo
ZSBzYW5kYm94IG9mIHRoZSBOZXR3b3JraW5nIHByb2Nlc3MuIFRoZXJlIGlzIGFscmVhZHkgYSBk
aXJlY3QgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBOZXR3b3JraW5nCisgICAgICAgIHByb2Nlc3Mg
YW5kIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIGJ1dCB0aGlzIGlzIGEgQ29yZUlQQyBjb25uZWN0
aW9uLiBTaW5jZSB0aGUgZGF0YWJhc2UgaXMgcmVwcmVzZW50ZWQgYnkgYW4geHBjIG9iamVjdCwg
YW4geHBjIGNvbm5lY3Rpb24KKyAgICAgICAgaXMgcmVxdWllcmVkIHRvIHRyYW5zZmVyIHRoZSBk
YXRhYmFzZS4gVGhpcyBwYXRjaCBjcmVhdGVzIGEgZGlyZWN0IHhwYyBjb25uZWN0aW9uIGJldHdl
ZW4gdGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBhbmQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcywKKyAg
ICAgICAgYnkgY3JlYXRpbmcgYW4geHBjIGVuZHBvaW50IGluIHRoZSBOZXR3b3JraW5nIHByb2Nl
c3MsIHNlbmRpbmcgdGhpcyB0byB0aGUgVUkgcHJvY2VzcyBvdmVyIHRoZSBib290c3RyYXAgeHBj
IGNvbm5lY3Rpb24sIGFuZCB0aGVuIHByb3ZpZGluZworICAgICAgICBlYWNoIFdlYkNvbnRlbnQg
cHJvY2VzcyB3aXRoIHRoaXMgZW5kcG9pbnQgYnkgc2VuZGluZyBpdCBvdmVyIHRoZSBib290c3Ry
YXAgeHBjIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgVUkgcHJvY2VzcyBhbmQgdGhlIFdlYkNvbnRl
bnQgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBlbmRwb2ludCBoYXMgdG8gYmUgc2VudCB2aWEgdGhl
IHhwYyBjb25uZWN0aW9ucyB0byB0aGUgVUkgcHJvY2Vzcywgc2luY2UgdGhlIGFscmVhZHkgZXhp
c3RpbmcgZGlyZWN0IGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgTmV0d29ya2luZworICAgICAgICBw
cm9jZXNzIGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGlzIGEgbG93ZXIgbGV2ZWwgQ29yZUlQ
QyBjb25uZWN0aW9uLCB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zZmVycmluZyB4cGMgb2Jq
ZWN0cyBsaWtlIHRoZSB4cGMgZW5kcG9pbnQuCisgICAgICAgIFdoZW4gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcyByZWNlaXZlcyB0aGUgZW5kcG9pbnQsIGl0IHdpbGwgY3JlYXRlIGFuIHhwYyBjb25u
ZWN0aW9uIGZyb20gdGhlIGVuZHBvaW50LCB3aGljaCB3aWxsIGNyZWF0ZSBhIGRpcmVjdCBjb25u
ZWN0aW9uCisgICAgICAgIHdpdGggdGhlIE5ldHdvcmtpbmcgcHJvY2Vzcy4gQSBtZXNzYWdlIGlz
IHRoZW4gc2VudCBvdmVyIHRoZSBjb25uZWN0aW9uIHRvIHJlcXVlc3QgdGhlIGRhdGFiYXNlIHhw
YyBvYmplY3QuIFdoZW4gdGhlIE5ldHdvcmtpbmcgcHJvY2VzcworICAgICAgICByZWNlaXZlcyB0
aGlzIG1lc3NhZ2UsIGl0IGNoZWNrcyB0aGUgZW50aXRsZW1lbnQgb2YgdGhlIHJlbW90ZSBlbmQg
dG8gbWFrZSBzdXJlIGl0IGlzIGNvbW11bmljYXRpbmcgd2l0aCBhIFdlYkNvbnRlbnQgcHJvY2Vz
cywgYW5kIHRoZW4gc2VuZHMKKyAgICAgICAgdGhlIGRhdGFiYXNlIGlmIHRoZSBlbnRpdGxlbWVu
dCBjaGVjayBzdWNjZWVkcy4gV2hlbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHJlY2VpdmVzIHRo
aXMgbWVzc2FnZSwgaXQgcGVyZm9ybXMgYW4gZW50aXRsZW1lbnQgY2hlY2sgYXMgd2VsbCwKKyAg
ICAgICAgYW5kIGlmIHN1Y2Nlc3NmdWwsIHRoZSBkYXRhYmFzZSBvYmplY3QgaXMgY29uc3VtZWQu
IENvbnN1bWluZyB0aGlzIGRhdGFiYXNlIG9iamVjdCwgd2lsbCBtYWtlIHN1cmUgVVRJIHRvIE1J
TUUgdHlwZSBtYXBwaW5nIGlzIHdvcmtpbmcKKyAgICAgICAgY29ycmVjdGx5IGluIHRoZSBXZWJD
b250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgRm9yIHRoZSBVSSBwcm9jZXNzIHRvIGJlIGFibGUg
dG8gcGljayB1cCB4cGMgbWVzc2FnZXMgb24gdGhlIGJvb3RzdHJhcCBjb25uZWN0aW9uLCBhIG5l
dyB2aXJ0dWFsIG1ldGhvZCwgaGFuZGxlWFBDRXZlbnQsIGlzIGFkZGVkIHRvIHRoZQorICAgICAg
ICBQcm9jZXNzTGF1bmNoZXIgQ2xpZW50IGNsYXNzLiBUaGlzIHdheSwgYSBQcm9jZXNzTGF1bmNo
ZXIgY2xpZW50IHdpbGwgYmUgYWJsZSB0byBwaWNrIHVwIHhwYyBtZXNzYWdlcyBmcm9tIHRoZSB4
cGMgYm9vdHN0cmFwIGNvbm5lY3Rpb24uCisgICAgICAgIFByZXZpb3VzbHkgdGhlIGV2ZW50IGhh
bmRsZXIgZm9yIHRoZSBib290c3RyYXAgY29ubmVjdGlvbiBpbiB0aGUgVUkgcHJvY2VzcyB3b3Vs
ZCBoYW5kbGUgb25seSB4cGMgZXJyb3IgbWVzc2FnZXMuIEl0IGhhcyBub3cgYmVlbiBleHBhbmRl
ZAorICAgICAgICB0byBoYW5kbGUgbm9ybWFsIG1lc3NhZ2VzLCB3aGljaCBhcmUgYmVpbmcgZm9y
d2FyZGVkIHRvIHRoZSBQcm9jZXNzTGF1bmNoZXIgY2xpZW50LiBJbiB0aGlzIGNhc2UgdGhlIGNs
aWVudCBpcyB0aGUgTmV0d29yayBwcm9jZXNzIHByb3h5LAorICAgICAgICB3aGljaCB3aWxsIGNo
ZWNrIHRoZSBtZXNzYWdlIHJlY2VpdmVkLCBhbmQgaWYgaXQgdHVybnMgb3V0IHRvIGJlIGEgbWVz
c2FnZSBjb250YWluaW5nIGFuIHhwYyBlbmRwb2ludCwgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBmb3J3
YXJkZWQgdG8KKyAgICAgICAgYWxsIFdlYiBwcm9jZXNzZXMuIFRoZSBQcm9jZXNzTGF1bmNoZXIg
Y2xpZW50IGNhbiBiZSBleHBhbmRlZCB0byBoYW5kbGUgYW55IHhwYyBtZXNzYWdlLCBidXQgcmln
aHQgbm90IHRoZSBOZXR3b3JrIHByb2Nlc3MgcHJveHkgb25seQorICAgICAgICBoYW5kbGVzIHRo
ZSB4cGMgZW5kcG9pbnQgbWVzc2FnZS4gVGhlIGhhbmRsZVhQQ0V2ZW50IHZpcnR1YWwgbWV0aG9k
IHJldHVybiBhIFJlZlB0ciB0byBhbiBYUENFdmVudEhhbmRsZXIsIHdoaWNoIGlzIGNhcHR1cmVk
IGluIHRoZSBldmVudAorICAgICAgICBoYW5kbGVyIG9mIHRoZSBib290c3RyYXAgeHBjIGNvbm5l
Y3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGVyZSBhbHJlYWR5IGV4aXN0
IHRlc3RzIGZvciB0aGlzLiBVVEkgdG8gTUlNRSB0eXBlIG1hcHBpbmcgaXMgYmVpbmcgdXNlZCBp
biBXZWJLaXQgYW5kIHVuZGVybHlpbmcgZnJhbWV3b3JrLCBhbmQgbWFueQorICAgICAgICB0ZXN0
cyB3b3VsZCBmYWlsIGlmIHRoaXMgbWFwcGluZyB3YXMgbm90IHdvcmtpbmcuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmg6IEFkZGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp+TGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE1l
c3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjp4cGNFbmRwb2ludE5hbWVLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBS
ZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQu
c2I6CisgICAgICAgICogU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjp4cGNFbmRwb2ludE1lc3NhZ2UgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dl
YlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlcjo6flhQQ0V2ZW50SGFuZGxl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OkNsaWVudDo6eHBjRXZlbnRIYW5kbGVyIGNv
bnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6eHBjRXZlbnRIYW5kbGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRI
YW5kbGVyOjpoYW5kbGVYUENFdmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6WFBDRXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjp+WFBDRXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRGlkUmVj
ZWl2ZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRv
bik6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpoYW5k
bGVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXI6OndhaXRGb3JEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmhhbmRs
ZVhQQ0VuZHBvaW50TWVzc2FnZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMC0wNy0wOCAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyNjQxMzIgYW5kIHIyNjQxMzkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShy
ZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQxNSw2ICs0MTUsOCBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJ
bnNwZWN0b3JQcm94CiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tCiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmlldy5t
bQogCitVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KKwogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0RhdGVUaW1lSW5wdXRDb250cm9sLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjY0MTQyKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk3LDYgKzk3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVDb2RlcnMuaCIKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNlbmRpZgogCkBAIC0xNjMs
NiArMTY0LDkgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeQogI2lm
IEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAgICAgYWRkU3VwcGxlbWVu
dDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBhZGRTdXBwbGVtZW50PExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcj4o
KTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9Q
Uk9UT0NPTF9NQU5BR0VSKQogICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6bmV0d29y
a1Byb2Nlc3NDcmVhdGVkKCp0aGlzKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1l
bnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1hQQ0VuZHBvaW50Lmg+CisjaW5jbHVkZSA8d3RmL09T
T2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyIDogcHVibGljIFdl
YkNvcmU6OlhQQ0VuZHBvaW50LCBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXIoTmV0d29ya1Byb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXIoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVt
ZW50TmFtZSgpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoT1NPYmplY3RQ
dHI8eHBjX2Nvbm5lY3Rpb25fdD4pOworCisgICAgLy8gWFBDRW5kcG9pbnQKKyAgICBjb25zdCBj
aGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNv
bnN0IGNoYXIqIHhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
aGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVjdF90KSBvdmVycmlkZTsKKwor
ICAgIC8vIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudAorICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uKikgZmluYWw7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fb2Jz
ZXJ2ZXI7CisgICAgVmVjdG9yPE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+PiBtX2Nvbm5l
Y3Rpb25zOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oIgorCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNl
cnZpY2VzU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjaW1wb3J0
IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisj
aWYgSEFWRShMU0RBVEFCQVNFQ09OVEVYVCkKK3N0YXRpYyBMU0RhdGFiYXNlQ29udGV4dCAqZGF0
YWJhc2VDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7CisgICAg
c3RhdGljIExTRGF0YWJhc2VDb250ZXh0ICpjb250ZXh0ID0gbnVsbHB0cjsKKyAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlLCBeeworICAgICAgICBjb250ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAi
TFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRhYmFzZUNvbnRleHRdOworICAgIH0pOworICAg
IHJldHVybiBjb250ZXh0OworfQorI2VuZGlmCisKK0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKE5ldHdvcmtQcm9jZXNzJikKK3sK
KyNpZiBIQVZFKExTREFUQUJBU0VDT05URVhUKQorICAgIGlmICghW2RhdGFiYXNlQ29udGV4dCgp
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRX
ZWJLaXQ6KV0pCisgICAgICAgIHJldHVybjsKKworICAgIG1fb2JzZXJ2ZXIgPSBbZGF0YWJhc2VD
b250ZXh0KCkgYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6Xih4cGNfb2JqZWN0X3Qg
Y2hhbmdlKSB7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rp
b25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICAgICAgeHBjX2RpY3Rpb25h
cnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVL
ZXksIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92
YWx1ZShtZXNzYWdlLmdldCgpLCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4
cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5LCBjaGFuZ2UpOworCisgICAgICAgIGZvciAoYXV0
byYgY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpCisgICAgICAgICAgICB4cGNfY29ubmVjdGlv
bl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CisgICAgfV07
CisjZW5kaWYKK30KKworY29uc3QgY2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXJTdXBwbGVtZW50IjsKK30KKwordm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IGNvbm5l
Y3Rpb24pCit7CisgICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbik7CisKKyNpZiBI
QVZFKExTREFUQUJBU0VDT05URVhUKQorICAgIGlmICghW2RhdGFiYXNlQ29udGV4dCgpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkRGF0YWJhc2VDaGFuZ2VPYnNlcnZlcjRXZWJLaXQ6
KV0pIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFy
eV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfc3RyaW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwg
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgUmV0YWluUHRyPGlkPiBvYnNlcnZlciA9IFtkYXRhYmFzZUNvbnRleHQoKSBh
ZGREYXRhYmFzZUNoYW5nZU9ic2VydmVyNFdlYktpdDpeKHhwY19vYmplY3RfdCBjaGFuZ2UpIHsK
KyAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVh
dGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3Ry
aW5nKG1lc3NhZ2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgTGF1bmNo
U2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1lc3NhZ2VOYW1lKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1lc3Nh
Z2UuZ2V0KCksIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VLZXksIGNoYW5nZSk7CisKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2Vu
ZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCkpOworICAgIH1dOworCisg
ICAgW2RhdGFiYXNlQ29udGV4dCgpIHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0
Om9ic2VydmVyLmdldCgpXTsKKyNlbHNlCisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVj
dCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19k
aWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3Nh
Z2VOYW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOworICAgIHhwY19jb25uZWN0aW9uX3Nl
bmRfbWVzc2FnZShjb25uZWN0aW9uLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKKyNlbmRpZgorfQor
CitMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6On5MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIoKQoreworI2lmIEhBVkUoTFNEQVRBQkFTRUNPTlRFWFQpCisgICAgaWYgKCFbZGF0
YWJhc2VDb250ZXh0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVEYXRhYmFz
ZUNoYW5nZU9ic2VydmVyNFdlYktpdDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RhdGFi
YXNlQ29udGV4dCgpIHJlbW92ZURhdGFiYXNlQ2hhbmdlT2JzZXJ2ZXI0V2ViS2l0Om1fb2JzZXJ2
ZXIuZ2V0KCldOworI2VuZGlmCit9CisKK2NvbnN0IGNoYXIqIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlcjo6eHBjRW5kcG9pbnRNZXNzYWdlTmFtZUtleSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHhwY01lc3NhZ2VOYW1lS2V5OworfQorCitjb25zdCBjaGFyKiBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlT2JzZXJ2ZXI6OnhwY0VuZHBvaW50TWVzc2FnZU5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZTsKK30KKworY29uc3QgY2hhciogTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjp4cGNFbmRwb2ludE5hbWVLZXkoKSBjb25zdAorewor
ICAgIHJldHVybiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5OworfQorCit2b2lkIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0
aW9uLCB4cGNfb2JqZWN0X3QgZXZlbnQpCit7CisgICAgaWYgKHhwY19nZXRfdHlwZShldmVudCkg
PT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgaWYgKGV2ZW50ICE9IFhQQ19FUlJPUl9DT05O
RUNUSU9OX0lOVkFMSUQgJiYgZXZlbnQgIT0gWFBDX0VSUk9SX1RFUk1JTkFUSU9OX0lNTUlORU5U
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9jb25uZWN0aW9ucy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKG1fY29ubmVjdGlv
bnNbaV0uZ2V0KCkgPT0gY29ubmVjdGlvbikgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlv
bnMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHhwY19nZXRfdHlwZShldmVu
dCkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUg
PSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCB4cGNNZXNzYWdlTmFtZUtleSk7Cisg
ICAgICAgIGlmIChtZXNzYWdlTmFtZSAhPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3Rh
bnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGFydE9ic2VydmluZyhjb25uZWN0aW9uKTsK
KyAgICB9Cit9CisKK3ZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjppbml0aWFs
aXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgc2VuZEVu
ZHBvaW50VG9Db25uZWN0aW9uKGNvbm5lY3Rpb24tPnhwY0Nvbm5lY3Rpb24oKSk7Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFw
cGxlLldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVz
b3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
CShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJv
ZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpA
QCAtNTg4LDcgKzU4OCw3IEBACiAoYWxsb3cgaXBjLXBvc2l4LXNobS1yZWFkKgogICAgICAgIChp
cGMtcG9zaXgtbmFtZS1wcmVmaXggImFwcGxlLmNmcHJlZnMuIikpCiAgCi0oYWxsb3cgbWFjaC1s
b29rdXAKKyhkZW55IG1hY2gtbG9va3VwCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUubHNk
Lm1hcGRiIikpCiAKIDs7IDxyZGFyOi8vcHJvYmxlbS8xMjQxMzk0Mj4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gJKHJldmlzaW9uIDI2NDE0
MikKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkod29y
a2luZyBjb3B5KQpAQCAtMTUsNiArMTUsNyBAQCBmdW5jdGlvbiBtYWNfcHJvY2Vzc193ZWJjb250
ZW50X2VudGl0bGVtCiAKICAgICBpZiBbWyAiJHtXS19VU0VfUkVTVFJJQ1RFRF9FTlRJVExFTUVO
VFN9IiA9PSBZRVMgXV0KICAgICB0aGVuCisgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29sIFlFUwogICAgICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnJvb3RsZXNzLnN0b3JhZ2UuV2ViS2l0V2ViQ29udGVudFNh
bmRib3ggYm9vbCBZRVMKICAgICBmaQogCkBAIC01MSw2ICs1Miw3IEBAIGZ1bmN0aW9uIG1hY19w
cm9jZXNzX25ldHdvcmtfZW50aXRsZW1lbnQKICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS50Y2MubWFuYWdlci5jaGVjay1ieS1hdWRpdC10b2tlbjowIHN0cmlu
ZyBrVENDU2VydmljZVdlYktpdEludGVsbGlnZW50VHJhY2tpbmdQcmV2ZW50aW9uCiAgICAgICAg
IGZpCiAKKyAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51
c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUucm9vdGxlc3Muc3RvcmFnZS5XZWJLaXROZXR3b3JraW5nU2FuZGJveCBib29sIFlFUwogICAg
IGZpCiB9CkBAIC0xNDQsNiArMTQ2LDcgQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX3dl
YmNvbnRlbnRfZQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0
eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUu
cHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9vbCBZRVMKICAg
ICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLnByb3h5LWFw
cGxpY2F0aW9uIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRl
LndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNv
bS5hcHBsZS5ydW5uaW5nYm9hcmQuYXNzZXJ0aW9ucy53ZWJraXQgYm9vbCBZRVMKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6ZHluYW1pYy1jb2Rlc2lnbmluZyBib29sIFlFUwogCkBAIC0xODQsNiArMTg3
LDcgQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX25ldHdvcmtfZW50aQogICAgIHBsaXN0
YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5kbWQucG9saWN5IGJvb2wgWUVTCiAgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLm1lbW9yeXN0YXR1cyBib29sIFlFUwogICAg
IHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5uZXR3b3JrLnNvY2tldC1kZWxlZ2F0
ZSBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQu
dXNlLXhwYy1lbmRwb2ludCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUu
cnVubmluZ2JvYXJkLmFzc2VydGlvbnMud2Via2l0IGJvb2wgWUVTCiAKICAgICBwbGlzdGJ1ZGR5
IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUudGNjLm1hbmFnZXIuY2hlY2stYnktYXVkaXQtdG9rZW4g
YXJyYXkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0Nv
bnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzIHsKKworY29uc3RleHByIGF1dG8geHBjVXBkYXRlTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lID0gInVwZGF0ZS1sYXVuY2gtc2VydmljZXMt
ZGF0YWJhc2UtbWVzc2FnZSI7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlS2V5ID0gImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSI7Citjb25zdGV4cHIgYXV0byB4cGNS
ZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lID0gInJlcXVlc3Qt
bGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLXVwZGF0ZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRv
IHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE5hbWVLZXkgPSAieHBjLWVuZHBv
aW50LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSI7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSA9ICJ4cGMtZW5kcG9pbnQtbGF1
bmNoLXNlcnZpY2VzLWRhdGFiYXNlLW1lc3NhZ2UiOworfSAvLyBuYW1lc3BhY2UgTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHJl
dmlzaW9uIDI2NDE0MikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRlV0aWxpdGllc1NQSS5oPgorI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENT
UEkuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2
aXNpb24gMjY0MTQyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDcgKzM4OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE5l
dHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJl
TmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aFdlYnNpdGVEYXRhU3RvcmUgPSBu
dWxscHRyKTsKLSAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0
dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KKyAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBu
ZXR3b3JrUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0K
ICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CiAK
ICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxh
eWVkUmVwbHkmJik7CkBAIC01NDEsNiArNTQxLDExIEBAIHB1YmxpYzoKICAgICBpbnQzMl90IHVz
ZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlcklkOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4geHBjRW5kcG9pbnRNZXNzYWdl
KCkgY29uc3Q7CisgICAgdm9pZCBzZW5kTmV0d29ya1Byb2Nlc3NYUENFbmRwb2ludFRvV2ViUHJv
Y2VzcyhPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGVuZHBvaW50TWVzc2FnZSk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC04MjUsNiAr
ODMwLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNl
ckludGVyYWN0aW9uOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPU09iamVj
dFB0cjx4cGNfb2JqZWN0X3Q+IG1fZW5kcG9pbnRNZXNzYWdlOworI2VuZGlmCiB9OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTMsNiArOTUzLDEyIEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gZW5kcG9pbnRNZXNzYWdl
ID0gcHJvY2Vzc1Bvb2woKS54cGNFbmRwb2ludE1lc3NhZ2UoKTsKKyAgICBpZiAoZW5kcG9pbnRN
ZXNzYWdlKQorICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbigp
LT54cGNDb25uZWN0aW9uKCksIGVuZHBvaW50TWVzc2FnZS5nZXQoKSk7CisjZW5kaWYKKwogICAg
IFJFTEVBU0VfQVNTRVJUKCFtX3dlYkNvbm5lY3Rpb24pOwogICAgIG1fd2ViQ29ubmVjdGlvbiA9
IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSh0aGlzKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MzQsNCArOTM0LDIzIEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVySGlnaER5bmFtaWMKIH0KICNlbmRpZgogCitPU09i
amVjdFB0cjx4cGNfb2JqZWN0X3Q+IFdlYlByb2Nlc3NQb29sOjp4cGNFbmRwb2ludE1lc3NhZ2Uo
KSBjb25zdAoreworICAgIHJldHVybiBtX2VuZHBvaW50TWVzc2FnZTsKK30KKwordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzWFBDRW5kcG9pbnRUb1dlYlByb2Nlc3MoT1NP
YmplY3RQdHI8eHBjX29iamVjdF90PiBlbmRwb2ludE1lc3NhZ2UpCit7CisgICAgbV9lbmRwb2lu
dE1lc3NhZ2UgPSBlbmRwb2ludE1lc3NhZ2U7CisKKyAgICBmb3IgKGF1dG8gcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLT5zdGF0ZSgpICE9IEF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKCFwcm9jZXNzLT5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgYXV0byBjb25uZWN0aW9uID0gcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT54cGNDb25uZWN0
aW9uKCk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBl
bmRwb2ludE1lc3NhZ2UuZ2V0KCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENFdmVudEhhbmRs
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9YUENF
dmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxYUENFdmVudEhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5YUENFdmVudEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVYUENF
dmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0ID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShyZXZpc2lv
biAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRlIDx3dGYv
d2luL1dpbjMySGFuZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1
ZGUgIlhQQ0V2ZW50SGFuZGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCkBAIC01Nyw2ICs2MSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNo
ZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxYUENFdmVu
dEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNl
bmRpZgogICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDI2NDE0MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIzOCwxOCArMjM4LDI4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KCkKICAgICAgICAgcHJvY2Vzc0xhdW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzKDAs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKICAgICB9OwogCi0gICAgYXV0byBlcnJv
ckhhbmRsZXIgPSBbZXJyb3JIYW5kbGVySW1wbCA9IFdURk1vdmUoZXJyb3JIYW5kbGVySW1wbCld
ICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVycm9ySGFuZGxlckltcGwpLCBl
dmVudF0gewotICAgICAgICAgICAgZXJyb3JIYW5kbGVySW1wbChldmVudCk7Ci0gICAgICAgIH0p
OworICAgIGF1dG8gZXZlbnRIYW5kbGVyID0gW2Vycm9ySGFuZGxlckltcGwgPSBXVEZNb3ZlKGVy
cm9ySGFuZGxlckltcGwpLCBldmVudEhhbmRsZXIgPSBtX2NsaWVudC0+eHBjRXZlbnRIYW5kbGVy
KCldICh4cGNfb2JqZWN0X3QgZXZlbnQpIG11dGFibGUgeworCisgICAgICAgIGlmICghZXZlbnQg
fHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlcnJvckhhbmRsZXJJbXBsID0gV1RGTW92ZShlcnJv
ckhhbmRsZXJJbXBsKSwgZXZlbnQgPSBPU09iamVjdFB0cihldmVudCldIHsKKyAgICAgICAgICAg
ICAgICBlcnJvckhhbmRsZXJJbXBsKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV2ZW50SGFuZGxlcikg
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtldmVudEhhbmRsZXIgPSBl
dmVudEhhbmRsZXIsIGV2ZW50ID0gT1NPYmplY3RQdHIoZXZlbnQpXSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRIYW5kbGVyLT5oYW5kbGVYUENFdmVudChldmVudC5nZXQoKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQogICAgIH07CiAKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRf
aGFuZGxlcihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGVycm9ySGFuZGxlcik7CisgICAgeHBjX2Nv
bm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBldmVudEhh
bmRsZXIpOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlvbi5nZXQo
KSk7CiAKICAgICBpZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNz
TGF1bmNoRmFpbEZvclRlc3RpbmcpKSB7Ci0gICAgICAgIGVycm9ySGFuZGxlcihudWxscHRyKTsK
KyAgICAgICAgZXZlbnRIYW5kbGVyKG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjY0MTQyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiWFBDRXZlbnRIYW5k
bGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKIH0KQEAgLTI5Nyw2ICszMDEsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUHJvY2Vzc0xhdW5j
aGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIq
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigpIGNvbnN0
IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYp
OwogCkBAIC0zMjcsNiArMzM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPj4g
d2ViUHJvY2Vzc0Fzc2VydGlvbnM7CiAgICAgfTsKICAgICBPcHRpb25hbDxVcGxvYWRBY3Rpdml0
eT4gbV91cGxvYWRBY3Rpdml0eTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNsYXNzIFhQ
Q0V2ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7CisgICAgcHVi
bGljOgorICAgICAgICBYUENFdmVudEhhbmRsZXIoY29uc3QgTmV0d29ya1Byb2Nlc3NQcm94eSYp
OworCisgICAgICAgIGJvb2wgaGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90KSBjb25zdCBvdmVy
cmlkZTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94
eT4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKworI2ltcG9ydCAiTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Bv
b2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvWFBDRW5kcG9pbnQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8WFBDRXZlbnRIYW5kbGVy
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp4cGNFdmVudEhhbmRsZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyKCp0
aGlzKSk7Cit9CisKK2Jvb2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpo
YW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QgZXZlbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX25l
dHdvcmtQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWV2ZW50IHx8
IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKG1lc3Nh
Z2VOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lKQorICAgICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmROZXR3b3JrUHJvY2Vzc1hQQ0VuZHBvaW50VG9XZWJQ
cm9jZXNzKGV2ZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitOZXR3b3JrUHJvY2Vzc1By
b3h5OjpYUENFdmVudEhhbmRsZXI6OlhQQ0V2ZW50SGFuZGxlcihjb25zdCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobWFrZVdlYWtQ
dHIobmV0d29ya1Byb2Nlc3MpKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDE0MikKKysrIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTE2ODQsOCArMTY4NCwxMSBAQAogCQlDMTFBOUVDQzIxNDAzNUY4MDBDRkIyMEEgLyog
V2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMTFBOUVDQjIxNDAzNUY4MDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BV
Q2xpZW50LmggKi87IH07CiAJCUMxMUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNw
bGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFF
MTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNDkzODA5MjIzNDcxMDQwMDBDRDcw
NyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAyMjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVl
Y2hTeW50aGVzaXNDbGllbnQuaCAqLzsgfTsKKwkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8q
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovOyB9OwogCQlDMTVDQkIzNjIzRjM3NzcxMDAz
MDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyogUHJlZmVyZW5j
ZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNUNCQjMzMjNG
MzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi87IH07CisJCUMxNjYzRTVC
MjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY2M0U1QTI0
QUVBNzQyMDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICov
OyB9OworCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzE3MTBDRjYyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNl
cnZlci5tbSAqLzsgfTsKIAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTgxNzM2
MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsKIAkJQzFFMTIzQkEyMEEx
MTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29u
dGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250
cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAq
LzsgfTsKQEAgLTUwMTgsMTMgKzUwMjEsMjAgQEAKIAkJQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3
IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hT
eW50aGVzaXNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDMy
MjM0MURGNzAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNEQz
N0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyog
UHJlZmVyZW5jZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlZmVyZW5jZU9i
c2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTY2M0U1QTI0QUVBNzQy
MDBDNkEzQjIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0YyMjRBN0JEMDMwMEQ3QzExMiAvKiBYUENFdmVudEhh
bmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDRXZlbnRIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y1MjRBQTYzNDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNzEwQ0Y2MjRBQTY0
MzIwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzVFMjA1ODM5RjYwMERGREE2NSAvKiBEcmF3aW5n
QXJlYU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNw
bGF5TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGluay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMTgxNzM2MjIwNTg0NEE5MDBERkRBNjUgLyogRGlzcGxheUxpbmsuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMThGQjUxRDI0MkY5Rjc2MDA3RTk4NzUgLyogV2ViU2xlZXBEaXNhYmxlckNs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTbGVlcERp
c2FibGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE4RkI1MUUy
NDJGOUY3NzAwN0U5ODc1IC8qIFdlYlNsZWVwRGlzYWJsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2xlZXBEaXNhYmxlckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4
dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGQ29udGV4dE1lbnUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFFRDcyMzcyNEE1NjkwRTAwM0Y2Q0Qz
IC8qIE5ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJF
ZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgcGF0
aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02Mzg0LDYgKzYzOTQsNyBAQAogCQkJCTJEN0FBRkQyMThDODY0MDYwMEE3
QUNENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCAqLywKIAkJCQkyREM2RDlDMTE4QzQ0
QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCAqLywKIAkJ
CQkyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVn
aXN0cnkubW0gKi8sCisJCQkJQzE3MTBDRjIyNEE3QkQwMzAwRDdDMTEyIC8qIFhQQ0V2ZW50SGFu
ZGxlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC03NDgxLDYgKzc0OTIsNyBAQAogCQkJCUM1NUY5MTZEMUM1OTVFNDQwMDI5RTky
RCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tICovLAogCQkJCUNFNTUwRTEzMjI4Mzc0NDQwMEQy
ODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5jcHAgKi8sCiAJCQkJQ0U1NTBFMTIyMjgzNzNDODAw
RDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi8sCisJCQkJQzE2NjNFNUEyNEFFQTc0MjAw
QzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCAqLywKIAkJCQky
RDEwODc2MjFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSAqLywKIAkJ
CQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmgg
Ki8sCiAJCQkJQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNl
cnZlci5tbSAqLywKQEAgLTc4NDQsNiArNzg1Niw3IEBACiAJCTUxMENDN0U3MTYxMzhFNzIwMEQw
M0VEMyAvKiBOZXR3b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlDMUVENzIzNjI0QTU2OEY1MDAzRjZDRDMgLyogY29jb2EgKi8sCiAJCQkJMjlBRDMw
OTExNjRCNEMxMDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1MTYzMTk5MzE2
Mjg5ODBFMDBFMjJGMDAgLyogbWFjICovLAogCQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAqLywKQEAgLTgzNzQsNiArODM4Nyw4IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQlDRDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEwMEEzRENFQiAv
KiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oICovLAorCQkJCUMxNEQzN0ZDMjRBQ0RG
NDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovLAorCQkJCUMx
NEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5t
bSAqLywKIAkJCQk0NDZEQzY0QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIuaCAqLywKIAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5oICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtODQyNSw2ICs4NDQw
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEMEM1NkZCMjI5RjFERUEwMEJEMzNFNyAvKiBE
ZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCAqLywKIAkJCQkyRDBDNTZGQzIyOUYxREVBMDBCRDMz
RTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tICovLAorCQkJCUMxNzEwQ0Y1MjRBQTYz
NDUwMEQ3QzExMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlD
MTcxMENGNjI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
Lm1tICovLAogCQkJCTUzMTU4NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlU
cmFja2VyQ29jb2EubW0gKi8sCiAJCQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdv
cmtEYXRhVGFza0NvY29hLmggKi8sCiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5l
dHdvcmtEYXRhVGFza0NvY29hLm1tICovLApAQCAtMTAyNTIsNiArMTAyNjksMTQgQEAKIAkJCXRh
YldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzFFRDcyMzYyNEE1NjhGNTAw
M0Y2Q0QzIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDMUVENzIzNzI0QTU2OTBFMDAzRjZDRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCUM1NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMDg1OCw2ICsxMDg4Myw3
IEBACiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQg
LyogSlNOUE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDk4NzgxMUZGN0ZBQTAwNDhC
NDY0IC8qIEpTTlBPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUMxNjYzRTVCMjRBRUFBMkYw
MEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8qIExheWVy
VHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNF
MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggaW4gSGVhZGVycyAqLywKQEAgLTEyNzI2LDYg
KzEyNzUyLDggQEAKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAx
MjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MjIxMkNG
OUYwMDAxMjhBRkQgLyogSlNOUE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTREMzdG
RTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4g
U291cmNlcyAqLywKKwkJCQlDMTcxMENGNzI0QUE2NDMyMDBEN0MxMTIgLyogTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5
NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIExpYldlYlJUQ05ldHdvcmtNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjQxNDIpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogewogICAgIEF1eGls
aWFyeVByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcygpOworI2VuZGlmCisK
ICAgICAvLyBXZSBjYWxsIF9leGl0KCkgZGlyZWN0bHkgZnJvbSB0aGUgYmFja2dyb3VuZCBxdWV1
ZSBpbiBjYXNlIHRoZSBtYWluIHRocmVhZCBpcyB1bnJlc3BvbnNpdmUKICAgICAvLyBhbmQgQXV4
aWxpYXJ5UHJvY2Vzczo6ZGlkQ2xvc2UoKSBkb2VzIG5vdCBnZXQgY2FsbGVkLgogICAgIGNvbm5l
Y3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soY2FsbEV4aXQp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjQx
NDIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MTUsNiArNTE1LDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgdm9pZCBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3Q7CisjZW5kaWYKKwogICAg
IFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAogICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdl
TWFwOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjY0MTQyKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKICNpbXBvcnQgIkluc2Vy
dFRleHRPcHRpb25zLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5o
IgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBsdWdpblZpZXcuaCIKICNp
bXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgiCkBAIC02Miw2ICs2Myw5
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2
ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAg
IGJvb2wgZGF0YWJhc2VVcGRhdGVkID0gIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpz
aW5nbGV0b24oKS53YWl0Rm9yRGF0YWJhc2VVcGRhdGUoNV9zKTsKKyAgICBBU1NFUlRfVU5VU0VE
KGRhdGFiYXNlVXBkYXRlZCwgZGF0YWJhc2VVcGRhdGVkKTsKKwogICAgIG1fZGF0YURldGVjdGlv
bkNvbnRleHQgPSBwYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0OwogCiAgICAgaWYgKHBh
cmFtZXRlcnMubmVIZWxwZXJFeHRlbnNpb25IYW5kbGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYkNvcmUv
WFBDRW5kcG9pbnRDbGllbnQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lt
cG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBXZWJDb3Jl
OjpYUENFbmRwb2ludENsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIGJvb2wgd2FpdEZvckRhdGFiYXNl
VXBkYXRlKFNlY29uZHMpOworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29i
amVjdF90KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENvbm5lY3QoKSBvdmVycmlkZTsKKworICAg
IHN0ZDo6YXRvbWljPGJvb2w+IG1faGFzUmVjZWl2ZWRMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlIHsg
ZmFsc2UgfTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7Cit9OworCit9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgorCisjaW1w
b3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgiCisjaW1wb3J0IDxXZWJD
b3JlL1hQQ0VuZHBvaW50Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2Vz
U1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjaW1wb3J0IDx3dGYv
c3BpL2Rhcndpbi9YUENTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2lu
Z2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3Zv
aWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmhhbmRsZUV2ZW50KHhwY19vYmplY3Rf
dCBtZXNzYWdlKQoreworICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcobWVzc2FnZSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICBp
ZiAobWVzc2FnZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSkgeworI2lmIEhBVkUoTFNEQVRBQkFTRUNP
TlRFWFQpCisgICAgICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUo
bWVzc2FnZSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZUtleSk7CisKKyAgICAgICAgaWYgKGRhdGFiYXNlKSB7CisgICAgICAgICAg
ICBhdXRvIGNvbnRleHQgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJMU0RhdGFiYXNlQ29udGV4dCIp
IHNoYXJlZERhdGFiYXNlQ29udGV4dF07CisgICAgICAgICAgICBpZiAoIVtjb250ZXh0IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdDopXSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBbY29udGV4dCBvYnNlcnZlRGF0
YWJhc2VDaGFuZ2U0V2ViS2l0OmRhdGFiYXNlXTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAg
IG1fc2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICBtX2hhc1JlY2VpdmVkTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZSA9IHRydWU7CisgICAgfQorfQorCit2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VNYW5hZ2VyOjpkaWRDb25uZWN0KCkKK3sKKyAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2Jq
ZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBj
X2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgpLCBYUENFbmRwb2ludDo6eHBjTWVz
c2FnZU5hbWVLZXksIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVl
c3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpOworCisgICAgeHBjX2Nv
bm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24oKS5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7
Cit9CisKK2Jvb2wgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OndhaXRGb3JEYXRhYmFz
ZVVwZGF0ZShTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgaWYgKG1faGFzUmVjZWl2ZWRMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV9zZW1h
cGhvcmUud2FpdEZvcih0aW1lb3V0KTsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjQxNDIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAj
aW1wb3J0ICJXZWJQcm9jZXNzQ29jb2EuaCIKIAorI2ltcG9ydCAiTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXIuaCIKKyNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHMuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIgogI2ltcG9ydCAi
TG9nSW5pdGlhbGl6YXRpb24uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTY5LDYgKzcxLDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvU1dDb250ZXh0TWFuYWdlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TeXN0ZW1CYXR0ZXJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VUSVV0aWxpdGllcy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9YUENFbmRwb2ludC5oPgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9y
dCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtMTYx
LDI1ICsxNjQsNTAgQEAgc3RhdGljIGlkIE5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdQog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJQcm9j
ZXNzOjpoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKCkgY29uc3QKIHsKLSAgICAvLyBNYXAgTGF1
bmNoIFNlcnZpY2VzIGRhdGFiYXNlLiBUaGlzIHNob3VsZCBiZSBkb25lIGFzIGVhcmx5IGFzIHBv
c3NpYmxlLCBhcyB0aGUgbWFwcGluZyB3aWxsIGZhaWwKLSAgICAvLyBpZiAnY29tLmFwcGxlLmxz
ZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMuCi0gICAgaWYgKHBhcmFtZXRl
cnMubWFwREJFeHRlbnNpb25IYW5kbGUpIHsKLSAgICAgICAgYXV0byBleHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZSgqcGFyYW1ldGVycy5tYXBEQkV4dGVuc2lvbkhh
bmRsZSkpOwotICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICAgICAgLy8gUGVyZm9ybSBBUEkgY2FsbHMgd2hp
Y2ggd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZSBtYXBwaW5nIHNlcnZpY2UsIGFu
ZCBtYXAgdGhlIGRhdGFiYXNlLgotICAgICAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigi
dGV4dC9odG1sIiksIDApKTsKKyAgICBpZiAoIXBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY29ubmVjdGlvbiA9IHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKTsKIAotICAgICAgICBbW29iamNfZ2V0Q2xhc3MoIl9M
U0RSZWFkU2VydmljZSIpIFhQQ0Nvbm5lY3Rpb25Ub1NlcnZpY2VdIGludmFsaWRhdGVdOworICAg
IHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0
X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSk7CisgICAg
eHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0
X3QgZXZlbnQpIHsKKyAgICAgICAgaWYgKHhwY19nZXRfdHlwZShldmVudCkgIT0gWFBDX1RZUEVf
RElDVElPTkFSWSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBvayA9IGV4dGVuc2lv
bi0+cmV2b2tlKCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKKyAgICAgICAgU3Ry
aW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5k
cG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBBU1NFUlQoU3RyaW5nKHV0aS5n
ZXQoKSkgPT0gU3RyaW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKS5nZXQoKSkp
OwotICAgIH0KKyAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VYUENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3Nh
Z2VOYW1lKSB7CisgICAgICAgICAgICBhdXRvIGVuZHBvaW50ID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3ZhbHVlKGV2ZW50LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5KTsKKyAgICAgICAgICAgIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRFbmRwb2ludChlbmRwb2lu
dCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9KTsKK30KIAordm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisjaWYgSEFWRShMU0RBVEFCQVNFQ09OVEVYVCkK
KyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZW50aXJlIHNlY3Rpb24gd2hlbiB0aGUgc2VsZWN0
b3Igb2JzZXJ2ZURhdGFiYXNlQ2hhbmdlNFdlYktpdCBpcyBwcmVzZW50CisgICAgYXV0byBjb250
ZXh0ID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTFNEYXRhYmFzZUNvbnRleHQiKSBzaGFyZWREYXRh
YmFzZUNvbnRleHRdOworICAgIGlmICghW2NvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihvYnNlcnZlRGF0YWJhc2VDaGFuZ2U0V2ViS2l0OildKSB7CisgICAgICAgIC8vIE1hcCBM
YXVuY2ggU2VydmljZXMgZGF0YWJhc2UuIFRoaXMgc2hvdWxkIGJlIGRvbmUgYXMgZWFybHkgYXMg
cG9zc2libGUsIGFzIHRoZSBtYXBwaW5nIHdpbGwgZmFpbAorICAgICAgICAvLyBpZiAnY29tLmFw
cGxlLmxzZC5tYXBkYicgaXMgYmVpbmcgYWNjZXNzZWQgYmVmb3JlIHRoaXMuCisgICAgICAgIGlm
IChwYXJhbWV0ZXJzLm1hcERCRXh0ZW5zaW9uSGFuZGxlKSB7CisgICAgICAgICAgICBhdXRvIGV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKCpwYXJhbWV0ZXJzLm1h
cERCRXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgICAgICAgICBib29sIG9rID0gZXh0ZW5zaW9uLT5j
b25zdW1lKCk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7CisgICAgICAgICAg
ICAvLyBQZXJmb3JtIEFQSSBjYWxscyB3aGljaCB3aWxsIGNvbW11bmljYXRlIHdpdGggdGhlIGRh
dGFiYXNlIG1hcHBpbmcgc2VydmljZSwgYW5kIG1hcCB0aGUgZGF0YWJhc2UuCisgICAgICAgICAg
ICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRh
ZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBDRlNUUigidGV4dC9odG1sIiksIDApKTsKKyAgICAgICAg
ICAgIG9rID0gZXh0ZW5zaW9uLT5yZXZva2UoKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
b2ssIG9rKTsKKyAgICAgICAgICAgIEFTU0VSVChTdHJpbmcodXRpLmdldCgpKSA9PSBTdHJpbmco
YWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNz
TUlNRVR5cGUsIENGU1RSKCJ0ZXh0L2h0bWwiKSwgMCkpLmdldCgpKSk7CisgICAgICAgIH0KKyAg
ICB9CisjZW5kaWYKICNpZiAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgIFdlYkNvcmU6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHBhcmFtZXRlcnMu
d2ViQ29yZUxvZ2dpbmdDaGFubmVscyk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5l
bHNJZk5lY2Vzc2FyeShwYXJhbWV0ZXJzLndlYktpdExvZ2dpbmdDaGFubmVscyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>